各社のエンジニア研修で探る、新人エンジニアに必要な技術と駆け出しエンジニアの成長論

新人研修の内容を検討しているのですが、それにあたり各社の新人研修を調査しました。 なお本記事は、@gcchaan氏のGitHub Gistにある「研修資料まとめ」を参考に作成しております。

@gcchaan氏の「研修資料まとめ」はとても素晴らしいまとめで、これを見ると各社がどのように新人エンジニアを育成しているのか見てとれたり、新人エンジニアがどのような研修を経て成長していくのか垣間見えます。

DMM.com(2019)

inside.dmm.com

インフラ、プログラミング、運用技術、開発手法をひととおり学びます。 研修カリキュラムが幅広い上に、扱うテーマがそれぞれハイレベルで驚きました。

  • 開発技術: 仮想化基礎・開発環境構築・インフラ(クラウド・オンプレ)・Webアーキテクチャ・AWS
  • プログラミング: サーバーサイド(Go)・フロントエンド(HTML/CSS)・フロントエンド(VDOM/React.js)・モバイル開発(Android/Swift)・機械学習(Python)
  • 開発手法: スクラム開発・テスト技術・ソース管理・ビルド・デプロイ・ジョブ実行・負荷テスト・パフォーマンスチューニング
  • 運用技術: ログ監視・リソース監視・セキュリティ・SRE・KPI分析手法・科学的改善・サービス発案・ソリューション企画

特筆すべきは、サーバーサイド・フロントエンド・モバイルアプリ開発・機械学習と、プログラミング研修が全網羅的に充実している点です。 DMM.comにはさまざまな技術分野のスペシャリストがおり、この研修を通じて「自分なりのエンジニアとしての方向性や、成長マップを作ってほしい」という想いが込められているようです。

DMM.comの研修は驚くほど網羅的ですので、この中から興味のある内容を中心に学習するのが、ひとつの目安になります。 開発技術に興味があるならインフラ寄りのエンジニアですし、モバイル開発に興味があるならアプリエンジニアになります。

DMM.comの研修で紹介されている技術書

見事に名著ばかりです。 「大規模サービス技術入門」は「はてなのインターン」がベースになっている書籍で、解説がわかりやすくて好きです。

GMOペパボ(2019)

tech.pepabo.com

配属先で必要になるWeb開発の基礎スキル習得を目標に、以下の研修を3ヶ月に渡って実施しています。

  • Webアプリケーション開発研修
  • セキュリティ研修
  • フロントエンド研修
  • インフラ研修
  • 社内エンジニア・デザイナーによる座学
  • 読書会

Webアプリケーション開発研修には、Rails Tutorialと株式会社万葉の新入社員教育用カリキュラムを使います。

まずはじめに、Rails Tutorialを教材に、Railsを利用したWebアプリケーション開発の基礎を学びます。研修メンバー全員がRails Tutorialを完走することを目標に、講師に質問したり、互いに教え合いながら進めていきます。

次に株式会社万葉さんの新入社員教育用カリキュラムを教材に、タスク管理システムの開発を行います。 コードを写経しながら進めたRails Tutorialと異なり、設計から行い、全てのコードを一から自分で書いていくので、より実践的なWebアプリケーションの開発ができます。

株式会社万葉さんの新人研修用カリキュラムは、以前はてなブックマークで人気エントリー入りしたときに知りました。 学習ステップがとても丁寧でしっかりしているので、Railsを採用している企業は素直にこれを採用すれば良さそう。

github.com

LINE(2018)

engineering.linecorp.com

LINEクローンの開発を通じて、技術を習得します。

これから作るものはこちらです。

  • Android 向けアプリ
  • サーバ+クライアント型アプリケーション
  • コミュニケーションツール

成果発表会の写真には、Firebase(FCM)、Nginx、Node.js、MySQL、Redisといった文字やロゴがありました。 開発言語や技術は一切制限がないと書いてあったので、チーム毎に創意工夫しているのだと思います。

しかしながら、このレベルのアプリを18日間で開発するって、普通にすごい気がします。 ただし記事の途中で、「予定調和の仕様変更&スケジュール変更」と書いてあります。 開発途中での仕様変更はエンジニアあるあるなので、そこまで含めてリアルです。

Spee(2016)

tech.speee.jp

TECH::CAMPを使った新人エンジニア研修です。

  • 前半戦(04/11〜04/18)
    • Rubyの基礎
    • HTMLとCSSの基礎
    • 簡単なスクレイパーの作り方
    • Herokuへのデプロイの仕方
    • 基礎的なRails appの作り方

