🥋

【大収穫】CA Tech Dojo 2024 Android編に参加して得たもの

2024/03/17に公開
1

導入

CA Tech Dojo 2024 Android編にお邪魔してきたので、思い出に浸りがてら記事を書いてみようと思います。

参加に際して多数の先達の記事に助けられたので、この歴史あるインターンの来年以降の参加者に向けて「Dojoはいいぞ」記事を贈りたいのです。

内容が技術風味のポエムになってしまったので、Zennの汚染になるのではとひやひやしております。
近日中にKotlin/JSでブログを作成して移管しますが、鮮度が落ちる前に一旦供養させてください。

CA Tech Dojoについて

開発期間は(便宜上)5日間。
詳しくはこちらを参照してください。

以下公式より引用。

CA Tech Dojo -Android 編- は、プログラミング経験のある学生を対象に約1週間でAndroidアプリ開発の基礎スキルを身に着けていただくインターンシップです。

活躍する現場社員に質問しながら用意された課題をもとにAndroidアプリを完成させることを目指していただきます。

事前に任意参加でハンズオン形式の講義を行います。

これまでの経験やハンズオンで事前に学んだことを元に「1人でアプリを開発しリリースできるようになる」というゴールを達成できるようなものを想定しています。

開催日

2024年3月6日(水) ~2024年3月12日(火)

開催場所

【東京】サイバーエージェント東京オフィスAbema Towers

参加者

北は北海道、西は兵庫から総勢10名が参加していました。
東京近郊からの参加は2名のみと、円安のご時世にも関わらず地方在住者にも平等に恵まれた機会を与えていただきました。

目標

開催10日ほど前に、メンター社員さんとの1on1を行いました。
ここで大枠の目標と、そこに到達するためのマイルストーン的な細かい目標を設定しました。

  • ストアにリリースできるものを作り切る
  • 変更に強くテストが容易な、堅牢なコードを書く
  • 美しいUIを意識する

参加前のスキル感 && 自己紹介

hinalin💚Android

  • Androidアプリエンジニア歴3ヶ月

  • プログラミング歴4年

  • React Nativeで実務2年目

  • CA Tech AccelにAndroid枠で参加

  • University of London Bachelor of Computer Science 中途退学

  • 関西学院大学文学部文学言語学科フランス文学フランス語学専修2年 2026年卒業予定

  • 5ヶ国語話す

  • コミュニティ運営(STECH代表/NID.kt創設/Tech.Uni無職)

  • 元フィジーク選手

課題アプリの仕様

AIチャットアプリ(ChatGPTクライアント)

例年2週間のDojoですが今年は1週間ということで、それに即した重さになっているなという印象でした。

私は今回自分の基礎力を伸ばすことに注力するために、ハッカソン的「締切駆動開発」や「動くものを早く作る」考えを捨ててDojoに臨みました。

具体的には、基礎要件を作り終えてからは以下の2つの選択肢があったのですが、せっかくの育成型インターンということで、私は後者を選びました。

  • 「なんか凄いアプリ」にブラッシュアップする
  • 設計など普段1人では向き合い難い概念に、メンターさんやチームメンバーの力を借りながら腰を据えて取り組む

実装面については後述しますが、RetrofitとKtor、GsonとMoshiなど類似のライブラリを使って同じ処理の再実装も行いました。

結果として大満足です。

1日目

  • 10:30 オープニング

    • 10:25くらいに滑り込んだらみんないた。
  • 12:00 ランチ

    • 初日のランチは、KINTANでチームメンバーののこっち(でんのこくん) && のんちゃん + メンターさんと焼肉をいただきました🐮
    • 普段個々人が何をしていて、どういった経験を積んできたのかなど話せてチームビルディングの第一歩を踏み出せた時間でした。
  • 13:00 森部屋
    • のこっちとのんちゃんをストレッチに誘ったら、結局みんなで行こう!という流れになりストレッチ大会👯‍♀️
    • みんな凄い音鳴らしてました😇整体行こう。
  • 16:30 質問フィーバータイム

  • 18:00 夕会

  • 18:30 日報タイム

