見出し画像

CA Tech Dojo -Android編に参加しました


CA Tech Dojo について

CA Tech Dojo は、サイバーエージェントの育成型インターンシップです。
今年は一週間で課題として提示されたアプリを開発しました。
この記事では参加した感想を中心に書いていこうと思います。

参加の経緯~インターン開始まで

Dojo を知ったきっかけ

私は DroidKaigi 2023 に参加し、自分と同じく学生の方たちとお話する機会に恵まれました。
その時にお話ししたメンバーに Dojo 出身の方が多く、会話の中でもたびたび出てきたため興味がわきました。そして今年も Dojo の募集があることを知り、春休みの時期に開催される今回のインターンに申し込みました。
選考通って良かった…

インターン開始時の私の技術レベル

今回は Android の育成型インターンということで、どのくらいのレベルが適切なのか分からない部分もあったので、自分が大体どのような感じだったのかをまとめておこうと思います。

【PC 経験】
大学に入学してから PC に触り始めたので、ちょうど2年ほど。
元から興味はあったため、1年の冬には自作PCデビューしました。

【Android 開発経験】
1年の夏ごろから勉強を始めたので1年半くらいです。しかし、1年の時は何もかもが初めての物だらけだったので勉強があまり進まず、それなりに勉強が進むようになったのは2年生になってからなので実質1年くらいでしょうか…

作りたい機能はだいたい実装できるようになってきたかな?というレベルです。きれいなコードを書いたり、アーキテクチャを考えたりするレベルではなかったため、それが今回学びたい内容でもありました。

【制作物】
・Todoアプリ(Room や Firestore の使い方を勉強)
・地図アプリ(Google Maps API を Retrofit で叩く)
・書籍管理アプリ(Retrofit や Firestore で作成)
下二つはチーム開発で、チームリーダーとして開発を行いました(つよつよがいなかったため、よわよわの私がリーダーをやることに…)

【その他の開発経験など】
・授業で扱ったプログラミング(Java、C、Python※初歩)
・マイクラ鯖を立ててみる(Ubuntu Server で CLI 操作に慣れる)
・Webサーバーを立てる(Docker + WordPress + MySQL)
・Go の勉強を軽く…
・AtCoder 灰色!!

Dojo 開始!

課題の概要

Open AI の API を用いて AI とチャットするアプリの作成が課題でした。
ざっくり言うと、Open AI の公式アプリと同じようなことができれば要件達成という感じです。

私の開発の流れ

【1,2日目】
API の仕様を見ながら Retrofit と kotlin-serialization を用いて API を叩くことに成功。ここで本実装に入る前に一旦データフローやアプリの構造を考えたりもしておきました。

【3~5日目(土日含む)】
基本的な部分の実装を終わらせ、やり取りのデータの保存などもできる状態にする。

【6,7日目】
メンターさんにコードレビューして頂いた内容をもとにリファクタリングを行うと共に、自分が実装したかった追加機能の実装や、細かい修正をする。

発表

今回のインターンで一番きつかったこと、それは発表資料作成です。1時間の時間制限があったため大急ぎでスライドを準備しました。
普段夜更かししてのんびりスライド作りをするのでこれだけ時間に追われて焦るとは思いませんでした…
発表には参加メンバーの性格がよく表れていたと思います。私は制作物の実装やこだわりを中心に発表させていただいたのですが、このインターン全体に関する振り返りや感想を重視して発表されている方もいて、発表の仕方の面でも勉強になりました。

自分が何分話したか分からなかったので多分だいぶ長く話してしまったかなと思います。スライドの流れも個人的には満足のいくものではなかったので、このような短時間の発表資料作成でもある程度のクオリティの物が生み出せるようになりたいと思いました。

結果

なんとユーザビリティ賞を頂くことができました!!!!
今回私がアプリを開発する上で"インターン終了後も自分で使いたくなるようなものにする"ということを重視していたため、それを評価していただくことができてとても嬉しいです。

インターン中の交流

仲間との交流

インターンの参加者は10名でした。私は全員と初対面でした。最初はぎこちなさも多少ありましたが、課題に取り組むことを通じて意見交換したり、一緒にご飯を食べに行って話したりするうちにどんどん仲良くなっていきました。
どなたも優秀で、話していて多くの刺激を貰うことができました。こういうのはモチベーションのアップにもつながって良いですね。

朝宿泊しているホテルのロビーで集合して行ったり、土日にコワーキングスペースを借りてみんなで開発したり、分からないところを質問し合ったり、実装方法について意見交換したりと、本当に楽しい時間を過ごしました。
最終日には銭湯に行ってリラックスしました。
コーヒー牛乳最高に美味しかった…

Dojo生は例年とても仲良くなり、インターン後も交流が続いたりするそうですが今年もそれに負けていないと思います。

社員さんとの交流

インターン期間中は社員さんとランチに行ってお話したり、作業中に質問をしたりすることができました。一応質問の時間は設けられていたのですが、手の空いた社員さんが様子を見に来てくれたりする場面も多く、大体いつでも質問出来たように思います。

ランチタイムではメンターさん以外にも様々な方とご一緒することができ、サイバーエージェントでのお仕事や、Android開発に関することなどの様々なお話をして勉強になりました。
ガジェットの話で盛り上がったりもして、とても楽しかったです。

開発では、アーキテクチャに関する質問をしたり、コードの途中経過をレビューして頂いてより良いコードにブラッシュアップすることもできました。
今回の技術的な面で一番勉強になったのは、メンターさんによるレビューです。コードの書き方やアーキテクチャというのは自分だけでコードを書いているだけでは学べないので本当に良い勉強になったと思います。

最終日の打ち上げの時には社員さんが気を利かせてくださり、大学の先輩で社員として働いている方にも来ていただいてお話しすることができました。

最後に

今回のインターンを通じて技術的な成長をするのにとても良かったと思うのは、目標となる機能に向けて皆が個人開発をするという方式です。
実装方法や工夫の種類が人の数だけあることに加え、目指す先が同じである為、それらを収集して活かしやすい環境だったと思います。
自分が知らない実装方法を知ることもできました。
ほんとに良かったので、自分が所属する団体にも取り入れていきたいと思います。

課題のレベルも私にはちょうど良いものに感じました。実装に使用した機能自体は私が触ったことのあるものが多かったので、実装で大きく詰まる場面は少なかったですが、そのおかげでコードの書き方や分割、アーキテクチャなどの+α の部分を意識することができ、そういった内容の質問をしたり仲間と意見交換をしたりすることができました。

技術的な成長に加え、何よりも良かったと思えるのは、このインターンがこの上なく楽しいものだったということです。共に課題に取り組んだ仲間や、支えてくださった社員さんたちとのコミュニケーションの時間はとても濃密で心地よいものでした。
普段はどちらかというと Android 開発について人に教える場面が多いのですが、このインターン期間中は皆で教え合うということが良くできていたと思います。結果として普段の何倍もの密度で知識を吸収し、集中することができました。
間違いなく、大学に入ってから最も楽しい1週間だったと言えます。

今後は、このインターンの経験を活かしてエンジニアとしてステップアップできるように努力すると同時に、今回の多くの出会いを大切にしていきたいと思います。

私は今年の DroidKaigi にも参加したいと考えているので、そこで皆と再会したいなぁと考え中…

この記事が気に入ったらサポートをしてみませんか?