sci

最果て風呂

旧仮名遣いと 5 年間

旧字旧仮名の文章を置換するスクリプト mto を作りはじめてから丸 5 年が経った。当時はバージョン管理システムを使っていなかったので、ファイルを更新する度に file-1 のように別名で保存して管理をしていた。使い捨てのスクリプトばかりだったし、自分には必要性を感じていなかったんだよね。

Mercurial, Bazaar, Git と試してみたのだが、当時のマシンでは Python2 を利用する hgbzr は遅すぎて使いものにならず、git を選択した次第。それからずっと Git を使っているけれども、コマンドは 5 つくらいしか覚えていない。本格的に利用するようになったのは GitHub のアカウントを取ってからになる。

話は mto に戻って。当初はスクリプトと辞書を同一ファイルに記述していた。言語は Emacs Lisp である。旧仮名遣いの文章を新仮名に変換する方向のみの機能しかない。これは自分で書いた旧仮名遣いの文章を確認するのが目的だったから(だと思う)。要素を数えてみると 116 であった。それが現時点では 5000 (仮名:4099 漢字:901) になっている。

要素を追加する度にスクリプトeval し直すのは面倒だし、なんといっても辞書部分の管理が面倒だったので、早々に手続部分と辞書部分を切り離すことにした。もともと完璧なる変換は求めていなかったし、シンプルじゃないと続かないと思ったので、CSV 的なフォーマットにした。SKK 辞書っぽいけど違うよ。

これ以降は手続部分(関数)に手を入れることはほとんど無くなり、辞書のアップデートに勤しむことになる。参考になるサイトの一覧をコピペすれば楽なのだけれど、それをしちゃあおしまいよ、ってことでいちいち手入力。目が死んだね。意地を張らずにコピペしておけば良かったと後悔したけれども、やっぱり楽しかったんだよね、辞書の要素が増えていくのが。ロープウェイで登るのもいいけど、自分の足で登りたいみたいな。

ところがそういう楽しい時期というのは長く続かないのだった。旧仮名から新仮名だけでなく逆変換もできるようにし、ある程度まで辞書の語彙が増えてくると、つまらなくなってきたのだ。楽しく思えない。自分の文章(言い回し)ではほぼ問題なく変換ができるようになっていたから要素数がなかなか増えないし、「何やってるんだろう、こんなことして何になるんだ自分」という気持がムクムクと育っていた。GitHub や Heroku で変換ページを公開しても反応がなくて孤独ってのもあったかもしれない。ということで、しばらく mto から離れていたのさ、ふっ。

辞書側でなくスクリプト側の改良等に視点を変えると、ちょっとずつやる気が出てきた。早い時期に手続とデータを分けておいて良かったよ。上でも書いた通り、初めて実装したのは Emacs Lisp であった。それから Ruby » Python3 » Vim script » Scheme » Perl5 » Lua » C# » Common Lisp » Golang » Objective-C » C » node.js » C++ » PHP の順で実装をしてきた。

ちゃちい。どれも "Hello, World!" レベルのものではあるけれど、実に楽しかった。各言語らしい書き方なんてしておらず、手続き型言語プログラミング一辺倒になっているのが悲しいかな。まぁほら、できないものはできない。あきらめる。

C#Visual Studio 2008 Express で記述したのだけれど、この IDE はものすごく使いやすいんだわ。はじめての GUI アプリケーション作成となったのだけれど、直感的にスイスイと進めることができた。ずっと Apple 党だったのだけれど、このことだけで Microsoft を許したッ!(OS X に Mono を入れて C# を使うくらい好きよ)

そうそう、わりとスイスイ .NET Framework で GUI アプリを作れたのは、その前に Sinatra で Web アプリを作成していたのが理由かもしれない。HTML の Form (textarea, input) であれこれするのが似てるんだよね。メッセージを送って結果を返してって。だから HTML ができる人はすんなりと GUI アプリを書けるんじゃないかと思う。ただし VS でね。Xcode ?ありゃダメだわ。

