2021-01-02 , ,

org-mode文書の中に囲碁の碁盤を埋め込む

Emacsの中で囲碁の棋譜(SGF)を編集するツールを作りました。

2020-01-02-el-igo-screenshot.gif

この通り、org-mode文書の中にSGF形式の棋譜を埋め込んで編集できます。エクスポートも可能。この文書自体org-modeで書いているのでほらこの通り(隅の七目)。

作ったのは碁の勉強をするにあたって普段使っているorg-modeでノートが取れたら便利そうだなと思ったことがきっかけです。

ちょうど先日EmacsでのSVG使用例を見かけてもっと自由に使っていいんだと感銘を受けたところでした。

SVGといえば少し前にJavaScriptでSVGを使った碁盤を作ったところだったので、SVGでの碁盤の表現方法はすでに分かっていました。なので基本的な考え方はこれを踏襲してEmacs Lisp上で実装し直すことにしました。

最近書いていたのはそのための要素技術なのでした。

思いのほかよく出来て、機能的にも内部構造的にもJavaScript版より良くなった気がします。

私は以前からEmacsやorg-modeにはもっとビジュアルで埋め込まれた要素が沢山あって良いと思っていたので迷わずorg-mode文書の中に碁盤を埋め込んで表示してビジュアルに編集できる仕様を思いつきました。

最初はソースブロック(#+begin_src sgf ~ #+end_src)を盤面のオーバーレイに置き換えてみたのですがソースブロックは評価するとかしないとか結果が何だとか色々としっくり来ないところが多かったので(棋譜を評価した結果って何!?)最終的に専用の特殊ブロック(#+begin_igo ~ #+end_igo)を盤面にすることにしました。

みんなもっと自分の好きなものを埋め込みましょう。私が音楽が好きだったら譜面入力インタフェースを作成することでしょう。簡単な作図くらいorg-modeの中で完結しても罰は当たらないと思いますよ。XWidgets? 日和ってんじゃねーよ! とはいえ現状のSVG一本槍では複雑な用途には厳しいものがありますね。更新速度と当たり判定的に。