サイバーエージェントの育成型インターンに行ってきました
それまでの取り組みと、どのような知見を得たかを書いていこうと思います
今回参加したのはKotlinのCA tech Dojoでした。
これまで、Kotlinでの開発はUIレイヤーしか行ったことが無く、
UIレイヤーのみでアプリ開発をするのが普通だと思っていました。
しかし、今回のインターンを通して様々な知見を得ることができたので、
日記も兼ねて書いていきたいと思います。
アーキテクチャとの出会い
インターン参加前、僕はUIを自由に作れるようになったことで、
かなりアプリは作れるようになった気でいました。
ある程度作れるようになったら、これから何をすべきか定まらず、
「目標探し」 を目的に参加しました
そんな中、プロジェクトの先輩方からアーキテクチャという単語を聞き、
大規模なプロダクトを自分で設計することに魅力を感じ、勉強を始めました
そして、インターンが始まる前のメンターさんとの面談の際、
アーキテクチャを軸にインターンに取り組むことに決定しました。
アーキテクチャ楽しいかも
インターンが開始して4日目ほどで要件がすべて終わり、アーキテクチャを見直すことにしました。
今回はMVVMを採用していたのですが、
そこで、初めてScreen,ViewModel,Repository,Databaseに分ける構造を理解できました。
実装してみると、思ったよりも分かりやすく、
一回作ってしまうことが理解への近道だなーと感じました
依存関係を整えよう
インターン7日目、アーキテクチャが整いました。
次にすべきことを聞いたところ、
「依存関係逆転の原則」 と 「依存性の注入」
というヒントをもらいました。
そこから、苦しみながらしばらく試行錯誤を行い、
最終的にInterfaceやHiltを導入することができました。
Testを実装しよう
これもインターン7日目
Hiltが終わったあと、次にすべきことを聞き、Testの存在を知りました。
Testとは、問題と模範解答を用意し、実行することで、
プログラムが正しく想定通りに動いているかを試すことができるものです。
フォルダ構造で少し詰まりましたが、
UITest,RepositoryTest共に実行することができました。
Testを自動化しよう
これはインターン8日目最終日に行いました。
Testを作成し終わったあと、メンターさんから、
「GitHub Actions」 の存在を教えてもらいました。
これは、比較的すぐに導入でき、発表前の1時間もかからず、実装することができました。
まとめ
今回の1weekのインターンで、
アーキテクチャ・依存関係・CICDの自動化 を学べました。
独学ではなかなか身に付きにくい技術を中心に学んだため、
かなり有意義なインターンになったと感じています。
さいごに
メンターさんに聞いたインターンがない期間の勉強法を共有します。
・公式ドキュメントを読み漁る
・自分の知る技術をリストアップし、その派生形を調べる
・さまざまなプロダクトのアーキテクチャの選定理由を理解する