はじめに
本記事は「SYSTEM Iアドベントカレンダー2 14日目」の記事です。
また、本記事はなにかを成し遂げた、というような内容ではなく、こういうのがあったらいいなぁ、という妄想だけの記事になります。
migemoとは
公式サイト によると、「ローマ字入力から日本語を(インクリメンタルに)検索するための正規表現を生成する」ツール・ライブラリです。
これだけだとちょっと想像がしにくいですね。
実例としては、以下になります。
「fujisan」とローマ字で入力
↓
「富士山|藤さん|不二さん|…」がヒット
migemoの利点は、いちいち日本語入力に切り替えることなく日本語の単語を検索できるところです。
fzfとは
続きまして、fzfです。GitHubのREADME によると「fzf is a general-purpose command-line fuzzy finder.」です。
主にコマンドラインで使われるツールかと思いますが、流れとしては以下のような感じ。
標準出力に、以下のような出力がされたとします。
$ find src -type f -print
src/LICENSE
src/actiontype_string.go
src/algo/algo.go
src/algo/algo_test.go
src/algo/normalize.go
src/ansi.go
src/ansi_test.go
src/cache.go
src/cache_test.go
src/chunklist.go
src/chunklist_test.go
src/constants.go
src/core.go
src/functions.go
src/history.go
src/history_test.go
src/item.go
src/item_test.go
src/matcher.go
src/merger.go
src/merger_test.go
これをfzfにパイプします。
待ち受けてるところで、例えばsua
と入力します。
すると、
なんとなく s、u、a、にマッチする行を絞り込むことができます。
通常は、このようにターミナル上でなにかを絞り込む用途で使われることが多いです。
合・体!
ある日、わたしは思いました。
「migemoのローマ字で日本語の単語を検索できる機能と、fzfのあいまい検索、相性がいいのではないか?」
とはいえCMigemoだと実装されたのが結構古く、辞書ファイルもShift_JISを想定していたりします。
なので現在は、さまざまな言語で再実装されたMigemoファミリーが存在しています。
詳細は「@ogunaさんの記事」をご参照ください。
Goによる実装もありますね。また、fzfも本家はGo言語で実装されています。
と、いうことは、合体できるんじゃね?と思っている次第です。
ただ、わたし自身はGoの経験ちょっとしかないんですよねぇ…。
がんばってGoを読み解くか、別の言語で再実装するか、というところで手が止まっている状況です。
展望
まずはCLIで使えればいいとは思っていますが、一番活きるのが、Webでの入力の際のリスト選択ではないかと考えています。そう、WASMにコンパイルすれば、可能なんではないか、と期待しています。
繰り返しますが
本記事は、こうなったらいいなぁ、を書き殴ったポエムです。私としては作ってみたいとは思いますが、どなたかに先を越されたとしても世の中便利になるならまぁいっかくらいの気持ちでおりますので、われこそはという方はチャレンジしてみてください。