📚

環境を汚さすにHunspellを動かす(Mac編)

2024/06/17に公開

概要

静的なスペルチェックを使ったツールを作りたいと思ったときに、ispell,aspell..系のツールを使おうと思いついた。ただ色々な人やビルドマシンで広くツール化するとしたら環境に依存しない使い方をしたい。

そのためにツールをバイナリ化して配布するような仕組みが簡単にできそうか調べてみた。Hunspellだと簡単にできそうだったのでその方法をメモしておこうと思う

(aspellでもできそうな感じはしたがconfigureの中身を読むのが億劫になってしまい断念)

環境

MacOS想定、CPUは関係ない(はず)

Hunspellをmakeするまで

公式リポジトリの説明どおりにやる
https://github.com/hunspell/hunspell

git clone https://github.com/hunspell/hunspell.git
cd hunspell
autoreconf -vfi
./configure
make

これによって、hunspell/src/toolsというディレクトリが生成され実行バイナリができる。tools全体に実行ライブラリがあるので受け渡しする場合は

辞書データのダウンロード

Usageに辞書データのリンクがあるのでダウンロードしてくる
https://github.com/hunspell/hunspell?tab=readme-ov-file#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