行き詰まったらノートとペンだけ持ってカフェに行く
個人開発は平日の仕事終わりや週末の趣味の時間でやっている。短い時間で何かを作ろうとするとアウトプットを焦りがちだが、実際はすぐ完成させようとせず骨太に考えていく方が結局早い。
例えば日記アプリReliefで、iPadで手書きで日記を書ける機能を追加した。この手書きのデータを、他のiPhoneやiPadで見るときにどう表示するかを考える必要があった。日記を書くときは縦横の画面目一杯にキャンバスが表示され、そこに文字や図形を自由に書き込める。でも他のiPadでは画面のサイズやアスペクト比が違うし、iPhoneならもっと違う。どう表示するのがスマートか?結論としては、表示デバイスの画面サイズに合わせて手書きデータを拡大・縮小することに落ち着いた。
拡大・縮小するときに必要なのは倍率の計算で、キャンバスが縦長なのか横長なのか、縦方向に余白があるのか横にあるのか、少し数学的に考える必要がある。開発当初はソースコードの実装を変更しながら、色々値を入れ替えて試行錯誤していた。しかし2時間くらいかけても上手くつくれない。画面の拡縮のパターンを網羅できていなかったり、比率の計算式が間違えてたりしてよくわからなくなる。こういう時、あと少しでできそう!となってから意外に時間がかかる。色々試しているうちに今何が問題なのかわからなくなり袋小路に迷い込む。もう少しでできそうなのに上手くいかなくてイライラする。そうすると余裕がなくなるのでさらに時間がかかる。
こんな時はパソコンを閉じ、ノートとペンだけ持ってカフェに行く。パソコンがない環境で、紙にいろんなパターンを書き出したり、iPadとiPhoneの画面サイズを書いてみて比率を算出する数式をつくったりする。パソコンがないのですぐには試せない。だから紙の上で手を動かしていろいろシミュレーションするしかない。
そうしていると、めちゃめちゃ種類があると思っていた計算が、実は3パターンくらいに集約できることに気づく。計算式もシンプル。いろんな例外的なパターンを試してみても、その式でうまく表現できそうに思う。こうなると早く試してみたくなり、飲み物を飲み干して帰宅する。パソコンに向かい、ノートを見ながらロジックを実装する。ちゃんと期待どおりに動く。脳汁が出る。2時間以上手を動かして解決できなかった問題が、カフェでの20分で解ける。しかも行き当たりばったりではなくロジックも完全に理解した状態で。こういうことは経験的にもよくあり、狭くなりすぎた視野をいったんリセットする重要性を感じる。カフェに行くまでに軽く体を動かすのも良い切り替えになっているのかもしれない。心に余裕が戻れば、本質的な思考を取り戻せる。
何か良いサービスや機能を思いついたとき、早く試したくなる。世に出して反応を見たい。便利な機能を早く使ってもらいたくなる。でも実装がうまくいかなくて焦っている時は、一度立ち止まり違う視点で考えた方が結局うまくいく。マーク・ザッカーバーグの格言に「完璧を求めるよりまず終わらせよ」というのがある。完璧にこだわって何も出せないのは本末転倒ではあるが、理解しにいった方が結局早いこともあるというのは忘れないようにしたい。