Cookpad Online Summer Internship 2020 に参加しました

クックパッドのサマーインターンシップに参加しました。

参加したコースは Web アプリ開発コース で、9/7~11 の5日間ありました。1~2日目は技術講義とサービス開発講義を受け、3~5日目は各自でお題に沿ったアプリケーションの開発に取り組みました。

意気込み

大抵のインターンシップはそうだと思いますが、今年は新型コロナウイルスの影響によりオンラインでの開催でした。

夏に入った頃、サークル Slack の雑談チャンネルにいる同学年の人々の間でインターンシップの話題が多く上がっていたことがきっかけで、いくつかインターンシップに申し込んでみました。というわけで、人生はじめてのインターンシップ参加となりました。

今までプログラミングは趣味の範疇で行ってきたので、こういった業務での開発に触れる経験も必要だろうというのがちゃんとした動機です。将来のことはわかりませんが、将来的にそういった職につく可能性は高いと思いますし。

あとは、面接も含めてすべてオンラインだったことで参加する精神的な障壁が下がっていたというのもありますし、Slack にしろ Twitter にしろ周辺にいる人は割と社会的なあれこれから身を置くイメージがあったのが、急にそういった話をしだしてびっくりしたというのもあります。

技術講義・サービス開発講義

講義で実際に使われたスライドはこちらで公開されています。

techlife.cookpad.com

特徴的だったのは、単に技術的な話だけではなく、ユーザーの課題を解決するためのサービス開発手法についても学んだというところだと思います。これによって技術的な部分も強い目的を持って学べたと思います。

技術講義(1日目、2日目午前)のハンズオンは AWS に用意された環境を使って小規模なレシピサービスを作るというもので、Ruby on Rails やデータベース設計の経験不足もありましたがかなり難しく、時間内に終わりませんでした。逆にこれで自分の限界がわかったので、のちの PBL での戦略を決めるのに役立ったと思います。

サービス開発講義(2日目午後)のハンズオンはユーザーの課題を解決するアプリケーションの考案とそのプロトタイピングです。これも単なるコーディングとは別の力を要求され暗中模索といった感じで、なかなか難しかったです。

PBL

アプリケーション開発は PBL (Project-Based Learning) という、実際に考えられるユーザーの課題を考え、それを解決するサービスとしての開発を行いました。価値仮設(どのようなユーザーがいたら何が価値になるかの予想)とユーザーストーリー(どのような場面でそのサービスが必要になるかの具体的な物語)を建てるのも難しく、上述のハンズオンで自分が組めるアプリケーションの限界もなんとなくわかり、かなり苦闘しながらの開発となりました。

Ruby on Rails での開発ならメンターさんのヘルプを十分に受けられるということで、またせっかくなので Ruby on Rails に慣れたいというのもあり、バックエンドでは Ruby on Rails を使いましたが、時間的な制約から極力慣れている技術を使いたいということでバックエンドとフロントエンドを分離し、バックエンドの Ruby on RailsAPI モードにして、フロントエンドは TypeScript + React を使って REST API でやりとりする方式にしました。結局 CRUD の Read しか実装できなかったので、バックエンドはデータベースを引っ張って返すだけの処理になってしまいましたが……。フロントエンドでガワの実装はできたので、今回の要求であった Minimum Viable Product としては十分だったのではないかと思います。

実際メンターさんがかなり懇切丁寧に付き添ってくれて、悩んでいる部分を聞いたら魚もくれつつ魚の釣り方も教えてくれるし、アイデア的な部分も弱いところにビシバシ指摘をくれて納得できたのでとても助かりました。

ちなみに PBL のお題は「一人暮らしをしている人の料理が楽しみになるアプリケーション」で、実際に自分が作ったのは「ハッシュタグを通じて同じ趣味を持つ人の普段の料理を探せるアプリケーション」です。

最終日に各自作ったアプリケーションの発表があり、15人いて一人4分という短い時間で、発表も大変でした。一人ひとりに審査員が講評をくれたので、フィードバックが得られたのが良かったです。他の人が何を考えて何を作ったのか見られたのも良い刺激になったと思います。

感想

サービス開発という枠組みで具体的な手法まで学べたのはかなり経験になりました。技術面でも、今まであまり触れてこなかったバックエンド部分に触れて楽しかったので、今後のモチベになると思います。

会社の雰囲気としてもいい感じで、将来どういう環境で働きたいか考える参考にもなったと思います。

や、将来とか何も考えていませんが……どうなるんでしょうね。

裏話

メモ: 使った技術、用語など

  • やりとり・連絡
  • アプリ
  • インフラ
    • AWS
      • CodeCommit, CodeBuild, CodePipeline
      • ECS
    • Docker は今回は未使用
  • サービス開発

おまけ: もらったものの写真

f:id:n4o847:20200918212606j:plain

f:id:n4o847:20200918212755j:plain

f:id:n4o847:20200918212815j:plain

f:id:n4o847:20200918212844j:plain