Abema Towersを出てからは、近隣のカラオケで作業しました。存在しない部屋に通される。

進捗

必須の機能要件は全て実装できました。
しかしファイルの切り分けは進んでおらず、Fatなファイルが点在する状態で1日を終えました。

  • 要件定義
  • UI設計
  • API通信部分の実装
  • レスポンスの描画
  • ローカルストレージへの履歴保存
  • ModalNavigationDrawerに履歴表示

2日目

この日からながなががホテルから一緒に行こうと呼びかけてくれていましたが、ギリギリまで寝たかったのでこの時はパスしてました。20分前到着偉すぎる😇

  • 10:30 朝会

  • 12:00 ランチ

    • 2日目のランチは、N9Yにてジンギスカンをいただきました🐑

    • with りんりん && ながなが

    • 非情報系出身の社員さんに、キャリアや実務での技術選定についてみっちり伺えた恵まれた時間でした。

  • 13:00 森部屋

  • 16:30 質問フィーバータイム

  • 18:00 夕会

  • 18:30 日報タイム

前日の限界カラオケ開発を見かねたもりまゆさんが掛け合ってくださり、夜はCA Tech Loungeにお邪魔しました・・・!
大感謝。

進捗

  • ディレクトリ設計の見直し
  • API通信周りのリファクタリング
  • ModalNavigationDrawerのUI改善

設計についてメンター社員さんにみっちり教えていただきました。
「設計のための設計」をしていたことを猛省。

  • 不便を知って初めて設計の恩恵に触れることができる
  • 極論Viewに全てビジネスロジックを書いても、チーム全体が不便を感じていないならそれも設計になりうる
  • 「こうすると便利だよ」を押し通すためのソースとして、今世の中に出回っているDDDやClean Architectureというものが使われる

といったことを教わる。

3日目

  • 10:30 朝会

  • 12:00 ランチ

    • 3日目のランチは、春秋でお魚定食をいただきました🐟
    • with はまちゃん && たっくん
    • 技術やキャリアのお話:筋肉トーク = 2:8
    • とりあえず社員さんがめちゃめちゃ鍛えてた💪🏻
    • CAには筋トレサークルがあるらしい・・・?!
  • 13:00 森部屋

    • ヨガタイム🧘‍♀️
  • 16:30 質問フィーバータイム

  • 18:00 夕会

  • 18:30 日報タイム

進捗

  • Firebase authを利用したユーザー登録・認証フローの実装
  • Cloud Firestoreを利用したチャット履歴のリモート保存

課題アプリの仕様上ローカルDBだけで十分だったのですが、「Firebase使ってみたいから」という理由でCloud storeとFirebase authを使ってみました。

全く詰まることなく実装でき、たいへん感動したのを覚えています。
Firebase最高!Firebase最高!

ボーナス開発デー1 a.k.a 土曜日

お昼前からコワーキングスペースにて作業。

夜には「天津飯食べたくない?!」「食べたい!!!!」で大阪王将へ。
6/9が天津炒飯を注文。最高に楽しかった。

進捗

  • Bubble Chat的UIを、公式Sample ProjectのJetChatを参考に実装。
  • Retrofitで実装した通信周りをKtorで再実装
  • Gsonで実装したコンバージョン部分をMoshiで再実装

ボーナス開発デー2 a.k.a 日曜日

私は別件に追われて外出できなかったのですが、前日と同じコワーキングスペースで集まって作業していたようです👀✨
休日にも関わらず、社員さんが美味しいお菓子を持って降臨してくださったそう🙌🏻

進捗

ゼロの秘宝

