「cat」を「かt」と打ちこんでしまっても実行してくれるようなalias集を自動生成するツールを作った。
全角コマンド略してzencomaです。 https://github.com/roronya/zencoma
動機
ブラウザで調べ物をしてターミナルに戻って何か打ち込む、と全角のまま打ち込まれて、いちいち消すのがだるいな〜〜フラストレーション溜まるな〜〜って思いました。それで思いつきで
alias えまcs=emacs
とかしたら大変快適になったので、これ$PATHに通ってるコマンド全部aliasつくってやったら結構快適なんじゃないのと思って、他の人で作ってる人もいなそうだったし、作りました。
実装
pythonで書きました。最初はシェルスクリプトでがーっ変換表みたいなものを作ればいいかなぁと思ったんですが、アルファベットの並びを字句解析しなければひらがなに変換出来ないことに気づき、シェルスクリプトじゃ表現力が足りないから、じゃあlinuxにデフォルトで入ってるスクリプト言語で書こうってなって、pythonならどのディストリもだいたい2.6~7系で統一されてインストールされてるし、別途パッケージもインストールしなくてもビルドインのライブラリも豊富だしってことで決めました。 だいたい1日とちょっとで書きました。字句解析器を作るのが複雑で面白かった。言語処理系の入門書はいつもスペース区切りとかで字句解析できてしまうような構文を採用するから、いろいろ加味しないと字句解析できないのは初めて書きました。
字句解析器は
- 母音で切る
- 母音でも子音でもないその他の記号で切る
- 子音が2つ並んだら1つ目の子音で切って2つ目以降から再帰的に字句解析器に突っ込む
- 同じ子音が2つ並んだら小さいつにする . . .
って感じで条件を吟味しながら作りました。
google-chrome => ['go', 'o', 'g', 'le', '-', 'c', 'h', 'ro', 'me']
gcc => ['g', 'ltsu', 'c']
ここまでできたら
{"a":"あ", "i":"い", "u":"う"・・・}
みたいな変換表を作ってつっこみました。
['go', 'o', 'g', 'le', '-', 'c', 'h', 'ro', 'me'] => ごおgぇーchろめ
['g', 'ltsu', 'c'] => gっc
この変換表を作るにあたってキーボードを叩きまくってたんですが、dha => でゃ とか言う変換があったりしてへぇって感じでした。IMEはibus-mozcです。
使ってみて
結構便利。 macの人や、linuxの人は使ってみてください。 バグあったら教えて欲しいです。 MITライセンスなのでソースコードも自由に利用してもらってかまいません。
- 出版社/メーカー: JustSystems Corporation
- 発売日: 2013/11/28
- メディア: アプリ
- この商品を含むブログ (1件) を見る
- 作者: Mark Lutz,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/02/26
- メディア: 大型本
- 購入: 12人 クリック: 423回
- この商品を含むブログ (127件) を見る