禅ノート(zen-note)を作った話(思想編):なぜ「戻れない」設計にしたのか

作ってみた

実装編では、パス指定エディタから、禅モード、AI漢字変換へと転換していった技術的な経緯を書きました。思想編では、なぜそういう設計にしたのか、その考え方をまとめます。

個人用ツールとしての最小構成

zen-noteには、バックエンドがありません。ビルドの工程もありません。依存ライブラリも、できる限り増やさないようにしています。

これは「シンプルが正義」という一般論というより、壊れる場所を減らすという実利的な理由からです。自分一人が使うツールなので、壊れたら自分で直すしかありません。だったら、壊れる可能性のある部分自体を、最初から減らしておいたほうがいい。GitHub PagesとブラウザだけでAPIを直接叩く構成にしているのも、この考え方の延長です。

プライバシーへの一貫した配慮

v3でAI漢字変換を導入する際、最初に確認したのは「入力内容が学習に使われるかどうか」でした。API経由なら基本的に学習に使われないことを確認してから、初めて実装に進んでいます。

認証情報(GitHub PAT / Gemini APIキー)も、ブラウザのlocalStorageにのみ保存し、どこにも送信しない構成にしました。機能を追加するたびに、この姿勢は崩さないようにしています。

「脳の排水」としての設計

自分の場合、脳の中に何かがたまってくると、「疲れた」という感覚が強くなります。それを解消する方法のひとつが、手書きでひたすら書き出すことでした。頭の中にあるものを、止まらずに紙の上に出し続ける。それだけで、たまっていたものが減っていく感覚があります。

zen-noteは、この「手書きに近い感覚」を、デジタルでも再現できないかという発想から出発しています。完璧な文章を作る場所ではなく、思考をそのまま流し出すための道具、という位置づけです。

これは単なるコンセプトではなく、実際の挙動に落とし込まれています。カーソルは画面中央から動きません。確定した行は、見えなくなるか、薄れながら上に積み上がっていきます。つまり、「前に戻って推敲する」よりも「前に進み続ける」ことを、UIの側から促す設計になっているわけです。

書いたものを読み返せない、直せない、という不便さは、意図的に選んだ制約です。

変換を後段に寄せる

手書きなら、変換候補を選ぶために手を止めることはありません。書きたい言葉を、そのまま書き続けられます。デジタルでその感覚に近づけるなら、IMEのかな漢字変換自体が邪魔になる、という結論に行き着きました。

そこで、そもそも変換させない方向に倒しました。lang="en"を指定してローマ字を直打ちし、整形はAIにまとめて任せる形です。

これは「入力」と「整形」という、本来別の関心事を分離する試みでもあります。書いている最中は変換候補に気を取られず、ただ流し込むことに集中する。整った表記にするかどうかは、後段のAIに任せる。役割を分けることで、それぞれをシンプルに保っています。

バージョンを消さずに枝分かれさせる

v1、v2、v3は、上書きされずにすべて残っています。機能を追加するたびに前のバージョンを消すのではなく、新しいバージョンとして枝分かれさせる形にしました。

これによって、方針転換のコストが下がります。v2で禅モードに全面転換したときも、v1の実装自体はそのまま残っていたので、「戻れる場所がある」という安心感の中で大胆な転換ができました。

不具合は都度、原因を特定してから直す

実装編で書いたCSSの環境依存バグ、フォント計測のズレ、トークン上書きバグなど、どれも「効かないので別の方法にする」では済ませず、実機と挙動が食い違うたびに、具体的な原因を切り分けてから対処しています。

これは地味に時間のかかるやり方ですが、原因を特定しないまま次の手を打つと、同じ種類の不具合が形を変えて再発することが多いです。回り道に見えても、結局はこちらのほうが早いというのが、作りながら得た実感でした。

この原因の切り分けは、一人で黙々とやったわけではありません。AIと相談しながら、一緒に直してもらう、というスタンスで進めています。自分がすべてのコードを把握しているわけではないので、「実機ではこう動いた」「期待していたのはこうだった」というズレを言葉にして渡し、そこから一緒に原因を絞り込んでいく。一人で抱え込まず、対話しながら直していくやり方が、結果的に一番早く正確でした。

—

思想として並べると当たり前のことのようにも見えますが、実際には機能を一つ追加するたびに、この方針に立ち返って判断し直す場面がありました。バックエンドを持たない構成にするか、AIに固有名詞を含めるか、IMEと戦うか手放すか。そのたびに、「これは脳の排水のための道具である」という一点に立ち返ることで、判断がぶれずに済んだように思います。

この後、自転車に乗りながら使うための自転車モード編も作ることになります。

コメント

タイトルとURLをコピーしました