初めまして。2019年新卒入社の南部です。
入社からしばらく経ち、通勤にも慣れてきた6~7月の間、私たち新卒エンジニア社員は、仮配属中の研修としてある課題に取り組んでいました。
それは「名簿アプリ開発」です。
この研修で私たちはフォルシアの技術の一端に触れ、フォルシアの技術者としてワンランクアップすることができました。
本記事では私たちが取り組んだ「名簿アプリ開発」研修の概要を、実装課題・要件定義課題の内容、発表会の様子を中心にお伝えします。
「名簿アプリ開発」研修とは?
「そもそも名簿アプリとは何ぞや?」とお思いでしょう。初めて聞いたとき私も思いました。
フォルシアの名簿アプリとは、当社に所属する社員の情報が掲載された、社内でのみ閲覧できる名簿です。毎年フォルシアの新卒入社のエンジニア社員は、研修課題としてこの「名簿アプリ開発」を実施しています。
この研修では、実際の開発案件で発生するであろう開発の工程や思わぬアクシデントなど、想定しうる開発案件の一連の流れをシミュレーションできます。
課題開始初日、部署ボタンをクリックするとフォルシアに所属する社員が表示されるだけのシンプルなアプリをひょいと渡されました。
前提として、開発にはフォルシア独自のウェブアプリ開発フレームワークを用いています。
このフレームワークは実際のフォルシアで開発するアプリにも使われているので、実践的にフォルシアでの開発を学ぶことができます。
そのうえで、
- この初期状態からどのような機能を実装していくのかを考える
- それぞれの個性を出しながら真の名簿アプリとして進化させていく
というのが「名簿アプリ開発」の概要です。
今回の研修で、私たちがどのような機能を実装して名簿を進化させたのかをご紹介します。
実装課題
私たちは、下記のような基本課題を与えられました(一部抜粋)。
- 性別での絞り込み検索を実装する
- 名前でのキーワード検索を実装する
- ヒット件数を表示する
- 部署・性別について先回りで件数を表示する
- ページャーの実装
- SQLインジェクション対策
これらの課題を通じて、プログラミングの基本技能とフォルシアの技術について学んでいきました。
検索する前に結果の件数を表示する技術(先回り検索)や、ajax通信による検索結果のスムーズな表示は、検索に特化したフォルシアではよく使われている技術です。
私はほぼプログラミング初心者であったため、最初のうちはチンプンカンプンでした。
しかし、優しい先輩たち(決して言わされているわけではない)の指導のおかげで課題を進めることができました。
また、上記課題は実際のアプリ開発の基礎となっています。
特に、SQLインジェクション対策などは、疎かにしていると社内からしっかりと攻撃を加えられます。
最初の頃、気が付けば私の名簿は不正にコマンドを入力され、破壊されていました・・・。
研修の内はこの攻撃も笑いごとで済みますが、実際のアプリであればそうはいきません。
この攻撃もまた、先輩からの優しい教育なのです(決して言わされ以下略)。
要件定義課題
プログラミングにも慣れ、思うように機能追加ができるようになってきたときに襲い掛かってくる課題があります。
それが要件定義課題です。
この課題では先輩社員が顧客役となり、顧客とのやり取りのロールプレイングを行います。
顧客役の先輩から来る「こんな機能が欲しい」「こんなアプリにしたい」という要望をもとに、交渉・提案を行いながらアプリに追加機能を実装していきました。
実際に私が顧客役の先輩に約2週間の期間で依頼された内容がこちらです。
- お気に入り機能の実装
- レコメンド機能の実装
- レスポンシブデザインの実装
- 新条件での絞り込みとその先回り検索実装
1と2を2週間以内は厳しいのでは・・・というのが私の見解でした。
与えられた期間で達成できないであろう依頼を断るのも課題のうちです。
というわけで、私は1のお気に入り機能は頑張って実装することとし、2のレコメンド機能については今回の依頼期間ではお断りすることにしました。
私が慎重に言葉を選びながら送ったメールに対して顧客役の先輩から来た返信はというと・・・。
費用については、弊社大変儲かっておりますので出し惜しみしません!
3については、比較的短期間でご対応いただけるとのことで安心しました。
改修前に簡単なデザイン案をご共有いただきたいです。
南部さんのセンスでお願いします!
4については、入社年次を検索条件に追加したいです。
データ作成も御社にお願いすることは可能でしょうか。費用は出し惜しみしませんので!
・・・一筋縄ではいきません。
(ちなみに顧客役の先輩はこの方)
実際の開発案件でも様々なケースがあるとのこと。研修で経験できてよかったです。
これもまた先輩からの優しい教育なのでした(決して以下略)。
こうしたやり取りを繰り返し、2週間後にはリリースとして顧客役の先輩に実装の結果を報告しました。
名簿アプリの発表会
要件定義課題も無事終えた後、各自のオリジナリティを加えた名簿アプリを先輩エンジニアたちの前で発表する場が設けられました。
発表では、各自工夫した点を語りました。
私の同期のエンジニアたちは各人、個性豊かな名簿アプリを開発していました。
- 社員に関するクイズとその結果を集計する人
- ユーザー認証機能を付けてお気に入り機能を実装する人
- 社内の検索高速化技術の使用有無による検索速度の比較をする人
- Googleカレンダーと連携し、社員の勤怠と現在の予定を表示する人
- なぜか昔ながらのflashゲームを実装する人
・・・etc
一例としてこのような名簿アプリができました。
少し名簿から離れ過ぎた感も否めませんが、2か月ほどで多くの知識を身に着け、実装したい機能を実現する力を付けられたと実感しています。
発表前後に、先輩たちからのフィードバックを受け取り、コードを修正することでより良い実装を学ぶこともできました。
また、発表後には今回の研修のまとめとして、フォルシアの検索の速さを支える技術の基本を中心とした講義を受けたり、同期で集まってお互いのコードを見せ合ったりもしました。
高速化の講義を受けた後には、名簿データベース内の社員人数をなんと100万人に増やしても快適に動作するようになりました!
さいごに
フォルシアのエンジニアの研修は、初心者からでも着実に技術力を向上できるような内容になっています。
名簿アプリ課題を行っている期間にも、毎日プログラミングに関する様々な講義が行われていました。
これらの研修のおかげで、事実初心者であった私がwebアプリを触り、ある程度自由に動かせる技術を身に着けることができました。
毎年研修内容はブラッシュアップされているので、「プログラミング未経験でエンジニアはちょっと不安・・・」と感じている未来の内定者の方にも安心していただけるかと思います。
私南部は、これから実際の顧客案件に携わっていくことになります。この研修での初心を忘れず、今後も勉強を続けていきます!
南部 豪
2019年新卒入社。
本配属部署も決定し、やっていくぞという気持ちに溢れています。