MIXIでインターンした話 in 2023
前年に続いて、今年の夏もMIXI社にてインターンさせていただきました。今回は競輪やオートレースへのインターネット投票を行うことのできるサービスであるTIPSTARのiOSアプリを開発するチームに関わらさせていただきました。
取り組んだこと
インターンシップ期間中には色々なタスクに取り組みました。以下にいくつかをまとめました。
デッドコードの削除、コンポーネントの移動
TIPSTAR iOSアプリではデッドコードが多く残っていることが課題として認識されており、効率的にそれを削除することをタスクとして取り組みました。
デッドコードを検出するのにはPeripheryというツールを利用しました。このツールはビルドによって生成されるインデックスストアとASTを利用して、使用されていないコードを検出します。残念ながらコードの自動修正は行なってくれないので、そこは基本的に手動で消していく必要があります。シェルスクリプトなどで自動化にも挑戦しましたがあまりうまくいきませんでした。
また現状未使用だが将来的に使われる可能性のあるUIコンポーネントについては、UIコンポーネントを管理する専用のライブラリに移動する対応をとりました。
最終的に、1385個あった警告を146個にまで減らすことができました。
この作業は地道で作業する側もレビューする側も負荷が高く、この手の作業を継続的に行うことの重要性を感じました。
CIワークフローの改善
TIPSTAR iOSアプリのCIにはBitriseが利用されており、そのCIワークフローの改善、およびスピードアップに取り組みました。
BitriseのマシンにはiOS開発でよく利用される多くのツールが最初からインストールされており、同じツールをインストールしおなしている部分が多くありそれを修正するところから始めました。
次に、HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=TRUE
を設定しました。これはすでにインストールされているHomebrewフォーミュラのアップデートの確認を行わなくするフラグでこれを設定することでBitrise上でHomebrewでインストールされているツールのアップデートが走らなくなり、大きな時間の節約になりました。
そして、LicensePlistをHomebrewのtap経由でインストールしないようにしました。LicensePlistはすでにHomebrew-core上で管理されており、そちらだとビルド済みバイナリをインストールできるため、若干の時間の節約になりました。
またその他の二重にインストールしていたツールを整理しました。
最後にいくつかのインストールをシェルスクリプト上で並列実行するようにし、時間の節約を図りました。
この変更を行う際にプリインストールツールを使うこと(アップデートを走らせないこと)の良し悪しを検討しましたが、以下の理由から問題ないと判断しました。
- 最新版の変化に追従できない可能性
- 比較的良い意味で枯れてきてるツールのため、そもそも最新版である必要性は低め
- 依存関係が解決できない可能性
- Bitriseが提供してるスタックのマシンはすでに依存が解決されているはずなので問題になる可能性は低い
- ワークフローのポータビリティが下がる
- そもそもBitriseのyml形式で書いた時点でポータビリティは失われているのであまり関係ない
全体的にばらつきもありましたが体感として5分前後の時間の短縮を達成できました。
その他
その他いくつかの小さめなタスクに取り組みました。
- SwiftLintルールの見直し
- SwiftLintワーニングの修正
- Firebase Performanceの追加
- UI改善チケット
- バグチケット
インターン期間中楽しかったこと
CTOオフィスアワー&1on1
MIXIにはCTOの吉野さんと社員の方々が自由にお話しできるCTOオフィスアワーというものがあるのですが、そこに他のインターン生と一緒に参加させていただきました。インターン生それぞれが興味のある技術の話題やMIXIについての質問をすることができとても楽しい時間になりました。
また1on1で吉野さんとお話しする機会も設けていただき、個人的にキャリアについてのお話しやMIXIについて伺うことができ、それもとても有意義な経験となりました。その中で、いかに自分のニッチを見つけて、その分野においてNo.1になることを目指すところから始めるべきというお話はとても印象に残っています。
社員さんとの交流
インターン期間中に、何度もランチなどで様々な部署の社員の方々と交流する機会を設けていただき、いろいろな事業のお話しを聞くことができてよかったです。