楽天短期インターンシップ「夏の陣オンライン2023」に参加しました
2023年8月21日~8月25日の期間で、楽天グループ株式会社主催「Summer Short Internship 2023〜夏の陣オンライン〜」に参加しました。
3つのコースがあり、私は「Application Engineer~新規プロトタイプ開発コース~」に参加しました。本記事では、今後同じようなイベントに参加されるかもしれない方に向けた情報提供として、インターンの流れを軽く振り返っていこうと思います。
(注意)あくまで私が参加した期間の情報であって、別の期間では異なる可能性があります。
応募~選考まで
確かサポーターズの募集を見て応募しました。流れとしては、以下の通りです。
- エントリーシート提出
- コーディングテスト(問題文すべて英語、コピーできないので外部翻訳サイトに頼れない)
- 面接(日本語、エンジニア1名)
- 選考通過!
エントリーシートは基本的に一般的なものですが、楽天への印象に関する質問やグループワークにおける立ち回りに関する質問などが面白かった記憶があります。しっかり文字数の8~9割ほど書けていれば特に問題ないと思います。いままでの成果物については、大学で作成した本当に軽度な個人開発のものとグループ開発のもののみでも大丈夫でした。
コーディングテストについては本当にできていないのですが通りました。本当に。
面接はエンジニアの方が1名担当していました。ESで書いたような基本的なことに加えて、技術の知識を取り入れるときにどうするかみたいなことを聞かれた覚えがあります。
この時点での技術スタック
- 大学の講義や研究でPythonをめちゃめちゃ使う
- PythonでのWeb開発は独学でFlaskとStreamlitを少しだけ触った
- SQLは講義と基本情報技術者試験で学んだレベル
- Web開発系インターン1社に参加済み(Vue.js、Node.jsとか使った、API作るのが楽しかった)
インターン概要
- テーマ:フードロス解決に貢献できるプロダクトを各チームで開発
- 形式:5名のグループ(他チームでは4名グループもあった気がします)
- 参加方法:完全オンライン
- 使用技術:完全自由
- メンター:1チームにつき1人
- 最終発表:スライドと口頭発表ともに英語
大まかな日程は以下の通りです。
- Day1:Introduction, Idea Discussion
- Day2:System Design + Development
- Day3:Development
- Day4:Development + Presentation Prep
- Day5:Presentation Prep + Presentation
合間で人事の方とのキャリア面談や、チーム内でメンターの方とその上司の方に質問できる時間があり、そちらもとてもためになりました。
開発の流れ
Day1ではチームメンバーやメンターとの挨拶のほか、チームリーダーを決めました。リーダーの方の意向で、「作業に取り組むときは約90分ごとに進捗報告をする」というルールを決めて取り組みました。これが、今回取り組む中でとてもよかったなと感じました。
方針の検討
Day1 ~ Day2 でアイデア出しとシステム設計をしました。アイデア出しは、Google ドキュメントを共有して調査した内容をまとめていきました。システム設計は、Google スライドを共有して図を作り、認識を統一しました。詳細は伏せますが、在庫管理アプリのようなものを作成しました。
使用技術
Python、Streamlit、Docker、SQLite、Vision API、Rakuten API
チームメンバーが全員Python経験者だったため、Pythonを用いることにしました。開発期間が非常に短いことを考慮し、フロント側をいじる負担が少ないStreamlitというフレームワークを採用することにしました。
実用上は、FlaskやDjangoでがっつり装飾したり、スマホアプリ形態での実装が望ましいです。
役割分担
主にDBから必要な情報を取り出して返す関数を作りました。いわゆるバックエンドを担当したといえるかなと思います。受け取ったデータをどう表示するかであったり、ページの遷移などは他のメンバーに任せていたのですが、自分が作った関数が正常に動いたという報告をいただくと嬉しい気持ちになりました。
他にはスライドの作成を担当しました。いつもはPower Pointを使うことが多いのですが、今回はCanvaを使ってみました。こちらも共同で作業できるので、使いやすかったです。
最終発表
参加人数が非常に多いので、いくつかのブレイクアウトルームに分かれて発表しました。そのため、全てのチームの発表を聞くことはできません。
社員の方からの質問も英語で行われるため、英語を聞き取れる人は一人はいたほうが良いです。私のチームでは英語に強い方に質問対応を担当していただきました。本当にありがとうございます。
発表の後に、メンターの方からチーム全員のコミュニケーション力について高評価をいただけたことは、とても嬉しかったです。
全体感想
チームメンバーが良かった
リーダーの方の進行が上手かったのもありますし、議論が活発に行われていてもギスギスした空気にならないところはチームの良さだなと思いました。技術については、おそらく同じ技術を持っている人同士で組むようにされているのだと思います。そのうえで、フロント担当とバックエンド担当、全体統合担当、情報収集担当など、それぞれの得意分野で役割分担をしてスムーズに進めることができました。
バックエンド開発が楽しい
ここより前に参加した1社のインターンでもバックエンドを担当していた時にも感じましたが、作ったAPIや関数がフロント側で正常に動作しているという報告を受けるととても嬉しくなります。個人的には特定の型の値を受け取って特定の型で返すというわかりやすい作業が、自分に合っているのかもしれません。
自分の担当部分以外を結構任せてしまった
バックエンドが早めに終わったり、フロント側担当の方にこの関数作ってと言われて作る以外のタイミングでやることがなくなってしまいがちでした。その間に必要なデータの収集や発表資料作りなどの作業を与えてくださったリーダーの方には感謝しています。作業の負担の分散が難しいですね。
GitHub上のStreamlitコードをを外部公開する方法を知った
すごい簡単!
対象層について
完全初心者向けではなく、ある程度開発の流れ(企画と開発両方含めて)の知識がある人向けだと思いました。ひとつ前に企画と開発の講義を含んだインターンシップに参加していたおかげでついていけましたが、それがなければもっと大変だったかもしれません。ただ、メンターの方が毎日その日の作業に対してフィードバックをしてくれるので、そこまで気にしなくてもいいかもしれません。
まとめ
5日間という短い期間で早く過ぎ去ってしまった感覚はありましたが、非常に充実したインターンシップでした。Pythonでデータベースをいじる知識が身についたり、やっぱりバックエンドが自分には向いてるなという気づきを得られたのも収穫だと思います。夏のインターンシップに参加するまでは大学の軽いチーム開発しか経験がなく、成果物もないので不安でしたが、チーム開発って楽しいなと思うことができたので思い切っていろいろなインターンに参加してみて良かったです。
Discussion