最近書いてるコード、難しいことをしていて、先週からやってるけど、なかなかうまくいかなくて、疲れる。先週うまくいかなくて帰って、週末酒飲みまくったらいろんなことを忘れたけど、朝来たらいろいろ思い出した。うまくいかなくても、とりあえず書くことはできて、気は進まないけど、とりあえず書いてみると、よく考えるとここでこういうことをするのはおかしい、とか気づいて、ちょっと戻ってなんとかしたりする。先に見通しが立たないのに書き始めるのどうかという感じだけど、能力が低くて、計画も立てられないような感じなら、とりあえずやってみるしかない。ソフトウェア作ることに関して言えば、間違ったら戻せるし、戻った時には、こっちはおかしいっていうことが分かってるので、戻った時にはもうちょっとましになってる。ので、とりあえず迷ったら作ってみるほうがよい。そもそも必要な知識が足りないとかなら、地道に勉強するしかないけど、そうでないなら自分で解決するしかないと思う。同僚に相談するのもいいけど、同僚がその問題解決したことなければ、一緒にうろうろすることになるし、一緒にうろうろしても無駄なので、一人でうろうろできる間は先にうろうろして、しばらく徘徊したところ、こうだったけど、こういうときどうしますか、みたいな話をする方が有意義だと思う。ソフトウェア作っててよく思うことがあって、それは彫刻との関係性で、木とか削ると必然的に仏像ができるけど、仏像は削りすぎてしまうと元には戻せない。ソフトウェアはコンピュータ上に保持された文字列だから、いくらでも戻せる。戻せるだけでも便利だけど、ここまで戻すと動くということまで分かるので便利。彫刻が一回の木の削り方の探索を表すのに対して、ソフトウェアはありとあらゆる文字列の探索空間から、作者がこれが最適だと選んだものを表す、という違いがある。一方で、大体のものは一回限りで、こないだオリンピックとか見てて、トリプルフリップ失敗とか言ってて、こんなのソフトウェアならいくらでも戻せるのにって思って見てた。いくらでも戻せるという意味では、料理のレシピとか考えると、今回のカルボナーラはチーズが固まって釜玉うどんみたいになったから、次は牛乳を増やしてみようとか、次のイテレーションに活かすということが考えられる。失敗してからやり直すパターン。スケートや彫刻もそうだと思う。次削る時はとか、次の大会では、とか述べることができる。変なのが版画で、版画は一度に百五十枚とかまとめて刷っていいのを選ぶ。展覧会とかで版画を見る機会があったら、隅の方見ると85/150とか書いてあるのが見える。これはたくさんやってうまくいくのを選ぶというのでおもしろいけど、普通は150回もやりたくない。ソフトウェアなら、150万回やるうちにソフトウェアがダーウィンの進化論的に進化してうまくいうとか、そういう感じになると思う。こないだ読んだ本でソフトウェアに似てると思ったのがあって、スティーブン・キングの書くことについてとか読むと、初稿はとりあえず書いて、第二稿、第三とか、何度も校正して読み直して書き直す、ということが書いてあった。そこでプロットのまずさを直すとか書いてあって、せいぜい言い回しを直す程度だろうと思ってたので意外だった。大御所になると、推理小説の種明かししないまま小説が終わって、編集の人に突っ込まれる。例えば、この日記は読み返したり書き直したり一切しないけど、最初から読み直して、主張が弱かったら別の結論を見出すとか、書くことについてには、そういうことが書いてあって面白かった。ちょっとずつよくするといえば、ABテストというのが流行ってて、一度にAパターンとBパターンを同時に出して、人気のある方を選ぶ。栗拾い業者なら、今すぐ入会っていうボタンと、今すぐ栗を拾う(無料)っていうボタンを出して、どっちがクリックされるか見るとか。人がいっぱいいればこういうこともできる。やり直せないこともあって、しゃべってるときはやり直せなくて、言い直すというのはできるけど、それは、ソフトウェアをリリースする前に設計し直すとか、小説をを発表する前にプロットを練り直すとか、そういうレベルと比べると弱い。だから緊張することであって、スティーブ・ジョブズもプレゼンひたすら練習してたと聞く。プレゼン練習すると、大多数の人に届けることはできるけど、この人に確実に届けたい、みたいなのはできない。たまに、転職しませんかみたいなメールとか来るけど、僕は転職する気ないので、そういう案内は必ず失敗する。こちらから見るとしかたないけど、相手の努力とか関係ないのに、相手から見ると、何か不手際があったように見えるだろうから、気まずい。一対一のコミュニケーションは、だいたいうまくいかなくて、偶然うまくいっても、そのときうまくいっただけで、同じことを他の人にやってもうまくいかない。必ずうまくいったら詐欺みたいな感じだと思う。たまたまうまくいったからといって、偶然うまくいっただけで、それ以上のことはないので、浮かれている場合ではない。ABテストにしても、失敗した施策に当たる人は入会できずに帰って行くので、結果的に良くなるからと言って、よくなると思っていないものをテストするべきではないと思う。これをソフトウェア開発に置き換えると、ソフトウェアはテストを書けば挙動の正しさを示せるのだから、そういう分野ではテストを書こうということになる。別の見方をすると、全てのソフトウェアは全て違うので、ある時に通用したパターンが他のソフトウェアに通用するとは限らないので、隠されたドメインクラスの声に耳を傾けるべきだと言える。変に意識高まったので今乗ってる電車にたまたま捨てられたパイナップルジュースの写真を貼っておきます。