スポンサーリンク
このような, 質問がありました.
こんにちは。
私はアプリの開発を2年ほどやっているものです。
しかし, いつも似たようなコードの繰り返しばかりで少しも進歩していないように思っています。小さい会社なので, モバイルアプリ開発者は私だけで, だれも私のコードを見ることがないので, 私のコードの間違いを指摘されることはなく, 会社で開発されている他のコードを見ることもありません。
最新技術を利用しすばらしい実装を行っているオープンソースアプリのコードを勉強したいです。
そのようなアプリをどこで見つけたらよいか教えて下さい。
よろしくお願いいたします。
このような環境で日々を過ごし, 似たようなことを考えてる開発者は多いと思います。
以下のサイトはいかがでしょうか. よくある ToDo アプリでのサンプルとなっています.
ここでフォーカスされているのは, 構造, 設計, テスト, メンテナンスのしやすさですが, リファレンスとして, または, アプリ開発のスタート地点として利用できます.
MVP (基本的な Model-View-Presenter)
googlesamples/android-architecture at todo-mvp
このサンプルはすべての基本となります. 構造を持つフレームワークを使わないシンプルな Model-View-Presenter パターンの実装例です. ローカル/リモートのデータソースである Repository を手作業で Dependency Injection しています. 非同期処理はコールバックを利用しています.
MVP + Loader
googlesamples/android-architecture at todo-mvp-loaders
Repository から Loader を使ってデータを取得します.
– コールバックなしで Repository 内のデータを非同期で読み込むことができる.
– データソースを監視しており, Repository の内容が変化すると新しい結果として配送できる.
– 画面回転のあと自動的に直近の Loader を再接続できる.
MVP + Loader + ContentProvider
googlesamples/android-architecture at todo-mvp-contentproviders
Repository からのデータ取得に ContentProvider を使います.
– 構造化されたデータへのアクセス操作可能.
– 別プロセスで稼働しているコードからデータへ接続できる標準的なインターフェースとなる.
MVP + DataBinding
googlesamples/android-architecture at todo-databinding
DataBiding ライブラリを利用して, UI要素にデータとアクションをバインドしています. 厳格には Model-View-ViewModel や Model-View-Presenter パターンではありません. ViewModel と Presenter 両方使用しています.
DataBinding ライブラリは, データとUI要素を連携する重複するコードを削減してくれます.
– レイアウトファイルがUI要素へのバインドに利用されている.
– 同時にイベントもアクションハンドラーと結合されている.
– データの監視が可能で必要であるときには自動で更新するようにセットすることができる.
MVP + Clean Architecture
googlesamples/android-architecture at todo-mvp-clean
Clean Architecture に基づいており, Presentation と Repository レイヤーの間に Domain レイヤーが存在して, アプリを3つのレイヤーに分けています.
Domain レイヤーでは, すべてのビジネスロジックを収納しており, Presenter に使われる use-case か interactor と命名されたクラスから始まる. これらの use-case は Presentation レイヤーから作ることができるすべての実装可能なアクションを提供します.
その他
その他, 最近流行のフレームワークや考え方を考慮しての実装サンプルも続々と作成中のようです.
Architecture Blueprints の非同期処理実装にみる Android SDK の方向性
MVP + Dagger2
MVP + RxJava
MVP + Fragmentなし
非常に柔軟性のある使えるサンプルとなると思われます. ぜひご確認あれ.