【Retorofit】コピペで使える NetworkModule【Dagger Hilt】

もうこれはテンプレ化しておきます。

Retrofit の話が中心となります。

👉 Retrofit 

 

Converter

Retrofit-Converters

JSON 形式のレスポンスをパースして変換するのは、Gson か Moshi が人気のように思います。


var retrofit = Retrofit.Builder()
  .baseUrl("https://api.example.com")
  .addConverterFactory(GsonConverterFactory.create())
  .build()


var retrofit = Retrofit.Builder()
  .baseUrl("https://api.example.com")
  .addConverterFactory(MoshiConverterFactory.create())
  .build()

👉 retrofit/retrofit-converters at master · square/retrofit 

今回は、Kotlin Serialization を利用した「Kotlin Serialization Converter」を使います。

ExperimentalSerializationApi なのですがね。


val contentType = "application/json".toMediaType()
val retrofit = Retrofit.Builder()
    .baseUrl("https://example.com/")
    .addConverterFactory(Json.asConverterFactory(contentType))
    .build()

👉 JakeWharton/retrofit2-kotlinx-serialization-converter: A Retrofit 2 Converter.Factory for Kotlin serialization. 

 

Call Adapter

Retrofit CallAdapters

通信の非同期処理はどれに任せるか。


var retrofit = Retrofit.Builder()
  .baseUrl("https://api.example.com")
  .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
  .build()

👉 retrofit/retrofit-adapters at master · square/retrofit 

Coroutine を使った Jake製の「Kotlin Coroutine Adapter」は 今では DEPRECATED。

👉 JakeWharton/retrofit2-kotlin-coroutines-adapter: A Retrofit 2 adapter for Kotlin coroutine's Deferred type. 

Retrofit は 2.6.0+ で、内部に suspend function をサポートしてるので、特に、.addCallAdapterFactory() を使わなくてもよい。


@GET("users/{id}")
suspend fun user(@Path("id") id: Long): User

👉 retrofit/CHANGELOG.md at master · square/retrofit 

 

HttpLoggingInterceptor

OkHttpClient に HTTP関連のログを吐かせます。


--> POST /greeting http/1.1
Host: example.com
Content-Type: plain/text
Content-Length: 3

Hi?
--> END POST

<-- 200 OK (22ms)
Content-Type: plain/text
Content-Length: 6

Hello!
<-- END HTTP

👉 HttpLoggingInterceptor.Level (OkHttp Logging Interceptor 3.14.0 API) 


val logging = HttpLoggingInterceptor()
logging.setLevel(Level.BASIC)
val client = OkHttpClient.Builder()
  .addInterceptor(logging)
  .build()

👉 okhttp/okhttp-logging-interceptor at master · square/okhttp 

 

まとめ

Dagger の Module にしておきます。

テンプレート化してください、と言わんばかりに

よく似たものをあちこちで見かけますよね。

見通しも良くなります。

コピペでどうぞ。

(おわり)



@SuppressWarnings て使っていますか。

@SuppressWarnings

GitHub で調べてみると以下が多く見られます。


@SuppressWarnings("unused")


@SuppressWarnings("deprecation")


@SuppressWarnings("unchecked")


@SuppressWarnings({"unchecked", "deprecation"})

引数の文字列には他にもいろいろかいてますけども。コンパイラにもよるのだろうけど。

認識されない警告名があってもエラーにはなりません。コンパイラは、認識しないすべての警告名を無視しなければいけません。

👉 SuppressWarnings (Java Platform SE 8 ) 

以下、数個ぐらいは頭に入れておきます。

unused :
使用されていない変数やメソッドが存在した場合の警告を無視する。

deprecation :
使用すべきでないクラスやメソッドを使用したときの「unchecked」警告を無視する。

unchecked :
安全でない型のカーストなどの場合の「unchecked」警告を無視する。

serial :
直列化可能なクラスにserialVersionUIDが未定義の時の警告を無視する。

👉 eclipse - What is the list of valid @SuppressWarnings warning names in Java? - Stack Overflow 

しかし、まあ、あんまり使わないほうがいいですよね。

suppress
他動 〔好ましくないものを力ずくで〕鎮圧する、抑圧する

👉 suppressの意味・使い方・読み方|英辞郎 on the WEB 

👉 java - @SuppressWarnings vs @SuppressLint - Stack Overflow 

👉 Opt-in requirement marker annotation on override requires the same marker on base declaration 


iPhoneアプリ ランキング まとめ【2022】

どこで人気アプリ探したらいいのか分からないのでメモ。

ランキングのみ。

app.sensortower.com
👉 Top Grossing Apps | JAPAN | Top App Store Rankings for iOS 

 

Japanで最も人気のあるiPhoneアプリランキング | シミラーウェブ
👉 Japanで最も人気のあるiPhoneアプリランキング | シミラーウェブ 

 

App Store Top Charts Ranking for iPhone Apps | AppFollow
👉 All categories — App Store Top Charts Ranking for iPhone Apps in JP | AppFollow 

 

Top Apps for iPhone on the iOS App Store in Japan · Appfigures
👉 Top Apps for iPhone on the iOS App Store in Japan · Appfigures 

 

Today’s Top App {chart} | data.ai
👉 Today’s Top App {chart} | data.ai 

 

iPhoneアプリランキング
👉 iPhoneアプリランキング 

 

人気の無料iPhoneアプリランキング - Top App Ranking 400
👉 人気の無料iPhoneアプリランキング - Top App Ranking 400 

 

無料アプリランキング - iPhoneアプリの世界ランキング | APPLION
👉 無料アプリランキング - iPhoneアプリの世界ランキング | APPLION 

 

APP STORE AWARDS 2021 トップApp ランキング:App Store ストーリー
👉 APP STORE AWARDS 2021 トップApp ランキング:App Store ストーリー 

 

APP STORE AWARDS 2021 トップゲーム ランキング:App Store ストーリー
👉APP STORE AWARDS 2021 トップゲーム ランキング:App Store ストーリー 

 

APP STORE AWARDS 2021 トップApple Arcadeランキング:App Store ストーリー
👉 APP STORE AWARDS 2021 トップApple Arcadeランキング:App Store ストーリー 

 

BEST OF 2020 トップApp ランキング:App Store ストーリー
👉 BEST OF 2020 トップApp ランキング:App Store ストーリー 

 

BEST OF 2020 トップApple Arcadeランキング:App Store ストーリー
👉 BEST OF 2020 トップApple Arcadeランキング:App Store ストーリー 

 

BEST OF 2020 トップゲーム ランキング:App Store ストーリー
👉 BEST OF 2020 トップゲーム ランキング:App Store ストーリー 

情報を一画面に圧縮したような国産のサイトが人気のようですね。

👉 iOS App Store の最も使えるアプリURLはどれ?