English · 日本語
学習や参考に利用するための個人的なKMPのサンプル集。
このリポジトリに含まれるサンプルの詳細は samples/README.md を参照してください。
- metro-sample: Metro DI を使用したマルチモジュール GitHub API サンプル。
- cmp-swift-sample: Compose Multiplatform コンポーネントを SwiftUI から利用するサンプル。
- compose-preview-lab-sample: Compose Preview Lab を使用したインタラクティブなプレビューのサンプル。
公式のWizard。KMPプロジェクトの雛形を作成できる。
https://kmp.jetbrains.com/
非公式のterrakok製Wizard。ライブラリ追加なども行える。
https://terrakok.github.io/kmp-web-wizard/
KMPで利用できるライブラリのカタログ。
https://klibs.io/
KMPで利用できる・よく使用されているライブラリがまとまっている
https://github.com/terrakok/kmp-awesome
https://github.com/JetBrains/compose-multiplatform/tree/master/examples
Android,iOSのネイティブUIだけでなく、ウィジェット、デスクトップなどを含んだマルチモジュール構成のサンプルプロジェクト
https://github.com/joreilly/PeopleInSpace
Amper(Gradleの代替として開発が進んでいる設定が簡単なビルドツール)を使った例 https://github.com/JetBrains/amper/tree/release/0.10/examples/compose-multiplatform
- 誰でも作成歓迎
- 過去のIssueを参考に別手法で実装したサンプルなども歓迎します。
- 「実装を試みたができなかった」という失敗例の共有も歓迎します。
- 既存サンプル・一般的なもの
- すでに公開されているサンプルや、ありきたりな内容については、できるだけ本READMEの「サンプルリンク集」への追加に留めてください。
- リポジトリへの追加基準
- 世の中にコード例が少ないサンプルを優先的にリポジトリへ追加します。
- 勉強目的を兼ねているため、既存のサンプルがどこかに存在していても追加して問題ありません。(多少違う実装とかでもok)
- ただし、後のメンテナンス状況等により削除される可能性があります。
- サンプル要望
- 欲しいサンプル等がある場合は、本リポジトリのIssueに追加してください。
- ラベルの付与
- 各サンプルのPRを後から見返せるよう、サンプルごとの実装(Renovateによる更新含む)には適切なラベルを付与することを原則とします。
- GitHub Actionsの
labelerを導入しているため、自動ラベル機能が使えます。新しいサンプルを追加した際は、そのサンプルのラベルと.github/labeler.ymlに設定を追加してください。
- CI(GitHub Actions)
samples/配下または.github/workflows/の変更で.github/workflows/ci.ymlが動きます。変更のあったサンプルだけ Gradle を実行し、ワークフロー定義を変えたときは全サンプルをビルドします。- 実処理は再利用ワークフロー
.github/workflows/gradle-kmp-ci-reusable.ymlにまとめています。Ubuntu 上で JDK と Android SDK をセットアップし、各プロジェクトのルートで./gradlew assembleDebugを実行します(iOS 向けのビルドやテストは実行しません)。 - 新しいサンプルを
samples/<名前>/に追加したら、.github/workflows/ci.ymlのパスフィルタと、そのサンプルを呼び出すジョブを追加してください(ci.yml先頭のコメントも参照)。
- 誰でもいつでもok
- 定期的なメンテも一応あります