デイリーノートにコーヒー豆の名前を書くとき、毎回別のノートからコピペで持ってくるのが地味に面倒でした。豆の名前は「できるだけ短く」「国と農園と生成方法が分かる形」というマイルールで揃えているので、手で打ち直すと大変で音声入力だと表記がブレてしまうし、かといってカーソルでドラッグしてコピーして貼り付けて…というのも、毎回となると地味に手間です。

そこで、特定のノートの特定のリストから、その場で項目を選んで挿入できるプラグインがあればいいのにな、と思いつきました。スニペットでもいいんですが、コーヒー豆のリストって「今ストックがある豆」だけにしておきたいので、無くなったり増えたりで中身が変わります。そういう可変のリストから、マウスを使わず、画面にリストを常に出しておかなくても、正確に素早く挿入できるのが理想でした。

スニペットと違うのは、Obsidianのノートをそのままソースに使えるところ。普段触っているノートでメンテできるので、ゴミ化しづらいのもいいなと思っていました。

構想だけはしていたんですが、今日のんびりアイスコーヒーを飲んでいたらやる気が出てきたので、ついに作ってみることにしました。

Claude Codeだけで作ってみる

今回はClaude Code(Opus 4.8)だけで壁打ちしながら作ってみました。一番の論点は、自作のObsidianプラグインのWorklog Helper(3ヶ月使って残った、Obsidian自作プラグインの機能)との機能の被りです。似たようなことができそうなので、一緒にするか別プラグインにするか迷っていました。

壁打ちを始めて30分ほどで、わりとあっさり動くものができました。さっそくストックのある豆の一覧を登録しておきました。機能はシンプルなので、すごく手に馴染みそうです。

しかも、複数のソースに対応するところまで空気を読んでやってくれていて、取引先や案件名の一覧をどこかのノートに作っておけば、そのリストからも挿入できそうでした。これ豆や仕事関連だけじゃなくて筋トレのリストにも使えるな、と作りながら気づきました。

使ってみたら、欲しい機能が先に入っていた

さっそく筋トレのソースを追加してみました。複数ソースになると一気に使いづらくなるので、UIを考えないといけないなと思っていたんですが、これは後からtabキーでソースを切り替えられる機能を実装して解決しました。

嬉しかったのが、筋トレを記録するときはプレーンなテキストじゃなくてリストとして挿入したいなと思っていたら、それも既に機能として入っていたこと。ソースごとに「挿入時のテンプレート」が設定できるようになっていて、- {{value}} という設定にしたら、思い通りにリスト形式で挿入できました。

チェックリストにしたければMarkdownでそう書けばいいし、リンクにすることもできそうです。

ちなみに筋トレの記録は、Codexのアドバイスでこんな形にしてみました。
(毎回手入力するならもっとシンプルな方が続くかもよとも言われましたが、プラグインで簡単にしたので)

- プッシュアップ|STEP1|15回 × 3セット
- スクワット|STEP2|7回 × 1セット

パイプ|はちょっと見づらいかな…とも思いつつ、まあいいか、という感じです。

使ってみて、Worklog Helperとはまた全然用途が違うなと分かったので、リポジトリを分けて正解だった気がします。

名前はPantry

リポジトリ名は obsidian-pantry にしました。「スニペット」という名前は付けたくなかったので、Pantry(パントリー、豆の貯蔵庫的なイメージ)に。ちょっと短い単語なので既存のプラグインと被る可能性もありますが、自分用だしまあいいか、と。

やることはまだ少し残っていて、コピーモードとか、MRU(直近使用順/頻度順)の並び替えとか、ネスト・サブリストへの対応とか。頻度順で並べ替えできたらよさそうだし、ネストしていると候補に出てこないのも気になっているところです。とはいえ最低限のところはもうできているので、そんなに急ぐ必要もないかなと思っています。