Kotlin未経験エンジニアがサイバーエージェントのKotlin道場に2週間入門した結果
初めましての人は初めまして!シュンヤです。
普段はwatnowという学生IT団体に所属しており、大学専用の教科書フリマアプリを運営してます。
本日はCA Tech Dojo(2weeks Android向け育成型インターンシップ)に参加してきたのでその感想を書いていきたいと思います。
応募したきっかけ
モバイルエンジニアとしてFlutterを触っていましたが、ネイティブモバイルアプリケーションの開発に関する知識も兼ね備えて置きたかったため、未経験からでも参加できるという本インターンに応募し、合格することができました。
待遇
オフィスの近くに宿泊先を用意していただき、お昼はランチを用意していただきました。また、毎日1時間メンターさんに質問できる時間を設けていただきました。
インターンの内容
本インターンのテーマは、「1人でアプリを開発しリリースできるようになる」というものでした。実際にQRコードを使った友達交換アプリを作成しました。進め方としてはアプリケーションの必須要件が与えられ、それを実装した後は、追加の実装を行っていくというものでした。
技術選定
言語
・Kotlin
使用したライブラリ(一部抜粋)
・room(データベース)
・recyclerview(友達一覧画面に使用)
・zxing-android-embedded(QR読み取り・生成)
・coil(画像読み込み)
・Kotlin Coroutines(非同期処理)
・Material3
・LiveData
・navaigation
・databinding
…
今回はComposeを使わず、全てxmlで実装しました。
成果物
今回はユーザビリティを意識した設計を行いました。
コア機能である「友達追加」について、ユーザが最もアクセスしやすいように考えました。この機能には、自分のQRを表示する「QR表示」と相手のQRを読み取る「QR読み取り」という2つの機能が含まれます。この機能を実装するために最初に思いついた方法は、QR表示ボタンをボトムバーの中央に配置する方式です。これにより「QR表示」に素早くアクセスすることができると考えました。しかしこの方法では「QR読み取り」にアクセスするために、さらにもうワンタップ必要になります。今回は「QR表示」と「QR読み取り」は同じ優先度で実装したかったため、他の案を検討しました。
そこで自分はFloatingActionButton(以下:FAB)を採用することにしました。
FABとは下記画像の右下に配置されているようなボタンのことで、主にユーザに一番とって欲しい動作を促すボタンです。例えばKeepメモやモバイル版のGoogleスライドでも使われています。今回の場合、「ユーザ追加」というアクションを第一に主張するため、FABをユーザ追加を意味するアイコンにし、その後に「QR表示」と「QR読み取り」を選択できるような実装にしました。さらにFABを常に表示させることで、ユーザはどの画面からでもこの2つの機能にアクセスできるようにしました。
今回はデザインにMaterial3を導入し、全体に統一感を出すようにしました。
また、ダークテーマにも対応するように追加要件を設定しました。上記の画像はダークテーマ適応時のものになります。
感想と今後の展望
2週間、過ぎてみれば一瞬でした。
今回のインターンはエンジニアとして大きく成長できた貴重な経験でした。特に、開発環境が素晴らしかったです。毎日メンターの方が質問対応してくださったり、人事の方が息抜きにさまざまな企画を用意してくださったため、開発に集中できる環境でした。また、インターン生がみんな優秀でいい人たちだったのでお互い学んだことを共有し、教え合うことができたので、とてもいい環境でした。さらに、日々を通してサイバーエージェントという素晴らしい会社をよく知ることができました。
Kotlinについては、参加前はかなり不安を抱えていましたが、実際触ってみるととても楽しく、非同期処理の書き方がJSやFlutterとは違ったり、Fragment、Activityなどの新しい概念があったりとても面白かったです。そして何よりxmlのレイアウトの概念がかなり面白かったです(特にchain-style)。さらに、DAOやライフサイクルなどの難しい概念についても社員さんに直接教えてもらえてとても良かったです。今回は全てxmlで実装したのですが、今後はComposeでの実装にも挑戦していこうと思います。
さいごに
筆者やインターン生が死ぬほど楽しんでいた様子は#catechdojoでご覧になれます。(ランチのツイートがほとんどですが笑)
本インターンをきっかけにこれからもKotlinをもっと極めていこうと思いました!
本インターンに関わっていただいた皆様本当にありがとうございました!!めっちゃ楽しかったです!!