こんにちは!メドピア新卒採用担当の高橋です。
8月に開催した5daysインターンシップに引き続き、9月7日には、24卒学生向け1dayサマーインターンシップ「Med Tech Challenge 2022」を開催しました。
「コードレビュー」をテーマにした1dayサマーインターンシップ。 本記事では、インターン生の皆さんやメンターの様子をお届けします!
「コードレビュー」とは:ソフトウェア開発における工程の一つ。プログラムのソースコードを記述者とは別の人がチェックし、所感を開発者に伝えること これまで24卒のエンジニアを志望する学生さんと面談する中で、こんなお話をいただくことが何度かありました。
「企業の開発業務に携わるインターンシップに参加したいけれど、まだ挑戦できる自信がないんです…」
「これまで自分一人での開発が多かったので、企業のエンジニアに自分のコードをチェックしてもらって改善点を指摘してもらえるとうれしいです!」
「チーム開発の経験がないので、企業の中でのチーム開発におけるポイントを知りたいです」
サマーインターンシップでは、「実際の開発業務を体験したい」とおっしゃる学生さんも多いですが、開発業務の「事前準備の段階を経験したい」というご要望も多く寄せられていました。
そこで、メドピアでは「コードレビュー」をテーマにした1dayインターンシッププログラムを企画することにしました。
今回の1dayインターンシップには企画立案に関わったエンジニアやメンターの様々な思いが込められていますが、とくに次の3つの目的をもとにプログラムを構築していきました。
メドピアで使用されている技術を学び、エンジニアに求められる実践的なスキルを身につけられること メドピアのコードレビュー文化を通じて開発スキルをアウトプットする機会を経験できること メドピア自体の企業文化や社風を体験する機会となること 取り組む課題 「コードレビュー」をテーマにするにあたって、インターン生の皆さんには事前に Railsチュートリアル をベースとしたコーディングに関する課題に取り組んでもらいました。
インターン生が提出した成果物に対し、前もってメンターが内容をチェックし、GitHubを通じてコメントでやり取りをします。
午前の部:事前課題の解説 インターンシップ当日は、10:00に開始。 緊張した面持ちで6名のインターン生の皆さんとメドピアのエンジニアがオンラインミーティングに入室しました。
全国各地からご参加いただいたインターン生の皆さん。 自己紹介で趣味を共有する場面には、サウナ、筋トレ、アウトドア、宝塚歌劇団、ゲームなど、幅広くお互いを知ることができました。 個性が豊かなメンバーに、チャット欄でもコメントが寄せられたり、はじめの緊張も徐々にとけてきた様子。
その後は、午前の部の本題である「事前課題の解説」へ。 ここからは、会の進行をメンター福本にバトンタッチします。
解説を始める前に、福本から本日のインターンシップでの心構えが発表されました。
知らない・わからない・できないことは恥ずかしいことではない 質問することはエライ レビューされることは良いこと 複数名での進行となると、質問することに障壁を感じることもあると思います。最初にこういったアナウンスがあることで、コードレビューへの抵抗感が減ったのではないでしょうか。
心構えのアナウンス後は、主に以下の3つを解説しました。
レビューの観点について(被レビュー能力を高める) issueを再確認 ハマりがちなポイントの解説 ▲レビューの優先順位についての解説 ▲レビュワーの負担を下げる工夫についての解説 ▲issueを再確認しながらポイントを解説 ▲ハマりがちなポイントから “bulk_insert” の解説 特に「レビュワーの負担を下げる工夫」については、レビュー業務に限らず、日常の業務の中でも活かせそうな内容でした。
午前中は、これにて終了。 1時間ほどお昼休憩をとって、午後に備えます。
午後の部:コードレビュー体験グループワーク 13:00、午後の部が開始。 ここからは、グループワークに移っていきます。
▲グループワークを進めるにあたってのポイント グループワークのテーマは、 「あるissueとそれを実装した“ちょっと抜け漏れのある”プルリクエストをチームに分かれてチーム内でレビューする」 というもの。
午前の部で学んだ内容を活かしながら、それぞれのチーム内でレビューをしていきます。
▲Aチームでの議論の様子 ▲Bチームでの議論の様子 チーム内では、メンターからのヒントを参考に考察をしたり、インターン生同士での白熱した議論を展開したりと様々な場面が見られました。
成果発表会 およそ2時間半のグループワークを終えた皆さんが、メインルームへ再度集合します。 皆さんが議論して結論付けた成果物を各チーム発表していきます。
▲成果発表会の進め方を説明 まずは、Bチームの発表です。
Bチームが行ったレビューは、以下の4点。
操作を実行可能なユーザの権限チェックが不足している 削除処理を行う方法が複数あるが、どのメソッドが適切なのか、またトレードオフは何か UIが分かりにくい部分を具体的にどのように改善できそうか テストコードをもう少し手厚くする 「削除を行う方法(メソッド)が複数考えられる中で、何を満たしたいのか、何が重要かの議論を重ねていた点や、メソッドそれぞれにメリット・デメリットがあるため、トレードオフを考える必要があり、どちらがより適切かの議論が白熱していた」と、Bチーム。
続いて、Aチームの発表です。
行ったレビューは、下記の2点。
delete_allとdestroy_allのどちらを使うべきか 事前に管理者のチェックをどのように行うか 「例外処理などの考慮で、リダイレクト時のメッセージをどう出し分けるかについて、細かくケースを分けて考えられた点が印象的でした。ユーザーにどのような情報を与えて、どういう体験をしてもらえるかについてよく考えていました。」とAチーム。
各チームの発表後は、メンターより講評と、グループワークの課題解説や解答例のご紹介を行いました。
▲グループワークの課題の解答例をご紹介 ▲上級編の内容もご紹介 最後に全体の質疑応答や感想共有を経て、インターンシップは幕を閉じました。
インターン生から寄せられた声 1日を完遂された皆さんから、以下のようなご感想をいただきました。一部をご紹介します。
複数人でレビューという形で議論する機会はなかなかなかったので、他の方の考え方や知見を聞くことが出来てよかった コードレビューする際にチェックする点や見るポイントについてわかりやすく説明してくださった。また、処理にを何を使うかについて議論できて、技術について相談できる機会はとても貴重であると思った Ruby on Railsは今回のインターンで初めて学習したので、実装していくイメージやRails特有のメソッドなどの使い分けについて不安があった。今回のインターンでは、グループワークで他のメンバーやメンターさん方と一緒にコードのcatch upやレビューの詳細を確認できたので、私でも積極的に参加できた 作成したことのない機能を作る過程が楽しかった destroy!でも例外を受け取りながら削除していく方法がとても勉強になった。普段から「もしデータが大量にあったらこのフローで大丈夫なのか?」という視点を忘れないように心がけようと思った。 プルリクのレビューというあまり経験のないワークについて、同世代の仲間と議論しながら楽しく進めることができた。 たくさんのご意見をいただきありがとうございました!
そのほかにも、インターンに関する次回への改善点もきちんとレビューしてくれるなど、積極的にインターンシップに参加してくれ、運営としてもとても感動しました!さっそく、今後のイベント開催に活かしてまいります!
まとめ 1日という短い時間の中で、学生の皆さんはたくさんの学びや気付きを得ながら真剣に取り組んでいただきました🎊
9月・10月・11月にはエンジニア社員との座談会を予定しています!ぜひリンクから詳細をご覧くださいませ。
▼座談会日程
・2022年09月14日(水) 12:00~13:00 ・2022年10月13日(木) 12:00~13:00 ・2022年11月18日(金) 12:00~13:00