こんにちは。2018年度の4月に新卒で入社したエンジニアの小澤です。入社して2ヶ月が経とうとしています。
学生時代は、情報セキュリティについて専攻している4年制の専門学校に通っていましたが、自分の作ったものが他人に使ってもらえるwebの領域に興味を持ち、在学中はweb開発をしているインターンシップなどに参加していました。
今年度は新卒14人の中から、私を含めた6人が開発グループに配属されました。入社してすぐに新卒社員全体の研修とエンジニア全体の研修があり、エンジニア研修は、「全体研修」と「チーム内研修」の2つに分かれていました。
今回のブログでは、チーム内研修についてまとめていきたいと思います。
企画からサービスを作る「チーム内研修」
チーム内研修では、業務に慣れるためにチームで実際に使っている技術やツールを使い、サービスを1から作ってみる、といった内容で、私は趣味に関して情報発信や意見を交換することのできるSNSを開発しました。
具体的には、どんなサービスを作るか検討するところから始まり、企画から要件定義、実装、テスト、セキュリティチェックなどを経験することができました。
企画・要件定義
最初にどんなサービスを作りたいか決め、ターゲットとなるユーザを仮定します。そこからユーザにどんな背景があり、どんな負を解決したいのかを定義をしていくのですが、この工程が一番大変でした。ユーザの課題から要望を抽出したものの、作りたい成果物のイメージが浮かばず、なかなか要件が定まりませんでした。なぜ作る必要があるのか、そもそも作る必要があるのかなど、根本的な定義を見直したり、メンターや先輩社員からアドバイスやフィードバックも受けつつ、少しづつですが作るべきサービスの形が見えてきました。
このように試行錯誤を何度も繰り返しながら、ユーザが抱えている負を要件に落とし込む作業を経験できたことは、今後の業務でも役に立つ良い経験になったと思います。
実装
実装では、社内で使っているCakePHPを使っていれば他は何を使ってもよい、という制約があったため次のような構成になりました。
- PHP(CakePHP 3.6.0)
- JavaScript(ES2015)
- CSS(Pure.CSS)
開発期間は1週間ほどしかありませんでしたが、最低限サービスとして稼働できることを目標にしていたので、機能ごとに優先度を決めて、それを元にスケジュールを引きました。
また、私はwebフレームワークを使った開発経験があったので、CakePHPの基本的なCRUDのソースコードを自動的に生成することのできる「Bake」機能は使わずに自前で実装するという制約がありました。普段はコマンド1つで実現できる機能を自分で作るのは、フレームワークの恩恵を感じる良い機会でした。
ソースコードに対するフィードバックでは、要件定義と同じように、なぜそのような実装になったのか、もっとシンプルにできないかなど、コードを書くときに意識すべきことを学びました。そして、当初に想定していたスケジュール通りに、最低限動くシステムを作り上げることができました。
発表
最後に、チームメンバーに対して作った成果物を発表して、今回の研修を振り返る場がありました。プレゼンテーション形式でサービスを作った背景から説明し、先輩方のアドバイスを受けました。その中で、自分が書いたコードやドキュメントをなぜ書いたのか、なぜ書く必要があるのかなど、何事にも意味付けが重要だと言うことを学びました。 このように、自分はどんなことができたか、どんな進め方をすればよかったのかなどを振り返りました。
また、プレゼンテーション能力が不足していると感じました。 せっかくいいものを作っても、その良さが聞き手に伝わらなければ意味がないことを学びました。この振り返りから、LT会などにスピーカーとして参加し、発表の場に慣れることを今後の目標としました。
まとめ
今回の研修で、当たり前のことを当たり前にこなす大変さを痛感しました。学生時代はお金を払って学んでいましたが、社会人はお金を頂いて、成果を出す中で学んでいかなければなりません。 その中で、いかに自分が成果を出せるか、成果を出すにはどうすれば良いかを常に考えて業務に臨みたいと思います。
また、先輩方が私たちのために業務時間を割いて、この研修を作り上げてくれたことに心から感謝します。まだまだ未熟ではありますが、一刻も早くチームの戦力になれるように精一杯頑張っていきたいと思います。