ドワンゴ教育サービス開発者ブログ
https://blog.nnn.dev/
ドワンゴ教育事業の開発者ブログ
フィード
ZEN大学のWebシラバスを支える技術
ドワンゴ教育サービス開発者ブログ
本記事は ドワンゴ Advent Calendar 2024 の25日目の記事です🎄 はじめに こんにちは。Webフロントエンドチームの山口です。 この度、鋭意開発しておりました、ZEN大学のWebシラバスを公開しました(以降シラバスと表記)。 公開後、多くのポジティブなご反応を頂いており、大変嬉しい限りです。 さて、本記事ではシラバスの技術面に焦点を当て、全体のアーキテクチャとWebフロントエンドの技術構成についてご紹介します。ぜひお付き合いください。 はじめに シラバスについて アーキテクチャ 技術構成 Next.js(App Router) Panda CSS Radix UI(Prim…
11日前
N予備校からZEN Studyに変わる中でどうユーザー体験を変えようとしたのか〜企画目線での苦労話
ドワンゴ教育サービス開発者ブログ
こんにちは、ZEN Study 企画チームの井手です。 2024年8月28日に、ドワンゴが提供しているオンライン学習システム「N予備校」は「ZEN Study」に生まれ変わり、ホーム画面を中心に見た目も機能もリニューアルしました! 私は今回そのホーム画面の企画をメインで担当させていただきました。 ここでは、企画・デザインの観点から、なぜ名称を変更したのか、どんなユーザー体験を目指したのか、そこに至るまでの苦労話などができればと思います。 ※フロントエンド開発の視点からの関連記事もあります。 名称変更の背景 N予備校は2016年の誕生時、高校生をメインターゲットにしていました。しかしその後、中高…
18日前
OpenAPI Spec を出力できる DSL、TypeSpec の実践例
ドワンゴ教育サービス開発者ブログ
この記事はドワンゴ Advent Calendar 2024の 1 日目の記事です。 はじめに こんにちは。ZEN IDの開発をしている、エンジニアのユーンです。 株式会社ドワンゴは先日2024年11月16日に開催された日本最大級のTypeScriptをテーマとした技術カンファレンス TSKaigi Kansai 2024 にプラチナスポンサーとして協賛いたしました。 ドワンゴのスポンサーブース 私は個人でセッション「型付き API リクエストを実現するいくつかの手法とその選択」を発表し、OpenAPI を中心とした手法を一例として紹介しました。 speakerdeck.com このセッション…
1ヶ月前
株式会社ドワンゴは TSKaigi Kansai 2024 にプラチナスポンサーとして協賛します
ドワンゴ教育サービス開発者ブログ
株式会社ドワンゴは2024年11月16日に開催される日本最大級のTypeScriptをテーマとした技術カンファレンス TSKaigi Kansai 2024 にプラチナスポンサーとして協賛いたします。 当日は弊社教育事業エンジニアが複数名参加します。スポンサーブースをいただいていますので、現地で参加される方は是非お気軽にお越しください。 スポンサーブースではZEN Study内にあるTypeScriptの教材を触れる他、限定ノベルティもご用意しております! ドワンゴの教育事業とは? 私たちは、未来の「当たり前」の教育をつくるため、生徒・学生や教職員の「学ぶ」「教える」体験の最大化を日々目指して…
2ヶ月前
ZEN Study 教材基盤開発エンジニアインターンシップ体験記
ドワンゴ教育サービス開発者ブログ
はじめに 初めまして! 2024年8月1日から 2024年10月31日の3ヶ月間、教材基盤開発セクションでインターンシップに参加していた市島功大です。 参加前のスキルレベルは以下のような状態でした。 JavaScript を使ったバックエンド開発を主に行なっていた TypeScript はプリミティブな値・オブジェクトの型等の使いそうな型定義は分かるが、Omit や Partial 等の TypeScript 独自の型定義は分からない状態 NestJS は学習経験があるが、何かしらアプリを作成する等の開発経験はない状態 参加をおすすめしたい人 ドワンゴの教育事業に興味のある方 書いてきたのは …
2ヶ月前
主キーサイズの違いによるPostgreSQLの検索性能の違いを比較する
ドワンゴ教育サービス開発者ブログ
PostgreSQLのテーブルの主キーのデータサイズによって単体取得のSELECT速度がどのくらい変わるか、実際に計測して比較してみました
2ヶ月前
2024年度 ドワンゴ新卒研修のようす
ドワンゴ教育サービス開発者ブログ
こんにちは、2024年新卒のXeramiyaです。 本記事では4ヶ月間のドワンゴの新卒研修について、研修生の立場からお話しします。 レッツゴー! 全体研修 入社直後の約2週間は、企画・デザイナー・エンジニア職合同での全体研修が行われました。 各事業部や会社の制度の紹介、社会人としての心構えなどを教わります。 また、ドワンゴグループ各社の新卒合同で行われるワークショップでは、数日に渡るグループワークでの実践を通じてビジネスの基礎を学ぶことができました。 アイデアを出し合い、互いに意見しながらプロジェクトを前へと進めた経験は、同期の人柄を知る近道になったと今では感じています。 全体研修は毎日出社で…
3ヶ月前
機械学習パイプラインLuigiのタスク同士の関係を良い感じに可視化する方法
ドワンゴ教育サービス開発者ブログ
はじめに ドワンゴ教育事業でデータサイエンティストとして働いている中井です。 この記事では、PythonのパイプラインパッケージであるLuigiで構築したパイプラインにおいて、それを構成するタスク間の依存関係・タスクのグループ間(task_namespace で分けられる)の依存関係を良い感じに出力する方法についてお話しします。想定する読者はある程度Luigiを使ったことのある方としています。 Luigiではタスク全体の依存関係を出力できますが、大規模なタスクだともう少し荒い粒度であったり、全体のうちの一部だけ見たいといったこともあると思います。この記事を読むことでそのような荒い粒度の可視化や…
3ヶ月前
エンジニアをプロダクトマネージャーたらしめたものは何か?
ドワンゴ教育サービス開発者ブログ
みなさま、お疲れ様です!企画開発エンジニア の高瀬 (@Guvalif) です。 "企画開発エンジニア" という職種はあまり耳馴染みがないかもしれませんが、一般的には TechPM:Technical Product Manager として知られるような役割となります。ところで、プロダクトマネージャーってどうやったらなれるのか (なりたいと思えるのか)、どんな人に向くのかって、あまり分からなくないですか? 本記事では、エンジニア・バックグラウンドからプロダクトマネージャーに 未経験転職 をした自身の事例を紐解きながら、再現性のありそうなファクターを探っていきたいと思います 🔍 ◆ この記事の位…
4ヶ月前
「N予備校」を「ZEN Study」に変えてみた件 〜 サービス名称変更の経験
ドワンゴ教育サービス開発者ブログ
「N予備校」を「ZEN Study」に変えるプロジェクトのフロントエンド対応に関する記事です
4ヶ月前
N予備校 iOSアプリのViewState列挙体を使ったSwiftUIの状態管理
ドワンゴ教育サービス開発者ブログ
はじめに N予備校 iOSアプリ開発チームに所属しているcoffmarkです。 iOSチームではSwiftUIを使って開発を進めています。 SwiftUI導入までの経緯については、ブログ記事(N予備校iOSアプリへ SwiftUI を導入するまでの道のりについて)で説明しています。 SwiftUI導入を進めていく中で、導入後に改善した点がいくつかあります。 今回はその中でもViewState列挙体を使ったSwiftUIの状態管理についてお話しします。 前提 (プロジェクト構成・SwiftUI実装方針のおさらい) N予備校 iOSアプリチームでは以下のような構成でiOSアプリを開発しています。 …
5ヶ月前
iOSのアプリライブラリとTestFlight
ドワンゴ教育サービス開発者ブログ
こんにちは。N予備校 iOSチームです。 まず初めに、N予備校アプリのZEN Studyへのリニューアルが当初予定より遅れていることについて、心よりお詫び申し上げます。皆様のご期待に沿えるよう努めておりますので、今しばらくお待ちいただければ幸いです。 学習システム「ZEN Study」 App Store「 N予備校アプリ」 さて、近日中にN予備校アプリをZEN Studyとしてリリースする予定ですが、このアプリ名の変更に伴い、ユーザビリティ、特にアプリライブラリでの検索性について課題が浮上しました。ユーザーがアプリを探す際、アプリライブラリの検索機能を利用することもあるでしょう。しかし、アプ…
5ヶ月前
BigQuery縦持ちデータを動的に横持ちデータにする方法
ドワンゴ教育サービス開発者ブログ
はじめに ドワンゴ教育事業でデータアナリストとして働いている小林です。 一般的にデータアナリストはデータの収集・分析を通して組織の意思決定を支援する役割を期待されることが多く、ドワンゴ教育事業における私のミッションもKPI動向の可視化やダッシュボード / レポートの作成・提供を通してデータドリブンな組織に貢献するところにあります。 私たち教育事業には施策を実行する企画者やビジネス上の意思決定者だけでなく、サービスを活用して教育の現場に立っている方々、サービスに展開している教材を制作しているチームなど多様な方面からデータ収集・分析の需要があります。それだけにやりがいも大きく楽しい日々を過ごしてい…
6ヶ月前
N予備校の規約類を microCMS で管理して、運用を改善した取り組み
ドワンゴ教育サービス開発者ブログ
はじめに こんにちは。Webフロントエンドチームの山口です。 この記事では、N予備校の規約類を microCMS で管理して、運用を改善した取り組みについてご紹介します。早速ですが、前置きは抜きにして本題に入りたいと思います。ぜひお付き合いください! 背景、前提 N予備校では、基本的な 利用規約 の他、定期的に開催されるキャンペーンの応募規約など、様々な規約を公開しています。 中野信子講座での著書プレゼント企画 受講者参加型お悩み相談企画 総数は年々少しずつ増加しており、記事の執筆時点で23件もの規約が存在します。これらは全てプロダクトのコードベースにハードコードされており、開発チームが社内の…
6ヶ月前
grpc-kotlinの実装をinterfaceの定義によってテンプレート化する
ドワンゴ教育サービス開発者ブログ
grpc-kotlin の実装で不便に感じた点を、独自のインターフェース定義による簡易的なフレームワークを作ることで改善しました。
7ヶ月前
Okta Customer Identity Cloud(旧 Auth0)のForms for ActionsがEAになったよ
ドワンゴ教育サービス開発者ブログ
はじめに こんにちは。ドワンゴ教育事業バックエンドエンジニアの金子です。 Okta Customer Identity Cloud(旧 Auth0。以下 Okta CIC)の新機能「Forms for Actions」(以下 Forms)がEarly Accessになりました。本番環境での使用も想定されているステージです。 教育事業での採用も見据えて、どんな機能なのか調べてみたので内容を紹介します。 Forms for Actionsとは Okta CICの認証フローをカスタマイズできる機能です。 ログイン成功時のActions1内でFormを呼び出し、ユーザーへ表示できます。 例えば下記のよ…
7ヶ月前
Zod を使って CSV からの入力データをバリデーションする
ドワンゴ教育サービス開発者ブログ
こんにちは、バックエンドエンジニアの日下です。 CSV から JSON へ変換するスクリプトを、TypeScript で実装する機会がありました。 今回は、CSV のデータのバリデーションに Zod を使った話をします。 スクリプトの目的 システム間のデータ連携が目的です。 連携元のシステムから CSV 出力されたデータを、連携先のシステムで利用する JSON へ変換します。 また、JSON への変換以外にも以下の要件があります。 CSV のデータをバリデーションする 連携先のシステムで利用できるデータであることを保証するために、バリデーションを実行します。 バリデーション失敗時に、日本語のエ…
7ヶ月前
TSKaigi 2024 参加レポート
ドワンゴ教育サービス開発者ブログ
バックエンドエンジニアの松尾です。 2024 年 5 月 11 日に開催された日本最大級の TypeScript をテーマとした技術カンファレンス TSKaigi 2024 に参加しました。 本記事では弊社からの登壇内容やスポンサーブースの様子をお伝えします。 登壇内容まとめ 弊社からは下記の LT で 2 名のエンジニアが登壇しました。 TypeScript で使いやすい OpenAPI の書き方 speakerdeck.com yukimochi さんからは OpenAPI の書き方について紹介しました。 変更に強く、ドメインモデルを正確に表現する書き方にすることで、TypeScript …
8ヶ月前
pnpm の node_modules を探検して理解しよう
ドワンゴ教育サービス開発者ブログ
はじめに こんにちは。ドワンゴ教育事業でエンジニアをしているユーンです。 N予備校アプリケーションやその他複数のプロジェクトで pnpm を採用しました。pnpm とは何か、npm とどう違うのかというのを node_modules の構造を追いながら理解しつつ、教育事業での採用した結果についてお話します。 pnpm とは pnpm とは、npm や yarn とレイヤーを同じくするパッケージマネージャであり、サードパーティのものです。 pnpm.io pnpm は他のツールと比較して高速でありディスク効率が良いと謳っています。 その pnpm の最大の特徴は、 node_modules の構…
8ヶ月前
株式会社ドワンゴは TSKaigi 2024 をスポンサーしています
ドワンゴ教育サービス開発者ブログ
株式会社ドワンゴは2024年5月11日に開催される日本最大級のTypeScriptをテーマとした技術カンファレンス TSKaigi 2024 にプラチナスポンサーとして協賛いたします。 TSKaigi 2024 当日は弊社教育事業エンジニアが複数名参加します。スポンサーブースをいただいていますので、現地で参加される方は是非お気軽にお越しください。 スポンサーブースではN予備校内にあるTypeScriptの教材を触れる他、限定ノベルティもご用意しております! ドワンゴの教育事業とは? 私たちは、未来の「当たり前」の教育をつくるため、生徒・学生や教職員の「学ぶ」「教える」体験の最大化を日々目指して…
8ヶ月前
N予備校のインフラを Amazon EKS に移行した話
ドワンゴ教育サービス開発者ブログ
N予備校のインフラを Amazon EKS に移行した話 はじめまして。ドワンゴの教育事業で SRE エンジニアをしている西永です。 N予備校 では Kubernetes を採用しています。 これまでは Control Planes 含めすべての構成要素を自前で構築し運用していましたが、様々な問題が発生してきたことから Amazon EKS に移行をおこないました。 この記事では、Amazon EKS への移行に取り組んだ事例にについて紹介します。 なぜ移行したのか Kubernetes のバージョンが古い これまでの構成では Kubernetes のバージョンアップが考慮されておらず、Kub…
9ヶ月前
ドワンゴ教育事業の話を聞いてみたい人へ:カジュアル面談窓口の一覧
ドワンゴ教育サービス開発者ブログ
ドワンゴの教育事業では、カジュアル面談の窓口を複数用意しています。 speakerdeck.com 気軽にカジュアル面談したい Pittaに複数のカジュアル面談を開設しています。主催者によっては、業務以外の話題を用意していることもあります。 pitta.me pitta.me pitta.me pitta.me pitta.me pitta.me 他ポジションでもカジュアル面談したい 採用カジュアル面談用のフォームを用意しています。Pittaに開設されていないポジションも含めて面談を希望できます。 www.nnn.ed.nico ドワンゴの教育事業では、一緒に未来の当たり前の教育をつくるメンバ…
9ヶ月前
ドワンゴの就業型インターンの体験記
ドワンゴ教育サービス開発者ブログ
はじめに 大阪産業大学3年の関佑太です。 2023年12月18日~2024年3月31日の間N予備校のAndroidチームにインターンで参加していました。 私がこのインターンに参加した時のスキルレベルとしては次のような感じです。 個人開発でアプリを作ったことはある テストコードは簡単なものしか書けない アーキテクチャは最近意識し始めた ドワンゴのインターンに参加するのに上記のスキルが必須かというと全くそのような事はなく、後述する開発サポートの時間で分からない事を現場のエンジニアに聞く事ができる時間があるので個人開発でアプリを作ったことがなかったり、テストコードを書いたことがなくても大丈夫だと思い…
9ヶ月前
Conventional CommitsとCHANGELOGの自動生成でリリースのユーザ影響をわかりやすくした話
ドワンゴ教育サービス開発者ブログ
ドワンゴ教育事業 バックエンドエンジニアのtakuminishです。 現在、私は教材入稿ツールの開発チームに所属しています。 教材入稿ツールは昨年の2023年06月に社内向けに正式リリースされた比較的新しいツールであり、リリース当初はリリースノートに関する運用について検討が進んでいませんでした。 リリースノートは開発メンバーが手動で作成しており、内容も前回リリース後にマージされたPRタイトルとリンクを箇条書きで記載しているだけの簡素なものでした。 また、PRタイトルのフォーマットも存在しなかったため、英語で記載されたタイトルと日本語で記載されたタイトルが混在している、ユーザ影響度がタイトルから…
10ヶ月前
Ktorm のクラス設計を読み解いて、DSLを拡張する
ドワンゴ教育サービス開発者ブログ
先日Server-Side Kotlin MeetupのLT大会で登壇してきましたので、その内容をブログ記事でも公開します。テーマはKotlin製のORマッパー、Ktormのクラス構造と機能拡張についてです。
10ヶ月前
N予備校エンジニアインターンシップ体験記🌟
ドワンゴ教育サービス開発者ブログ
初めに 初めまして、「教育学習サービス『N予備校』サーバーサイドエンジニアインターンシップ」に参加した落合大輔です。 私は大学院の修士1年生の秋頃にインターンシップに応募しました。内容はTypeScriptによるバックエンドの開発です。私の場合は期間は4ヶ月程で1週間あたり16時間程のシフトです。 参加をおすすめする人 ドワンゴのインターンシップは下記の様な人にお勧めです。特に「ものづくりが好き」という人にお勧めです。 ものづくりや技術が好きな人 自分の手でコーディングを行い開発がしたい人 チーム開発のノウハウを学びたい人 開発環境 ドワンゴのインターンシップでは各自にPCが支給されます。OS…
10ヶ月前
@swc/jestで手間をかけずにテストを早くする
ドワンゴ教育サービス開発者ブログ
こんにちは、ドワンゴ教育事業 Web フロントエンドチームの猪井です。 この記事では babel-jest から @swc/jest に移行することで Jest によるテストが速くなった事例について紹介します。 JavaScript のテストツールは、Vitest のバージョンが 1 を迎えたり Bun が登場したりして、よく使われる Jest 以外にもよさそうな選択肢が増えています。業務の手が少し空いたタイミングでそれらについて調査し実際に試してみたところ、最終的に @swc/jest を使用することで既存のテストを大きく書き換えることなく実行時間を短縮できました。 今回試した JavaSc…
10ヶ月前
iOS版Twitter(X)アプリではツイート内のURLがUniversal linksとして機能しないので、N予備校アプリへの導線を見直した話
ドワンゴ教育サービス開発者ブログ
こんにちは。N 予備校 Webフロントエンド開発チームの中村です。 去年の夏頃、記事タイトルの件に絡んで起きていた問題の対応をしたのでその時の話を書きます。1 なおTwitter社の社名及び同社のサービス名は現在ではXとなっていますが、本文内容の当時はまだTwitterだったためこの記事ではTwitterと表記しています。 何が問題か 以前から開発チームに寄せられていた改善の要望として、「iOSのTwitterアプリ上でN予備校のURLをタップした際にN予備校アプリではなくWebページが開いてしまい、ユーザが目的のページに遷移できない」というものがありました。 iOSにはUniversal l…
1年前
ESLintのローカルルールで独自のコーディング規約を実装する
ドワンゴ教育サービス開発者ブログ
オンライン学習サービスN予備校の開発を支えるコーディング規約の考え方に少し触れ、その運用を支えるESLintの活用を紹介します。ESLintのフラットコンフィグで設定を書いていると、プロジェクト固有のルールを扱いやすいことを紹介しています。
1年前