はじめに
2025年は、iOS、Frontend、Androidの3つのプラットフォームで開発しました。本記事では、各プラットフォームでの開発を簡単に振り返り、プラットフォーム間の移動について、ゆるく考えたことをまとめました。
3つのプラットフォームでの開発
メイン領域はiOSですが、今年はFrontendやAndroidの開発にも参画させてもらいました。
と言っても、既存のプロジェクトやプロダクトの事情でスポット参戦する形です。スクラッチからの開発ではないので、整備された開発基盤やドキュメントなど、これまでに築かれてきた資産の恩恵を受けながらの開発です。
さて、3つのプラットフォームでの開発を時系列で大雑把に振り返ってみると、以下です。
- iOS - 1月〜6月
- Frontend - 6月〜10月
- Android - 10月〜12月
個人的なバイブスの推移
まずは定性的な振り返りとして、以下、個人的なバイブスの推移です。
%%{init: {'theme':'base', 'themeVariables': {'xyChart': {'plotColorPalette': '#0066cc'}}}}%%
xychart-beta
title "Vibes in 2025"
x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
y-axis "Vibes" 0 --> 10
line [10, 9, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8]
主な出来事:
- 1月: iOSアプリローンチ(正確には2024年の12月末のローンチ)
- 6月: Frontend開発へ参画
- 10月: Android開発へ参画
昨年末にiOSのプロダクトをリリースして、どんと上がって、そこから開発を重ねていく中で、少し疲労を感じた時期もあったりしましたが、Frontendに移って、新しい目標をもらって、忙しく過ごさせてもらっているうちに気持ちは上がっていました。Frontendでのプロジェクトがひと段落したタイミングで、Android開発に移りますが、久しぶり(5年ぶり?)にAndroidに触れられて、学びも多く、楽しめました。
そうこうしているうちに、気づいたら年末になっていたような気がします。(1年って早いですね)
各プラットフォームで開発したアプリの概要
簡単ですが、各プラットフォームで開発したアプリの概要です。
| プラットフォーム | 概要 | 言語 | UI | フレームワーク |
|---|---|---|---|---|
| iOS | 乗客向けのタクシー配車アプリ | Swift | SwiftUI | TCA |
| Frontend | タクシーの営業所向けの業務用アプリ | TypeScript | React | React(Next.js) |
| Android | タクシードライバー向けの配車リクエスト受信アプリ | Kotlin | Jetpack Compose | - |
技術スタックとしては、各プラットフォームとも比較的モダンで標準的な構成になっていると思います。
各プラットフォームでの開発期間とコミット数
定量的な振り返りとして、各プラットフォームでのコミット数も集計してみました。なお、コミット数は少なく見えるかもしれませんが、Squash and mergeでPull Requestをマージしているため、実際のコミット数とは異なります。
| プラットフォーム | コミット数 | 期間 | コミット数/月 |
|---|---|---|---|
| iOS | 124 | 約5ヶ月 (1/6 〜 6/9) | 約25 |
| Frontend | 134 | 約4.5ヶ月 (6/12 〜 10/27) | 約30 |
| Android | 49 | 約1.4ヶ月 (10/31 〜 12/11) | 約35 |
ちなみに、以下は月ごとのコミット数とバイブスを重ねたグラフです。
%%{init: {'theme':'base', 'themeVariables': {'xyChart': {'plotColorPalette': '#ff9900, #0066cc'}}}}%%
xychart-beta
title "Monthly Commits and Vibes in 2025"
x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
y-axis "Value" 0 --> 50
line "Commits" [5, 38, 48, 17, 6, 30, 22, 39, 24, 20, 36, 12]
line "Vibes" [50, 45, 40, 40, 40, 40, 40, 40, 40, 35, 40, 40]
コミット数とバイブスがリンクするかと思ったのですが、そうでもありませんでした笑
コミット数から分かること
プラットフォーム間のコミット数に大きな差はない
各プラットフォームでのコミット数を見ると、iOS(124)、Frontend(134)、Android(49)となっています。 開発期間の短いプラットフォームもありますが、月あたりのコミット数で見ると他のプラットフォームと大きな差はありません。
- iOS: 約25コミット/月
- Frontend: 約30コミット/月
- Android: 約35コミット/月
コミット数に大きな違いがなかったのは、プラットフォームを移動したときに大きなコストがかからなかったことを示していると思っていて、良かったことと捉えています。 そんなわけで、大きなコストがかからなかった理由についても考えてみました。
整備された開発基盤やドキュメント
いずれのプロジェクトも、スクリプトやライブラリ管理ツールによって開発環境構築の大部分が自動化されています。また、設計方針やコードスタイルが記載されたガイドラインが継続的に更新されています。
具体的には:
- 自動化された開発環境構築: Makefileやスクリプトによるワンコマンドでのセットアップ
- 継続的に更新されるドキュメント: 設計方針、コーディング規約、アーキテクチャガイドライン
- 流用可能なモジュール: UIコンポーネントのライブラリ、低レイヤーのネイティブAPIをモダンなコードスタイルで利用できるようにしてくれるライブラリ
これらは、開発を始める際の時間を大幅に削減してくれました。
Coding Agentの活用
また、Coding Agent(AI支援ツール)の活用も要因の一つです。
各プラットフォームには固有の文法、フレームワーク、ベストプラクティスがあります:
- Swift: Optional、Struct、Property Wrapper
- Kotlin: Nullable Types、Data Class、Sealed Class
- TypeScript: Union Types、Generics、Type Guards
しかし、Coding Agentを使うことで:
- プラットフォーム固有の文法を都度学習する必要が減る
- フレームワークのベストプラクティスをその場で参照できる
- 実装方法が分からない場合でも、意図を伝えれば適切なコードを生成してくれる
結果として、プラットフォームの専門知識や各言語の文法に精通していなくても、一定の品質でコーディングできるようになっているように思います。
チームからのサポート
さらに、各プラットフォームの開発チームからのサポートも大きな要因です:
- オンボーディング: 新しいプラットフォームに参画する際の丁寧なサポート
- 定期的な情報共有: プラットフォームごとの定例会議での技術的な議論や知見の共有
- レビューとフィードバック: Pull Requestでの建設的なレビューによる継続的な学習機会
チームメンバーの協力があったからこそ、生産的に開発できたと感じています。
おわりに
2025年は、iOS、Android、Frontendという3つのプラットフォームで開発する機会がありました。
どのプラットフォームにもそれぞれの良さがあり、開発していて楽しかったです。これまでもプラットフォームを移ることはあったのですが、特に、Coding Agentによりプラットフォームを移るハードルは確実に下がっているのを強く感じました。来年も引き続き、Coding Agentにサポートしてもらいながら、様々な開発を陽気にコーディングしていきたいと思います。