前置き
おはこんばんにちは!
Nim言語大好きな人です。
前回、無理やりPHPでMeCabを動かしました。
なので今回は無理やりNimでMeCabを動かしていこうと思います!
MeCabの導入などは、以前の「PHPを使って形態素解析と文章の類似度を出してみる」をご覧くださいませ。
NimとMeCabの連携
import std/osproc let text = "すもももももももものうち" let result = execCmdEx("echo " & text & " | mecab") echo result.output
以上です!!
……と、やってしまうとめっちゃ短いので、ちょっと改造していきます。
エスケープ処理
import std/osproc let text = "すもももももももものうち" let result = execCmdEx("echo " & text & " | mecab") echo result.output
上記のコードだと変数text
に、let text = "hoge; ls -la; exit 0"
みたいな文字を指定されてしまうと、任意のコマンドが実行できてしまいます。
これはよくない!
ということでエスケープします。
import std/osproc, std/strutils let text = escape("hoge; ls -la; exit 0") let result = execCmdEx("echo " & text & " | mecab") echo result.output
↓
hoge 名詞,固有名詞,組織,*,*,*,* ; 名詞,サ変接続,*,*,*,*,* ls 名詞,一般,*,*,*,*,* - 名詞,サ変接続,*,*,*,*,* la 名詞,一般,*,*,*,*,* ; 名詞,サ変接続,*,*,*,*,* exit 名詞,一般,*,*,*,*,* 0 名詞,数,*,*,*,*,* EOS
これでエスケープされました!
では今回はこのあたりで!