勉強会 研修 登壇レポート

GTB2021 Webアプリフレームワーク入門/REST API入門 アップデート編

勉強会 研修 登壇レポート

2021/07/01追記: 本研修のインタビュー記事がGMO Developersに掲載されました! → グループ横断でつくる新卒技術研修!【GMOテクノロジーブートキャンプ】オンライン開催2年目の裏側インタビュー


GMOインターネットグループではGMOテクノロジーブートキャンプ(以下GTB)と題して、各社の先輩エンジニアが新卒エンジニアへ研修を行う仕組みがあります。
2021年も2020年から引き続き、約40名の新卒エンジニアに対してリモートで研修を行うことになりました(去年の内容についてはGTB2020 Webアプリフレームワーク入門/REST API入門 前編GTB2020 Webアプリフレームワーク入門/REST API入門 後編をご覧ください)。

研修を行うにあたって、まず最初に講師陣でキックオフを行いました。話し合いを進める中で、講師ひとりひとりから「去年のふりかえりを元に研修内容をもっとよいものにしたい」という熱い想いが伝わってきました。アップデートすることになった内容のうち例を挙げるなら、ハンズオン資料の更新やセキュリティに関するパートの追加、使用するフレームワークのバージョン選定などです。
しかしながら講義時間は9時間と、去年と比較して3時間も短くなっていました。そのような中で研修の内容を減らすことなく、むしろボリュームアップした研修を行うために取り入れた工夫をかいつまんでご紹介いたします。

研修の雰囲気について

今回の研修を進めるうえで、一つだけ去年と変わらない講師の目標がありました。それは「参加した研修生全員がすべての課題を終了すること」です。 講義を終えたときには参加者全員が動くものを作り上げており、「作るものが動くと楽しい」という体験を研修を通して届けたいと考えました。

そこで全員が足並みをそろえて研修を進めるために、前年度のふりかえりを生かし以下の工夫をしました。

  • 作業をできる限り細かく分割する
    • 進行状態をそろえることができる😄
  • 作業結果をスライドに掲載する
    • ゴールが明確になり作業が進めやすくなる😄
  • 作業に入る前に一度講師がデモを見せる
    • 作業のイメージを掴んでもらえる😄

わからないを積極的に言おう」のエントリーにもあるように、ペパボにはわからないことを積極的に言語化していこうという文化があります。

引用になりますが、文化というものを取り入れるにあたってのハードルは存外高いです。

「わからないを言う」を根付かせるには、結構大変です。チームの中で心理的安全性が高くないとできないことかもしれません。

しかしながら研修中にこのマインドに触れ・理解し・実践してもらうことで、わからないことは怖いことではないこと、そして障害報告を上げること自体が他のエンジニアにとって価値のあるものであるということを学んでもらいたいと考えました。

少しでも心理的障壁を下げるために、Zoomの挙手機能を使って作業が終わった研修生に挙手リアクションをしてもらうようにしました。また、エラーが起きていたり作業が滞っていたりする研修生はNGリアクションを取ってもらいました。

大人数かつリモートという意思表示しにくい場であっても、この取り組みによって進捗報告が気軽にできるようになりました。特に作業がうまくいっていない場合は心理的に声を上げにくいものですが、リアクションを見ることで講師のほうから気づいて声掛けできました。

トラブル対応については報告してくれた研修生の画面を共有しながら原因を探っていく形を取り、他の研修生も作業内容を確認できるようにしました。これよって同様の現象で悩んでいる研修生が一連の作業を見ることで解決できているシーンや、すでに解決した研修生がアドバイスするシーンも見受けられました。

作業をオープンにすることで、他の研修生が自発的に意見を出してトラブル解決に協力してくれる姿を見て、少しずつ「わからないことをわからないと言う」文化が根付きつつあるように思えたため講師として嬉しかったです。このマインドセットを忘れることなく、今後の実務にも生かしていってもらいたいと思いました。

発表資料について

冒頭でも触れたように、セキュリティに関するパートを発表資料に追加しました。実務でWebアプリケーションを作る際、正常系の動作ができるだけでは不十分で、Webに公開したものは「常に悪意のある人から攻撃される危険性に晒されている」ことを意識する必要があります。GTBの最終カリキュラムではWebサービスを制作・公開するので、作る方法と同時にセキュリティを学んでもらうことで「セキュリティを意識するのが当たり前」という感覚を身につけてほしいと思いました。

一口にセキュリティと言ってもさまざまなレイヤーで考慮するべき要素があり、そのすべてを研修で触れることはできませんでした(別途セキュリティ研修があるので詳しいことはそちらに任せる形を取りました)。そこで我々はWebアプリケーションとして見た場合に重要な「バリデーション」と「データベース」に絞って研修を進めることにしました。SQLインジェクションやOSコマンドインジェクションなど、ブラウザーを介して行われる攻撃は事前に入力された値を正しく検証していれば防げる場合が大半です。

まずは「外部からの入力は常に疑う癖」をつけてもらうためにも実際にバリデーションを実装してもらいました。 その後、入力された値をデータベースに永続化するにあたってORMを使用しなかった場合に発生するセキュリティリスクと、ORMを使用した場合との比較を紹介しながらそれぞれの良さを学んでもらいました。これによって体系的にデータがPOSTされて永続化されるまでの流れと、その処理の中で生まれる脆弱性について理解が深まったことと思います。

適切に対策していれば必要以上に恐れなくてもいいこと、対策自体は難しいものではないことを体感し、研修生の中で未知の領域が少しでも減ることで漠然とした不安が解消されたことを願っています。

