ロードできない RMeCab を無理やりロードしてみた

RMeCab を使おうとしたらハマったのでメモを書き残しておきます。

今時 Snow Leopard を使ってる人なんていないと思いますが、
http://web.ias.tokushima-u.ac.jp/linguistik/snow.html から R-2.15.1 に対応するアーカイブをダウンロードしてインストールするとします。

$ wget http://web.ias.tokushima-u.ac.jp/linguistik/RMeCab_0.9905.tgz
$ R CMD install RMeCab_0.9905.tgz
* installing to library ‘/usr/local/Cellar/r/2.15.3/R.framework/Versions/2.15/Resources/library’
* installing *binary* package ‘RMeCab’ ...

* DONE (RMeCab)

パスを見て気付いた人もいると思いますが、R は Homebrew でインストールしたやつです。
インストール時に特別なオプションは付けていません。
sessionInfo とかは次のような感じです。

> sessionInfo()
R version 2.15.3 (2013-03-01)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] ja_JP.UTF-8/ja_JP.UTF-8/ja_JP.UTF-8/C/ja_JP.UTF-8/ja_JP.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base
> unlist(.Platform)
   OS.type   file.sep dynlib.ext        GUI     endian    pkgType   path.sep
    "unix"        "/"      ".so"      "X11"   "little"   "source"        ":"
    r_arch
        ""

っで、RMeCab をロードしようとすると次のようなエラーになったんです。

> library(RMeCab)
Error: package RMeCab was built for universal-apple-darwin9.8.0

よくわからなかったので次のようなおまじないをしてみました。

> .Platform.bak <- .Platform
> .Platform$r_arch <- "x86_64"
> unlockBinding(".Platform", getNamespace("base"))
> assign(".Platform", .Platform, envir = getNamespace("base"))

すると何事もなかったようにロードできちゃいました。

> library(RMeCab)
> unlist(RMeCabC("すもももももももものうち"))
    名詞     助詞     名詞     助詞     名詞     助詞     名詞
"すもも"     "も"   "もも"     "も"   "もも"     "の"   "うち"

ロードした後は .Platform の値を元に戻しておくと良いかもしれないですね。

> assign(".Platform", .Platform.bak, envir = getNamespace("base"))
> lockBinding(".Platform", getNamespace("base"))

仕組みについては全然理解できてないのでご利用は自己責任でお願いします。