後半戦の内容は高度ですが、プルリクエストの1つ1つをメンターやSpeeエンジニアが丁寧にレビューしながら、丹念に進めていくみたいです。

  • 後半戦(04/19〜5/26)
    • Rails4系でSlackのクローンWebアプリを作成せよ
    • フロントエンド
      • Reactを使用したリアルタイムチャットの実装
      • UI・UXのデザインとコーディング
    • バックエンド
      • Nginx + Puma + Rails環境構築
      • Itamaeを使用したサーバー設定の自動化
      • Capistrano3を使用したデプロイ環境構築
      • チャンネルの作成・更新・検索機能の実装
      • deviseを使用したユーザー認証機能の実装
      • Paperclipを用いたユーザーアバター機能実装
      • ダイレクトメッセージ機能の実装

研修で開発したソースコードの最終成果物は、GitHubに公開されています。

github.com

Wantedly(2019)

www.wantedly.com

入社後すぐにプロダクトチームに加わる実践型です。 ただし、30分から1時間ほどの研修を週に数回ほど行っているようです。

まず、Wantedly では新卒であっても「研修だけを受ける期間」というものは存在しません。それぞれのメンバーは入社してすぐにプロダクトチームやビジネスチームに入って実務を行い、並行して週に3-4回、1回あたり 30min-1hour ほどの研修を受けるという形式にしています。

他社と異なり研修に専念する期間がない理由は、「すぐに実務ができる人」を採用している、または「長期インターンを経験しているメンバーが多い」と書いてありました。 そもそもの採用を創意工夫することで、専用の研修カリキュラムがなくてもまわるような仕組みづくりの姿勢がうかがえます。

ウエディングパーク(2019)

engineers.weddingpark.co.jp

新卒2年目エンジニアが、エンジニア新卒研修を担当するという取り組みが興味深いです。

  • メイン研修
    • 基礎座学
      • HTML/CSS
      • インフラ
      • JavaScript
      • SQL
      • PHP/Laravel
      • Golang
      • QA
      • 設計
    • プロ編座学
      • パフォーマンスチューニング
      • SEO
      • プロダクトセキュリティ
      • 自動テスト
    • 個人開発
    • 実案件OJT
  • サブ研修
    • ディレクター研修
    • 新聞読み会
    • 輪読会

研修の全体的な流れは、「座学 => 個人開発 => OJT」です。 研修講師は、それぞれ専門領域に特化した「プロ」のメンバーへお願いをしたとのことです。

「メンター制度」や「研修担当との1on1」など、新人研修をサポートしようとする試みが充実しており、ぱっと見ですが丁寧で良さそうな研修だと感じました。

f:id:konosumi:20190919031504j:plain

エムスリー(2018)

www.m3tech.blog

研修概要

「エムスリーシステム基礎編」が特徴的で、興味があります。 エムスリーのシステム開発を行なうことを想定した、重点型の研修みたいです。

講義一覧は、以下のようになりました。

  • Webエンジニア基礎編
    • RDB入門
    • セキュリティ講座
    • ソフトウェアテスト概論
  • エムスリーシステム基礎編
    • m3.comシステム構成
    • M3での開発・運用の進め方の基本
    • Docker/GitLab-CIレクチャー
    • M3インフラ構成
  • 番外編
    • AWSの概念・全体像
    • AWSの基本的な使い方
    • 機械学習を使って分類器の作成
    • Bashスクリプティング講座
    • Spring Boot, maven・gradleプロジェクトの足回り整備の講座

KAYAC(2017)

techblog.kayac.com

社内ISUCONが特徴的です。 ISUCONは「Iikanji Speed Up Contest」の略称で、ウェブサービスのスピード改善を通じてプログラミング・DB・サーバーなどの技術力を高めます。

techblog.kayac.com

クックパッド(2016)

techlife.cookpad.com

