1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Jetpack ComposeのUIが、正しく動いているのに「嘘をついている」気がした話

1
Posted at

はじめに

Jetpack ComposeでUIを組んでいて、ビルドは通る。
エラーも出ない。
操作すれば一応は動く。

それなのに、「これ、本当に今の状態を表示してるのか?」と、
画面を見ながら何度も首をかしげる瞬間がありました。

挙動は明らかにおかしいのに、ログは静かで、警告もない。
間違っているはずなのに、システム側は何も言ってくれない。
正直、この時点では「自分の理解が間違っているのか、UIが間違っているのか」が分からなくなっていました。
ただ、画面だけが平然と“それっぽい情報”を流している。
そんな気持ち悪さだけが残りました。

起きたこと

直前にやっていたのは、UIの状態管理を少し整理したことでした。
画面ごとに必要な情報が増えてきて、このままだと分かりにくいなと思い、
stateを分けたり、持たせる場所を増やしたりしただけです。

どれも「今後のため」を考えた、特別おかしなことではない変更でした。

変更した直後は、特に問題はありませんでした。
画面も崩れていないし、操作していても違和感はない。

ただ、少し触り続けているうちに、
「あれ、今この値ってどこから来てるんだっけ?」
と立ち止まる場面が増えていきました。

動いてはいる。
でも、画面の振る舞いを自分の言葉で説明できなくなっていく。
そのあたりから、UIに対する信用が少しずつ削られていった気がします。

違和感の正体が分からないまま、手を動かした

例えば、同じ操作をしているはずなのに、
画面の反応が微妙に違うことがありました。

一度目は期待通りに更新されるのに、
別の画面を挟んで戻ってくると、
なぜか古い状態が一瞬だけ見える。

再現条件ははっきりしないし、何度も起きるわけでもない。
それでも、「たまたま」では片付けられない違和感が残りました。

ここで冷静に原因を整理すればよかったのですが、
実際にはそうしませんでした。

「どこかでstateの持ち方がズレている気がする」と思い、
まずは目についた箇所を直し始めてしまいました。

stateをまとめ直したり、別の場所に移したり、
ついでに命名も揃えたり。

どれも間違ってはいないはずの修正なのに、
画面に対する確信だけが、逆に薄れていきました。

直している“つもり”だったもの

何かを直すたびに、違和感は一時的に薄れるのですが、
完全には消えませんでした。

別の箇所を触っているうちに、
また別の画面で引っかかる。

どこかを直したはずなのに、
全体としては何も前に進んでいないような感覚だけが残ります。

後から振り返ると、この時点で自分の中の前提が少しズレていました。
「挙動がおかしいのだから、どこかの実装が間違っているはずだ」と、
無意識に決めつけていた気がします。

でも実際には、何かが壊れていたというよりも、
「今この画面がどんなstateを前提に動いているのか」を、
自分自身が把握できていなかっただけでした。

正直に言うと、その違和感に対して、
どこで何に気づいたのかは今でもはっきりしていません。

分からないまま触り続けていた、という方が近いと思います。
ただ、UIに対する信用が戻らない、という事実だけが残っていました。

あとから言語化できたこと

あとから振り返ってみて、ようやく言葉にできたことがあります。

あのとき感じていた違和感は、
特定の実装が間違っていたからではありませんでした。

画面を構成するstateがあちこちに散らばっていて、
「この画面はいま、どの状態を事実として表示しているのか」を、
自分で追えなくなっていた。

値そのものが間違っていたわけではありません。
ただ、どのstateが“今の真実”なのかが曖昧なまま、
画面だけがもっともらしい顔で表示され続けていた。

正しく動いているのに信用できなかった理由は、
たぶんそこにあったのだと思います。

その後にやったこと

そのあとにやったことは、意外とシンプルでした。

新しい仕組みを入れたわけでも、
大きく書き換えたわけでもありません。

まず一つの画面について、
「この画面が参照しているstateは何か」を書き出し、
持ち場が重なっているものを減らしていきました。

stateの数を減らすというより、
一つの画面が信じる前提をはっきりさせる、
という感覚に近かったと思います。

おわりに

それ以降、UIの挙動が劇的に変わったわけではありません。

ただ、「この画面はいま、何を前提に描かれているのか」を
自分で説明できるようになってから、
あの違和感は出なくなりました。

正しく動いているのに信用できなかったUIは、
振り返ると、嘘をついていたわけではなかった。
ただ、前提を見失ったまま見ていただけだったのだと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?