📚
環境を汚さすにHunspellを動かす(Mac編)
概要
静的なスペルチェックを使ったツールを作りたいと思ったときに、ispell,aspell..系のツールを使おうと思いついた。ただ色々な人やビルドマシンで広くツール化するとしたら環境に依存しない使い方をしたい。
そのためにツールをバイナリ化して配布するような仕組みが簡単にできそうか調べてみた。Hunspellだと簡単にできそうだったのでその方法をメモしておこうと思う
(aspellでもできそうな感じはしたがconfigureの中身を読むのが億劫になってしまい断念)
環境
MacOS想定、CPUは関係ない(はず)
Hunspellをmakeするまで
公式リポジトリの説明どおりにやる
git clone https://github.com/hunspell/hunspell.git
cd hunspell
autoreconf -vfi
./configure
make
これによって、hunspell/src/tools
というディレクトリが生成され実行バイナリができる。tools全体に実行ライブラリがあるので受け渡しする場合は
辞書データのダウンロード
Usageに辞書データのリンクがあるのでダウンロードしてくる
wget -O en_US.aff https://cgit.freedesktop.org/libreoffice/dictionaries/plain/en/en_US.aff?id=a4473e06b56bfe35187e302754f6baaa8d75e54f
wget -O en_US.dic https://cgit.freedesktop.org/libreoffice/dictionaries/plain/en/en_US.dic?id=a4473e06b56bfe35187e302754f6baaa8d75e54f
辞書データ(en_US.aff, en_US.dic)はtoolsに入れておく。
mv en_US.aff hunspell/src/tools
mv en_US.dic hunspell/src/tools
実行サンプル
ローカルの実行バイナリを指定して実行する
$ echo Thiss_is_a_sampre_tekt. | ./hunspell -d ./en_US
Hunspell 1.7.2
& Thiss 10 0: Hiss, T hiss, This, Thins, This s, Thighs, Thirst, Thesis, Theist, Theism
*
*
& sampre 7 11: sample, preamp, Ampere, ampere, empress, semipro, sampan
& tekt. 7 18: test, teat, tent, tektite, Te, tact, Target
Hunspellのよく使いそうなオプション
# CLIでテキストを流し込みたいならパイプでつなげる
$ echo Thiss_is_a_sampre_tekt. | ./hunspell
# 単体で使うと対話的にスペルチェック可能
$ ./hunspell
# ファイルを流し込む場合はリダイレクト
$ ./hunspell < mytext.txt
# 辞書ファイルのパスは-dオプションで変える
$ ./hunspell -d path/to/your/directory
# ユーザ辞書は-pオプション
$ ./hunspell -d ./en_US -p path/to/your/personal/directry
注意点
hunspellのライセンスは LGPL-2.1。再配布や公開する場合はライセンス準拠しているか気をつけて。
余談
素直に make install
するか brew install hunspell
すればいい話かもしれないがツールも辞書ファイルもなるべくマシンにインストールしたくないというところで調べた。Hunspellなら簡単に引数から辞書ファイルを指定できるので思ったよりも簡単だった。
Discussion