クックパッドのインフラ新卒研修にも社内ISUCONがありました。 社内ISUCONは、技術力向上に最適なのかもしれません。

  • 1日目
    • インターネットとは
      • ブラウザでウェブサイトを閲覧する際になにが起きているのか
      • IPからHTTPまでざっくりと
    • Webインフラアーキテクチャ概観
      • 三層アーキテクチャ(Webサーバ層、Webアプリーケーション層、データベース層)の話
      • スケールイン/アウト
    • Vim超入門
    • アプリケーションサーバ
      • Rack, Ruby on Railsの仕組み、役割
      • WEBrickやUnicornなどのHTTPサーバの話
  • 2日目
    • データストア
      • MySQL
        • スロークエリ, explain, インデックス
        • トランザクション, ロック
        • レプリケーションとスケールアウト
        • レプリケーションとスケールアウト
      • Memcached
        • slab allocator, consistent hashingなど使う上で知っておきたい知識
      • Redis
        • Memcachedに比べた利点や使いどころについて
      • 全文検索
        • Solr, Elasticsearchの役割や利点について
    • Webサーバとプロキシ
      • nginx
        • 静的ファイルの配信
        • Unicornなどアプリケーションサーバの前段に配置する意味
  • 3日目
    • その他の構成要素
      • キャッシュ
        • Railsキャッシュストア
        • Varnishによるレスポンスのキャッシュ
      • CDN
        • CDNの役割や利点について
      • バッチ処理
        • バッチ処理とはなにか
        • 弊社のバッチ処理環境について
        • バッチを書く際に気をつけるべきこと
    • Infrastructure as Code
      • なぜコードで記述するか
      • Itamae, Serverspecによるサーバプロビジョニング
      • これまでの手作業を自動化してみる
    • いわゆる”クラウド”について
      • AWSなどいわゆるクラウドサービスの利点と各種サービスについて
  • 4日目:段階グランプリ(社内ISUCON)

GREE(2014)

labs.gree.jp

GREEの新卒研修にもISUCONが! 新卒研修におけるISUCONの人気がすごいです。

グループワークでは、新卒を2チームに分けて、LAMP環境のパフォーマンスチューニングの競技を行ってもらいました。 具体的にはチケット販売サイトにおける3日間のチケット販売数を競う、というものです。 毎日測定会を実施し、最終日にスコアの発表と、チューニングの過程で工夫した点などの成果プレゼンを各チームから行ってもらいました。

※こちらの大会(ISUCON2)で使用されていたソースコード(チケット販売サイト+ベンチマークツール)が公開されていましたので、アレンジして題材として使用させて頂きました。

ぐるなび(2017)

developers.gnavi.co.jp

ぐるなびの新人研修では、おもにLAMP(Linux, Apache, MySQL, PHP)環境の技術を学びます。 Apacheとは書いてないので、LNMP(Nginx)の可能性もあります。

なおApacheがNginxになった場合は、LEMPと呼ぶらしいです。 LNMPとどっちが正しいのでしょうか?

2017年度現在、新卒向けのカリキュラムは以下となっています。

  • Web基礎(HTML,CSS,JavaScript)
  • プログラミング言語基礎(主にPHP)
  • DB基礎(主にMySQL)
  • 言語応用(フレームワークの解説と基本的な使い方紹介)
  • Linux基礎(主にCentOS)
  • 総復習の個人演習(基礎講座の演習復習、Web在庫管理的システムの作成)

LEMPについて

www.logw.jp

サイバーエージェント(2019)

note.mu

Twitter風のSNS開発を通じて、エンジニア研修を行ないます。

お題は、『TwitterライクなSNSを作る』。

エンジニア研修がどのように進んでいったか

途中でスプリントレビューがあるのですが、レビュー風景の写真を見る限り、かなり盛り上がっていて楽しそうです。

期間中のスケジュールは、概ね以下のようなものでした。

  • 1週目:木曜日と金曜日で2営業日かけてプロダクトの設計を行う
  • 2週目:実装開始。木曜日に研修官によるスプリントレビューを実施
  • 3週目:木曜日に中間発表を実施
  • 4週目:水曜日に最終発表を実施

サイボウズ(2019)

blog.cybozu.io

  • 5/27〜5/31(第1週)
    • 必修の講義や演習が中心
    • 空き時間はRFC精読や予習/復習
  • 6/3〜7/12(第2〜7週)
    • チーム体験と選択講義期間
    • 2週間で体験するチームを変えて、合計3チーム

講義一覧

講義の内容は幅広いですが、「ソフトウェアライセンス」の講義は良いなと思いました。 意外とライセンスは盲点だったり、疎かにしがちですので、新人研修の段階からライセンスを学べるのが素晴らしいです。

  • 開運ことはじめ
  • HTTP/DNS
  • Linux
  • ソフトウェアライセンス
  • Git/GitHub
  • Webアプリケーション基礎
  • スクラムトレーニング
  • ソフトウェアテスト&テスト自動化
  • アクセシビリティ
  • 正規表現
  • Chrome Developer Toolsの使い方
  • データベース
  • Docker
  • Webアプリケーションセキュリティ
  • ネットワーク
  • ローカライゼーションと機械翻訳
  • Linux サーバの CPU やメモリリソースの管理について
  • ベトナムの文化について
  • 実践 Go 言語
  • Kubernetes を使った開発入門
  • CI/CD
  • パブリッククラウド入門 (AWSによる実習付き)
  • スキーマファースト開発ハンズオン

