オープンソース
StreetComplete on iOS がパブリックベータ版になりました
StreetComplete on iOS is now in public beta (github.com)
要約
人気のオープンソースマッピングアプリ「StreetComplete」のiOS版が、現在パブリックベータとして公開されています。この移植は、Kotlin MultiplatformとCompose Multiplatformを使用して開発されており、単一のコードベースでAndroidとiOSの両方のプラットフォームをサポートすることを目指しています。開発は現在約50%完了しており、コミュニティからの貢献を歓迎しています。
全文翻訳
streetcomplete / StreetComplete Public
エラーが発生しました。ページを再読み込みしてください。
通知
通知設定を変更するにはサインインする必要があります。
フォーク 460 スター 5k
iOS - テスト中! :-D #5421
新規課題
コピーリンク
新規課題
コピーリンク
オープン 11 / 11
11件中11件の課題が完了
オープン
iOS - テスト中! :-D
#5421
11 / 11
11件中11件の課題が完了
コピーリンク
ラベル
iOS
iOSのみに関するもの
iOSのみに関するもの
説明
westnordost が 2023年12月20日に投稿
このチケットは、StreetCompleteのiOSポートの開発を調整するためのマスターチケットのようなものです。これは、多くの議論と調査/観察作業も含まれていた#1892に取って代わるものです。
要約: タスクのリストについては、プロジェクトボードをご覧ください。貢献を歓迎します!SotM Europe 2024の講演のプレゼンテーション(めくりやすいようにスピーカーノートを追加しました)もご覧ください。
アプローチ
このアプリのコードベースは、Swiftに非常に似たモダンなプログラミング言語である100% Kotlinで書かれています。Kotlinコードは、Swiftと同様にJavaScriptやマシンコードにトランスパイルできます。さらに、このアプリの多くの依存関係は、現在純粋なKotlinライブラリです。したがって、このアプリのiOSバージョンはKotlin Multiplatformで実現できます。UIコードはCompose Multiplatformを使用して共有できます。これは現在iOS向けにアルファベータ版です。これはJetpack Composeのフォーク/拡張であり、APIはほぼ同じです。Jetpack Composeは、開発者がUIを完全にコードで定義するリアクティブUIフレームワークです(SwiftUI、Flutterなどと同様の考え方)。ただし、UI全体を(段階的に)Composeで再作成する必要があります。これにより、プラットフォーム依存(Android / iOS)のコード量を最小限に抑えることができます。このアプローチは、このプロジェクトの今後のメンテナンスが増加しないという点で、他のアプローチよりも大きな利点があります。なぜなら、コードベースは引き続き1つだけだからです。Every Doorで使用されているような、マルチプラットフォーム用のフレームワークFlutterを使用する場合と比較して、Kotlinコードベースにはほとんど触れる必要がなくなります。Flutterを使用する場合、すべてDartで書き直す必要があります。
手順の概要
プラットフォーム固有のコードをアプリケーションロジックから分離します。
アプリケーションロジック用のAndroid/Java依存関係をKotlinマルチプラットフォーム依存関係に置き換えます。
UIコードをCompose Multiplatformに段階的に移行します。
データアクセスとUI状態コードを純粋なUIコードから分離します(ViewModelを使用: Use ViewModels #5070)。
現在Android XMLレイアウトを使用しているUIコードをAndroid Jetpack Composeに移行します。
これは、ボトムアップで段階的に行うことができます(移行戦略ガイドを参照)。
その後、Jetpack ComposeからCompose Multiplatformに移行します。これは、最初のステップと比較すると小さなステップです。
現在の状態
このセクションは継続的に更新されます。必要な手順は、Kanbanスタイルのプロジェクトボードで詳細に説明されています。(一部のタスクは、他のタスクが完了するまで100%依存しているため、まだ作成されていません。また、いくつかの調査も含まれています。)特に記載がない限り、これらは、これを読んでいる(そして貢献したいと願っている😊)人たちが自由に引き受けることができます。もし、記載されているタスクのいずれかを実装したい場合は、そのチケットにコメントしてください。
以前、iOSへの完全な移植には1人年の作業がかかると非常に大まかに見積もりました。したがって、この範囲は依然として非常に大きいです。多くのコミュニティからの貢献なしには、現実的に達成できません。幸いなことに、これは過去数年間起こっていることです。2024年前半には、私はこの作業にフルタイムで取り組むことができました。現在、移行は完了の約50%です。したがって、ギアをシフトしましょう!
どのように貢献できますか?
プロジェクトボードからタスクを引き受けることができます!または、後で有意義な貢献ができるように、言及されている技術/フレームワークに精通することができます。特に:
Jetpack Compose / Compose Multiplatform。これは私にとっても非常に新しいものなので、私もここで足場を固める必要があります。
開発をスポンサーすることができます!メインページのサイドバーにある「このプロジェクトをスポンサー」というタイトルを参照してください。より多くのお金があれば、アプリ全般の開発により多くの時間を費やすことができます。もし、より大規模な資金調達の対象となる情報源を知っていれば、私に連絡してください!
一般的なメンテナンスと課題のトリアージを手伝うことができます。これにより節約された時間は、開発を進めるために私が費やせる時間になります。
リアクションは現在利用できません
この会話に参加するには無料でサインアップしてください。
すでにアカウントをお持ちですか?サインインしてコメントする
メタデータ
メタデータ
担当者
なし
ラベル
iOS
iOSのみに関するもの
iOSのみに関するもの
タイプ
なし
プロジェクト
なし
マイルストーン
なし
関係
なし
開発
ブランチまたはプルリクエストなし
課題アクション
GitHub Copilotアプリで開く