オープンソースプロジェクト
miaowmiaow/fragmject avatar
miaowmiaow/fragmject

fragmjectでKotlinとComposeのアプリ構造を読む

fragmject は、Kotlin と Jetpack Compose 用に用意された学習プロジェクトです。 | fragmject Kotlin Compose アプリ fragmject Android 開発者 。

スター 1,466フォーク 253KotlinApache-2.0
GitHub

ひと目でわかる

これは何?
KotlinとJetpack Composeを学ぶ初学者向けに、MVVMとMVI、多モジュール、Navigation 3、Room、Retrofitを組み合わせたAndroidプロジェクトです。
誰に向いている?
fragmjectはKotlinとComposeをまとまったAndroidアプリで学びたい初学者に向きます。採用前にAndroid Studioを更新し、`gradle/libs.versions.toml`の版、`core`・`feature`・`app`の依存方向、実機またはエミュレーターでNavigation 3とWindowSizeClassの表示を確認してください。
商用利用できる?
できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 9 日前です。
何の言語で書かれている?
主に Kotlin です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

複雑な業務を避けた教材の狙い

fragmjectはKotlinを学び始めた人向けの実践プロジェクトです。READMEは、書籍や動画が知識点に偏り、一般的なオープンソースアプリは業務と抽象化が複雑で読み始めにくいという背景を説明しています。そこで、主流のAndroid開発の書き方を使いながら、コードを追いやすい規模にする方針を取っています。

データ源として玩Androidの公開APIとAndroid Developer公式資料への謝辞があります。学習対象と外部APIの安定性は別問題です。画面の読み方、状態の流れ、データ取得の失敗を順番に追い、教材の構造とサービス依存を切り分けて読むのが適しています。

Android Studioの版と`gradle/libs.versions.toml`を先に保存し、KotlinとComposeの解決版を同じビルドで確認します。

miaowmiaow-fragmject-deep-analysisの第1章を確認するときは、実行前の版と設定を保存し、成功した結果だけでなく失敗した入力も残します。READMEの説明、端末の出力、生成物の差分を別々に記録することで、機能の存在と自分の環境での再現性を区別できます。

Kotlin 2.4系とComposeの層

技術スタックはKotlin 2.4.xとCompose、MVVMとMVIの混合、多モジュールの`core`・`feature`・`app`です。UIはMaterial 3とWindowSizeClassを使い、大画面や折りたたみ端末への適応を扱います。DIはHilt、データベースはRoom 3、通信はRetrofitとOkHttpです。

混合アーキテクチャは学習材料が多い一方、どの画面がViewModelの状態を読み、どこでイベントを処理するかを確認しないと用語だけが残ります。まず一つのfeatureを選び、Composable、状態保持、Repository、APIモデル、Roomの境界をファイル単位で追うと、モジュール構成の意味が見えます。

`core`から`feature`、`app`へ向かう依存を一つ選んで読み、逆向きの参照がないかをファイル単位で調べます。

miaowmiaow-fragmject-deep-analysisの第2章を確認するときは、実行前の版と設定を保存し、成功した結果だけでなく失敗した入力も残します。READMEの説明、端末の出力、生成物の差分を別々に記録することで、機能の存在と自分の環境での再現性を区別できます。

Navigation 3と大画面表示を同時に見る

READMEはNavigation 3の型安全なナビゲーション、`NavBackStack`、`NavDisplay`、List-Detail同時表示を挙げています。WindowSizeClassによる大画面と折りたたみ画面への適応も、単なる画面幅の変更ではなく、同じ情報をどの配置で見せるかを学ぶ題材です。

検証では小さい端末と大きい画面を用意し、一覧から詳細へ進んだときのback stack、回転後の状態、同時表示への切替を観察します。READMEに端末別の対応表や性能測定はないため、動いた一つの端末を全端末の保証と解釈しないことが必要です。

一覧と詳細を小画面・大画面で開き、`NavBackStack`の状態と回転後の表示を画面記録に残します。

miaowmiaow-fragmject-deep-analysisの第3章を確認するときは、実行前の版と設定を保存し、成功した結果だけでなく失敗した入力も残します。READMEの説明、端末の出力、生成物の差分を別々に記録することで、機能の存在と自分の環境での再現性を区別できます。

RoomとRetrofitの学習境界

Room 3、Retrofit、OkHttpを組み合わせるため、ローカルデータとネットワークデータの役割を比較できます。玩Androidの公開APIを使う設計では、レスポンスが失敗した場合の表示や再試行が学習上の観察点になります。データベースのキャッシュ方針やサーバー側の可用性はREADMEの範囲を超えます。

Hiltによる依存性注入は、画面から直接通信クライアントを作らず、テスト差し替えの境界を読む材料になります。ネットワークを切った状態、空レスポンス、Roomに保存済みの状態を順に試し、画面の状態遷移とログを記録すると、MVVMとMVIの使い分けを具体的に把握できます。

通信を切った状態でRetrofitの失敗を、保存済みデータがある状態でRoomの表示を観察し、UI状態の差を記録します。

miaowmiaow-fragmject-deep-analysisの第4章を確認するときは、実行前の版と設定を保存し、成功した結果だけでなく失敗した入力も残します。READMEの説明、端末の出力、生成物の差分を別々に記録することで、機能の存在と自分の環境での再現性を区別できます。

Gradleと拡張機能を読む順番

構築はGradle Kotlin DSL、Version Catalog、Convention Pluginsを使います。READMEは画像選択、画像編集、カレンダー、ホイール、全面画面、画面録画、ASMによるバイトコード挿入なども学習項目として挙げています。機能が多いため、最初から全モジュールを理解しようとせず、`gradle/libs.versions.toml`から版とプラグインを確認します。

Android Studioを更新し、必要ならAGPとComposeを合わせるようREADMEは案内しています。ビルド成功だけでなく、依存版、生成物、対象端末を記録してください。ライセンスや外部APIの利用条件、実運用の保守体制は別途確認し、教材としての価値と製品採用の判断を分けます。

Hiltの注入元を差し替えるテストを一つ作り、Convention PluginsとVersion Catalogがビルドへ与える影響を分けて確認します。

miaowmiaow-fragmject-deep-analysisの第5章を確認するときは、実行前の版と設定を保存し、成功した結果だけでなく失敗した入力も残します。READMEの説明、端末の出力、生成物の差分を別々に記録することで、機能の存在と自分の環境での再現性を区別できます。

編集部の結論

fragmjectはKotlinとComposeをまとまったAndroidアプリで学びたい初学者に向きます。採用前にAndroid Studioを更新し、`gradle/libs.versions.toml`の版、`core`・`feature`・`app`の依存方向、実機またはエミュレーターでNavigation 3とWindowSizeClassの表示を確認してください。学習用の読みやすさを優先したプロジェクトであり、商用アプリの品質やAPIの継続性はREADMEから判断できません。

公式情報源

  1. Official README
  2. Project repository
  3. Release notes
コミュニティノート

コミュニティノート