こんにちは、クラウドSRE部の志甫谷(しほや)です!
IDCFクラウドの課金系システムをメインで担当しています。
趣味はフットサル(プレー・観戦)です。
まえがき
これはIDCFに嵐を巻き起こす、夢と希望に溢れた
新卒エンジニア4人の果てしない挑戦の記録です!
※このまえがきは、【目指せ!Fの頂】*1のパロディです。
前回までのRookies Training Report 2019
2ヵ月間でWebアプリケーション完成を目指す4人の新卒メンバー。
作成するWebアプリケーションの要件定義/設計が完了し、実装へ進みます。
始動編、要件定義/設計編については、次の記事を参照してください。
blog.idcf.jp
タスク整理
GitHubのissueで各自のタスクを管理していきます。
issueを作成する際のフォーマットは、以下の通りです。
- 概要
- クローズ条件
- 工数目安
- 完了期日
issueを作成した後に、担当者を決め、それぞれのタスクを進めていきます。
必須タスク一覧
各種ページの作成
- トップページ
- 書籍追加ページ(追加/確認/完了)
- 書籍詳細ページ
- token入力ページ
- 返却ページ(返却/完了)
- 貸出ページ(貸出/完了)
- 検索結果表示ページ
各種機能の作成
- token機能(発行/認証/削除)
- 書籍追加機能
- 書籍検索機能
- 貸出機能
- 返却機能
開発環境構築
実装を進めるにあたり、各自の実装内容を反映させ、
作成するアプリケーションの動作確認を行う開発環境を構築します。
構築手順については、テックリード篠田さんが作成し、
実際の構築は新卒メンバーが行いました。
- VM作成
- ファイアウォール設定
- IPアドレス設定
- Dockerインストール
- GitHubからソースをgit clone
- IntelliJを使うための設定
作成したVMに対してSSH接続が出来ない!
公開鍵の設定がうまくいかない!
という環境構築躓きあるあるに苦戦しながら、
4人は足並みをそろえて環境構築を進めます。
環境構築後は、必要なミドルウェアや
フレームワークを導入し使用出来る状態を作ります。
- PHP
- nginx
- MySQL
- Symfony
新卒メンバーにとっては、ミドルウェアって何ですか?
状態からのスタートですので、そもそも何がわからないのかがわからない。
迷いながら、モチベーションが下がっていきつつも、
なんとか諸々の設定を完了させることができました。
田栗さん「躓きながらも、突破口が見えた瞬間が一番楽しいですね。」
環境構築が終わった際のこの一言が印象的でした。
セキュリティ研修
実装フェーズの合間に、セキュリティ研修を実施しました。
以前から、セキュリティ要件の話題が出てきておりましたので、
社員が講師となって、機密性、完全性、可用性の話から始まり
インジェクションの解説をしてもらいました。
セキュリティについては全社研修でも行なっておりましたが、
わからない単語や概念が多数あったようで、ポカンとしている場面もありました。
しかし、わからない場合には積極的に質問が出ていました。
これをきっかけにしてセキュリティについての関心を持ってもらいたいところです。
攻撃方法がわかれば、守備方法もわかるというお話があったので、
チームに分かれて攻守を経験するのも良いのかなと思います。
実装開始
実装開始時点でも様々な壁にぶち当たります。
- namespace、classとは
- MVCモデルとは
- use、require、includeの使い分け
- アクセス修飾子の使い分け
- PDO?ステートメント?SQL?
- 動作確認の方法
- 相対パスと絶対パスの使い分け
- 引数の指定方法
- エンティティとは
- トランザクションとは
- 例外処理とは
独力で実装を進めることに難しさを感じていたため、
チューターとのペアプロで1つの機能を実装してイメージを掴んでもらうことにしました。
実装フェーズが進むに連れて、新卒メンバーは手応えを実感し始めます。
1つのエラーに躓き、独力で解決出来ない状態から、
独力で解決し、次のステップへ進んでいけるようになりました。
また、他の人の実装を一緒に進められるようになり、
お互いに助け合いながら、意見を言いながら進めていく姿が印象的でした。
大きな誤算と進路変更
Morio Libraryの実装を進める上で、大きな誤算がありました。
それは、社内のセキュリティ規定により、ユーザー情報を取得するSlack APIの使用許可が下りなかったことです。
これにより、次のようなインパクトが発生します。
- tokenをSlackのDMで通知ができなくなった
- 返却/貸出の通知ができなくなった
Slackではなくメール送信で代用しようとも試みましたが、
こちらもメールの誤送信リスクなどを理由に
十分な検証を経てからの使用が義務付けられました。
その結果、実装フェーズの残り期間では検証を完了させる目処が立たず、
token認証・通知周りの機能が全滅という状況になりました。
なりすましなどの対策としてtoken認証は必須であり、
その通知ができないという状況では、
社内アプリケーションとしてのリリースはできません。
そして、一番大きな影響としては、
この研修のゴールをアプリケーションのリリースではなく、
作成したアプリケーションのデモを行うところまでに
切り替えなければいけないということでした。
自分たちの実装したアプリケーションを、
リリースできずに実際のユーザーに利用してもらえないという状況は、
新卒メンバーに大きなショックを与えることになりました。
4度目の部長レビュー(実装デモ編)
本来は、4度目の部長レビューは、
リリース判定を行うために設定しておりました。
しかし状況が大きく変わったため、
作成したアプリケーションのデモを行い、
最終的なゴールを決めることを目的にしました。
これまでのテーマ決め/要件定義/設計と3回部長レビューを行ってきましたが、
今回の実装デモについても部長の期待値を上回っていたという評価をいただきました。
デモの見せ方に工夫が必要であったり、エラー処理周りについてのコメントはあったものの、
一通り形になったMorio Libraryをお見せすることはできたと思います。
4回のレビューを経て感じたことと、今後生かしてほしいこととしては、
部長のコメントは絶対ではないということです。
あくまで表に出てる情報を見てコメントしているので、それを必要以上に怖がる必要はありません。
仕様や実装内容、リソース、期限などを鑑みて改修するしないを判断するのは、
あくまで自分たちだという意識を持ってもらいたいです。
誰かにこう言われたからこうしました、という決断は正直して欲しくないですし、
こう言われたから僕たちはダメなんだと思う必要は全くないと思います。
〇〇だからこういう仕様・実装にしているという
自分たちの判断基準を大事にして欲しいです(意固地になれという意味ではありません)。
その上で、さまざまな意見を取り入れたりするなどの判断をして欲しいということです。
実装フェーズ完了時点でのMorio Libraryの紹介
最後に、これまでの全フェーズを経て出来上がったMorio Libraryの機能を一部分ご紹介します。
最後に
実装編はここまでになります。
次回、10月に「成果発表編」を執筆予定です。
リリース判定は通らなかったが、2ヵ月間で彼らは何を学んだのか、
全社向けの成果発表会でどんな反応があるのか、
そして、新卒メンバー自身の成長に繋がったのかどうか、
見所満載の最終回に、ご期待ください!