Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ドワンゴ教育事業ソフトウェアエンジニア採用説明資料 / for-engineers

nnndev
February 05, 2021

ドワンゴ教育事業ソフトウェアエンジニア採用説明資料 / for-engineers

株式会社ドワンゴ教育事業のソフトウェアエンジニア向け採用説明資料です。

関連資料
採用情報 https://www.nnn.ed.nico/recruit/
開発者ブログ https://blog.nnn.dev/
カジュアル面談応募フォーム https://hrmos.co/pages/dwango/jobs/0511999/apply

nnndev

February 05, 2021
Tweet

Other Decks in Technology

Transcript

  1. 目次
 2 事業 ………...…………………………………………….. p.3 組織と環境 ………...…………………………………………….. p.20 チーム紹介 Webフロント

    ………...…………………………………………….. p.28 iOSアプリ ………...…………………………………………….. p.39 Androidアプリ ………...…………………………………………….. p.46 品質保証 ………...…………………………………………….. p.53 サーバーサイド ………...…………………………………………….. p.57 フロンティア企画開発 ………...…………………………………………….. p.64 教務システム ………...…………………………………………….. p.70 SRE ………...…………………………………………….. p.87 選考・応募について ………...…………………………………………….. p.93
  2. サポート プロダクト 学習サービス
 9 オールインワン学習アプリ 
 
 
 
 学校運営サービス

    
 N/S高等学校
 マイページ
 N/S高等学校
 教務システム
 学習コーチング支援サービス 教材インポート Webサービス 学校生活を支える Webサービス 生徒の出願から卒業まですべ てのライフサイクルを管理
  3. N/S高の生徒数推移とN予備校の進化 10 N高等学校 開校 N予備校 教務システム リリース 課外授業だけではな く 高校の授業を

    N予備校で提供開始 N中等部 開校 N予備校で 学年末テスト 提供開始 コロナ禍で N予備校 無償提供 S高等学校 開校 N予備校で VR教材提供開始 N/S高等学校へ N予備校LMS ZEN Compass 提供開始 累積ユーザー数は25万以上(2023年5月現在)
  4. N予備校サービスと、その技術② 「問題に正答した」「章を理解した」など、 学習者の進捗度をサーバ+データベースで管理 Ruby on Rails、AWS Lambda 等を利用 マイクロサービスで開発効率を維持し、変化に対応 問題、成績、Q&A、プロフィール…

    VR対応もKubernetesで各 サービスをインフラストラクチャに展開 N/S高生徒は、進捗度が先生にレポートされる 先生が多数の生徒を効率良く指導できるシステムを構築 14
  5. 次世代N予備校で目指すこと ❷ ミクロからマクロまでの学習サイクルの整備と、 各画面での報酬設計、それらに対しての迷わない仕組み作り 目標をたてる 学習する 結果が見える/ フィードバック 次のチャレンジを見 つける

    例) 報酬設計 [ミクロ] 1問解いたら褒める [マクロ] 学力向上(※次スライドで詳細)を褒める 例) 適切なリコメンド [ミクロ] もう1問解いてみませんか? [マクロ] あなたの目標には     この教材が良いでしょう 17
 例) 学習時間計測
  6. 次世代N予備校で目指すこと ❸ 学力を定量的・効率的に測定できる仕組みづくり 生徒は、 N予備校で学習はしている が、 本当に身についているのか 目標大学に受かるのか、 外部模試など受けないとわからない 生徒自身がN予備校だけで、

    現状と目標のギャップがわかるようにする • IRTによるスコア付け ( IRT=項目反応理論を用いた学力の定量化 ) • アダプティブなテスト ( 学力に応じた学習サポート ) 「あなたの学力は現在500です」 「目標の foo大学 bar学部は1000目安です」 現状 今後 18

  7. 次世代N予備校で目指すこと ❹ • 基本は、次世代N予備校の機能でどんどん学習をしてもらう前提 ⇒ 技術による省力化 • その上で、人間がキメ細かな指導をする ⇒ 人間だけにしか出来ない大事なことに集中

    指導員(先生/TA/メンター)が、生徒をより良く支援できる仕組みづくり 19
 2023年4月 N高等学校・S高等学校向けにLMS “ZEN Compass”リリース • 個別の学習状況がわかるように 今後もコーチの支援を効率化するような機能提供を予定 • コーチのアクションした方がいい度合いを指標化 • 多数の生徒の状況が把握できるダッシュボード
  8. スマホアプリ セクション iOSアプリ グループ Androidアプリ グループ Webフロント セクション バックエンド セクション

    サービス開発部 組織体制
 デザイン セクション SRE セクション 教務システム セクション 品質保証 セクション フロンティア 企画開発 セクション 教務システム 22
  9. 制度・福利厚生 25
 リフレッシュ休暇 有休とは別に毎年付与される休暇です。まとまった休暇 が取りやすくなる制度のため夏季や年末年始に利用す る方が多いです。 ※一般的な産育休や慶弔休暇といった制度もあります。 対象資格を取得すると、 月額2,500~50,000円を3年間支給します。 (一部、1年間のものや退職までのものもあり

    ) 対象資格例: ITストラテジスト システムアーキテクト プロジェクトマネージャ ネットワークスペシャリスト データベーススペシャリスト 情報処理安全確保支援士 システム監査技術者 ※2022年11月時点で37個の資格が対象。 ※入社後に取得した資格が支給対象となります。 業務により公共交通機関を使って出社した際の費用を支給します。 テレワーク勤務者: 通勤に要した実額を経費として支給 非テレワーク勤務者 : 通勤経路の定期代相当額を手当として支給 ※上限月額 50,000円 資格取得手当 会社が契約をする賃貸マンションに入寮日より 2年間入居できます。 入寮条件をクリアする必要があります。 間取り等を選べませんが、築浅マンションに安価に入居することができます。 入寮に伴う引越費用も会社が負担いたします。 テレワーク手当 テレワーク勤務者を対象に電気代及び通信費等並びに就業環境を整えるための手当です。 月額20,000円を支給します。 通勤交通費手当 社員寮 ※新卒社員のみ対象 休暇 ※歌舞伎座タワーより 100km圏内での勤務を原則としていますが、  一定の条件を満たし、会社承認が下りた場合、  遠隔地(歌舞伎座タワーより 100km以遠)勤務も可能です (国内のみ)。
  10. 制度・福利厚生 26
 満3歳未満のお子さんを養育する場合、育児休業 の取得が可能です。 「育児・介護休業法」で定められた最長 2歳までの 期間よりも長く取得が可能です。男女ともに取得実 績があります。 育児休業 小学校入学までのお子さんを扶養しており、保育園

    などの育児サービスを継続的に利用する場合、そ の月額基本料金の2分の1相当額を、上限50,000 円まで育児手当として支給します。 育児手当 小学校卒業までのお子さんを養育する場合、勤務 時間の短縮が可能です。 標準勤務時間は1日 8時間ですが、5時間、6時間、 7時間から選択可能です。 育児短時間措置 同好会 公認の同好会は、会社より補助金支給 LT大会 職種ごとに、持ち回りで 5分ほどの短いプレゼン大会を開催しています Slack 社内で用いているコミュニケーションツール。 publicなチャンネル数は5,966     ※2022/10現在 ドワンゴ大忘年会  1年の振返りや社内表彰などを行います ※任意参加です コミュニケーション活性 artifata GINZA KABUKIZA店 会社の中に美容院があります! 施設 サブスク手当 社員のクリエイティブな発想を支える施策として、会社指定のサブスクリプションサービスに契約している場合、 月額2,000円を支給 健康保険組合各種サービス 関東ITソフトウェアの保養施設やスポーツ施設が特別価格で利用可能) 財産形成制度 財形貯蓄制度、社員持ち株制度 その他 子育て支援
  11. アプリケーションWebフロントエンドの見どころ
 不確実性と戦うために常に変化し続ける
 いわゆるふつうのSPA React(hooks) React Router Redux + Redux-Observable TypeScript

    styled-components Ruby on Rails view上の React ReactやjQuery page.js, slim Redux TypeScript 身軽なSPA React(hooks + Suspense) React Router React Query, etc… TypeScript styled-components 脱Railsべったり
 リリース当初の実装から脱却
 これは目立つ事例、常にすべてを見直し続ける
 サービスの性質を考慮し
 多方面に身軽にしやすく変化
 31

  12. 教材コンテンツフロントエンドのあらまし 一定のフォーマットに従うHTMLから、コンテンツを再生
 Android N予備校 アプリ iOS N予備校 アプリ N予備校 Web

    教材コンテンツ フロントエンド TypeScript + React 教材 HTML 参考書 問題集 選択式問題 記述式問題 論述式問題 … 34

  13. LMS “Compass”フロントエンドの見どころ メンター(≒N/S高の先生)が生徒のN予備校の学習状況を把握するアプリ 技術的みどころ Next.js v12 (Static HTML Export) GraphQL

    (urql + graphql-codegen) バックエンドとmonorepoで開発 課題、今後 Next.jsをv13にしたい 不足しているテストの追加 リリースや依存パッケージ更新作業などの運用の見直し・自動化 まだβ版なのでこれから開発する機能が沢山あります 37

  14. Webフロントチームについて • 総勢10名(2023年4月時点) ◦ 社員8名、業務委託2名 • GitHub Enterprise上でPR中心の開発 ◦ 厳しく優しくレビューしています

    ◦ CIでのテストの他、外観差分やPRごとのStorybookなど整備しています • 特に担当コードベースの概念はない ◦ 事実上の主担当はあるが、壁は設けていない(見直すかも • 1週間のスプリントで計画&振り返り ◦ 5分程度のデイリーミーティングで毎日状況共有 • 週1回のチーム内Webフロントエンド勉強会 ◦ 世のトレンド把握からWebまわりの仕様把握、業務知識共有まで 38

  15. iOS 利用技術 使っている技術 使わない技術 使いたい技術 Swift 5.8 Ruby Bash SwiftUI

    RxSwift Action Alamofire Quick, Nimble XcodeGen SwiftPM SwiftGen SwiftLint fastlane Danger Objective-C CocoaPods Swift Concurrency サポート対象OS iOS 15.0 以上(2024年4月から iOS 16.0 以上の予定) 41
  16. iOS アーキテクチャ View MVVM
 ViewController Storyboard ViewModel ViewModelInputs ViewModelOutputs Model,

    Repository RepositoryProtocol テストあり 依存あり SwiftUI View 42
  17. iOS チームの取り組み 朝会(毎日) チーム活動振り返り(週1) 勉強会(週1) プロダクト開発に関連する技術の情報共有や LT 例)Swift、SwiftUI、SwiftLint、GA など 案件対応

    仕様策定、開発、リリース 運用・保守 コードやCIの改善、ドキュメント整備、アクセスログ調査、便利ツールの開発な ど 44
  18. iOS その他の開発 マルチモジュール対応 段階的な Swift UI 移行 SwiftPM 移行 アプリ内デバッグ機能の拡充

    内製ライブラリの作成・メンテナンス リファレンスリポジトリのメンテナンス 45
  19. Android 利用技術 サポート対象OS Android 8.0 以上
 使っている技術
 使いたい技術
 ・Kotlin
 ・Coroutines Flow


    ・Navigation
 ・Jetpack Compose
 ・ExoPlayer
 ・ViewModel, LiveData
 ・Retrofit
 ・moshi
 ・mockito-kotlin
 ・Dagger Hilt
 ・media3
 
 48
  20. Android アーキテクチャ モジュール構成図
 app app アプリのエントリーポイント ui home ホーム画面の UI

    domain data forum フォーラム画面の UI lesson 授業画面の UI setting 設定画面の UI common 共通の UI material 教材画面の UI home ホームのロジック forum フォーラムのロジック lesson 授業のロジック setting 設定のロジック common 共通のロジック material 教材のロジック repository データを取得 contract インターフェースの定義 datasource データの定義 49
  21. • 新機能の開発 ◦ 他チームと協力しながら仕様の作成、実装、リリース • アプリの品質向上 ◦ ライブラリの刷新、技術的負債の解消など • チームのサポート

    ◦ コードレビュー、勉強会の進行など • 知見の外部共有 ◦ 技術ブログの執筆、教材の制作など Android チームの取り組み 51
  22. Android その他の開発 • Jetpack Compose の導入
 • RxJava から Kotlin

    Flow への 移行
 • DroidKaigi のスポンサー
 開発者ブログより 52
  23. 品質保証チーム • チーム体制 ◦ N予備校:4名 (社員3名、派遣社員1名) ◦ 教務システム:5名(社員1名、業務委託4名) ◦ マネージャー:1名

    • ベーシックな品質保証プロセスを基本として活動 ◦ デイリーでアプリケーションごとにタスク、情報共有 ◦ ウィークリーで社員間のコミュニケーション 54
  24. 品質保証 取り組み • 2021年チーム立ち上げ ◦ 案件ごとの品質保証 ◦ リグレッションテスト(フロントエンド、バック エンド、SRE) ◦

    シフトレフト品質保証活動 ◦ テストデータ整備 ◦ ユーザー問い合わせ連携 ◦ 検証端末管理 55
  25. 品質保証 今後の活動 • 対応領域拡大 ◦ 各開発チームへのシフトレフト活動 ◦ リグレッションテスト範囲拡大 ◦ 既存運用強化

    ◦ 上流工程からの介入 ◦ 新規案件対応 • 継続検討 ◦ テスト自動化 ▪ Autify などの導入検証 56
  26. N予備校のサーバーサイド 58 N予備校 PCWeb N予備校 iOSアプリ N予備校 Androidアプリ N/S高向け 単位認定試験アプリ

    (Android) LMS Compass PCWeb N予備校 サーバー アプリケーション群 N予備校 API N予備校 CMS Compass API 教務システム 教務システム 連携API N予備校の扱うコンテンツやユーザーの学習進捗 教務システムとの連携を担い様々なサービス・システムを支えている
  27. N予備校サーバーサイドチーム 59 • 2023年6月時点で19名のチーム ◦ 規模拡大中のチームで現在も積極的に採用活動を行っています! ▪ 直近2年間の採用実績 • 2021年度

    4名(新卒社員 1名, 中途社員 3名) • 2022年度 5名(新卒社員 1名, 中途社員 4名) • プロジェクトごとにチームを編成し開発 ◦ メンバーの希望やプロジェクトの規模・専門性からチームを組織 ◦ 開発の進め方についてはプロジェクトに応じて検討するが スクラム的な形式となることが多い • 週1の雑談会・月1の勉強会を継続的に実施 ◦ プロジェクトを横断したコミュニケーションや業務知識の共有など
  28. 利用している技術 61 マイクロサービスアーキテクチャの利点を活かし 開発時の状況や解決したい課題に応じて適宜技術選定を実施 Ruby, Rails / Padrino / Grape

    開発初期のメンバーのスキルセットやリリースに向けての開発速度に 重点が置かれていた Node.js, Express / Socket.io 開発初期の段階でWebSocketを用いるような機能の実現のため選定 TypeScript, NestJS 型の恩恵を得られるとともに DIや拡張性の高さから選定 主にPCWebフロントを持つようなアプリケーションについて順次採用 サーバーサイドKotlin null安全な静的型付言語により得られる恩恵が大きかった点と言語としての豊富な表現力から複雑 なドメイン知識をコードとして表現する際にメリットがあると判断し採用 N予備校バックエンドでサーバーサイドKotlin移行を始めました
  29. 企画・技術検証(PoC)・データ解析・DWH構築 を行っています 普段は企画チーム・技術検証/DWHチームで動くことが多いですが、 メンバーそれぞれの特性を生かし有機的なつながりを作ることを目指しています <企画/データ解析> 2023/10現在 Webサービスプランナー・ ディレクター 2名 (内

    1名兼務) データアナリスト 2名 (兼務) <技術検証/DWH> 2023/10現在 データサイエンティスト 2名 データエンジニア 3名 マネージャー 1名 合計10名のチームです 66 データ 解析 技術 検証 DWH 構築 企画 フロンティア企画開発チーム
  30. 行動履歴基盤の構築 • N予備校とのIF(DataLake) • DWH • LMSとのIF(DataMart) 学力定量化への挑戦 • 項目反応理論(IRT)の適用

    • 生徒を巻き込んだキャンペーン企画 サービス企画・教材企画・学園運営へのデータ解析 • 企画開発ディレクション案件の KPI取得 • プランニング時の実データ検証 • 教材企画・学園運営への KPIデータ提供(LMSのプロトタイプ要素も含む ) 68 2022年の技術検証・データ解析の取り組み
  31. チームを大きくしていきます! 「N予備校」「ZEN Compass」をより学習者にとってより価値のあるものにするため、 69 2023/10現在 10名 14名 を目指します 以下の内容が気になる方、 ぜひカジュアル面談しましょう!

    • 「学校」が抱える課題にデータやテクノロジーを使ってアプローチしたい • 学習者に寄り添う学習プラットフォーム・教育プラットフォームを作りたい • データサイエンティスト/アナリストだけれど、モデルを作るだけではなく企画として実現 するところまで繋げたい • ソフトウェアエンジニアだけれど、企画もやりたい • データエンジニアリングとデータサイエンスの両方に興味がある 2023年の採用情報 2023/4現在 8名
  32. 72

  33. 73

  34. 74

  35. 75

  36. 76

  37. 77

  38. 78

  39. 旧技術基盤とは • 外部パッケージで使われ、つくられたもの ◦ 開発 ▪ Java8 / jQuery ▪

    独自MVC / 独自ORM ◦ インフラ ▪ AWS EC2を手動構築 • 教務システムとしては 6年前開発開始だが、おそらく技術自体は相当な歴史があるものと推測 • DXが良くなく、今後10年内製チームで利用していくには心許ない • ユーザー体験も悪い、 Form Submit とページ遷移の繰り返し (後述) • (補足) 当時の判断を責めるものではない ◦ 速く安くしたかっただろうし、そしてこれほど生徒も職員も増えると思っていなかっただろうし ◦ 大事なのは、変化にいかに対応するか ⇒ 内製化のキモでもある 80
  40. 新技術基盤とは • 内製チームで技術選定したもの ◦ 開発 ▪ TypeScript / Next.js(React) /

    Prisma ◦ インフラ ▪ コード化、コンテナ化、ECS + Fargate で実行 • 今後10年内製チームで利用していくことを見込んで選定 ◦ (Prismaに迷いはあるがオニオンアーキテクチャで依存を回避) • Next.js で SSR + 部分的CSR • 閲覧と編集をシームレスにしてクリック数を削減 (後述) 81
  41. 旧 ⇒ 新技術基盤への「ゆるやかな移行」 • データベースは旧/新で共有 ◦ データの寿命はシステムより長い • 100画面以上ある全ての JavaAction

    と HTMLテンプレートを 一気に移行することは不可能 ◦ そもそもユーザーの要求の捉え直しをせずにやっても意味はない • したがって既存画面の改修は旧基盤のまま躊躇なく行いつつ 新たな要求(新規画面追加、既存業務の見直しなど)を新基盤で実現 ⇒「ゆるやかな移行」 • 並行して開発者もサーバサイド Java メインから TypeScript / Next.js を修得、レベル上げしていく 83
  42. なかま募集 たとえばこんな方... • 抽象的な業務課題を吸い上げて、システムに落とし込む上流工程やりたい ◦ 年々進化する学校なので課題も多いが、やりがいもあります • 業務システム開発で TypeScript /

    Next.js / コンテナ技術が できる・やりたい・やれるようになりたい ◦ いまはJavaしかできないけど…な人も歓迎 • いままで受託だったけど、内製やっていきたい ◦ ユーザーの感謝が得られますし、生徒数が増えたりコストが下がるのも嬉しいです まずはカジュアル面談からお待ちしています! 🙏 86
  43. SREチーム • チーム体制 ◦ 7名(社員5名、業務委託2名) • 担当プロダクト ◦ N予備校・教務システムそれぞれのインフラ全般を担当 •

    主な業務の分類として下記の3観点で対応中 ◦ 各チームからの依頼作業 ◦ 通常運用作業 ◦ 運用負荷軽減を目的とした改善作業 88
  44. SREチーム 開発体制 • 開発サイクル ◦ 2週間単位のスプリントでチケット駆動開発 ▪ メンバー間の進捗共有 • 日例(毎日)

    • 進捗共有会(週1) • 技術スタック ◦ Terraform ◦ Python ▪ 運用自動化を目的としたスクリプト作成に利用 ▪ 特に制約がない場合の最初の選択肢。他の言語を利用することのメリットが大きい 場合は積極的に採用 89
  45. 主な業務内容 • 依頼作業 ◦ 各開発セクションからの依頼対応 ▪ 新規サービスの提供に向けた新規構築・既存環境の構成変更 ◦ 学園イベントによるアクセス増への対策として一時的なインフラ増強対応 •

    通常運用作業 ◦ 障害未満のアラート発報時の未然対応 ◦ 障害発生時の復旧対応・再発防止のための根本対処 ◦ AWSから通知されるEOLやEC2のリタイアメントへの対応 • 運用負荷軽減を目的とした改善作業 ◦ 各種監視強化やデプロイ改善 ◦ 定期的にアラートが発生する事象に対する自動対処の導入 ◦ IaCのリファクタリング 90
  46. 直近の取り組み事例 • 依頼作業 ◦ ZEN Compass及びZEN Improt環境構築 ◦ 学園の単位認定試験実施に伴うアクセス増対策のインフラ増強 •

    通常運用作業 ◦ PostgreSQLのマイナーバージョンアップ対応 ◦ Redis v2 -> v6のバージョンアップ • 運用負荷軽減を目的とした改善作業 ◦ Zabbixで監視していた項目をすべてCloudWatchへ移行 91
  47. 選考の流れ 94 1次面接 面接官 マネージャー 現場エンジニア 最終面接 面接官 テクニカルディレクター 書類選考

    ※1次面接までに適性検査を受検いただ きます ※面接はすべてオンラインです ※選考の過程でコードテストを実施する場合があります ※選考の状況により選考の流れが変更される場合があります