思い立ってObsidainのプラグインを作り出す
土曜日の午前に歯医者から帰ってきて、何がきっかけだったか思い出せないけど、Obsidianでクイズが書けるプラグインを作りたくなった。
ObsidianはElectronベースのアプリケーションなので、Webアプリを開発するようにJavaScriptでプラグインを開発することができる。Obsidianのテンプレートリポジトリから自分のリポジトリを作り、ちょろっと変更すると考えていたものができた。思ったよりも簡単だ。
簡単なJavaScript(TypeScript)で、普段使っているツールが拡張できるのは面白い。
Svelte を使う
JSで直接DOMを操作してクイズのUIを作ることはできたけど、ReactなどのUIフレームワークを使ってみようかなと思った。
Obsidianのドキュメントを見ると、ReactとSvelteの使い方が書かれている。Reactは仕事でも触っているが、どうせならSvelteを触ってみよう。Svelteもなかなかいいらしい。
Svelteで作り直すと、もう少し複雑な機能、複雑なUIも作っていい気がしてきた。
選択肢のあるクイズに拡張する
世の中には選択問題というものがある。旧センター試験や運転免許の試験も選択問題だった。ついでなので選択問題を作ってみよう。そんなに難しくはないはずだ。
Svelteを使っているおかげか、すんなりと作ることができた。
何をつくるか自分で考えられるのが楽しい
正直やっていることは大したことはない。コードベースは小さいし、Web APIを叩いたり、データを永続化したりもしてない。それでも考えることが色々とあって楽しい。
クイズというものを、どうプログラムのなかで表現しようかと考えるのが楽しい。機能は増やせるけど、あまり機能を増やしても使い方が分かりにくくなるかも知れないとか、色々と考える事がある。仕事みたいな感じだが、趣味なので自分で全部決められるのがいい。ソフトウェア開発のプロセスの中で、ここが自分の好きなところなんだなというのに気がつく。
既存のコミュニティプラグインに似たものがなければ、もう少し品質や機能を頑張ってコミュニティプラグインとして公開できないか試してみようかと思う。コミュニティプラグインの公開の仕方とかわからんけど、調べたらなんとかなるだろう。