見出し画像

JetpackComposeの標準UIはゴミ

必要に迫られ、数年ぶりにAndroidアプリを開発している。
現在のAndroidアプリ開発はUIをコードベースで宣言的に実装できる「JetpackCompose」というフレームワークが主流だ。Android Viewはメンテナンスモードとされ、もはや非推奨に近い立ち位置だ。
xmlをゴリゴリ書いていた頃と比べ、コードベースでUIを実装する方が楽だ。また、JetpackComposeで推奨される単方向データフロー(UDF)で状態を管理するという考え方も、データバインディングなどで双方向にやり取りするより、不具合を埋め込みづらく、コードの品質にも寄与している。

しかし、標準UIの完成度だけはAndroid View時代より逆行している気がするのだ。例えばComposeの「TextField」はコンテンツ領域にデフォルトでPaddingが設定されている。デフォルト値として設定されているだけなら問題ないが、実際はそのPaddingを司る変数がPrivateやinternalで宣言されている。これでは外部からPaddingの値を変更できない。
ではどうするか。答えは簡単で、カスタムTextFieildを実装するか、フレームワークのソースコードをコピペしてきて、該当変数を操作可能にしたTextFiledのフォークを用意することになる。

正直、最初からPaddingくらいComposable関数のパラメータとして、外部へ開放してほしい。ComposableはViewと違い、サブクラスを用意して拡張することも出来ないのでフォークしたりが多いのだが、Padding如きで一々フレームワークのソースコードを引っ張り出してコピペするのは流石に生産性が低すぎる。この点だけはAndroid Viewより劣っている。

厳密に言うとJetpackComposeというフレームワークは素晴らしいが、そのフレームワークが用意する標準UIの実装がイケてない。

いいなと思ったら応援しよう!