Cookpad Summer Internship 2021 10 Day Techコースを開催しました!

f:id:fufufukakaka:20210426121451j:plain

研究開発部の深澤(@fukkaa1225)です。今年はエンジニアの立場から新卒採用も担当しています。

4月の記事で告知したサマーインターンシップのうち、10 Day Techコースを8月16日〜8月27日で開催しました。この記事ではその内容を紹介します。

3 Day Product Designコースについては、以下の記事をご覧ください。

10 Day Techコースは、前半5日間が講義形式、後半5日間が実践形式でした。 前半は技術講義とサービス開発講義の2本立てです。 後半はOJTプログラムとPBL(Project-Based Learning)プログラムのそれぞれに分かれて、サービス開発の実践に取り組みます。

昨年はオンラインのみでの開催でした。今年は前半の講義パートをオンラインのみ、後半の実践パートではオフィスに来訪されることを希望した方にはオフィスで、それ以外の方々は前半から引き続きオンラインで参加する形式を取りました。例年と同様、多くの学生の方々にご参加いただきました。本当にありがとうございました。

前半

まずは前半の講義について簡単にご紹介致します。

1日目: フロントエンド講義

初日は1時間弱ほど、イントロダクションとしてクックパッドの取り組みの紹介や自己紹介を行いました。

その後、今年の技術講義のテーマを発表しました。今年のテーマは「ミニクックパッドマートを作る」でした。クックパッドマートを題材として、クックパッドの中で使われている技術スタックを一気に学習・実践することが狙いでした。

イントロダクションを終えた後、フロントエンド講義からいよいよ技術講義がスタートしました。 2021年の春インターンでも用いた動画を見るという事前準備を前提として、午前中の1時間でクライアントサイドから見たGraphQLに関する講義を行いました。

その後、午後はミニクックパッドマートのweb画面を作ることを目標として、基礎課題・発展課題に取り組みました。

2日目: iOS講義

2日目のiOS講義は1日目に実装したミニクックパッドマートの画面を、SwiftUIで実装するという内容でした。iOS未経験の方がほとんどで、環境構築のところが難所ではあったものの、 SwiftUIを実際に触ってみて使いやすいと感じた人が多かったようです。ほとんどの人が基礎課題を完了させるところまで実装を完了させていました。

3日目: サーバサイド講義

3日目はサーバサイド講義でした。例年の講義では、APIを前半に自分たちで作ってから、その自作APIを使って後半の講義で画面を作るという流れでした。しかし、各自の進捗度合いなどによって想定仕様と微妙に異なる自作APIとなってしまい、画面を作る際に苦労してしまうことがありました。

これを踏まえて、今年はあらかじめ完成しているAPIサーバをこちらで立てて、前半に画面を作る講義を配置してAPIの仕様を把握しながら画面を作りました。その後、3日目のサーバサイド講義で、これまで使ってきたAPIを自分たちで実装してみる、という流れをとりました。

実際に作成してみるのは、GraphQLのAPIサーバです。これをRubyで実装する講義でした。また、決済を担当する別サービス(minifinancier)とのサービス間通信をgRPCで実装するなど、発展的な内容も多く盛り込まれた講義でした。非常にボリュームの多い内容で、多くの方々が苦労されていましたが、それでも何とか乗り切っていました。

4日目: インフラ講義

4日目のインフラ講義では、クックパッドにおけるSREが果たしている役割とその歴史を、実例を交えつつ紹介しました。演習パートでは、基礎課題としてTerraform・hakoを用いて、ミニクックパッドマートをデプロイした他、minifinancierをデプロイしてgRPCのサービス間通信を張る、発展課題として静的ファイルをS3+Cloudfront構成で配信するなどの課題に取り組みました。

スライド: https://static.cookpad.com/techlife/cookpad_summer_internship_2021_infra/main.pdf

補助資料

5日目: サービス開発講義

前半最終日はサービス開発講義を実施しました。午前はクックパッドのサービス開発に対する考え方や開発プロセスを座学形式で学びました。 午後は、午前で学んだことをベースにインターン生同士でチームを組み、ZoomやFigmaを活用したオンラインでのグループワークを行いました。グループワークでは、与えられたテーマを元にユーザーインタビューや価値仮説、アイデア出し、プロトタイプの作成までを一貫して実践しました。講義の終盤では実際に作成したプロトタイプをユーザーにテストしてもらい、それら結果をまとめて各チームでの成果発表を行いました。

「丸1日コードを書かない講義です」とアナウンスしたときからどんな講義なんだろう?と皆さん気になっていたようでした。実際に取り組んでみて、サービス開発について体系的に学び実践する機会がなかなかないので、貴重な良い経験ができたと好評でした。

後半

後半はPBLコースとOJTコースそれぞれに分かれての実践パートでした。

f:id:fufufukakaka:20210906103359j:plain
講師との壁打ちの様子

f:id:fufufukakaka:20210906104529j:plain
雑談していた様子

PBLでは前週のサービス開発講義の内容を元にして、サービス開発の実習を行いました。「一人暮らしの料理」に関する課題を見出し、それを解決するアプリケーションを提案、実装・デプロイしきる、という工程を5日間という短い時間でやりきるというタイトなものでした。 仮説検証、実装時の技術相談などを社員がサポートしつつ着実に進めていった結果、最終的にはほぼ全員がデプロイまでやりきり、無事に成果を発表できていました。

