
2026/10/01 19:59
iOS 版 StreetComplete がパブリックベータリリースです
RSS: https://news.ycombinator.com/rss
要約▶
日本語翻訳:
本プロジェクトは、StreetComplete の iOS ポートを開発するための主要な調整ツールとして機能し、チケット #1892 を引き継いでいます。戦略としては、Android と iOS 間で UI コードを共有するために Kotlin Multiplatform および Compose Multiplatform を活用しており、アプリの既存の完全に Kotlin ベースのコードベース(これを transpile 可能)を利用しています。これまでにあった失敗した試みや、すべてを Flutter(Dart)へ切り替えるアプローチとは異なり、この漸進的な移行では Jetpack Compose に XML レイアウトを置き換えることで統一されたコードベースを維持し、ViewModel を用いてプラットフォーム固有のロジックを分離しています。範囲は 1 人年の見積もりであり、開発者は 2024 年上半期にフルタイムで作業して約 50% の完了を達成しましたが、その後の進捗はコミュニティからの貢献に依存します。詳細な移行ステップ(データアクセス/UI ステートを純粋な UI コードから分離し、Android/Java の依存関係を除去するなど)については、Kanban スタイルのプロジェクトボード上で追跡されています。コントリビューターには、特定のタスクを认领する前にコメントで議論するよう、また新しいフレームワークについて理解を深めるよう、残りの作業を完了させ長期の保守コストを最小限に抑えるために開発を支援(スポンサー)していただくよう促されています。
本文
StreetComplete iOS 版移植プロジェクト
本チケットは、StreetComplete の iOS 版移植に関する開発調整のマスターチケットです。これにより、議論と調査が行われた #1892 が代替されます。
📌 まとめ(TL;DR)
- プロジェクトボード:詳細なタスクリストが掲載されています。ご参加歓迎!
- 発表資料:2024 年 SotM ヨーロッパでの発表スライド(注釈付き・ページめくり可)をご用意しています。
🚀 アプローチ
アプリのコードベースを 100% Kotlin に書き換える方針で進めます。
-
言語選択理由
- Kotlin は Swift と非常に似通った現代的な言語です。
- コードは JavaScript や機械語へコンパイル可能です。
- 多くの依存ライブラリも純粋な Kotlin ライブラリのため、Kotlin Multiplatform を用いて iOS 版を構築できます。
-
UI コードの移行方針
- Compose Multiplatform を活用し、Android と iOS で共通の UI 定義を実現します。
- Compose Multiplatform は現時点で アルファ/ベータ段階 ですが、Jetpack Compose のフォークであり API はほぼ同一です。
- Jetpack Compose(リアクティブ UI フレームワーク)を用いて UI を完全に見直し、段階的に実装します。
- これにより、プラットフォーム固有(Android/iOS)のコード量を最小限に抑えることができます。
-
保守性の利点
- 他の方法(例:Flutter など)と比較して、プロジェクトの保守負荷を大きく増やすことなく済みます。
- コードベースが統一されるため、Dart へ書き直す必要がなく、Kotlin ベースの開発者が継続しやすい環境となります。
🗺️ 主なステップ(概要)
ステップ 1:基盤の整備
- プラットフォーム固有のコードとアプリケーションロジックを分離します。
- Android/Java 依存ライブラリを、Kotlin Multiplatform ライブラリへ置き換えます。
ステップ 2:UI コードの段階的移行
- データアクセスと UI ステートの管理を分离し、ViewModel(例:
)を導入します。Use ViewModels #5070 - Android XML レイアウトからAndroid Jetpack Composeへ段階的に移行します(ボトムアップ方式)。
- 最後に、Jetpack Compose からCompose Multiplatformへ移行します(最初のステップに比べ小規模です)。
📊 現在の状況
※このセクションは継続的に更新されます。
-
進捗詳細:カンバン形式のプロジェクトボードに記載されています。
- 一部のタスクは作成待ちですが、これらは他タスクの完了や研究に依存しています。
- タスクの詳細は公開オファーとして提供されており、貢献をご希望の場合は対応チケットへのコメントをお願いします。
-
推定期間とスコープ
- iOS への完全移植には約 1 人年(マン・イヤー) の作業が必要と見込まれます。
- プロジェクトのスコープは依然として大きく、コミュニティからの多数のご協力が不可欠です。
-
現在の進捗
- 2024 年上半期にフルタイムで取り組みが可能でした。
- 現在、移行作業は約 50% 完了しており、新たな段階へ入りました!
🤝 ご協力方法
1. コード貢献
- プロジェクトボード上のタスクを引き継いでください。
- 関連技術(特に Jetpack Compose / Compose Multiplatform)の学習も歓迎します。開発者自身も新分野での学習を進めています。
2. 資金支援
- メインページのサイドバーにある「このプロジェクトを支援する」から寄付可能です。
- 資金があれば、アプリ全体の開発に割く時間を増やすことができます。
- 大規模な資金調達への適切な経路をご存知の方はご連絡ください。
3. 一般貢献(保守・_triage)
- Issue の振り分け(triage)や一般的な保守にご協力ください。
- これにより節約された時間は、より開発推進に充てることができます。