4日目

  • 10:30 朝会

  • 12:00 ランチ

    • 4日目のランチは、もりまゆさんも交えて#802 CAFE&DINERで女子会でした🫶🏻
    • with みおっち && りんりん
    • 早期選考やインターン、これから歩むキャリアパスなど、社員さんのお話も交えて色々とお話できました☺️✨
    • 女性としてこの業界に入る上で、様々なライフイベントを考慮してどう動くべきかなど考えるきっかけをいただきました。
  • 13:00 森部屋

  • 16:30 質問フィーバータイム

  • 18:00 夕会

  • 18:30 日報タイム

進捗

ログイン・ログアウト関連の安定性を改善

5日目

体調を崩したためお昼過ぎから参戦。
チームランチで海鮮丼を食べたらしい・・・血涙・・・🥹

  • 15:00 コードフリーズ && 資料作成開始
  • 16:00 成果発表会
    • 白熱しすぎて1時間ほど伸びる。申し訳ない。

  • 16:00 審議
  • 16:00 表彰🏆
  • 16:00 振り返り
  • 16:00 打ち上げ🥳🎉

進捗

  • ウィジェットの実装
  • スプラッシュスクリーンの実装
  • サインアップ時のエラーハンドリング
  • ダークモードの適用
  • Language switcherの実装

土日稼働できなかったので、そのぶん最終日で巻き返し。

コードフリーズ1時間半前にして、自分でも理解できないことが起こりました。
以前からウィジェットの実装に興味があり、Dojoから帰ったら入門するぞ!と考えていました。
しかし欲望に負けてしまったのです。

???「あれ、なんかウィジェット実装したい😃」

現実逃避も挟みながらがむしゃらに手を動かし、

奇跡的にコードフリーズ15分前に実装できました。

思わず「できたーーー!」と声を上げましたが、周りのみんなも一緒に喜んでくれてめちゃめちゃ嬉しかった・・・!

成果発表会は熱のこもったものになりました。
結果的にトータルで1時間ほど伸びてしまい、CAの皆さんには申し訳ない気持ちです😇

結果

最優秀賞をいただきました。
技術力だけでなく、巻き込み力やコミュニケーションの姿勢なども賞賛いただき嬉しい限りでした。

総括

12月からアクセルを踏み続け、ずっとフルスロットルで駆け抜けてきた感覚があります。

CA Tech Accelが驚くほど活きていた。これに尽きます。

Accel期間を通して、通信処理の実装が私の弱点であると自覚していたため、RetrofitやKtorを用いた実装の訓練に重点を置きました。
この取り組みが功を奏して、初日に必須要件の実装を完了できたのだと思います。

長らく「3月末までに自分が満足のいく強さになれなかったら、エンジニア引退しよう」などと考えていました。
しかし期間中に、純粋に技術を楽しむ自分と作りたいものを1人で十分実装できることに気付き、エンジニアとしての就活を決意しました。

これは本当に大きい収穫でした。

教えてもらって学びに繋がるのはもちろん、人に教えることでここまで思考が整理されて自分の理解も深まるということも初めて知りました。

末筆になり恐縮ですが、身に余る恵まれた機会を提供してくださったサイバーエージェントの皆さん、そして実り多い1週間を一緒に走り抜けた同期のみんなに大きな感謝をお伝えします。

同窓会しようね、ハッカソン一緒に出ようねと言える仲になれて感無量です🥰

わくわくとブレイクスルーに満ちた最高の1週間をありがとうございました!!🙏🏻💖

同期のみんなやもりまゆさんがそれぞれ体験記など執筆してくれているので、以下に関連記事として添付します。
いいね💚やコメントを残していただけると一同嬉しいです👀✨

関連記事

ギャラリー

Dojo期間中の和やかな雰囲気が少しでも伝わったらいいな。

会場

アフターパーティー


ロイヤリティ感じるリュック

かわいい名札

深夜のホテルでアイスをわけわけ


ノベルティもりもり

王将へ向かう様子

最後の最後に「でんのこポーズ(身内ネタ)」でぱしゃり📸

Discussion