- 個人向けコードエディタ Boo を開発した筆者が、プロジェクトを一時中断し、新しいプログラミング言語 を作る理由を説明
- Boo は 人間中心のキーボードナビゲーション と LSP 代替システム を備えた Rust ベースのエディタで、商用化よりも個人利用が目的
- 反復的な開発プロセスは創造性を低下させると考え、インスピレーションを与えるソフトウェア を作る喜びを重視
- レゴブロックの組み立て と ゼルダの伝説 ブレス オブ ザ ワイルド を例に、記憶に残る創作物の重要性を強調
- 成功の公式に従うよりも、自分の興味と学びを中心にした開発哲学 を保ち、Boo を将来的に自作言語で書き直す計画
Boo プロジェクトと開発動機
- Boo は筆者が 自分のためのコードエディタ として作ったプロジェクトで、大衆的な成功よりも個人的な有用性に重点を置いている
- Boo は 人間中心のキーボードナビゲーション 機能を備え、LSP(Language Server Protocol) の代わりに、より高速で OS への負荷が少ないシステムを使用
- 現在は日常業務に使える程度には動作しているが、オープンソースとして配布する予定はない
- Boo と Rio Terminal はどちらも Rust で書かれており、似た構造と配布プロセスを持つ
- こうした類似性が反復作業のように感じられ、開発の楽しさを減少させている
創作とインスピレーションの関係
- レゴブロック遊び を例に、毎回異なる形を作れる自由さこそが創作の楽しさだと説明
- 同じ部品を繰り返し使うだけでなく、外部の要素を加えて新しい結果を生み出す過程が興味の核心
- プログラミングが反復的になるほど、「ワオ」効果 を持つ創作物が生まれる可能性は低くなる
- インスピレーションを受けてこそ、インスピレーションを与えるソフトウェア を作れる点を強調
記憶に残るソフトウェアの例
- ゼルダの伝説 ブレス オブ ザ ワイルド を例に、ゲームをしなかった人たちまでコンソールを購入させた完成度に言及
- プレイ後も長く記憶に残る体験を提供する作品の力を強調
- このレベルのこだわりを込めて作られたソフトウェアが、人々に 感情的な印象 を残すと説明
Boo の中断と新しい言語開発
- Boo は 事業目的ではない趣味プロジェクト であり、収益や締め切りはない
- VS Code のような大規模プロジェクトを作る意図もなく、無理に進めることもしない
- インスピレーションが戻ったときに再開できるよう、Boo を 一時中断 し、現在は 独自のプログラミング言語 を開発中
開発哲学と姿勢
- 新しい言語の開発は多くの作業を伴うが、筆者はそれを 楽しい学習過程 と捉えている
- バイナリとコンパイラ への理解を深めながら、自分のペースで進めている
- 外部の 成功の公式や助言 に従うのではなく、自分の考え方と興味を中心に開発を続けている
- この文章自体も Boo を使って書かれた
1件のコメント
Hacker News の意見
朝起きてコーヒーを飲み、家族が寝てしまったので午後が自由だったという文章を読んで、いったいどういう時間帯で暮らしているのか気になった。午後に寝る家族なのか、夕方に起きて一日を始める人たちなのかと想像した
「このエディタは私を楽しませるために存在する」という言葉が新鮮に感じられる。最近はどんなサイドプロジェクトもオープンソースや SaaSに発展させなければならないという圧力があるが、それがかえって創造性を殺してしまうことが多い。Boo や Rio のような実験的なプロジェクトは、こうした自由から生まれるのだと思う
「自分のために作った」というのは、多くの芸術家のやり方だ。Tolkien もそうだったし、たいていは自分のために作り、あとで世に見せる。だが多くの場合、誰にも関心を持たれないか、死後になってようやく注目される。それでも構わない。大切なのは、想像力を外に表現しようとする人間の本能だからだ
プログラミングが反復的になると、『おお』という要素は減っていく。だが yt-dlp のようにさまざまなサイトをサポートするプロジェクトは例外だ。無数のデータパーサを書くのは退屈だが、結果として「どこでも動く」という感覚をもたらす
私は人々に感情を抱かせるソフトウェアを作っている — 主に怒りを。結局のところ、ソフトウェアには無関心を向けられるものと、人々が文句を言うほど使われるものの2種類しかない
Emacs と Emacspeak は私にものすごい感情を与えてくれる。全体がひとつのマニュアルのようで、C-h m を押すだけですべてのコマンドがすぐ出てくる。隠されたものは何もなく、HTML ドキュメントを漁る必要もない。うまくいかなければ Codex で直してでも、自分の望むことを実現できる
理想を言えば、**ソフトウェア開発はクラフト(craft)**として扱われるべきだ。木工のように、有用でありながら芸術にもなりうる。だが多くのプロジェクトは開発者を工場労働者のように扱っている。品質より量を重視する文化が問題だ。
同時に、ソフトウェアを芸術としてだけ見るのも実用的ではない。コードの目的は鑑賞ではなく動作だからだ。それでも「クラフトマンシップの宿ったソフトウェア」という言い方が不自然に聞こえるのは残念だ
Meta や Google のような FAANG も、すでに人々に感情を抱かせるソフトウェアを作ってきた — 怒り、憂鬱、ときには喜びまで。だがそれは、善意で始まった技術がいかに歪められうるかを示している。「地獄への道は善意で舗装されている」という言葉のように、善を目指して悪を生むことは多い。
Knuth の言葉を借りれば、「何千人ものコンピュータ科学者に、自由にやりたいことをやらせよ」というのが進歩の原動力だ。Bell Labs がそうだったように、探求の自由が重要だ。
今は最適化に執着する一方で数学には弱く、結局探検をやめた社会になってしまった。だから発展が遅くなったのだと思う
Casey Muratori と Jonathan Blow から学んだ習慣だが、私も自分だけの小さな世界を作るのが好きだ。自分が唯一のユーザーであり対象であるプロジェクトだ。締め切りもなく、要望もなく、ランタイムすらない、純粋な楽しみのための空間だ
最近のソフトウェアの大半は、私に強い感情を呼び起こす