語彙を管理できるシステムが欲しい

#23
2022.7.27

日本語そして英語の語彙を管理できるシステムが欲しいという話です。日本語、英語共に、今まで知らなかった語彙をコレクトしていき、読める、使える語彙の範囲を広げていきたい、というのが主なモチベーションです。

今までそういったシステムを作ることを試みてこなかったわけではありません。まず最初はテキストファイルに単語と意味を書き込むということをしていました。しかし単語が増えれば増えるほど、ファイルが大きくなっていきます。語彙を追加する分には良いのですが、今まで追加した語彙がめちゃくちゃになります。Plain Textなので、追加した日付が自動で記録されるわけでもなければ、単語を並べ替えることができるわけでもありません。なのでこの方法は却下です。

この反省を活かして作ったのが、XMLベースの単語帳です。一単語につき1ファイルを対応させ、単語と意味を書いていくというものです。各ファイルには固有のIDが付与されます。この方法の利点は、XML内から別の単語にリンクすることが容易であるという点です。また、ファイルの作成をCLI化して半自動で日付を付与することができます。

このXMLベースの単語帳は確かにポテンシャルがあるのですが、問題がないというわけではありません。まず、XMLなのでいくつかの文字のエスケープが必要になります。具体的には>や<などです。これらの文字は、多くの英和辞典で使われる記号なので、いちいちエスケープするのが面倒です。さらに、ファイルに付与されるIDが現状はUUIDであり、可読性が低いです。それに、毎度毎度CLIからファイルを作成する、というのも手間です。ファイル名など気にせず、クリック一つで新しいファイルを作成したいのです。これらの問題を解決するであろう方法として考えられるのが、GUIのフロントエンドを作るということです。

ということで、GUIフロントエンドを作りたいと思ったのですが、これまた一筋縄には行っていません。FractalというWYSIWYGエディタを作ることを試みてはいたわけですが、はっきり言ってあまり上手くいっていません。一ヶ月くらい放置していることからも明らかです。この手のソフトウェアを作るには、相当な労力が必要だと感じた次第です。私の最終目標はあくまで語彙を学ぶことにありますから、このシステムを作るのに手間取るのはあまり良くないと考えています。

汎用WYSIWYGエディタを作るのはあまりにも遠回りであると感じて今に至ります。そもそも汎用的なものではなく、語彙の管理専用のものであれば、まだ望みはあります。いっそ、Plain Text + メタデータだけであれば、システム自体はシンプルになります。しかしやはりPlain Textだけでは寂しいという思いがあり、どうすべきか悩んでいます。

そして今考えているのは、XMLのプレビューを表示しながら編集できるエディタです。これであれば実装のコストが圧倒的に下がります。Plain Text編集の支援機能を作るのはそこまで難しくないはずです。また拡張性の面では、直接ソースを編集するのが一番良いです。ただし、XMLは自由すぎるので、適切なvalidationが必要です。DTDを使うべきかもしれません。

本当なら、何らかデファクトスタンダードなものがあれば良いのですが。HTMLやXMLは一応デファクトではありますが、それ以上のアプリケーションに近い部分でのデファクトがあまりありません。