DEV Community

Cover image for 小さく、ローカルで、一つのことだけをするソフトウェアをつくる理由
Matt Senter
Matt Senter

Posted on Originally published at mattsenter.com

小さく、ローカルで、一つのことだけをするソフトウェアをつくる理由

AI のおかげで、大きなアプリケーションを生成することは呆れるほど安くなった。広がりのある製品を言葉で述べれば、数分でもっともらしいコードが何千行も返ってくる。

だから、私が実際に出し続けているものをはっきり言っておく価値がある。小さな道具だ。Comoji、Burly、Premail。一つのことをして、あなた自身の機械の上で動き、アカウントの作成をいっさい求めないアプリである。

これは私が詫びている制約ではない。これが戦略のすべてだ。

誘惑は、全部作ろうとすることにある

コードの生成がほぼ無料になると、引力は自然と「もっと」の方へ働く。もっと機能を、もっと設定を、もっと広い面積を。どれも初期費用がかからないように見えるからだ。

だがコードは安いほうの部分だ。生成のあとに来るすべてに、本当の費用が宿っている。支えること、説明すること、安全に保つこと、壊れたら直すこと、そして何を拒むべきかを決めること。モデルは一分で機能を書ける。その機能を次の三年間背負うことはできない。

だから AI 支援の世界でより有用な規律は、コードを速く書くことではない。何を作らないかを決めることだ。範囲を小さく保つことが、その決定を正直に保つための私のやり方である。

一つのアプリに、一つの仕事

私が実際に出してきたものを見れば、その型は見逃しようがない。

  • Comoji は、あなたがすでに打ち込んでいるテキスト欄に、Slack 風のコロン emoji ショートカットを足す。それだけをする。
  • Burly は、あなたがクリックしたリンクを受け取り、正しいブラウザのプロファイルで開く。それだけをする。
  • Premail は、受信箱に届く前にメールから雑音を濾し取る。それだけをする。

どれもプラットフォームになろうとしていない。それぞれが一つの具体的ないら立ちを解き、そして脇へどく。どれも一文で説明できるが、それは偶然ではない。一文で説明できない道具があるとき、たいていは私がまだそれが何なのかを決めていないのだ。

一つのことをする道具は、終わらせられる道具でもある。何でもする道具は、永遠に手入れし続け、ついぞ十分には仕上がらない道具である。

既定でローカル

これらのアプリが共有する二つ目のことは、あなたの端末で動き、あなたのデータをそこに留めることだ。Comoji は補完をローカルで行い、あなたの打鍵は Mac を出ない。Burly はリンクの振り分けを機械の上で行い、URL はどこへも送られない。Premail は他人のサーバーを経由させず、あなた自身のコンピュータでメールを仕分ける。

これは別に書いた StockCar の背後にあるのと同じ本能だ。アカウントなし、連携なし、あなたの保有銘柄はサーバーに保存されない。同じ問いを立て続けているから、私はいつも同じ場所に行き着く。

サーバーやログインを必要とする何かを足す前に、私は自分に答えさせる。

  • この機能は本当にデータの収集を必要としているのか。それとも、こちらが楽になるだけか。
  • これを保存するとして、その保護に責任を負うのは誰になるのか。
  • その保管庫が漏れたとき、最悪何が起きるのか。
  • これが自分の機械を出ていくと知ったら、利用者は驚くだろうか。

たいていの場合、正直な答えはこうだ。そのアカウントは利用者ではなく会社の利益のために存在している。既定でローカルにすることは、リスクのカテゴリを丸ごと取り除く。決して集めなかったデータは、決して失いようのないデータだからだ。

「小さい」は事業戦略であって、残念賞ではない

「小さく、ローカルで、単一目的」を、より大きなものを作れないときに甘んじる控えめな選択肢として読むのは簡単だ。私は逆に見ている。

小さな道具とは、一人の作り手が端から端まで所有できる道具である。つまり、こういうことだ。

  • 実際に出荷できる。永遠に半端な状態で暮らすのではなく
  • 丸ごと理解できる。だから不具合に隠れる場所がない
  • チームなしで保守できる。だから採算が正気を保つ
  • 信頼できる。裏切るための面積がさほどないから

かつてチームを要した部分を AI が加速するいま、一人で磨き上げたネイティブアプリを設計し、作り、出荷できる。だがその梃子は、アプリが一人で持ち続けられるだけ小さいままである限りにおいてしか効かない。範囲こそ、AI の梃子が複利で効くのか、それとも崩れるのかを決める変数だ。

この種の道具にとって「完成」とは何か

単一目的のアプリにとって、完成は動く的ではなく実在の状態である。完成とは、約束したその一つのことが確実に働き、速く感じられ、あなたの邪魔をしない、ということだ。

だからいちばん難しい仕事は「いいえ」と言うことになる。Comoji は四十項目の設定パネルを生やせるだろう。Burly はリンクを送るだけでなく、ブラウザの管理まで試みられるだろう。Premail は丸ごと新しいメールクライアントになれるだろう。そのどの追加も、アプリを大きくし、約束をぼやけさせる。

Mac アプリに署名と公証を施すこと、ピッカーを即座に応じさせること、動いていることを忘れるほど静かにメールを濾すこと。時間はそうした磨きに注がれるべきだ。抑制は野心の不在ではない。この種のソフトウェアにおいて、抑制こそが野心である。

信頼という配当

このやり方には、見落としやすい複利の利点がある。アプリが小さく、ローカルで、アカウント不要であるとき、人は信仰の飛躍なしにそれを採り入れられる。

放棄すべき登録手続きもなく、渡すべきデータもなく、自分の情報がのちにどうなるのかと案じる必要もない。ダウンロードすれば、それは仕事をし、そして家に電話をかけない。それは試すことの費用をほぼゼロにし、得られる信頼を、搾り取ったものではなく本物のものにする。

AI によって、ありきたりでデータに飢えたアプリを世界に溢れさせることが容易になった時代に、稀少なのは、人が自分の一日に迎え入れることを本当に心地よく思えるソフトウェアだ。小さくローカルであることは、その心地よさを初めから組み込もうとする私のやり方である。

私が何度も立ち返る規則

安い生成は、どれだけ速く作れるかを変える。何を作る価値があるかは変えない。むしろ、誰もがより多く産み出せるようになったとき、正しいものをより少なく産み出す規律のほうが差になる。

だから新しく始める何にでも、同じ検査を当てる。

  1. それが何をするのか、一文で言えるか。
  2. アカウントなしで、利用者の機械の上で動かせるか。
  3. 一人で完全に所有できるか。
  4. 「完成」がどんな姿かを、私は知っているか。

四つとも「はい」なら、その道具はたいてい出す価値がある。そうでないとき、私はたいてい、自分が背負いきれないほど大きなものを作ろうとしている。

小さく、ローカルで、仕上がっているもののほうが、大きく、ホストされ、終わりのないものに勝る。それが私の賭けであり、私はその賭けを続けている。

Top comments (0)