LoginSignup
6
7

More than 1 year has passed since last update.

M1チップ搭載MacBook AirでRMeCabをインストール

Last updated at Posted at 2021-08-22

つい最近、「RMeCab」を以下の環境で動くように設定できました。

  • MacBook Air M1 : macOS Big Sur 11.4
  • mecab: 0.996
  • mecab-ipadic: 2.7.0-20070801
  • R 4.1.1 GUI 1.77 Big Sur ARM build (7985)
  • RStudio: Version 1.4.1717

自分の知識不足と不注意から、ここに至るまでに3日間かかりました。

1日目

現在主に使っているMacBook Proと同じ環境をMacBook Airでも構築するために、Rをインストールしました。

パッケージ「dplyr」[magrittr]「stringr」「ggplot2」など入れました。

「RMeCab」をインストールする前に、「mecab」を入れます。
しかし、インストールするのは数年ぶりなので、色々忘れていました。
「mecabって何?」という状態から始めました。

以下を参考にソースからインストールします。
辞書もインストールします。

Macのターミナルを使うのは5年ぶりぐらいなので、立ち上げ方から思い出す必要があり、以下サイトを参考にしました。

ターミナルからmecabは正常に動きます。

% mecab
すもももももももものうち
すもも   名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも  名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも  名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち  名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

「RMeCab」をインストールし、動作を確認します。

library(RMeCab)
res <- RMeCabC("すもももももももものうち")

ところが、

*** caught segfault ***
address 0xffffffffffffffff, cause memory not mapped

Traceback:
1: RMeCabC(すもももももももものうち)

Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
Exception:/System/Volumes/Data/SWE/macOS/BuildRoots/e90674e518/Library/Caches/com.apple.xbs/Sources/Mecabra/Mecabra-929.10/src/tokenizer/tagger.cpp(110) [load_dictionary_resource(param)] /System/Volumes/Data/SWE/macOS/BuildRoots/e90674e518/Library/Caches/com.apple.xbs/Sources/Mecabra/Mecabra-929.10/src/param.cpp(130) [ifs] no such file or directory: ./dicrc
Selection:

と、「Rを閉じる」いうメッセージが出ました。
ここから試行錯誤の始まりです。

「RMeCab」を再インストールしようと思いましたが、アンインストールの仕方を知らないことに気づきました。
検索して調べました。

動きません。

「address 0xffffffffffffffff, cause ‘memory not mapped’」で検索したところ、RMeCabのフォーラムでこのメッセージに関する投稿を見つけました。

解決に近づいた、と思いました。
投稿を読んだところ、「MeCabをHomebrewでインストール」という文章に目がとまリました。
「Homebrewとは何だ?」となりました。
調べます。

もしかしたら、最近はこの方式でインストールするのかと考え、ターミナル上で実行します。

brew install mecab
brew install mecab-ipadic

しかし、RMeCabは動きません。
先ほど調べたサイトを読み直したところ、最初に行った「mecabのインストール」と「Homebrewを使ったインストール」は「別物」と考えるべきだ、ということがわかりました。
となると、「最初に行ったmecabのアンインストールをした方がいいのだろう」となります。
しかし、アンインストールの仕方がわかりません。

2日目

ターミナルからのアンインストールの方法を調べました。

cd mecab-ipadic-2.7.0-20070801
make uninstall
make clearn

cd mecab-0.996
make uninstall
make clearn

うまくいきません。
再検索しました。

cd mecab-ipadic-2.7.0-20070801
sudo make uninstall
sudo make clearn

cd mecab-0.996
sudo make uninstall
sudo 
make clearn

アンインストールできたようです。
でも変わらずRMeCabは動きません。

先月検索して知ったフォーラムの投稿で知ったサイトと、別途検索して見つけたサイトを調べ始めます。

RMeCabのソースファイルを取得することにしました。
色々調べた結果、色々と調べ、「ソースファイルの取得」=「クローン作成」ということに辿り着きました。

以下サイトを参考からソースをダウンロードしました。

先ほどのサイトで記載のあったRMeCab/src/Makevars内の記述を変更しようとしましたが、検索して調べた内容と違っていたので、とりあえず変更しないままインストールします(その前にアンインストールしています)。

install.packages("~/Downloads/mecab-0.996.tar.gz", repos=NULL, type="source")

RMeCabは動きませんでした。

辞書ライブラリへのシンボリックリンクの変更も試みました。
シンボリックリンクについても検索して意味を調べました。

試します。

sudo ln -s /opt/homebrew/Cellar/mecab/0.996/lib/libmecab.2.dylib /usr/local/lib/libmecab.dylib
sudo mkdir /usr/local/lib/mecab
sudo mkdir /usr/local/lib/mecab/dic
sudo ln -s  /opt/homebrew/Cellar/mecab-ipadic/2.7.0-20070801/lib/mecab/dic/ipadic /usr/local/lib/mecab/dic/ipadic

