RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

新メンバーjoin時の学習に最適!「実装過去問」のススメ

f:id:tech-rakus:20200707124011p:plain

はじめに

こんにちは、@rs_tukkiです。
新型コロナウイルスの影響で大分ドタバタしていましたが、弊社ではようやく社員研修を終えた新卒社員の配属の話が本格化してきました。

新しい開発メンバーを受け入れるとき、まずやってもらうのは部署ごとの開発フローと、実際に開発するプロダクトの中身を学んでもらうことかと思います。
そこで今回は、その2点を一気に解決できる「実装過去問」について話していきたいと思います。

実装過去問とは

実装過去問とは、私たちの部署で採用している学習プログラムの1つで、 簡単に言うと「そのプロダクトで実装された機能を学習のために後追いで実装してみる」というものです。

一般的に過去問というと、入学試験や資格試験で過去に出題された問題を集めたものですが、
この学習プログラムも「過去に開発された内容を」「いくつか抜粋して」「練習のために」やってみるという点から、過去問という名前がついています。

実装過去問の実施手順

では、実際に過去問を行う手順を紹介します。

問題集から取り組む問題を決める

まずは、あらかじめドキュメント化されている過去問の中から、どの問題に取り組むかを決めます。
問題は現時点で27問用意されており、各問題に対して☆1~☆5までの難易度が振られています。

f:id:rs_tukki:20200706141947p:plain

☆1や☆2の問題は簡単なUIやUXバグの修正ですが、☆5は実装方法から悩まされるような難問。
この難易度は最初は問題作成者の主観によるものですが、過去問に取り組んだ人の感想次第で修正されたりします。
中には当初☆3だったものが☆5に引き上げられた事例も…

新規メンバーは☆3の問題から取り組んでもらい、合格(後述)なら☆4の問題へ、不合格なら同じ☆3または☆2の問題へ移ります。
そうして、☆4の問題に合格するのがひとまずの目標です。

プロジェクトのgitブランチから、問題を修正する前のブランチをcheckoutする

各問題のドキュメントには、実装内容・設計書のリンク・派生元のブランチ・制限時間などが記載されています。

f:id:rs_tukki:20200706143239p:plain

私たちの部署が開発してるプロダクトは、gitでリリースバージョンごとにブランチを作成しているので、
その機能が実装される直前のリリースブランチをcheckoutすることで、修正後の実装を見ることなく後追いの実装が可能になっています。

問題を解き、テスト項目書に沿ってテストを行う

あとは、設計書の通り、checkoutしたブランチに実装をしていくだけです。
このとき注意点として、以下の制限があります。要するにカンニングはNGということです。

  • リリース済みの既存コードを参照することは禁止
    • 既存コードをテスト環境で動かしてみて動作確認するのはOK
  • 誰かにアドバイスを求めることはOKだが、実装方法を直接尋ねることは禁止
  • 設計書などのドキュメントを参照することはOKだが、実際のPRを参照することは禁止

全て実装が終わったら、実装した人本人がテスト項目書を見ながらテストを実施します。
全ての項目をテストする必要はありませんが、当然この後レビューがありますので、そこでミスが出ないようテストはしっかり行う必要があります。

レビュー担当者がレビューを行う

実装とテストが終わったら、その内容をgitにpushしてPRを作成し、レビューを依頼します。
このときのレビュー担当者は、その過去問を解いたことがあるメンバーが実施することが多いです。

過去問ごとにレビューの観点もドキュメント化されており、PRの内容がその観点を満たせていれば晴れて合格となります。

過去問を行うメリット

過去問を行うメリットですが、Wikipedia過去問題集というページには以下のように記載されています。

ある試験を受けるにあたって過去問を解くことは、次の意味で利点がある。

  1. 試験の合否ラインと比較する形で、自分の力を測ることができる。
  2. 実際の試験問題を解く方法を直接的に身に付けることができる。
  3. 資格試験の場合は過去に出題された問題がそのまま出題されることがある。
  4. 入学試験の場合は全く同じ問題は出題されないものの、よく似た問題が出題される。(まれに出題傾向が一定でない学校もある)
  5. 早い時期に解いておくと、自分の不足している部分を把握し、その後の勉強の方針を立てることができる。
  6. 試験問題は比較的良い問題であることが多いため、他の問題を解く場合に比べて効率的に、自分の理解や知識を深めることができる。
  7. 多くの場合、問題の出題範囲が幅広くばらけているため、全体の理解度や到達度について、限られた時間で把握することができる。

入試や資格試験の過去問と違い、実装過去問では当然全てが当てはまるわけではありませんが、

  • 実際の開発業務でやることになる問題に取り組むことで自分の力を測れる
  • 本番のフローに則って取り組むので開発の練習になる
  • 様々な傾向の問題があるため、実際の業務で必要となる知識を効率よく理解することができる

といった点は共通しているかと思います。

まとめ

今回は、新規メンバーの受け入れに最適な「実装過去問」について解説しました。
メンバーを入れ替えながら長く開発と改修を続けていくプロジェクトでは必ず役に立つと思いますので、ぜひ取り入れてみてはいかがでしょうか。

おまけ

先日、弊社のオンラインイベントで発表する機会がありました。
SaaSの開発原則である「Twelve-Factor App」について語った内容で、資料もアップロードしていますのでぜひご覧になってみてください。

rakus.connpass.com
speakerdeck.com

Copyright © RAKUS Co., Ltd. All rights reserved.