Obsidianに「クイックスイッチャー」という機能があることをご存知だろうか?
最近開いたノートをもう一度開きたければ、Ctrl/⌘ + O を押してみるといい。
クイックスイッチャーはいとも簡単に、そのノートをリストアップするだろう。
では特定のタグが付いたノートは? 特定の見出しで検索するには?
残念ながら、それはクイックスイッチャーの「守備範囲外」である。
もしその守備範囲に不満があるのなら、答えは簡単だ。足が早く守備が上手い選手をフィールドに加え、球場全体にこうアナウンスしてもらえばいい。
「センター、クイックスイッチャーに代わりまして、
Another Quick Switcher
Another Quick Switcher
背番号、7」
代打、代走、守備固め。何でもこなす多機能検索プラグインが、バージョン7で一皮むけた。
その新機能と使い方を、開発者tadashi-aikawa氏の解説でお送りしよう。
「迫る!」シリーズはこのブログにソフトウェア開発者を迎え、執筆者ぷーおんが開発者へのインタビューを通してプログラムを丸裸にしていく、開発者 vs ユーザーの対談企画である。
開発のきっかけと現在のAnother Quick Switcher
Pouhon: 今回はVarious Complementsの記事に引き続き、tadashi-aikawaさんをゲストにお迎えして、「Another Quick Switcher」についてのお話を色々とおうかがいしていきたいと思います。
開発のきっかけについてはすでにaikawaさんご自身がブログで語っていらっしゃいますが、どうもその当時とはプラグイン自体の方向性が変わってきたと。
tadashi-aikawa: そうですね。 もともと私が実現したかったことはシンプルで、IDE (統合開発環境) と同じような検索性を実現したかっただけなんです。具体的には、
- トークンの出現順序に関係なく検索してほしい
(publish obsidian
と入力した場合もObsidian Publish
がヒットしてほしい) - クエリ入力中も、最近使用したファイル順に結果を表示してほしい
この2点で、上記の記事を書いた時点 (v1.4.0) で私個人が必要なユースケースとしてはほぼ完成していました。
ただ、色々な方に使っていただくなかで数々の要望をいただき、状況が変わってきました。
Pouhon: ユーザーの要望に応えるかたちの変化ですね。
tadashi-aikawa: はい。v1.4.0をリリースして間もなく、Another Quick Switcher (以下AQS) のユーザーには『検索』『表示順』『操作』にかなりこだわりを持っている方が多いことが分かりました。
AQSはロジック部分を完全に1から実装しているのが強みでもあり、標準のQuick Switcherを拡張したプラグインでは実現できないことも可能にします。それならば……ということで『コマンドを自由に作成・カスタマイズできる機能』をv6.0でリリースしました。
標準のクイックスイッチャーや他の代替プラグインでは物足りないという方には是非お試しいただければと思います。逆に不満の無い方には、設定項目が多く複雑に思えてしまうかもしれませんね。
Pouhon: クイックスイッチャーの代替プラグインといえば「Quick Switcher++」が真っ先に思い浮かびますが、開発者から見て++との大きな違いは何でしょう?
tadashi-aikawa: ++は多機能クイックスイッチャーという位置付けですが、AQSは「マークダウンファイルを探すこと」に重きを置いています。なので後の方でも少し解説しますが、.md以外の形式には対応していません。
Pouhon: そもそもの設計や重視するポイントが違うということですね。
ではまず、わかりやすいところで両者の「コマンド」を実際に比較し、それぞれのプラグインがどんな使い方を想定しているのかを確認するところから始めましょう。
Quick Switcher++とのコマンド比較
Pouhon: こちらがQuick Switcher++のコマンド一覧。
これを見ると一番上の「Open」が基本の検索モードであり、その他にいくつかのモードがあって、見出しを検索するときはHeadingsモード、ワークスペースを検索するならWorkspacesモードを呼び出すという設計になっているんですね。
それぞれのモードは基本モードからプレフィックス (クエリの先頭1文字) で呼び出せる。つまり最初に起動するのは、基本的には「Open」であり、標準クイックスイッチャーのホットキー Ctrl/⌘ + O をこのコマンドに差し替えて使うというのが王道なのかなと。
AQSのコマンド
Pouhon: 一方のAQSですが、コマンドリストはこのようになっています。
このリストには、
- Grep (全ファイルの内容を全文検索。ripgrepが別途必要)
- 現在ファイル内の見出し検索
- 現在ファイル内の見出し検索 (フローティングウインドウ版)
ともうひとつ、検索ではない「Move file to another folder」がそれぞれコマンドとして用意されている。これはわかるんですが、GitHubのREADMEには記載されている「Custom Search」がこの中には見当たらない。これはどういうことでしょう?
tadashi-aikawa: その他のコマンド全てがCustom Searchです。設定画面を開いていただければわかります。
Search commandsの設定方法
tadashi-aikawa: 設定画面の「Search commands」に、コマンドパレットでリストアップされていたコマンドが全て収まっていますね。この1つを展開してみると、
このようにコマンドの内容をユーザーが自由にカスタマイズできるようになっています。コマンドの名称から検索結果の並び替え、パスの指定までなんでもOKです。
Pouhon: つまりここでコマンド名を変更すれば、コマンドパレットに表示されるコマンド名も変化すると。
tadashi-aikawa: そういうことです。また、設定を変更した後は必ず【Save】ボタンを押してください。そうしないと、Obsidianを再起動したら設定が元に戻ってしまいます。
逆に間違えて設定変更してしまった場合は、Obsidianの再起動で復元される可能性があります。
Pouhon: これは早速試してみたいところですが、並び替えの優先度をカスタマイズする「ソートロジック」はGitHubのREADMEでは英語でしか解説されていません。
日本人としては日本語の解説があれば嬉しいところなんですが……
tadashi-aikawa: Minervaでは日本語でソートロジックを紹介しています。現在使用可能な要素は15種類ですが、今後のアップデートで追加や変更があればこちらにも反映される予定です。
コマンドを作成して検索する
Pouhon: 完全な新規コマンドも【Add】ボタンから作成できるということで、僕はひとまずこんな感じのコマンドを作成してみました。
Obsidianのコミュニティプラグインに関するノートを検索するCustom Searchです。
ノートには全て同様のタグが付いているので、タグを検索の軸とし、ノイズ除去のためにその他の要素はOFFにしています。
検索結果には「更新日が新しいノート」や「最近開いたノート」を上に表示させるよう設定してみました。
これを【Save】して、ひとまず「設定 > ホットキー」で検索してみます。
作成したコマンドがリストアップされました。これをホットキーに登録して呼び出すと、
呼び出した瞬間、プラグインに関するノートが更新日順にリストアップされます。
また右側に番号が表示されているものはCtrl/⌘ + 数字キーでアクセス可能です。 (クイックリザルトセレクション)
tadashi-aikawa: 私も『最近作成したノート』(Created latest) を検索するコマンドを作成して使っています。
見つけたいノートを素早く見つけられるよう、各々の直感に合ったオリジナルコマンドを作成してもらえればと思います。
多彩なキーボード操作
tadashi-aikawa: また検索結果からキーボードで利用できる機能は、全てHotkeyガイドに書かれています。
バージョン7で実装されたキーボードカスタマイズ
Pouhon: 最新のバージョン7では、上記の部分にもカスタマイズ要素が盛り込まれたと聞いていますが……これについては全くの新機能ということで、aikawaさんから解説をお願いします。
tadashi-aikawa: 追加したのは設定項目の「Hot keys in dialog」ですね。
検索結果から実行できる操作には、ユーザーが定義したショートカットキーを割り当てられるようになりました。
Windowsの Ctrl やMacの ⌘ なら「Mod」、Alt や option なら「Alt」で修飾キーを指定すれば、Obsidianのホットキーと同じような感覚で操作をキーボードに割り当てられます。
(以降、AQS独自のキー設定を『ショートカットキー』と呼び、Obsidianの『ホットキー』と区別します)
Pouhon: この機能、なぜ今このタイミングで実装されたんでしょうか?
tadashi-aikawa: Obsidianのバージョン1.0.0がリリースされたからです。
以前は『ペイン』がメインとなっていましたが、今バージョンからは『タブ』という概念が追加されました。Obsidianのデフォルトホットキーにも変化があり、ユーザーがObsidianで使うコマンドやホットキーもかなり変わることが予想されます。
AQSはObsidianバージョン0.15以前のホットキーをベースにしていましたので、1.0の環境では直感的でないショートカットキーになってしまいます。
では、1.0をベースにしたショートカットキーに変更すればいいかというと、そう簡単な話ではありません。なぜなら『タブ』は、ユーザーが設定で有効/無効を選択できるからです。
『タブ』を使わないユーザーからすれば、前バージョンのままのショートカットキーの方が直感的でしょう。中にはObsidianバージョン1.0でも以前と同じショートカットキーを好む方がいらっしゃるかもしれません。
そのような多様なニーズに応えるには、もうカスタマイズできるようにするしかないかな……と。
以前に数件Issueも作られていたので、いいきっかけだと思い対応しました。
Pouhon: このタブの概念、Obsidian全体にとってもかなり大きな変更で、より画面の使い方が多様化してきそうですよね。
その多様化に対応するために、キーボード操作の自由度を一気に引き上げたというのが、AQS7の最も大きな変更点であると。
バージョンアップ時のポイント
Pouhon: 「Search commands」や「Hot keys in dialog」が刷新されたAQSですが、これまで6.xを使用していたユーザーが7にバージョンアップする際、気を付けておいた方が良いポイントなどはありますか?
tadashi-aikawa: 前回のバージョン6に引き続きで恐縮ですが、AQSのホットキー再設定をお願いします。バージョン7の対応によって、ホットキーの設定が全て外れてしまっているためです。
他にObsidianのコマンドを呼び出すプラグインを使用されていて、そこからAQSのコマンドを呼び出している場合は、そちらの再設定もお願いします。
もうひとつ、ダイアログで選択肢を選ぶデフォルトのホットキーが変更されている点も注意です。
今までは
- ↑ / ↓
- Ctrl + J / Ctrl + K
- Ctrl + N / Ctrl + P
の3通りに対応していましたが、Ctrl + J / Ctrl + K の設定が外れました。ただ「Hot keys in dialog」の設定から変更することはできます。
Pouhon: ホットキーやキーボード操作に関しては、再度設定をお願いしますということですね。
tadashi-aikawa: 他にも質問はGitHub(Discussion)やTwitterでも受け付けておりますので、気になる点がありましたらそちらもご利用ください。
その他の機能
Pouhon: ここまででAQSが「カスタマイズの幅を広げ、幅広いニーズに対応してきたプラグイン」であるというのが浮き彫りになってきた気がしますが、ここで個人的に気になったその他の機能にも少し触れておきましょう。
- Ctrl/⌘ + ] で呼び出す「Open first URL」
- 検索結果のノートに含まれる外部リンクをWebブラウザで開く機能
- Alt/option + Shift + Enter で呼び出す「insert all to editor」
- 検索結果を全て内部リンクとして、現在のノートに書き出す機能 (単体を書き出す「insert to editor」も有り)
どちらもバージョン6以前から実装されているユニークな機能ですが、これもユーザーからの要望を反映した機能なんでしょうか?
tadashi-aikawa: この2つはユーザーからの要望というわけではないですね。特に内部リンクを生成する「insert to editor」に関してはかなり早期から実装していて、もうひとつのObsidianプラグインである「Various Complements」にも通じる機能です。
本当のことを言えば、内部リンクの生成はVarious Complementsだけで完結できるのが理想なんですが、そういうわけにもいかない場合があるので……。
あとバージョン7の新機能として、「open in google」が追加されています。
- Ctrl/⌘ + G で呼び出す「open in google」
- 検索結果に関わらず、クエリでGoogle検索する機能
これはユーザーからの要望というか、妄想から生まれた機能ですね。
Pouhon: うん、知ってますよ……だってその妄想出したの、僕ですもん(笑)
ノートを検索したときにヒットしなかった場合、そのままWeb検索できれば便利かなと思って言ってみたら、本当に実装されてしまいました。
検索対象はマークダウンファイルのみ
tadashi-aikawa: もうひとつ、機能というよりは大きな特徴として、検索対象を.mdファイルに絞っているという点を付け加えておきたいと思います。冒頭でお話した「Quick Switcher++とは異なるポイント」ですね。
Pouhon: PDFや画像ファイルなどはヒットしないということですね。あえてそこを切り捨てた理由は何でしょう?
tadashi-aikawa: 個人的に、PKM (知識管理) として重要なのはマークダウンファイルだけと考えており、その機能開発に集中したかったからです。
検索対象や機能を増やすと、プラグインの開発速度や実行速度が低下します。そのため、PKMに必要な機能以外は基本的に取り入れないことにしています。
また、マークダウンファイル以外を検索する機能はQuick Switcher++にあります。AQSとQuick Switcher++は競合しませんので、マークダウンの検索はAQS、それ以外は++とコマンド毎に使い分けていただければ十分と考えています。
Pouhon: なるほど。これはObsidianの基本機能にも通じる話なので少し補足しておくと、jpegやPDFといった画像データは.mdのノートに埋め込んで使った方が何かと便利なんですよね。
画像ならこんな感じで、パイプ文字 (縦線) 以降に数値を記入すると表示サイズを指定できるし、PDFならデフォルトで開くページも指定可能です。
利便性を考慮すると、資料としての『ガワ』はマークダウンファイルになる。画像ファイルはその1要素に過ぎない。だから検索結果から外しても問題にはならないし、ノイズの混入も防げるということですね。これは僕も納得です。
Old Note Admonitorとその他のお知らせ
Pouhon: ということでこの記事では「Another Quick Switcher」がどんなプラグインであるかをじっくり掘り下げてきたわけですが、つい最近ちょっと気になるトピックがありまして……新たなプラグインを開発されたと。
「Old Note Admonitor」という名前なんですが、これはどんなプラグインなんでしょうか?
tadashi-aikawa: 機能としてはごくシンプルで、あるノートの何らかの日付を参照し、それが現在の日付より一定期間以上古ければ、画面上に警告を表示するものです。
今現在は正式なプラグインとして登録されていないので、BRATを介してのインストールとなりますが、興味のある方はぜひインストールしてみてください。
Pouhon: 「何らかの日付」というと、たとえば更新日?
tadashi-aikawa: はい。デフォルトではノートファイルの最終更新日になっています。ただ、どの日付を参照するかは設定で変更できます。
たとえば、フロントマターの指定したキーを参照したり……などです。
Pouhon: ノートを日付ベースで振り返りたい方には良さげなプラグインですね。こちらも後日試してみたいと思います。
最後にaikawaさんから何かお知らせがあれば。
tadashi-aikawa: 今回はカスタマイズに関する機能紹介が多かったですが、他の機能や開発に関することなど、まだまだ話し足りない部分も残っています。
それについては私の方でも別途記事にしようかと考えているので、そのときはMinervaで公開させていただきます。
Pouhon: ディープな話題はMinervaでということで、楽しみですね。新たな記事が公開されれば、このページでも紹介させていただきます。
ということで、今回のゲストはtadashi-aikawaさんでした。ありがとうございました!