f:id:fufufukakaka:20210906103047j:plain
PBL成果発表の様子、 撮影:WeWork Oceangate Minatomirai

最終講評はCTOの成田、レシピ事業部部長など4名が成果物を真剣に審査しました。実際にそれで課題を解決することができているのか、技術力をどれだけアピールできているか、など複数の視点から評価を行いました。

f:id:fufufukakaka:20210906102845j:plain
講評者のCTO成田、 撮影:WeWork Oceangate Minatomirai

厳正なる審査の結果、技術観点・サービス観点から優秀だった方にはそれぞれ賞を贈らせていただきました。どちらもそれぞれ、特別な賞品を贈呈いたしました。

OJTではクックパッドの各部署に配属され、メンターの指導を受けながらサービス開発を実践してもらいました。レシピサービス、クックパッドマート、基盤系の部署などさまざまな部署に配属された後、みなさんそれぞれのタスクをやり遂げていただきました。 最終日にはPBLコースと合わせて、各自が取り組んだタスクを発表してもらいました。ほとんど全員がPRのマージ、本番環境へのデプロイまでこなしており、発表を聞いていた人全員がみなさんの偉業に驚いていました。

f:id:fufufukakaka:20210906115758j:plain
OJT成果発表の様子、 撮影:WeWork Oceangate Minatomirai

インターンシップを終えて

簡単にではありますが、10日間のサマーインターンシップを振り返させていただきました。 昨年はすべてオンラインでの開催でしたが、今年は後半の実践プログラムについてオンラインとオフィスを選択希望制にしました。昨今の情勢もあり全員にご来訪いただくことは叶わない難しい状況でしたが、恵比寿からみなとみらいに移転した新しいオフィスを、参加者の方々に体感いただく機会を設けられて良かったと感じています。 全体を通じてリモート中心の設計という点は昨年と同様であったため、Zoom、Slack、Kibelaを最大限に活用しました。また、これまでの取り組みを踏まえて、より一層双方向のコミュニケーションを意識しました。具体的にはSlackでpollやreactionによる双方向的でカジュアルなコミュニケーションを織り交ぜたり、Zoom上でブレイクアウトルームを活用したチームごとの成果発表やワークを取り入れる講義などがありました。 今回得られた知見を、次回以降の取り組みにも活かしていきたいと思います。

ノベルティ

f:id:fufufukakaka:20210906103238j:plain
ノベルティセット

f:id:fufufukakaka:20210906103300j:plain

f:id:fufufukakaka:20210906103327j:plain
オフィス招待カード

写真のノベルティセット(アメ、ラムネ、スマートフォンスタンド、マルシェバッグ、うちわ、ステッカー)を事前に送付しました。 また、全日リモート参加を選択された方には、別の機会で改めてオフィス見学に来ていただけるように、オフィス招待カードも送付させていただきました。 この他にサマーインターンシップのロゴが入ったZoomのバーチャル背景用の画像も配布しています。

まとめ

以上が、Cookpad Summer Internship 2021 10 Day Techコースの開催報告です。 ご参加いただいた皆さま、本当にありがとうございました!

今年のサマーインターンシップは終わってしまいましたが、クックパッドでは就業型インターンシップを通年で募集しています。 興味のある方はぜひご応募ください!

/* */ @import "/css/theme/report/report.css"; /* */ /* */ body{ background-image: url('https://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527163350.png'); background-repeat: repeat-x; background-color:transparent; background-attachment: scroll; background-position: left top;} /* */ body{ border-top: 3px solid orange; color: #3c3c3c; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; line-height: 1.8; font-size: 16px; } a { text-decoration: underline; color: #693e1c; } a:hover { color: #80400e; text-decoration: underline; } .entry-title a{ color: rgb(176, 108, 28); cursor: auto; display: inline; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; font-size: 30px; font-weight: bold; height: auto; line-height: 40.5px; text-decoration: underline solid rgb(176, 108, 28); width: auto; line-height: 1.35; } .date a { color: #9b8b6c; font-size: 14px; text-decoration: none; font-weight: normal; } .urllist-title-link { font-size: 14px; } /* Recent Entries */ .recent-entries a{ color: #693e1c; } .recent-entries a:visited { color: #4d2200; text-decoration: none; } .hatena-module-recent-entries li { padding-bottom: 8px; border-bottom-width: 0px; } /*Widget*/ .hatena-module-body li { list-style-type: circle; } .hatena-module-body a{ text-decoration: none; } .hatena-module-body a:hover{ text-decoration: underline; } /* Widget name */ .hatena-module-title, .hatena-module-title a{ color: #b06c1c; margin-top: 20px; margin-bottom: 7px; } /* work frame*/ #container { width: 970px; text-align: center; margin: 0 auto; background: transparent; padding: 0 30px; } #wrapper { float: left; overflow: hidden; width: 660px; } #box2 { width: 240px; float: right; font-size: 14px; word-wrap: break-word; } /*#blog-title-inner{*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-position: left 0px;*/ /*}*/ /*.header-image-only #blog-title-inner {*/ /*background-repeat: no-repeat;*/ /*position: relative;*/ /*height: 200px;*/ /*display: none;*/ /*}*/ /*#blog-title {*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-image: url('https://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527172848.png');*/ /*background-repeat: no-repeat;*/ /*background-position: left 0px;*/ /*}*/