はじめに
Laravelはお好きですか?
なんだかんだ結構使っているわけですが、ふとしたことから久々にMeCabを使う必要が出てきたので、普段の開発で使っているSail環境でMeCabを使うにあたって、いろいろいじってみたので、備忘録として書いてみようかと思いました。
やったこと
とりあえずLaravel Sail環境を作る
お決まりのあれ。
composer create-project laravel/laravel mecab
cd mecab
composer require laravel/sail --dev
php artisan sail:install
Sailのdocker関連ファイルを書き出す
こんな感じで設定ファイルを書き出す。
以降は書き出されたファイルだけ編集する。
php artisan sail:publish
appコンテナのDockerfileを編集
何はともあれ、MeCab関連をインストール。
RUN apt-get update\
~(中略)~
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# ここから追加
RUN apt-get update\
&& apt-get install -y mecab libmecab-dev mecab-ipadic-utf8\
&& apt-get clean\
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
おまけにmecab-ipadic-NEologdも入れたい
辞書がイケてないと、求めた状態にならないので、イケてる辞書を入れたい方はこちらも。
https://github.com/neologd/mecab-ipadic-neologd
新語にやたら強かったりして、これがないと色々辛いと思っている・・・。
RUN groupadd --force -g $WWWGROUP sail
RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail
# ここから追加
RUN cd /home/sail\
&& git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git\
&& ./mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n --asuser -a -y -p /home/sail/dic\
&& cd ..\
&& rm -rf mecab-ipadic-neologd
ユーザーが作られた後にやるのがミソ。
インストールのオプションは色々あるけど、今回は全部盛りのために-aをつけてます。
正直、-aはなくても良いかも。用途次第でよしなにどうぞ。
sailを起動
PATH通してあるので、そのまま打てるけど、通してない方はドキュメントをどうぞ。
こんな感じでバックグラウンド起動。
sail up -d
辞書のダウンロードやら何やらに時間がかかかるはず。
お茶でも飲んで待ちましょう。
とりあえず使ってみる
今回、php-mecabを使っていないのです。
permission deniedにいじめられすぎて、ちょっと折れました。
あと、権限まわりの設定色々追加しすぎると、元のSailからかけ離れるのも嫌だったのも言い訳にしたい・・・。
とりあえず今回はこちらのお世話に。
"require": {
"youaoi/php-mecab": "dev-master"
},
sail composer update
としておけば良いでしょう。
動けば良いのである
use Youaoi\MeCab\MeCab;
# 今回の手順でmecab-ipadic-NEologdを入れた場合はこれを追加。
# .envに書くとかすると、本番と開発で分けられたりして良いと思う。
MeCab::setDefaults([
'dictionaryDir' => '/home/sail/dic',
]);
Route::get('/', function () {
$mecab = new MeCab();
$text = "吾輩わがはいは猫である。名前はまだ無い。";
dd($mecab->parse($text));
});
もう何も考えず、ルーティング直。動くかどうか見るだけだし。
localhostにアクセスして、、、
こんな感じで表示できたら動いてる。ってことで。
あとはcontrollerから使うなりなんなりできるはず。
さいごに
ほ、本当にこれでいいのだろうか・・・。
もっといい方法ありそうなんだよなあ。と思っています。