🦔

Compose For Desktopに入門して引退しようと思う

2022/11/27に公開

今回やったこと

Desktop Android

DesktopとAndroidで画面まで同一のソースコードで、
APIからデータ取得して画面に出すまでを細かい事は置いておいて実装しました。
DIなど最低限のことは設定してあるので、将来発展させたいと思った時にも使える気がします。(知らんけど)

面倒だったこと

画像表示

公式に書き方が記載されていますが、いつもCoilを入れてシュッと終わらせているので面倒です。
CoilのISSUEを見ていたらDesktop対応関連の物があり、
こちらのライブラリがオススメされていたので、使ってみました。
お手軽で望んでいた物が得られました。

Paging

ビールの情報をいっぱい表示したいので、ページングをさせたい気持ちでした。
org.jetbrains.compose向けのページングライブラリは見つけられず、
公式も自分で実装していたので面倒だなとなりました。
昔は自分で実装していたのにandroidx.pagingを触ってからはもうダメですね。
堕落した人生を歩むしか出来ない体になりました。(もちろん必要なら作ります。)

ViewModel

今回はComposableも含めて基本的に全く同一のソースコードをAndroidとDesktopで動かすことを目標にしています。
と、なるとandroidx.lifecycle.ViewModelはAndroidではないDesktopがいるので使えません
公式のサンプルではCompositionLocalを使ってComposableにRepositoryを渡していました。
なので、画面回転などには耐えられず都度APIリクエストが走る仕様です。

現時点では引退しようと思ったのがこの部分で、
推奨アーキテクチャが定まっていない今触っても学び直しが多くなり、
他にやりたいことがあるから、そちらを優先しようとなりました。

どうせTCAっぽい何かが作られてめっちゃ便利!となる気がするので、
俺が考えた最強の何かを用意するより流れを静観しようかと思います。

夢もある

否定的(不便)な側面を色々書いてきましたが、
ここを解決するのもエンジニアの楽しみの一つだとも思っています。
ライブラリを作ったり、既存ライブラリをDesktop対応するのは楽しそうだとも思っています。
公式のテンプレートプロジェクトからさくっと始められるので、Desktopアプリ開発サポートは熱い気がします。

情報元

現時点の成果物

https://github.com/sobaya-0141/Beer

Discussion