洗濯物干しで実感するクロックと最適化

我が家は共働きで、洗濯は朝余裕ある側がやっちゃうことになっている。
洗濯それ自体は洗濯機に放り込めばそのうち終わる。しかし終わった後当然干さなければならない。

これがめんどくさい。ほんとにめんどー(俺主観)
いやわかっているよ。世の中の人みんなやってるよ。
干すだけだよ。でもめんどくさい。

めんどくさいのをなんとかしたい。

うん、それってプログラマならいつも考えていることじゃないか。
俺もプログラマなので、このめんどくさい処理を色々最適化している。
最適化と言っても、この場合要するに段取りだ。

まずどの順序で洗濯槽から物干し場に運ぶためのかごに移すか。
かごの中はスタック状態だから、先に干すべきものほど後に入れると良い。
そうすれば干すときには取り出した順番で干していくだけなのだ。

小物やタオルを干すためのタコ足ハンガーなどの配置も決めてある。最初に配置しちゃう。そうすれば大物を干す位置も自ずと決まってくる。
つまり毎回考えなくてよく、干す順序も決めてあるから同じ動きで干せるようになる。降水確率による配置換えなんかも数通り検討済みだ。まいったか。

ところが。

奥さんが「洗濯途中だから残り干すのだけお願い」と言って出て行った時、
俺のロジックは完全に崩壊した。

まず、それまでに干してあるブツも、干すための道具の配置もまるで違う。
さらに残りのブツが入っているかごの状態も「ただ突っ込んであるだけ」で完全に想定外。当然クラッシュする。ぎゃー

いや、もちろん干したよ。干すだけだし。
でももうとにかくめんどくさかったし、異常に時間かかったし、疲れた。
実際には数分だけど、そういう問題ではないよ。

そんな突然のクラッシュ事例を何度か経験して、ふと思った。

奥さんは「かごにどの順序で入れるか」とか「ハンガー類をどう配置するか」なんてこと、まったく考えてない気がしたのだ。
でも間違いなく俺よりも速く干している。なぜだ?

まず考えたのは、これは純粋に練度の違いか?ということ。
つまりクロックの違いである。圧倒的なスピードさえあれば、ゴリ押しの手順でもあっという間に仕事は終わる。
なんとなくこれだけでもかなり正解だと思うけど、だとすると大きな問題がある。

めんどくさいのだ、とにかく。
そう考えている限りおそらく経験値は上がらない。やりたくないんだもん。
やる気にならないときっとクロックは上がらない。
でもやりたくない。いやだ。やるしかないんだけど。

だから別解を考えることにした。

クロックが上がらないのなら、アルゴリズムを見なおすしかない。
段取り、つまり実行前最適化も大切だが、実行時の最適化をもっとまじめに考えるべきではないか?
「まったく考えてないのに速い」なんて疑問に思ったが、そうではなくロジックが入り込むタイミングが違うということかもしれない。あるいは実行時だからこその柔軟性の高いロジックがあるのかもしれない。練度=クロックと決めて掛かるのも間違っているかも。

まずは計測してみよう。
洗濯槽からかごに移すときに、何も考えるそのまま突っ込むことにしよう。
しばらくの間効率が劇的に落ちるが、ただ頭のなかで考えるだけでなく
実際に試すのが現実的な最適化ロジックに繋がるのだ。

めんどくさいのは仕方ないのだ。

めんどくさいから考えるのだ。

もちろんプログラマが全員こんなくだらないこと考えているかどうかは保証しない。