うまくいかない場合はシンボリックリンクを外したりしました。

sudo unlink /usr/local/lib/libmecab.dylib
sudo unlink /usr/local/lib/mecab/dic/ipadic
sudo rmdir  /usr/local/lib/mecab/dic
sudo rmdir  /usr/local/lib/mecab

RMeCabは動きません。

Homebrewでインストールしたmcabをアンインストールしてやり直すことにしました
アンインストールの仕方を調べました。

上記サイトでは「mecabrc」という環境設定ファイルについて言及していますが、ここをいじるのは怖かったのでままにしました。

(何度目になるかわかりませんが)ソースからmecabをインストールします。
様々な組み合わせを試した中、たまたま見つけた以下のサイトで知った辞書の文字コード変換も試しました。

上記サイトで使われている「nkf」コマンドも知りませんので、調べました。

3日目

RMeCabが動かないまま迎えた3日目。
今まで試したことを整理し、次にやるべきことを考えることにしました。

  • 形態素解析モジュール「mecab」と「辞書」をMacに入れる
  • それらを「R」から使えるようにするのが「RMeCab」
  • 「mecab」と「辞書」をインストールする方法は2種類
    • ソースからインストール
    • Homebrewからインストール
  • それぞれ「RMeCab」または「mecab」が動かないケースはネットで見つかる
  • 解決している人もいる
  • ネットで調べた例との違いを比べると、主に異なるのは「R」のバージョン

ということから、「解決しているケースと同じバージョンのRを使う」ことにしました。

Rのアンインストールの方法を調べることにしました。
Launchpadでは「x」(バツ)マークが出ないのでできませんでした。

「AppCleaner」というツールを使うことにしました。

アンインストール完了です。
「CRAN 」(Comprehensive R Archive Network)のサイトに戻りました。

誤ちに気づきました。

R-4.1.1.pkg (notarized and signed)
SHA1-hash: d0eed7d0755bc80911acb616508d41e1396f810e
(ca. 86MB)
R 4.1.1 binary for macOS 10.13 (High Sierra) and higher, Intel 64-bit build, signed and notarized package.

4.1.1はこれまで使っていたバージョンです。
スクロールして下の画面に移りました。

R-4.1.1-arm64.pkg (notarized and signed)
SHA1-hash: e58f4b78f9e4d347a12cc9160ee69d3d23e69f3b
(ca. 87MB)
R 4.1.1 binary for macOS 11 (Big Sur) and higher, Apple silicon arm64 build, signed and notarized package.

それぞれ、以下のように記載されています。

Intel 64-bit build

Apple silicon arm64 build

M1はIntel系ではなかったなと、
「ARM」というキーワードに覚えがあるな、と。
「M1 MacBook Air」と「RMeCab」を使うには、知識不足、加えて技術者の視点で見ていなかったな、と。

無事「RMeCab」が動きました。

こちらの手順に沿ってインストールしました。
念のためmecabと辞書のアンインストールコマンドを実行しておきます。

  • MacBook Air M1 : macOS Big Sur 11.4
  • mecab: 0.996
  • mecab-ipadic: 2.7.0-20070801
  • R 4.1.1 GUI 1.77 Big Sur ARM build (7985)
  • RStudio: Version 1.4.1717

(Macターミナル)

brew uninstall mecab-ipadic
brew uninstall mecab

cd ~/Downloads

cd mecab-0.996
sudo make uninstall
sudo make clean

cd mecab-ipadic-2.7.0-20070801
sudo make uninstall
sudo make clean

再インストールです(引き続きMacターミナル)。

xcode-select --install

cd ~/Downloads
curl -fsSL 'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE'  -o mecab-0.996.tar.gz
tar xf mecab-0.996.tar.gz
cd mecab-0.996
./configure --with-charset=utf8
make
sudo make install

cd ~/Downloads
curl -fsSL 'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM'  -o mecab-ipadic-2.7.0-20070801.tar.gz
tar zvxf mecab-ipadic-2.7.0-20070801.tar.gz
tar xf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf8
make
sudo make install

mecab
すもももももももものうち
すもも   名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも  名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも  名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち  名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

(Rダウンロード)

R-4.1.1-arm64.pkg 実行

念のためRMeCabアンインストール実行。
そして再インストール。

(R起動画面)

remove.packages("RMeCab")

install.packages("RMeCab", repos = "https://rmecab.jp/R", type = "source")

library(RMeCab)
res <- RMeCabC("すもももももももものうち")
res
[[1]]
    名詞 
"すもも" 

[[2]]
助詞 
"も" 

[[3]]
  名詞 
"もも" 

[[4]]
助詞 
"も" 

[[5]]
  名詞 
"もも" 

[[6]]
助詞 
"の" 

[[7]]
  名詞 
"うち" 

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7