はじめに
会津大学学部三年のHAMADAです。すっかり春の陽気で、新学年に心躍らせている今日この頃です。さて今回は、CA Tech Dojo ~Android 編~ に参加した振り返りをしていこうと思います。
参加した経緯
2023年の6月ごろから、大学の先輩の勧めでAndroidを書き始めました。学内のハッカソンを始めとして、少しずつAndroid開発に取り組んでいました。しかし、個人の学習では、学び方に偏りがあるということをひしひしと感じていました。そこで、CA Tech Dojo ~Android 編~ (以下Dojoとします)に参加することで、体系的なAndroid開発の知識を身につけ成長したいと考えました。
Androidで参加するインターンは初めてだったので、選考通過の連絡が来たときは非常に嬉しかったです!
目標
インターンに参加する際に以下のような目標を立てました
- 言語化をできるようにする
- 作りたいプロダクトを実装できる技術力をつける
言語化をできるようにする
なんとなく動くコードは作れるけど、なぜその実装にしたのか、なぜ動くのかを理解できずに雰囲気で実装している。ということが今まで多くありました。コードの意味や挙動を、言語化できるようにすることで、より良い実装や理解に近づくと考えました。また、質問や自分の考えを相手に的確に迅速に伝えるということを意識することで、開発だけでなく、日常生活を含めた色々な場面で円滑なコミュニケーションをとることができると考えています。これらを向上させるために、言語化をできるようにする。という目標を立てました。
作りたいプロダクトを実装できる技術力をつける
Dojoに参加する前の実装では、自分ができる範囲の実装に逃げるようなことが多く、プロダクト自体の質を下げていました。もちろん、期間が限られていない開発では、チャレンジングな実装に取り組んできたつもりですが、期間が限られた開発ではできる実装を繰り返していたように思います。そこで、自分が想像する妥協のないプロダクト作りができるようになろうとこの目標を立てました。具体的には、苦手なUI実装や状態の管理、設計を意識した実装ができるようになるという目標です。
インターンに参加
このインターンの期間は3/6~3/12までの一週間でした。一日一日振り返ってみたいと思います。
3/6
この日から、開発が始まるということでお題がオープニングで発表されました。
お題は”AIチャットアプリ”。ChatGPTのAPIを用いたアプリケーションでした。
参加者は私を含めて10人で、3,3,4人のチームに分かれて開発を行います。
チームではありますが、チームメンバーとは教えあったり、質問しあったりしながら各々のアプリケーションを実装していきます。もちろん、チームを跨いだ質問や教え合いもOKで私も他のメンバーにたくさん教えてもらいました!
~3/6のお昼ご飯~
午後は、本格的に開発に取り組んでいきます。
1日目は以下のようなことに取り組みました。
- ChatGPTに質問を送り返信を取得する
- 会話表示画面の実装
RetrofitとSerializationを用いて、ChatGPTからの返答を取得することができました。
どちらも今回初めて触った技術だったのですが、なんとか実装することができました。
~余談~
私は、龍角散のど飴が非常に好きなのですが、龍角散トークで盛り上がれるエンジニアの方がいらっしゃって非常に嬉しかったです。
3/7
2日目からは、午前中から開発に取り組んでいきます。
2日目は以下のようなことに取り組みました。
- 質問と返答を画面に表示する。
- 会話一覧画面のDrawerの実装
画面の表示では、sealed Interfaceを用いて、状態に応じた実装をすることができました。
Drawerの実装では、”Drawer”という名前を知らず、調べるのに苦労しましたが、メンターさんや他のメンバーから教えたいただき事なきを得ました。
他のメンバーとも二日目には、すっかり打ち解け開発以外もとても楽しい時間を過ごしました!
~3/7のお昼ご飯~
3/8
3日目は以下のようなことに取り組みました。
- Textから受け取ったAPI KEYを永続化する
- 会話をツリー状にする
他にも、ライブラリの選定方法と基準についてや、kotlinで拡張関数を使うタイミングやAndroid開発における慣習など、参加前から疑問点も解消することができました。
~3/8のお昼ご飯~
3/9, 3/10
土日は他のメンバーと集まって開発をしたり、秋葉原で遊んだりして親睦を深めました。
一緒に、Android開発に取り組む仲間を作れることもこのインターンの醍醐味だと思います。
土日にも開発を進めました
- SharedPreferencesの実装
- Roomの実装
- material2からmaterial3への移行
3/11
4日目は以下のようなことに取り組みました。
- RoomからFirestoreへの移行
- UI全体の実装
3日目には必須要件の実装が終わっていたので、土曜日からは、ブラッシュアップや今まで触ったことのない技術に取り組みました。
Factory周りの実装で、依存性注入で苦しみました。Factoryの実装後、メンターさんのアドバイスでhiltを導入しhiltの便利さを実感しました。ただ、便利なものを使うのではなく、不便さを知ってから、意義や便利さを理解したのちに便利なライブラリを利用する。という経験ができたことも大きな学びになりました。
~3/11のお昼ご飯~
3/12
この日はついに最終発表日!
実装としては、以下のようなことに挑戦しました。
- UIにアニメーションをつけてリッチにする。
- ダイナミックリンクを発行し、リンクを共有できるようにする。
リンクの共有は間に合わず中途半端な実装になってしまいましたが、仕組みを学べたので今後にうまく活用していきたいです。
~3/12のお昼ご飯~
その後、15:00にコードフリーズとなり、15:00~16:00の1時間で発表の資料を作ります。1時間で発表資料を作るのが、かなり大変でした…
発表中
デモとアプリマップ
チームのメンターさんと1on1面談
最後に、メンターさんと1on1面談を行いました。メンターさんからは、goodポイントとmoreポイントを教えていただきました!
goodポイントは、必要な機能の実装力があるということ。Androidにとらわれない、今までのプログラミング経験を用いて、実装し切ることができるとおっしゃっていただきました。また、sealed interfaceをうまく活用できている点や、期間中、状態やview modelの受け渡しについてアドバイスをいただいた所を、最終日には改善できていたところも良いとおっしゃっていただきました!
目標にしていた言語化については、質問をたくさん投げられたこと、現状の課題を自身で理解し説明できているということをメンターさんと確認しました!
moreポイントは、Android Studioに親しみを持つこと(ショートカット等を使える)、stateを実装する際にbyを活用すること。そして、設計を意識した実装で何かアプリを作ってみるともっと成長できるとおっしゃっていただきました!
懇親会
懇親会では、ドリンクとケータリングをいただきながら
- キャリアについて
- 技術スタックについて
- サイバーエージェントでの働き方について
- 龍角散のど飴の話
など
趣味の話からキャリアの話まで、幅広く社員の方々やDojoメンバーと話すことができました。
Dojoに参加することができて
Dojoに参加していた一週間は、今までで一番開発に真摯に向き合えた期間だと感じています。技術的成長を感じることができたのは勿論、Android開発を共にする仲間を作ることができたことは、これからエンジニアとしての道を歩む上での大きな財産となりました。勿論、Dojoを完走したということがゴールではありません。Dojoでの経験や高まったモチベーションをこれからの開発に大いに活かしたいと思います。
何やら色々書いてきましたが、一つ伝えたいことがあるとすれば、”めちゃくちゃ楽しいインターン”だったということです。Android開発は勿論、Dojoメンバーとご飯に行ったり、発表後温泉に行ったりと充実していました。全国各地から様々なバックグラウンドを持つみんなと、Android開発という共通項を通じて、仲を深めることができ非常に楽しかったです。来年、Dojoへの参加を検討している方がいらっしゃれば、強くお勧めしたいと思います。
インターン期間中、関わってくださった皆様、本当にありがとうございました!
次は、Droid Kaigiで集まれたらいいな…
所属サークル
私のTwitter
私のgithub