シーエー・モバイル(2016)

tech.cam-inc.co.jp

「実在の弊社サービスのバグ修正をテーマにした業務チケット消化バトル(研修のために別の環境を用意しました)」というユニークな研修です。 ストーリー設定に対するこだわりがすごい。

サービスの前任者が大量のバグを残したまま全員事故に遭ってしまった。 対応できるエンジニアは新人だけ・・・。

2チームに別れ、チーム内で協力しながら、 次の金曜日までにとあるサービスのバグチケットを解消し、リリースしなければならない。

先輩社員の協力を得つつも幾つもの困難を乗り越える若者達は・・・、果たして無事サービスをリリースすることができるのか・・・。

新人の実際にやった業務フロー

  • 事前準備
    • ローカル環境セットアップ(Ansible)
    • リポジトリを fork

その上で

  1. Redmine 起票されたチケットをアサイン
  2. ローカル環境でブランチ作成
  3. バグ修正を行う
  4. プルリクエストを出す(GitHub Enterprise)
  5. 先輩からレビューを受ける
  6. マージされたら開発環境で pull して確認

セプテーニ・オリジナル(2017)

labs.septeni.co.jp

2017年のセプテーニ・オリジナルの研修カリキュラムです。 TDDとDDD研修があるのが特徴的で、内容が気になります。

  • ソフトスキル研修(半日)
  • Macを使おう(数時間)
  • Web基礎研修(2日)
  • Scala研修準備(10日)
  • Scala研修(半日×14日)
  • サーバ構築講習(1日)
  • データベース基礎(2日)
  • 設計(アルゴリズム)基礎(半日)
  • TDD研修(半日)
  • スクラム基礎研修(半日)
  • チーム開発準備(半日)
  • DDD研修(1日)
  • チーム開発(実施日数未定/期限あり)

はてな(2017)

developer.hatenastaff.com

はてなでは、エンジニア新人研修に障害対応演習を取り入れているようです。

ハンズラボ(2017)

www.hands-lab.com

www.hands-lab.com

「仮想プロジェクト」による演習が特徴です。 チーム開発や、自走するために必要な開発力といったテーマが印象に残ります。

  • 4月: 〜自走するために必要な、開発の基礎力育成フェーズ〜
  • 5月、6月: 〜ユーザーの要求に応えられるエンジニア、チームで円滑に開発を進められるエンジニアになるための「仮想プロジェクト」演習〜

研修目標

研修を行うにあたって、以下の3つの研修目標を立てました。

  1. 自走できるエンジニアになる
  2. ユーザーの要求に応えることができるエンジニアになる
  3. 共に開発する仲間を大切にできるエンジニアに

ピクシブ(2017)

inside.pixiv.blog

新卒の研修は新卒がつくるという斬新な試みです。 ビジネス職に向けてプログラミングを教えるという研修が紹介されてました。

「プログラミング研修」は、新卒技術職が新卒ビジネス職にプログラミングを教える、という少し変わった研修です。

モノづくりをしているピクシブにとっては、ビジネス職側にもコンソールやプログラムに臆せず触れていくことも時には求められます。

  • 1日目
    • 導入、Mastodonクローンの完成イメージを見せる
    • Webサービスを構成する技術要素の概観
    • シェル、Git演習
    • HTML/CSS演習
  • 2日目
    • プログラミングアルゴリズム演習(PHP)
    • データベース演習(MySQL)
    • 実践Webプログラミング演習(PHP + MySQL)
  • 3日目
    • Mastodonクローン開発(終日実習)
    • セキュリティ対策講義
  • 4日目
    • Mastodon機能拡張あるいは自由課題(終日実習)

ファクトリアル(2014)

bosssato.hatenablog.com

5年ぶりに入社した新卒エンジニア向けの研修カリキュラムを、5年前の新卒エンジニアが・・・と書いてあるのですが、研修カリキュラムを考える過程の試行錯誤に感動しました。

あとでまた、じっくり読みたいと思います。

github.com

フィードフォース(2018)

developer.feedforce.jp

