- バックエンドエンジニア(Go)
- 27卒ビジネス職
- ゲーム|バックエンドエンジニア
- Other occupations (20)
- Development
- Business
※2024年9月11日時点の記事です
自己紹介
はじめまして!ミラティブで 2024/07〜 2024/08 の2ヶ月間iOSエンジニアのインターンをしたサティア (@bpairlines)です!
現在、会津大学の学部4年生で、アプリ開発やバーチャル空間について研究しています。普段はSwiftやFlutterで開発をしているのですが、一番得意な言語はPythonという、ちょっと変わった路線を進んでいる学生です。
日本語でこの記事を書いていますが、普段は英語を使っています。何故なら、実は私、純インド人です!しかし、インド人でもインドには12年以上行っていません。不思議な人生を送ってきたエンジニアです。
この記事では私のインターン生としての過ごし方と学びを共有できればと思います!
きっかけ
これまでメガベンチャーでのインターンを中心に経験してきましたが、スタートアップならではのスピード感、作業の自由さ、任される領域の幅広さを経験したくてインターン先を探していたところ、ミラティブを見つけました。特に、Swift x Unityを使っている点に惹かれ、ライブ配信サービスのMirrativを実際に使ってみると、想像以上に楽しくてすぐに魅了されました。
最終的に「圧倒的成長」というインターンのモットーに惹かれ応募することを決めました。
担当したタスク
1. リアーキテクチャのタスク
最初に任されたタスクは、少し古めのコードをMirrativのアーキテクチャに合わせて書き直すというものでした。MirrativではReactorKit (https://github.com/ReactorKit/ReactorKit) をベースにしたアーキテクチャを使用しており、UIViewControllerに書かれているロジックやAPI処理をReactorという別のファイルに移し、より効率的で保守しやすい構造に再設計するというタスクでした。
苦労したポイント
- コードの量と影響範囲の広さ
コードの量が多く、変更がアプリ全体に影響を与えるため、慎重に修正を進める必要がありました。細かい仕様など多く漏れが発生しないように実装する点で少し苦労をしました。途中で、フォロワーの表示をしようとするときにクラッシュが発生するというバグの原因が見当つかなくて慌てましたが、チームの方に相談してUICollectionViewDiffableDataSourceを使って解決することができ、一安心しました。
- アーキテクチャの理解
既存のアーキテクチャを理解するのに時間がかかりましたが、その過程で効率的なコードの書き方を学ぶことができました。理解ができ、大丈夫と思ってプッシュしたコードでも、レビューでアーキテクチャと少しずれているという指摘を何回か受けたので、しっかりと読み込み、理解して実装することを心がけて頑張りました。
2. SwiftUIへの移行タスク
次に任されたのは、既存のViewControllerをSwiftUIで再実装するタスクでした。担当したのは、アプリで使用される汎用ポップアップのViewControllerです。このタスクは私が「やりたい!」と手を挙げて取り組んだもので、前のタスクで培った経験を活かしてスムーズに進めることができました。
苦労したポイント
- ポップアップの多様なパターンに対応
ポップアップにはさまざまなパターンがあり、それぞれのデザインやUIの細かい調整に予想以上に時間がかかりました。特に、paddingとクローズボタンの微調整に手間がかかりましたが、最終的には納得のいく仕上がりにすることができました。
- 検証の難しさ
ポップアップのパターンが多いからこそ、一つひとつのパターンを検証し、UIに崩れがないかとか表示がうまく行っているかなどの検証が必要となりました。画面回転時のオリエンテーションや様々な機種で検証するなど考えれば考えるほど検証内容が増えていきました。
上記のポップアップは幅広く使用されており、各パターンごとにファイルを見つけて検証するのは時間がかかるため、効率化を図ることが重要でした。そこで、1つのファイルに旧実装と新実装のポップアップを両方表示できるようにして、時間を短縮しました。
それらを各パターンに合わせて変更し、比較しながら動作検証を行いました。レビューの際には、各パターンごとに旧実装と新実装の比較が容易にできるよう、写真を整理してレビューワーに提供しました。iPadなど他の端末でも同様の方法で検証を進めました。
ミラティブインターンの推しポイント
自由度の高い開発環境
ミラティブでは、やりたいことを自分で見つけて着手することが推奨されています。私も、2個目のタスクは自分の興味に基づいて提案し、それに応じたプロジェクトに取り組むことができました!メンターやチームの方々もやりたい領域で着手できるタスクを見つけてくれたりとすごく私に合わせてくれていると感じました。
チームワークとレビューの文化
ミラティブでは、コードレビューが非常に重要視されています。チーム全体でレビューを行い、他のメンバーの意見を取り入れながら、より良いコードに仕上げていく文化が根付いています。この過程で、自分の実装に対する新しい視点や改善点を学ぶことができました。個人的にはメンターが4人いたのではないかと思うくらいチームの皆さんに細かくコードレビューをしてもらっていました。
リリースまでのフローを経験
リリースに向けたQAプロセスも迅速かつ的確な対応を学ぶことができました。コードレビューが終わった後、個人的に検証を行い、QA項目を作成しました。その後、QAでいくつかの指摘を受けましたが、それらを担当の方とコミュニケーションをとりながら解決しました。この一連の流れを通じて、提案から実装、そしてQA、最終的なリリースまでのプロセスを経験できたことは、今後のキャリアにおいて非常に貴重なスキルを身につける機会となりました。
最後に
ミラティブでのインターンは、私にとって非常に貴重な経験となりました。技術力を高めるだけでなく、自分から行動を起こしやりたいことに着手でき、有意義な2ヶ月間を過ごせました。チームの皆さんには日々支えていただき、さまざまな場面で助けていただいて本当に感謝しています。これはモットー通り圧倒的に成長できたのではないかなと思っています。これからも、この経験を活かして、派手髪インド人エンジニアとしてさらに成長していきたいと思います。
ミラティブでは、現在インターン / 新卒を募集しています!記事を読み少しでも興味を持った方はカジュアル面談からでもOKなので応募してみてください!