Skip to content
[018]2026.06.04log

他人の村に店を出す

Obsidianコミュニティプラグイン入店記

これまで作ったすべては自分の土地の上にあった。自分のドメイン、自分のサーバー、自分のデータベース。ボタンの色が気に入らなければ変えればいいし、ルールが必要なら自分で決めればよかった。一人で作る仕事の孤独については何度も書いたが、その反対側にある自由については書いたことがない気がする。自分の村では自分が法だ。

EP.17でObsidianプラグインの構造を立てた。サーバーが押し込む代わりにプラグインが引き寄せる構造。今度はそのプラグインを人々に使ってもらうには、Obsidianの「コミュニティプラグインストア」に入らなければならない。他人の村だ。その村には審査がある。

準備するものが思ったより多かった。プラグインが自分のサーバーと対話するにはユーザーごとに鍵(APIキー)を発行しなければならないが、その鍵を自分のデータベースにそのまま保存してはいけないことを学んだ。鍵そのものではなく、鍵の指紋(ハッシュ)だけを保存する。そうすれば自分のデータベースが破られても鍵は安全だ。銀行がパスワードを「知らない」のと同じ原理だという。

村の法も読まなければならなかった。Obsidianのプラグイン審査基準は文書で公開されている。秘密の値をログに残すな。定められた通信方法だけを使え。ユーザーの同意なく外部へデータを送るな。興味深かったのは、これらの基準が結局EP.15とEP.16で私が学んだことと同じ話をしていたという点だ。他人の村の法は、たいてい、自分の村ですでに事故を起こした後に学んだことだった。

提出前に試験をした。自動テスト16個を作って回し、最後に本当の試験——自分のObsidian保管庫に直接インストールした。ノート99個、チャンネル23個のフォルダが入ってきた。もう一度同期を押した。「新しいノートなし。」重複が生じないという意味だ。この二度目のクリックが一度目より重要だということを、今は分かっている。

提出方式が最近変わったことも検索で知った。以前はGitHubで一覧ファイルを直す方式だったが、今は開発者ダッシュボードから提出する。古い案内記事に従っていたら数日を無駄にしていただろう。他人の村は法も変わる。

提出した。自動審査が回った。通過項目が一つずつ緑色になるのを見守った。不合格0件。そしてその日のうちに、プラグインが公開された。

Obsidianアプリのプラグイン検索窓に「stacktube」と打ってみた。出てきた。他の人たちが作った数千個のプラグインの間に、自分が作ったものが一枠を占めていた。陳列棚のスコアは96点だという。

不思議な気分だった。自分のサイトに機能を上げるのは家の中に家具を入れる仕事なので、何の感慨もなくなって久しい。ところが他人の村の陳列棚に品物が並ぶと、初めてローンチボタンを押した日と似た感覚が戻ってきた。審査のあるところに通過したということ。自分が定めていない基準を満たしたということ。一人で作る人には、それは稀に受け取る成績表だ。

法は自分の村のものが楽だ。しかし成績表は、他人の村のものの方が正直だ。


🔧 このエピソードの技術用語解説

プラグイン(Plugin) 既存のアプリに差し込む拡張機能。Obsidianはユーザーが作ったプラグインを審査を経て公式ストアに陳列する。

APIキー / ハッシュ保存 外部プログラムが自分のサーバーにアクセスするときに使う鍵。サーバーには鍵の原本ではなくハッシュ(一方向の指紋)だけを保存する。指紋から鍵を復元することはできないので、流出しても被害がない。

E2Eテスト(End-to-End Test) 部品単位ではなく、ユーザーの実際の動線全体(接続 → 同期 → 再同期)をまるごと検証するテスト。今回は偽のサーバーと偽の保管庫を作って16のシナリオを回した。

冪等性(Idempotency) 同じ作業を二度やっても、結果が一度やったのと同じである性質。「二度目の同期で重複0個」がまさにこれだ。自動化で最も重要な性質の一つ。