良書が中心のカリキュラムです。 「Webを支える技術」は丁寧に書かれていて、私も大好きな本のひとつです。

  • 4月
    • プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで の例題を解く & 読む
    • わかばちゃんと学ぶ Git使い方入門 を読む
    • Vim 研修(vimtutor を2周する)
  • 5月〜6月
    • パーフェクトRuby on Rails の1章〜5章を読む & 6章〜7章のアプリ作成
    • メタプログラミングRuby 第2版 を読む
    • Webを支える技術 を読む
    • 社内スクラム研修
  • 7月
    • ローテーション配属研修(2チーム)
    • シンプルな Todo アプリの API 開発
    • 社内フロントエンド研修
    • 社内インフラ研修

「vimtutorを2周する」は特徴的かもしれません。Vimはいいぞ!

フィードフォースで紹介されている技術書

ミクシィ(2018)

mixil.mixi.co.jp

mixil.mixi.co.jp

「データベース」、「AWS」、「Unity」、「不具合調査」、「テスト駆動開発」など、基礎をベースに座学・問題回答・開発実装があります。

人それぞれ得意不得意があるかもしれませんが、この研修では、高度な知識を専門的に学ぶというよりも、苦手分野を無くすための研修です。では具体的な内容について紹介します。

Unityの研修があります。 さすがはモンストのミクシィです。

みんなのウェディング(2018)

blog.mwed.info

「課題図書の選定」からはじまる、新人研修に向けた取り組みが見て取れます。 課題図書も、DB設計からオブジェクト指向、セキュリティにいたるまで幅広いです。

2018年度新卒エンジニア研修の概要

  • 課題図書とRails tutorial
  • 全体集合研修(4月)
  • 座学と実習(5月)
  • パイロットプロジェクト(6月)
  • OJT(7月〜)

メルカリ(2019)

tech.mercari.com

「Fundamental Training」とは

マイクロサービス化を進めているメルカリだけあって、新卒エンジニアのトレーニングのひとつに、マイクロサービスがあります。 「Training 2」と序盤で登場することもあり、メルカリインフラを理解するにはマイクロサービスが重要であると言えそうです。

新卒エンジニアのためのトレーニングの1つで、5日間という短い期間で、Programing・ Frontend・Backend・Microservices・Mobile・AI・Security・QAの8つの分野を、ハンズオン等のworkshopを交えつつ学ぶ研修です。 研修の目的としては2つ。メルカリで使われている技術スタックを理解することと、自身の技術領域を広げることです。

「Fundamental Training」はどんなコンテンツ

  • Training 1:Development Using Go
  • Training 2:Microservices Development
  • Training 3:Continuous Delivery & Microservice Hands-on
  • Training 4:Mobile
  • Training 5:Frontend
  • Training 6:Machine Learning
  • Training 7: Quality Assurance
  • Training 8:Security

リクルートテクノロジーズ(2018)

recruit-tech.co.jp

ブートキャンプのコースは2つ。

一つは、プログラミングやWebサービスの構造の基礎を学び、その後1つのスマホサイトを企画からリリースまで行うコース。 もう一つは一定以上のプログラミングスキルと開発経験のある層向けに、より現場での技術に即した実践的な内容を学び、その後実際のサービスでチーム開発のOJTを実施するコースです。

今回公開するのは、後者向けの資料になります。

リクルートテクノロジーズの特徴は、講師が豪華なことです。 なんとTDDの講師は和田卓人(@t_wada)さんです。

ライブコーディングでわかるテスト駆動開発 - Speaker Deck

さいごに

記事を書くのが大変すぎたので、まとめを書く気力がありません(笑)。 気になる企業の研修がある場合は、記事内にリンクがたくさんありますので、それぞれご参照ください。

  • 新人研修で教えている技術は、実際にエンジニアとして働きはじめたときに知っておくと良い技術である
  • 良書を中心に学習するパターンもあれば、仮想プロジェクトやアプリ開発の演習を通じて技術力を養成している企業もある
  • 社内ISUCON最強説
  • アプリケーション開発の全体像を深堀りしながら、開発に役立つ技術スタックを網羅的に教えている研修も多かった

基本的には新人エンジニア(駆け出しエンジニア)が覚えると良い技術が、研修カリキュラムにつまってます。

もちろん目標とするエンジニアの方向性により、必要な技術は異なります。 ただし意外と網羅的に研修で教えている企業が多かったので、最初は広く浅く、アプリケーション開発(システム開発)の全体像から捉えていくのが良いかもしれません。 少しでも参考になれば幸いです。

告知

9/22の技術書典7にサークル参加しました。 このすみ堂の新刊の2冊は、BOOTHにて電子版を頒布中です。

  • Node.js本中級者を目指す
  • エンジニアアンチパターンNEXT

konosumi.booth.pm