Xcode に文句を言ったついでに。どれだけわかりづらいかっていうと、Cocoa アプリを作ろうと思ってから完成するまでに 1 年半もかかったんだわ。Objective-C による CUI コマンドは作成できていたので、Xcode のわかりづらさが原因だと断定できる。何あのドラッグして線を繋げるやつ。でもまぁ慣れたら慣れたでこれがベストだなんて言うようになるんだろうな自分は。iOS 向けのやつも作成したけれど、それ以来触っていないので使い方はもう忘れてますね。Swift は枯れたら触ります。まぁ何はともあれ C# はいいぞ。

JavaScript はブラウザの動作が遅くなるしセキュリティの穴になるしで、こいつは悪だと嫌っていたのだけれど、ネタも尽きて魔が差したのか実装してしまった。過去の記憶は新しいもので上書きされるべきだね。実にいい。V8 エンジンが世界を変えたのだ!あたりまえだけれども、サーバーとやり取りしてデータを受けるよりもローカルでやった方が速いんだわ。ついでに node.js で動かしてみたらこれも速い。確か Pow の中身がこれで動いているからというので興味を持ったんだと思う。ベンチマークでは Python3 に次ぐ速さだった。C よりも速いんだぜ!まぁこれは自分の実力が……。少しだけ JavaScript を好きになったという逸話。a little ね。

各言語についてうんぬんすると話が脱線してしまうので話を戻さなあかん。上で「自分の文章(言い回し)ではほぼ問題なく変換ができるようになった」と書いたけれども、実は無意識に「変換できない言い回しを避けていたのではないか?」と思うようになった。そこで他者の文章を変換してみることにしたのだ。

世の中には歴史的仮名遣いによって文章を綴っているブログが少なからず存在している。読み応えのある文章であるとかそういったものではなく、日常のことを淡々と飾らずに記述しているものだ。正仮名使用者にありがちな、卑屈になって自身の正しさを主張しているようなものではない。管理人の主張とやらがどこかに書かれているかもしれないが、表立って目につくところには置かれていない。こういうのは読んでいて実に気持ちがいい。

ひとや地域によって言葉の癖があり、今まで自分が作ってきた辞書では漏れが出てしまうことも多かった。そういったものを追加・修正していくのは楽しい作業だった。現代的な崩された言葉に歴史的仮名遣いは厳しい感じがする。けれども、できないものはあきらめて、ゆるい修正を積み重ねてきた。その結果が 5 年にして 5000 という辞書だ。

他者にとってはゴミのような代物だけれども、財産なんだよね。活用などもあるので実質的には 2000 も無いけれど。186KB のデータそのものというよりも、作成する過程における調べものやら各言語での実装など、関連するものが自分の身になり過去になったのだ。新しいことをはじめたり、認識の誤りを改めたりもした。そういったものを象徴するもの。

検索してみれば、古くから似たような変換ページが作成されているのがわかる。すでにあるものを利用せず、自身で作成するというのはどういった動機からなのか?旧仮名に興味を持つ者は協調性の無い人間なのだろうか?「技術や技能を身に付けてしまえば誰も剥すことは出来ないもんな。会社に縛られることもないし」かつて自分が小僧だった頃に親方に言われた言葉。他の人のことは知らんけれども、誰からも奪われることのないものを手にしたかったのかもしれないね(ここで「権力によって剥奪された」とかいいだす連中がいるんだわ。こいつらほんまに……ええかげんにせえよ)。結果だけ欲しければ、まるや君や misima を使えばいいんだよ。

そうやって身に付けたものは役に立っているのか?といえば、立ってね〜んだわ、これがさ。お金になっていない、友人の中で孤立する、旧仮名遣いの文章をすらすら読めるようになったのかといえば、やっぱり違和感が残っている。身につけようとするものは良く考えて選びましょうねってことだよ。

さて、次は何を身につけましょうか。