はじめに
3日前、私はTUIベースのNostrクライアント「nostr-cli-app」を開発し始め、わずか2日でGitHubに公開しました。これは単なる始まりでした。
TUIの限界に直面
次に、初期Twitter風のTUIクライアントの開発に着手しましたが、すぐに壁にぶつかりました。TUIでは制約が多すぎて、デザインの自由度が著しく制限されていました。ほとんどのTUIアプリが同じような見た目になってしまい、創造性を発揮する余地がほとんどありませんでした。
ウェブインターフェースとの出会い
fiatjafが開発したNostr RSSクライアント「narr」を思い出しました。narrはローカルホストで閲覧できるウェブインターフェースを採用していました。これを見て、ウェブインターフェースを使えばデザインの自由度が格段に上がり、初期Twitter風のUIに近づけられると確信しました。
ハイブリッドアプローチの試み
初期Twitterの特徴を模倣したいと考えました。TwitterがSMSでツイートできた時代の140文字制限に魅力を感じ、コマンドラインだけで投稿できるようにしよう、と。そこで考えたのが「機能の分離」でした:
投稿:シンプルなコマンドライン
閲覧:リッチなウェブインターフェース
これならTUIの制約から解放されるはずでした。
複雑化する開発
開発は順調ではありませんでした。何度か最初からやり直し、プロジェクトは徐々に肥大化していきました。単純なウェブインターフェースの追加が、想像以上に複雑なタスクになっていました。
しかし、ようやくローカルホストでHTMLが正しく表示され、投稿機能も動作した瞬間、大きな気づきがありました。
エウレカの瞬間
「俺はNostrの利点を全く理解していないことに気づいた。これはプラットフォームではなくプロトコルなんだから、投稿と閲覧をまとめて作る必要はなくて、ワンタスクアプリを作ればコードもシンプルに保てるしバグも少なくなるはずなんだ。」
これこそがNostrの本質です。Nostrはプロトコルであり、一つのアプリケーションが全てを担う必要はないのです。UNIX哲学の「一つのことを上手くやる」という原則がここでも生きています。
教訓
この経験から学んだことは、シンプルさの重要性です。Nostrエコシステムでは、各アプリケーションが得意な一つのタスクに集中することで、より良いユーザー体験を提供できます。投稿専用アプリ、閲覧専用アプリ、キー管理アプリなど、それぞれが独立して存在しながら、同じプロトコル上で協調して動作するのです。
プロトコルの本質を理解することで、より効率的で保守しやすいアプリケーションを作れることを、身をもって学びました。
jackがnostrのツイートをしてからすぐに参加しいろんなクライアントを使用してきました。自分で作ってみる過程でこれまでの経験や知識がつながった感じがします。
……知らんけど(笑)