概要
形態素解析器に辞書を同梱するために,辞書構造を go のソースコードに変換して埋め込んでいたのですが,ビルド時間が15〜30分,バイナリサイズも105MBとちょっと問題がありました.そこで,辞書データを一度ファイルに落として,go-bindata を利用してコードに埋め込むことで,ビルド時間も数秒,バイナリサイズも16MBと劇的に改善されました.
変更点
- gob を利用して辞書データをファイルに出力
- go-bindata で出力された辞書をソースコード化
- 初期化時に辞書データをinit関数でロード
修正差分:https://github.com/ikawaha/kagome/pull/2/files
ソース&インストール
% go get github.com/ikawaha/kagome/...
うれしいこと
- これまでビルド時間が長すぎて drone.io とか travis-ci とかでテスト回そうとするとテストする前にビルドで失敗してしまっていたのがパスできそう
- すぎゃーん さんのGoで全裸『全裸で形態素解析をするスクリプト』がビルドでこけなくなる(と思う).全力で全裸!
gob についてのメモ
gob は go のデータをシリアライズしたりするのに利用できる package です.特に何も考えることなく任意のデータをバイト列に落とし込めるのですが,構造体に private なメンバーがあるとちょっと面倒です.今回は面倒だったので,private なメンバーを public にして対応してしまいました.この辺のやりかたを近いうちにまとめておきたい.忘れないうちに・・・.