あいさつ
皆様、こんにちは。2019年度に入社した水島です。引き続き、社内の新卒教育を担当しつつ、現在はいったん特定のチームにjoinしてみることはやはり重要ではないかということで、ちょくちょく開発業務もやったりしています。
昨年度に引き続き、弊社新卒研修について、講師の立場から振り返る記事をお届けします。
弊社では昨年に引き続き、2021年度新卒研修も全てリモートで行いました。また、新卒研修中の新卒エンジニア研修については引き続き私が全体統括という立場で、研修のプログラムを設計・実施しました。この記事では、弊社の2021年度新卒エンジニア研修を昨年度との差分を踏まえつつ講師の立場から振り返って行きます。
なお、昨年度のものはにあります。
新卒エンジニア研修の概要
) 弊社では例年、4月の全社的な研修が終わった後、5月~6月にかけて新卒エンジニア研修が行われます。今年は、多少期間が長くなっても良いから受講者の理解度を上げることを重視して、3名の新卒エンジニアに向けて約3ヶ月の研修を実施しました。研修プログラムは概ね以下のスケジュールにしたがって実施されました。
- セットアップ (5/17)
- 計算機入門 (5/17)
- コマンドライン入門 (5/18)
- インターネット入門 (5/18)
- Web入門 (5/19)
- HTML/CSS入門 (5/19)
- バージョン管理入門 (5/20)
- プログラミング入門 (5/21,24,25)
- データベース入門 (5/26,27)
- 仮想化入門 (5/28, 5/31)
- AWS入門 (6/1-6/3)
- アジャイル入門 (6/4)
- Scala入門 (6/7-11,6/14,15)
- Web API開発入門 (6/16-18,6/21,6/22)
- SPA 開発入門 (6/23-25,6/28,6/29)
- ソフトウェアアーキテクチャ入門 (6/30,7/1)
- CI/CD入門 (7/2,7/5)
- Webアプリケーション開発研修 (7/6-7/21)
- Scala + Play実習 (補講)
- ハッカソン研修 (7/26-29)
マシンのセットアップやコンピュータの基礎についての座学から始まって、チームに分かれてWebアプリケーションを開発する実践的な講義まであり、知識と実践の両方が伴うように研修プログラムを組みました。
以下の項では、2021年度新卒エンジニア研修で行われた各講義の概要について説明致します。昨年度に比べて、いくつかの講義が統廃合されたり新設されていますが、大まかな部分は昨年度のカリキュラムを踏襲しています。
セットアップ
新卒エンジニア研修が始まった段階では、まず、必要なソフトウェアが新卒の仕事用マシンにインストールされていないため、最初の段階でマシンのセットアップをする時間を別途設けました。
昨年度はトラブルもあり、研修開始時に全員がmacOSという状態を揃えられませんでしたが、今年は全員macOSという環境で各種セットアップをしてもらいました。
計算機入門
コンピュータ入門では、昨年度と同じく、現代のコンピュータの基礎について座学で学んでもらいました。特に、
- 演算装置
- 制御装置
- 入力装置
- 記憶装置
- 出力装置
という分類から始まって、主記憶や補助記憶といった概念について、具体的なハードウェアと関連付けて学んでもらいました。内容については昨年度の微修正といったところで、大きくは変わっていません。
コマンドライン入門
Unix-likeな環境上で作業をする上では、コマンドラインに慣れ親しんでもらうことが必要です。この講義では、
- ls
- cd
- mkdir
- rm
- touch
などの、基本的なコマンド群について、実際に手元で打ち込んで実行結果が予想通りになることを確認してもらいました。基本的には新卒3名とも特につまづいた箇所はなかったようですが、昨年度用いた、
「lsの課題を終えた人はリアクションしてください」という形で進捗状況を把握する手法は引き続き有益だと感じました。
インターネット入門
弊社は、インターネット広告代理店です。そして、作成するプログラムもまたインターネットに関するものですから、インターネットの基礎知識は必須と言えます。この講義では、TCP/IPやIPアドレスの概念について座学で学んでもらいました。
Web入門
現在、多くのサービスがWorld Wide Web (Web) の上に成り立っています。弊社が作っているサービスもWebアプリケーションが中心であり、エンジニアにはWebの基礎知識は必須です。この講義では、World Wide Webの概要やWebサーバやWebブラウザといった構成要素に加え、HTTPの基本について座学で学んでもらいました。こちらも、昨年度の内容の修正が中心でした。
HTML/CSS入門
現在のWebページがHTMLやCSSで記述されていることは言うまでもないことでしょう。この講義では、ハンズオン形式で、HTMLやCSSを使ったページを実際に構築してもらいました。
バージョン管理入門
現代のプログラミングにおいて、バージョン管理システム (VCS) が必須であることは言うまでもないと思います。特に、GitHubをはじめとしたホスティングサービスで使われるGitを学ぶ必要性は高いです。この講義では、GitおよびGitHubについて座学および実践で学んでもらいました。
プログラミング入門
弊社の新卒エンジニアは多かれ少なかれ、プログラミング言語は触れてきていますが、この講義では改めて、JavaScriptを使って、一からプログラミングを学び直してもらいました。プログラミングは座学だけでは身につかないため、講義で習ったことはその都度、実際にプログラムを打ち込んで実行結果を確認してもらうようにしました。
実践では、RunKitを使って、講義テキスト内に埋め込まれた入力領域にプログラムを打ち込んで走らせてもらう形を取りました。テキストを読み進めながら、プログラムの実行結果を確認できるのは、JavaScriptを入門用の言語として採用したメリットの一つといえるかもしれません(もちろん、それ以外の言語でも可能ですが、ブラウザがほぼ必ずサポートしている言語であるJavaScriptだからこそ容易だとは言えます)。
データベース入門
Webアプリケーションのサーバーサイドの多くでデータベースシステム(特にRDBMS)が使われるのはごく普通のことになっています。弊社でも、サーバサイドでのプログラミングにRDBMSを使います。というわけで、この研修では、RDBの基礎やSQLの基礎について、実践を交えて学んでもらいました。
仮想化入門 (新設)
今時は、Dockerのような仮想化技術が当たり前のように使われています。この講義では、座学および実習によって、仮想化技術の基本について学んでもらいました。
AWS入門 (委託)
近年では、Amazon Web Services (AWS) や Google Cloud Platform (GCP) をはじめとした、いわゆるクラウドサービスの利用が一般的になっています。弊社でも、サーバーは主にクラウドサービスを利用していますが、この研修では特にAWSに的を絞って、1日かけてAWSの基本を学んでもらいました。今年はAWS様実施のトレーニングを3日間受けてもらうという形になりました。
アジャイル入門
弊社では、主にアジャイル開発手法の一つであるスクラムを採用しています。この講義では主に座学で、アジャイルの概要について学んでもらいました。
Scala入門
この講義では、弊社のプロダクトで利用されているプログラミング言語の一つであるScalaについて、Scala研修テキストを使って学んでもらいました。弊社ではScala以外にも多様な言語を採用しているため、Scalaに限定する必要はありませんでしたが、特に、Scala研修テキストの主要執筆者が私自身であることもあり、テキストの執筆コストや講義のコストを考えて採用しました。
Web API開発入門
イマドキのWebアプリケーションでは、Web APIを提供するのはもはや普通になっています。そんなWeb APIの概要から開発の方法について、書籍『Web APIの設計』を参考にしながら色々学んでもらいました。
SPA開発入門
弊社では多くのWebアプリケーションが既にSPA (Single Page Application) となっています。一方、従来の研修ではHTMLテンプレートを使ったやや古めかしいもの前提のものが多かったため、今年からはSPAを開発するための講義を新設しました。既存のAPIを利用してSPAを作ってもらう実習などをはじめ、SPAを作るための基礎について学んでもらいました。
ソフトウェアアーキテクチャ入門
ソフトウェアを開発する上で忘れてはいけないのが、アーキテクチャです。きちんとアーキテクチャを考えずに作ったソフトウェアは後々泥沼になっていきます。そんなソフトウェアアーキテクチャについて、書籍『Design It!』を利用しつつ学んでもらいました。
CI/CD入門
現代のソフトウェア開発においては、CI (Continuous Integration) や CD (Continuous Deployment/Delivery) が必須になりつつあります。特に、CIについてはOSSのみならず様々なプロジェクトで採用されているかと思います。この講義では、そのような、現代において重要性を増してきているCI/CDについて座学および実践で学んでもらいました。
Webアプリケーション開発研修
この講義では、それまでの総まとめとして、大まかな仕様を与えられた美容室予約Webアプリケーションを、3名1チームとなって作ってもらいました。昨年度までは、一昔前のWebアプリケーションで一般的だった、HTMLテンプレートベースのものでしたが、今年は美容室予約アプリケーション自体をSPAとして書いてもらうのが大きな変更点でした。
SPAとHTMLテンプレート中心のアプリケーションでは作り方が大きく違うのでScala+Play2入門を一度は廃止したわけですが、正直なところこれは失敗でした。Scala+Play2入門では、HTMLテンプレート以外にDBアクセスの方法やWeb APIを作ってもらう研修も入っていたため、途中で進捗がやや遅くなるというトラブルが発生したのです。
急遽、「補講」として昨年度の資料をベースにしたScala+Play2研修を実施したこともあり、研修最終日までには無事アプリケーションが完成したものの、講義を統廃合することのデメリットも痛感しました。
ハッカソン研修
Webアプリケーション開発研修があらかじめ仕様の決まったものをチームで開発する研修であるのに対して、こちらは一人でテーマに沿ったものを自由に作る研修です。期限までに、内容は問わないが、何か「日々のタスクを楽にするのに役に立つ」ツールを3名それぞれに作ってもらいました。
研修を実施してみての雑感
今回の研修は2020年度のものをベースにしたため、去年よりはやりやすいだろう……と思っていましたが、正直なところそれは甘かったと痛感しています。特に、新設された内の
- Web API開発入門
- SPA開発入門
はWebアプリケーション開発研修にも絡んでくる重大なものでしたし、SPAに関する研修をやったのは今年が初めてでした。この辺りはもうちょっと余裕をもったスケジュールにできていればと後悔している部分もあります。
今年は後に社内のエンジニアが参照できるように、原則的に講義を録画するなどの新しい取り組みを行いました。自動録画ができたので負担はあまりかかりませんでしたが、講義を新設する時にかかる人的・時間的コストについて厳しめに見積もっておくべきでした。
リモート故の課題感も昨年度と同様にありましたが、今年の新卒エンジニアは3名であったため、去年程は状況把握に苦労しませんでした。
座学については(やはり)リモート研修でも、思ったほどには支障が出ませんでした。座学は対面よりリモートの方が講師も受講側も負担が減るかもしれません。
工夫した点
今年は昨年度と同様に全面リモートで研修が進んだため、研修を円滑にするための工夫が必要でした。
「この課題を終えた人はリアクションしてください」という形でリアクションを活用したり、IntelliJ IDEAのCode with Me機能を使ったリモートコード共有機能によって、手を動かす講義でより手早くトラブルシューティングを行えました。
しかし、リモートでの講義というのはやはり難しいものがあるなというのが正直なところでもあり、個々の講義も、全体設計もおおいに改善する余地がありそうです。
反省点
新卒研修を統括するのは2度目ですが、反省点は山のようにあります。来年度以降に向けて、特に改善したいのは、次のような点でしょうか。
- 時間を割り当てすぎた講義がある: 一部の講義については時間を割り当てすぎたせいで、新卒エンジニアの一部にとっては退屈と感じられた部分もあったようです。ただ、この点は昨年もそうだったのですが、受講するエンジニア層によって最適な時間は変わるので、難しい問題です。
- 時間が足らな過ぎた講義がある: 上記と逆に、スケジュールがギリギリになった講義もありました。特に、Webアプリケーション開発研修は、補講を挿入したため、かなりタイトなスケジュールとなりました。
おわりに
弊社における、2021年度新卒エンジニア研修をご紹介しました。二度目のリモート研修ですが、課題感も大きい一方で、講師および受講側に最適な環境で作業ができるということは大きなメリットかもしれません。たとえば、オフラインで実施するよりは室温調整に自由度を持たせられますし、休憩中に飲み物を取りに行くのもリモート故にさっとできます。
もちろん、オンライン故のデメリットもあるのは確かですが、もっとカリキュラムを整えていけば、オンライン研修故のメリット、たとえば講義録画によって内容を後で見返すことができる、などをより積極的に享受できるかもしれません。
研修の実施側にとっては、引き続き苦労は大きかったですが、達成感もあるというのが正直なところです。来年度は、今年度の教訓も踏まえてより上手く研修を実施したいですね。
この記事が、エンジニアの新卒教育に携わっている人等の参考になれば幸いです。
Opt Technologies ではエンジニアを募集中です。カジュアル面談も可能ですので、下記リンク先よりお気軽にご応募ください。