Showing 2 Result(s)

gradleのビルドスクリプトで外部ライブラリを使う

概要 gradleのビルドスクリプトのプログラムで外部ライブラリを使う方法です。ライブラリをプロジェクト自体で使う場合の dependencies に設定するのとは違います。 背景・用途 gradleでビルドするとき、最終的なwarファイルやapkファイルを作る直前にソースコードの一部を編集した上でビルドしたい場合や、ビルド後にとあるサーバーと通信して成果物をアップしたい時に、ビルドスクリプトをgradleファイル内に書くと思いますが、デフォルトで用意されているgroovy、またはjavaのライブラリでは書くのが面倒臭く、外部ライブラリを使いたかった。 方法 ポイントは、buildscript の dependencies に classpath で設定する(設定値はhttps://mvnrepository.com/ からコピーできる値でよい)のと、importを自前で書くということです。これでimportしたクラスを使えます。 ↑本当に普通な内容でした。。。 ハマったのは、classpath で設定しただけじゃ、自動ではコード補完候補に出てこないということでした。java.ioとかであれば、自動で候補に出てくるし選んだら自動でimportも補完してくれるので、そのノリで書いたらダメでした。

CleanArchitecture要素のMVVMサンプル作った

サンプル 出来上がったサンプル(GitHub) アーキテクチャ図 動機 現場のプロダクトで、内部品質を高めるために定期的なリファクタリング習慣を取り入れて行きたく、リファクタリング計画を作るにあたり、目標とするアーキテクチャをはっきりさせたかった。 アーキテクチャサンプルの概要 CleanArchitecture の考え方を一部取り入れた MVVM です。構成は以下のようなレイヤーのマルチモジュール構成になっています。マルチモジュールにしている理由は依存性をシステム的に制御して人為的なミスによる間違った依存関係を生むのを減らすためです。 モジュール構成と主要ライブラリ app UI、バックグラウンド系のAndroidコンポーネントを持つモジュール 画面遷移: [Navigation Component](https://developer.android.com/guide/navigation?hl=ja) 画像取得: Coil domain ビジネスロジックを持つモジュール ViewModel、LifeCycleのための androidx.lifecycle系 repository データアクセスを持つモジュール Coroutine DB: Room HTTP通信: Retrofit2 JsonParser: Kotshi di DI機能を持つモジュール DI: Koin testlib テスト系の共通クラスを持つモジュール JUnit5: JUnit5 Mock: mockk 以下に、どのようにして上図のようになったかを解説します。(ライブラリはKotlinの言語仕様に合わせて簡単に書けるものやパフォーマンスが良いものを選んでいるつもりです。) アーキテクチャの方針 目指すところとしては、変更しやすいアーキテクチャを目指したいので、変更に特化した考え方の Clean Architecture を参考に考えます。 CleanArchitectureの基本的な考え方の1つである「関心事の分離」により、コンポーネント間、レイヤー間を切り離しを容易にすることで、柔軟性を上げます。関心事の分離の観点は以下の5つで フレームワーク非依存:システムをフレームワークに縛るのではなく、フレームワークをツールとして使う。 テスト可能:ビジネスロジックはUI、DB、外部IFなどがなくてもテストできる。 UI非依存:UIはシステムの他の部分を変更せずとも簡単に変更できる。(例えばビジネスロジック) データベース非依存:例えばOracleをMySQLに簡単に置き換えることができる。 外部エージェント非依存:ビジネスロジックは外部IFの世界を知らなくて良い。 これらを実現するために ソースコードの依存性は上位レベルの方針にだけ向かっていなければならない …