[[📒Articles]] > [[📒2022 Articles]] <div class="minerva-last-modified"> 🚀公開日: 2022-05-04 </div> <div class="minerva-last-modified"> 🖊️最終更新日: 2022-05-04 </div> ![[2022-05-04.jpg|cover-picture]] [[🦉Various Complements]]が[[GitHub]]で`★100`を達成した記念に記事を書いてみました。 ## はじめに [[🦉Various Complements]]は私が開発している[[Obsidianプラグイン]]です。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">GitHub - tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> This plugin for Obsidian enables you complete words like the auto-completion of IDE. - GitHub - tada... </div> </div> <img src="https://opengraph.githubassets.com/55f321e8c740f28ccd901b361906791c861f84f131a9d9e4914213f681f6bd98/tadashi-aikawa/obsidian-various-complements-plugin" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin"></a> </div> 2021年2月から開発を始め、1年3ヶ月経った今日、[[GitHub]]のスターが100に達しました。2015年頃から[[GitHub]]を使っていますが100に達したのは初めての快挙です。 ![[Pasted image 20220504175207.png]] ただ、凍結していた期間が半年以上あったので、実質の開発期間は半年になります。 ![[Pasted image 20220504175422.png]] 今回は時間軸に沿って、[[🦉Various Complements]]の開発経緯やメジャーな機能追加を振り返っていきたい思います。開発者の方も、利用者の方も、興味がある部分だけ読み進めていただければ幸いです。 ## [[🦉Various Complements]]とは 本題に入る前に、[[🦉Various Complements]]の概要を説明します。 [[🦉Various Complements]]は[[IDE]]やテキストエディタにおけるオートコンプリート機能を提供する[[Obsidianプラグイン]]です。v6.0.0現在で対応している主な補完機能は以下6つです。 | 機能名 | 説明 | | ------------------------------ | ------------------------------------------------- | | [[Current file complement]] | 現在のファイルから単語を補完する | | [[Current vault complement]] | 現在のVaultに含まれる全ファイルから単語を補完する | | [[Custom dictionary complement]] | ユーザーが作成した辞書の単語を補完する | | [[Internal link complement]] | [[Internal Link]]を補完する | | [[Front matter complement]] | [[Front matter]]から補完する | | [[Predictable complement]] | 直前に登場する単語を補完する | 詳細はリンク先の[公式ドキュメント](https://tadashi-aikawa.github.io/docs-obsidian-various-complements-plugin/)をご覧ください。 ## 誕生秘話 [[🦉Various Complements]]の開発を始めたきっかけは、**現在のファイルに出現する単語を補完する機能/プラグインがなかったから**です。 それまで[[IntelliJ IDEA]]で[[Markdown]]を書いていたため、オートコンプリート機能は必須でした。おそらく同じことを考えていた[[Obsidian]]使いの方もいらっしゃったでしょう。幸い、[[TypeScript]]は一番得意な言語だったため、ならば[[Obsidianプラグイン]]を作ってみよう!という流れになりました。 当時の内容は[[MAMANのITブログ]]に記事を書いています。 <div class="link-card"> <div class="link-card-header"> <img src="https://avatars1.githubusercontent.com/u/9500018?s=460&v=4" class="link-card-site-icon"/> <span class="link-card-site-name">MAMANのITブログ</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">Obsidianでオートコンプリートプラグインを作ってみた</p> </div> <div class="link-card-description"> 日本語でオートコンプリートができるObsidianのプラグインを作ってみました。英語をはじめとした他言語でもトークン解析ロジックがマッチすれば使えます。 </div> </div> <img src="https://blog.mamansoft.net/images/cover/2021-02-14.jpg" class="link-card-image" /> </div> <a href="https://blog.mamansoft.net/2021/02/14/create-auto-complete-plugin-for-obsidian/"></a> </div> 言語が絡む処理はどうしても英語が優先されます。特に日本語をはじめとする[[CJK]]は英語のスペースのようにデリミタが存在しないため、言語圏内の人ですら言語解析は困難です。プログラミングとは異なり[[Obsidian]]で入力するメイン言語は日本語であるため、それに対応しているだけでも私が開発する意味はあると感じました。 ## はじめてのFeature Request [[🦉Various Complements]]が[[Obsidianコミュニティプラグイン]]として登録された直後の2021年2月9日、はじめてのFeature Request[^1]が作成されました。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">Is it possible to add Arabic? · Issue #2 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> Wow.. what a great plugin.. thank you so much I was just wondering if you could add support for Arab... </div> </div> <img src="https://opengraph.githubassets.com/c5df7377848167360d9520a5d4534035376c63628962d99a8a02dda25fa9fe6f/tadashi-aikawa/obsidian-various-complements-plugin/issues/2" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/2"></a> </div> 今思うと、はじめてにしてはヘビーなものでした。『アラビア語対応してほしい』とのこと。ただ、自分で開発したプラグインが、国も言語圏も異なる[[Obsidian]]ユーザーに刺さったことが嬉しかったので、精一杯対応してみました。 アラビア語は右から左へ書く/読むこと、単語や文節の区切りに使われるsymbolのことなど知らないことばかりでしたが、起票者の力を借りて何とか対応できました。最近でこそ、英語でやり取りすることは日常茶飯事になりましたが、この頃は経験も少なかったので返信がくるたびにドキドキしていました😅 なお、この頃は[[Current file complement]]以外の補完機能はありませんでした。また補完をするには`Ctrl + Space`のように明示的なキー入力が必要でした。 ## コラボレーションのお誘い [[🦉Various Complements]]の公開から1ヶ月ほどした後、[[👤Yeboster]]氏からコラボレーションのお誘いをいただきました。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">Plugin Collaboration · Issue #6 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> Hi @tadashi-aikawa! I am the author of Obsidian autocomplete plugin. First, thanks for this plugin, ... </div> </div> <img src="https://opengraph.githubassets.com/e243eee7a6c3c7e2d85629106fb101bbe757e3b78023690068cd8f3fb1653ff4/tadashi-aikawa/obsidian-various-complements-plugin/issues/6" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/6"></a> </div> 実は[[👤Yeboster]]氏が開発している[[Autocomplete]]は、[[🦉Various Complements]]を開発する前に一度試したことがありました。当時は以下の理由から要件を満たさなかったため開発に踏み切ったわけです。 - [[Latex]]の補完にしか対応していない - 日本語対応は困難だろうと感じた 英語や開発でのコミュニケーションコストの高さから後ろ向きではありました。ただ、何もやらずに断ってしまうのはよくないし、機会を逃すのも勿体ないと思い、コラボレーションを受け入れることにしました。 ## [[🦉Various Complements]]の凍結 リポジトリについて、以下の理由から[[🦉Various Complements]]は凍結することにしました。 - [[Autocomplete]]の方が古い - [[Autocomplete]]の方が名前が分かりやすい - [[Autocomplete]]の方がダウンロード数/スター数が多い 個人的には[[Obsidian]]に必要とされるオートコンプリート機能が提供され続ければ、誰がどこで開発するかに関心がなかったためです。 `凍結に入る前 最後のリリース` <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">Release Release 0.4.0 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> ✨Improvements Add Auto Complete as Arabic command which can trim some its symbols (#5) </div> </div> <img src="https://opengraph.githubassets.com/7299f42df437fc6f9f7324cbe8cd6ec701e8fa967fe44aad155d11138b3eab24/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/0.4.0" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/0.4.0"></a> </div> 今でこそ、趣味の活動でコラボレーションは引き受けないことにしていますが、当時の選択を後悔してはいません。少なくとも、『気軽にコラボレーションを引き受けることは自分にとっても相手にとっても有益でない』ということを肌で感じられたのは、貴重な経験でした。 コラボレーション後、しばらくの間は私の一部コードベースを[[Autocomplete]]に移植するお手伝い(コードレビュー)をしていたりしました。ただ、結局のところ一度もコミットすることはなかったと思います。 権限をもらっているとはいえ、自分のリポジトリでないことにハードルを感じていたのかもしれません。ただそれ以上に、私はその時のオートコンプリート機能に満足していました。いや、正確には大きな不満が無かったのだと思います。 日本語に関する微妙な挙動の対応などもあり、しばらくの間は[[Autocomplete]]と[[🦉Various Complements]]を交互に使う日々が続きました。今思えば、どちらも今ほど手に馴染む感じではなかったのだと思います。 ## 秋の雪解け 2021年の10月、[[Obsidian October 2021]]が開催されたため新しいプラグインとして[[🦉Another Quick Switcher]]を開発していました。本記事の主題とは異なるため詳細は省略します。興味のある方は以下の記事をご覧ください。 <div class="link-card"> <div class="link-card-header"> <img src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" class="link-card-site-icon"/> <span class="link-card-site-name">minerva.mamansoft.net</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">📘自分だけのObsidian Quick Switcherを作ってみた</p> </div> <div class="link-card-description"> 🦉Another Quick Switcherという🔌Obsidianプラグインを作って公開した話です。 </div> </div> <img src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/%F0%9F%93%98Articles/attachments/2021-11-07.jpg" class="link-card-image" /> </div> <a class="internal-link" data-href="📘自分だけのObsidian Quick Switcherを作ってみた" ></a> </div> そして翌月の11月、[[Obsidian]]に大きな変更がありました。[[Live Preview]]と呼ばれる新機能です。この機能によって[[WYSIWYG]]路線に方針転換し、エディタに使われていた[[CodeMirror]]は[[CodeMirror 5]]から[[CodeMirror 6]]にバージョンアップされました。これによって[[🦉Various Complements]]や[[Autocomplete]]は動かなくなります。 オートコンプリートがなくなるとやはり不便です。[[Autocomplete]]も対応される気配はなさそうで、私が開発するにしてもUI部分は関与していないため非効率な対応になりそうでした。コミュニティでも日に日にオートコンプリートの需要が高まるのを見て、誰かに囁かれた気がしました。『開発するなら今でしょう』と。 そして半年以上凍結していた[[🦉Various Complements]]を解凍しました。 ## v1.0.0リリース 当初は本当に対応できるか不安でしたが、よく調べてみると[[Obsidian API]]も以前よりバージョンアップしていました。中でも、オートコンプリート用のコンポーネントが提供されるようになっていたのは非常に大きかったです。これのおかげで[[show-hint]]を簡単に捨てられました。 UIの実装はほぼフルスクラッチしたものの、ほどなくしてv1.0.0をリリースしました。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">Release 1.0.0 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> 🎇 Shiny New Things Show suggestions without executing a command You need to specify a strategy for... </div> </div> <img src="https://opengraph.githubassets.com/67ff6c8bd229119572f58948dd5a8458bfb41a1fa124335f253f499523b7a900/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/1.0.0" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/1.0.0"></a> </div> コマンドを実行しなくても自動で候補を表示できるようになったのは大きな進歩でした。 ![[142166692-4e014dfa-4e1d-4c92-b50d-f8e42b8f5253.gif]] また、[[Live Preview]]はもちろんのこと、モバイルにも対応できました。[[Discord]]の`#updates`にリリース連絡するようになったのもこの頃からです。 ![[Pasted image 20220504193044.png]] ## [[Custom dictionary complement]] この頃から頻繁にIssueが作成されるようになりました。そのほとんどはFeature Requestであり、私が思いつかなかったアイデアも多く、非常に感心させられました。今でこそ非常にお世話になっている以下の方々と面識できたのもこの頃です。 - [[👤tyf2018]]氏 - [[👤Chris Grieser]]氏 - [[👤FelipeRearden]]氏 さて、今でこそ[[🦉Various Complements]]の主要機能となった[[Custom dictionary complement]]はこの頃に誕生しました。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">FR: Custom Autocomplete Dictionary · Issue #12 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> It would be extremely useful if you can customize the words available via autocomplete. Right now, i... </div> </div> <img src="https://opengraph.githubassets.com/097752319c884ee764b98318c6c99cefebb9e52728c4ecdcee28628feb99d117/tadashi-aikawa/obsidian-various-complements-plugin/issues/12" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/12"></a> </div> リリースはv1.2.0です。文字を羅列するだけという最低限のものですが、興味がありましたらリリースノートに添付された動画をご覧になってください。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">Release 1.2.0 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> 🎇 Shiny New Things Support custom dictionaries (#12 ) </div> </div> <img src="https://opengraph.githubassets.com/d9bc14079655a22eb6f53d8d050ddc4c3fbe7bb4f2be7374eb37c8fe5cc2c3f5/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/1.2.0" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/1.2.0"></a> </div> 2日後にリリースされたv1.4.0では、descriptionやaliasという項目が追加されています。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">Release 1.4.0 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> 🎇 Shiny New Things Support a description and aliases on Custom Dictionaries (#13) </div> </div> <img src="https://opengraph.githubassets.com/6073ff88b4ead2eab47aef873024ba34d497a0ddf9a4d7dd3f020c276b4e6e69/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/1.4.0" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/1.4.0"></a> </div> ## 大型バージョンアップのv3.0.0 v3.0.0は非常に大きなバージョンアップでした。しかも驚くことに、v1.0.0からv3.0.0までの期間はわずか10日ほどです。まだ12月になっていませんでした。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">Release 3.0.0 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> 🎇 Shiny New Things Internal link complement (#28) It complements the text with internal links, whic... </div> </div> <img src="https://opengraph.githubassets.com/c6f8f7f6b8f89f9a2150ac2ed4922686ca06bd24c210dde6b16e6c7d1639e02c/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/3.0.0" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/3.0.0"></a> </div> 目玉の新機能は[[Internal link complement]]です。今もなお、[[Custom dictionary complement]]と並んで[[🦉Various Complements]]の顔となる機能です。 ![[143730645-41c2e40e-17b0-476e-b034-a6002075d57b.gif]] Issueも立てて、[[👤FelipeRearden]]氏に多大な協力をいただきました。圧倒的感謝🙏 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">[v3.0.0] Internal Link complement · Issue #28 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> Coming soon! Feature Complement both resolved and unresolved link It supports aliases It can complem... </div> </div> <img src="https://opengraph.githubassets.com/cdaf985efef93df1e38d0328131d0cf3ba6700681476d5844df835c278e6d84d/tadashi-aikawa/obsidian-various-complements-plugin/issues/28" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/28"></a> </div> 他にもパフォーマンスが10倍に改善したり、uppercaseをケアしたきめ細やかな候補の提案ができるようになりました。両機能は[[👤Yukang]]氏に多大な協力をいただきました。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">Improve performance of showing suggestions · Issue #33 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> From #30 </div> </div> <img src="https://opengraph.githubassets.com/5c3a14ac9c4429e09c4b8d4f5f9430eaaad3b915bd885a050af198a088418af6/tadashi-aikawa/obsidian-various-complements-plugin/issues/33" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/33"></a> </div> <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">fix issue #30, take care of uppercase by chenyukang · Pull Request #31 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> This plugin for Obsidian enables you complete words like the auto-completion of IDE. - fix issue #30... </div> </div> <img src="https://opengraph.githubassets.com/8ee712a73e3ed0084a7ec8e235aa721f55e8518830ca8ccf5c9757c87e012441/tadashi-aikawa/obsidian-various-complements-plugin/pull/31" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/pull/31"></a> </div> 設定項目が増えてきたので、設定画面を一新したのもこのリリースです。 ## [[Hippie completion]]と[[Predictable complement]] [[IntelliJ IDEA]]には[[Hippie completion]]という機能があります。これが非常に便利で愛用していました。[[Obsidian]]でも同じ機能が欲しいと思い、v3.2.0で実装しました。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">Release 3.2.0 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> 🎇 Shiny New Things Predictable complement Predictable complement is similar to a Hippie completion ... </div> </div> <img src="https://opengraph.githubassets.com/4b393b771f1e5a024d0e2630d383d209d43a2c1747ebcf18d2674e1fafc559e7/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/3.2.0" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/3.2.0"></a> </div> ![[145170338-6e752a86-c272-4be8-9f31-007ea5004b84.gif]] 他の方からはあまり反応がなかったので、需要はないのかもしれません。とても便利ですよ。 ## 2か月越しのmulti-word completions 年も明けた2022年の1月下旬、v5.0.0をリリースしました。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">Release 5.0.0 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> 🎇 Shiny New Things Documentation I have created documentation that includes all features, options, ... </div> </div> <img src="https://opengraph.githubassets.com/aac40245310f9081f47fffd474247b74cd40f4ce894895c51e3133e5b8c423a9/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/5.0.0" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/5.0.0"></a> </div> このバージョンでは11月に起票された、あるIssueが実装されました。正直、当時は無理だと思って諦めていたのですが、やや強引な手段と落としどころを見つけて実現に至ったのです。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">FR: Support for multi-word-completions · Issue #24 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> I noticed that one enters a phrase or term consisting of multiple words, the plugin still works nice... </div> </div> <img src="https://opengraph.githubassets.com/cef4c242b318225b56b5102ab55920618c807ddbdbd76853778a177a4e7d6778/tadashi-aikawa/obsidian-various-complements-plugin/issues/24" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/24"></a> </div> このIssueには[[👤Chris Grieser]]氏や[[👤FelipeRearden]]氏のほか、あの[[Obsidian Roundup]]を発信されている[[👤Eleanor Konik]]氏が参加しています。ともなれば『やってやるぞ💪』という気にもなるわけですね。気持ちが大事です、こういうのは。 ![[150674948-12a4f43f-fa96-4bfe-aec0-df6c54e2c573.gif]] [[Obsidian]]のオートコンプリート用コンポーネントで複数単語を渡すのは不可能に思われましたが、幸いにもインターフェースが`string`だったため、[[JSON]]に[[シリアライズ]]することで首一枚繋げました。処理回数も入力毎に1回なので大したことはないですしね。 ```ts return { start: { ch: cursor.ch - (currentTokens.last()?.word?.length ?? 0), // For multi-word completion line: cursor.line, }, end: cursor, query: JSON.stringify({ currentFrontMatter, queries: currentTokens.map((x) => ({ ...x, offset: x.offset - currentTokens[0].offset, })), }), }; ``` 挿入後のカーソル調整とか若干苦労しましたが、今得ている恩恵を考えれば安いものです。 ## [[Current vault complement]] v5.1.0では[[Current vault complement]]がリリースされました。こちらも2か月越しの実現です。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">FR: Option to use a folder as source for the autocomplete suggestions · Issue #16 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> Right now, the two sources for words are the custom dictionary and the the current note. However, es... </div> </div> <img src="https://opengraph.githubassets.com/40cece65bb9086d7c6f75f8fe137e3c0726caf6a7ad82651918a845733db9743/tadashi-aikawa/obsidian-various-complements-plugin/issues/16" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/16"></a> </div> パフォーマンスの都合で起動時およびコマンドのみの実行ですが、[[Front matter complement]]の差分更新で実装した方法を流用すれば、差分更新の可能性もあります。パフォーマンス面でかなり厳しいとは思いますが...。 ![[153356188-01a730de-f556-42ff-b2d5-452831e1c798.gif]] 候補にアイコンが付くようになったのもこのバージョンからですね。 ![[153356068-471a6eb7-fd2f-4d20-91d1-5b512226d9f2.png]] ## v5.0.0と[[Front matter complement]] v5.6.0では[[Front matter complement]]が実装されました。v5はマイナーバージョンアップでも強力な新機能が投入されます。というのも基本的に破壊的変更がなければ、メジャーバージョンアップを控えようと思っていたからです。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">Release 5.6.0 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> 🎇 Shiny New Things Front matter complement (#74) It suggests and completes the text with front matt... </div> </div> <img src="https://opengraph.githubassets.com/cd1abde6b8b4021d692d5de94c2feb2377258098f062fd2d2b2bcc8b8738d513/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/5.6.0" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/5.6.0"></a> </div> [[Front matter complement]]は実装前に想像していたよりも苦戦しました。[[Obsidian]]の[[Front matter]]に対する柔軟性が思ったより高かったからです。 ![[154794555-cc64c3a9-e071-4396-9b7f-066f4235dfe4.gif]] この件については[[👤Chris Grieser]]氏と[[👤zeltak]]氏に協力いただきました。私が普段[[Front matter]]ほぼ使わないので非常に助かりました。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">FR: yaml value suggestions · Issue #74 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> similar to #48, but only more general: enable yaml-key-specific complements. For example, if I regul... </div> </div> <img src="https://opengraph.githubassets.com/5ed9d3583ba5e55916a48d3be810b2403803aaad242410f12e15737218f9bdd0/tadashi-aikawa/obsidian-various-complements-plugin/issues/74" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/74"></a> </div> このバージョンでは他にも`english-only`というStrategyを追加しています。[[CJK]]のようにdelimiterの推測が難しい言語において、[[🦉Various Complements]]がtokenizerをサポートしていなくても、英語の補完に限っては実用的なレベルまで引き上げるオプションです。 [[👤Yu Wang]]氏にアイデアと協力いただき実現しました。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">Implement an "English only" Tokenizer · Issue #86 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> Hi, tadashi Thanks a lot for creating this plugin! It accelerates my input speed a lot, especially o... </div> </div> <img src="https://opengraph.githubassets.com/4809baadb3d57435ed66c3913a3a45e04b98ab348fba3e69d135df056f842d0e/tadashi-aikawa/obsidian-various-complements-plugin/issues/86" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/86"></a> </div> ## 補完精度の圧倒的向上 [[Intelligent suggestion prioritization]] そして現在の最新版v6.0.0です。 <div class="link-card"> <div class="link-card-header"> <img src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">Release 6.0.0 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> 🎇 Shiny New Things Intelligent suggestion prioritization (#114) This feature optimizes the order of... </div> </div> <img src="https://opengraph.githubassets.com/ded371b83047f9226de111ad156d58c61fc7a6cd52a7a0dd31c80a7aece4b240/tadashi-aikawa/obsidian-various-complements-plugin/releases/tag/6.0.0" class="link-card-image" /> </div> <a class="internal-link" data-href="6.0.0" ></a> </div> このバージョンの目玉機能は[[Intelligent suggestion prioritization]]です。Issueの発案者は大御所の[[👤Chris Grieser]]氏。 <div class="link-card"> <div class="link-card-header"> <img src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">✨Intelligent suggestion prioritization (for FR: factor in frequent/recent use?) · Issue #114 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> This is best explained with an example. Right now, these are the 5 complements that get suggested to... </div> </div> <img src="https://opengraph.githubassets.com/7558d100eb24222c51e258ca98b21e29b42c6cb469e13fc80815913b9679afa2/tadashi-aikawa/obsidian-various-complements-plugin/issues/114" class="link-card-image" /> </div> <a class="internal-link" data-href="114" ></a> </div> 機能としてはシンプルです。過去に選択した回数やタイミングを考慮して候補の順番を最適化するだけです。判定ロジックは[[zoxide]]を参考にしており、そこまで難しくありません。 ![[166094996-fb9c2818-faa7-4f09-a06c-8cba0685b0da.gif]] ただ、パフォーマンスを維持できるようストレージを書き込むタイミングには苦戦しました。独自の解釈で落としどころを決めましたが、今のところIssueが作成されないところを見るとうまく動いていそうな気がします。 また、v6.0.0から[[🦉Various Complements]]のリポジトリで[[BRAT]]を使えるようにしました。今までは別リポジトリを使っていましたが、利用側も開発側もあらゆる面で面倒だったためです。`manifest-beta.json`を作るだけでOKでした。 ## ダウンロード数の下剋上 [[Obsidian]]の[[Obsidianコミュニティプラグイン]]リストで参照できるダウンロード数を見ると、今年に入ってから[[Autocomplete]]の数を抜きました。 ![[Pasted image 20220504203621.png]] 正直なところ、私のプラグイン名がかなりイケてなく、[[SEO]]面でも不利だったため半ば諦めていたので非常に嬉しく思います。 ## [[🦉Various Complements]]というプラグイン名について プラグイン名に関しては、親切なNativeの方が『直感的じゃないからイイ名前にしようぜ!』言ってくれたのですが、名称変更コストもそれなりにあるので諦めています。ちょっと変な名前の優秀なプラグインがあってもいいかなと、隠れた名湯みたいで(笑) <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">Possibly change the name to "Intelligent completions" · Issue #43 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> If I may say this without being rude, the name &quot;Intelligent complements&quot; is confusing to t... </div> </div> <img src="https://opengraph.githubassets.com/fc686e2fcf6c18bf403f3a93884d863d67b06760c3c1301058966a4454117e69/tadashi-aikawa/obsidian-various-complements-plugin/issues/43" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/43"></a> </div> <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">Plugin name and description · Issue #51 · tadashi-aikawa/obsidian-various-complements-plugin</p> </div> <div class="link-card-description"> Hi I think it would be better if the plugin name and/or the description contain the words &quot;auto... </div> </div> <img src="https://opengraph.githubassets.com/8d68b10f7869183278281f8a675447fd876397c6414a7334c3cc6ca0aec9a060/tadashi-aikawa/obsidian-various-complements-plugin/issues/51" class="link-card-image" /> </div> <a href="https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/issues/51"></a> </div> もちろん、[[🦉Various Complements]]という名前がよろしくない自覚はあります。当時は`Auto Complete`にしたかったのですが、[[Autocomplete]]が既にあったため諦めた経緯がありました。なので、今後プラグイン名を変更する可能性はゼロではありません。ただ優先度は低めです。 開発を始めたとき、`Various`という名前を付けたのは以下2つの理由からでした。 - 色々なものに対応して[[Obsidian]]のデファクトスタンダードになる補完プラグインにしたい - それらを受け入れられるよう広い名前にしたい 当初は[[Current vault complement]]の1機能しかなく、凍結するまでそれは同じでした。敢えて言うなら様々な言語に対応していたくらいでしょうか。それが今ではどうでしょうか。名は体を表す、と言えるのではないでしょうか。 - 様々な言語に対応しています (中国語と韓国語はまだ) - 様々なOS、PCにもモバイルにも対応しています - 様々なエディタに対応しています - 5つを超える補完機能があります - 個人で最適カスタマイズできるように様々なオプションがあります ## おわりに [[🦉Various Complements]]の`★100`達成を記念して、生い立ちや主要な機能について振り返ってみました。 この1年間、[[🦉Various Complements]]から非常に多くのものを得ました。 - [[GitHub]] Issuesを通し、プロダクトを発展させる経験 - [[GitHub]] Issuesや[[Discord]]を通じて英語でコミュニケーションする経験 - 国や言語圏を超えて、言語に関する踏み込んだプロダクトを開発する経験 - [[Productivity]]に拘りのあるユーザーとの交流 - パフォーマンスがシビアなオートコンプリートという機能の開発経験 私が[[Obsidian]]を使わなければ、私が[[Obsidianプラグイン]]を開発しなければ、[[🦉Various Complements]]が人々から必要とされなければ、これらの経験を積むことはできなかったと思います。 特に[[👤Chris Grieser]]氏には早期から[[GitHub]]と[[Discord]]の両面で[[🦉Various Complements]]のエヴァンジェリストのような活動をしていただき本当に感謝しています。もちろん、本記事に名前を記載させていただいた他の方、[[Twitter]]のFBで機能改善に協力いただいた方々、そして[[🦉Various Complements]]を使っていただいている[[Obsidian]]ユーザーの皆さんにも。 気付けばメジャーバージョンも6まで上がりました。しかし、私の...そして皆さんの[[Obsidian]]に関する情熱が尽きない限り、これらはいつまでも通過点に過ぎないでしょう。引き続き[[🦉Various Complements]]をよろしくお願いいたします😃 --- [^1]: 機能追加要望のこと