フォロー体制について

研修ではできる限り同じ環境で同じ内容の研修を受けられるようにフォロー体制を整備します。
ところが、前述の通りGTBの研修生はGMOインターネットグループ各社から集まっており、多種多様な開発環境や端末(一例を挙げるとWindows・Mac・VDIなど)が混在しています。講義を円滑に進めるためにはこれらすべてに対して検証を行う必要がありますが、現実的に全環境に対して万全なサポートを行うのは難しいです。

そこで今年はGMOインターネットの橋口さんをチームメンバーに迎え、研修を実施することにしました。橋口さんは去年からサポート講師として他の研修に参加されていたので研修の雰囲気やノウハウをお持ちでした。また、実際にペパボの講師だけでは解決に時間を要したであろう環境のことも解決していただいたので、とてもいい取り組みだったと思います。

また、講師の心情としては早く終わった研修生を褒めたくなるものですが、研修生の立場に立って考えると「まだ終わっていないことに対する焦り」を増長させることになり、圧力と感じてしまう場面があるのではないでしょうか。研修の途中、昼休みに行ったふりかえりでその可能性に気づくことができてからは、意識的に「早く終わったことに対する称賛」を控え、全員が終わったときに初めて褒めるようにしました。

ハンズオン教材について

前年度の研修で講師・研修生ともに好評だったAPIテスターを今年も使用しました。これはAPIの挙動確認やエラーログの確認をWeb UI上から行えるツールです。初学者向けに画面上から視覚的にリクエスト・レスポンスが確認できるため、開発のハードルを下げる目的で開発・導入しました(余談ですが昨年の記事でも詳しく触れていますので気になる方はぜひご一読ください)。

講師陣によるAPIテスターの開発にあたって、去年はHomestead(Laravel向けに作られたVagrantのboxファイル)を使用していました。ですが今年はより環境依存をなくしていくために、開発環境をDocker Composeを利用したコンテナへと切り替えました。Dockerに切り替えるにあたり、セットアップの煩雑さを回避するためにコマンドをMakefileに切り出すこととしました。
結果、Homesteadを利用していたときよりも気軽に環境の立ち上げ・再構築ができるようになり、講師の検証コストが下がった点は切り替えた利点の一つです。

前年度の反省点の一つに、セットアップまでの手順が多くつまずく研修生が見受けられたというものがありました。今回Makefileにセットアップコマンドを集約することにより、副次的にこれらの課題も解決することができました。研修生は立ち上げたConoHaインスタンス内で make setup/conoha コマンドを叩くだけで環境が立ち上がるようになり、ほとんど講師がサポートすることなく環境が準備できました。

また、今回は環境セットアップを補助する動画も用意しました。 我々の目標は「参加した研修生全員がすべての課題を終了すること」であり、この課題をクリアするための手法を検討したところ、ドットインストールやYouTubeなどの動画コンテンツが候補に挙がりました。動画コンテンツであれば聞き逃した場合や再度確認したい場合に研修生のタイミングで確認することが可能です。
それに何より、研修生が慣れ親しんだコンテンツとして提供することでおもしろく学べる場の提供ができると考えました。

初めての試みでしたが、本番では説明を動画に任せることができるため講師陣はサポートに専念でき、研修生はいつでも作業手順を確認することができるため焦らず自分の歩幅で進めることができました。
今回の取り組みによって、例えば今後は研修内容自体を録画しておくことで非同期的な研修を進められるようになるなど、新たな可能性が見えてきました。

昨年は開発環境の構築までのステップが多く、アプリケーションのセットアップまでに時間がかかっていましたが、Makefileやセットアップ動画の登場により、わずか数分〜十数分で準備が整うようになりました。 本来は順を追ってコマンドを実行するところを一つのコマンドにまとめ、自動化するといった作業は研修に留まらず実際の業務でも取り入れられています。特にエンジニア以外の職種から環境構築を求められた際に、コマンド一発で開発環境が立ち上がるのはスピード感のある開発を行ううえで欠かせないものではないでしょうか。

これらの取り組みは研修生の技術的興味を掻き立てることができたようで、「開発環境がスムーズに立ち上がるようなMakefileを書けるようになりたい」とのコメントをいただけました。研修の中から学んだことを、実務にも生かしていってもらえればと考えています。

終わりに

研修を実施するに当たって、講師陣のマインドとして「今はうまく開発できない人に寄り添って少しでも理解を深めてほしい」という思いがありました。我々の役目はティーチングではなくコーチングだと思っています。研修にあたって、資料のボリュームアップに加えて資料の見せ方の工夫や動画による手厚いサポート体制まで整えましたが、すべては研修生に成功体験を味わってほしいがゆえのものでした。

結果的に、去年課題となっていたブレイクアウトルームによるサポートをすることなく、全員が課題を終え動くものを作るという当初の目標を達成してくれました。 その中で今後の研修や実務にも生かせるような文化(わからないことを正直にわからないという、困っている人がいたら少しでもわかることを教えるなど)に触れ、実践してもらうことができればコーチとしてこれほど嬉しいことはありません。

企業理念にあるように、去年の研修よりも「もっとおもしろく」できたと思っていますが、我々はここが終わりではないと思っています。来年、再来年ともっとバージョンアップした研修をお届けできるよう次に向けて準備をしています。

こんなハートフルな研修を受けたいと思ったあなた、もっとおもしろい研修を届けられると思ったあなた、次はあなたの番です!