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

つい最近、「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をインストールしました。

https://cran.r-project.org/

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

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

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

https://rmecab.jp/new/install-rmecab/

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

https://techacademy.jp/magazine/5155

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

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

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

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

ところが、

```R
*** 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」を再インストールしようと思いましたが、アンインストールの仕方を知らないことに気づきました。
検索して調べました。

https://www.task-notes.com/entry/20150822/1440212400

動きません。

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

http://rmecab.jp/new/forums/topic/rmecabc%E3%81%AE%E5%8B%95%E4%BD%9C%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/

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

https://qiita.com/hujuu/items/314a64a50875cdabf755

https://tatsukioike.com/uncategorized/00008/#heading2

https://rmecab.jp/new/homebrew%E7%89%88mecab%E3%81%A8rmecab%E3%81%AE%E9%80%A3%E6%90%BA/

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

```
brew install mecab
brew install mecab-ipadic
```

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

##2日目

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

https://www.nooozui.com/entry/20191229/1577558670

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

cd mecab-0.996
make uninstall
make clearn
```

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

https://www.shigemk2.com/entry/20111009/1318178380

https://atmarkit.itmedia.co.jp/ait/articles/1611/28/news036.html

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

cd mecab-0.996
sudo make uninstall
sudo 
make clearn
```

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

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

https://github.com/IshidaMotohiro/RMeCab/issues/13

https://researchmap.jp/blogs/blog_entries/view/75043/915a3e7cb65f7c9fc0fc6a2d2530aa06?frame_id=616670

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

https://docs.github.com/ja/github/creating-cloning-and-archiving-repositories/cloning-a-repository-from-github/cloning-a-repository

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


https://github.com/IshidaMotohiro/RMeCab

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

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

RMeCabは動きませんでした。

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

https://aprico-media.com/posts/1393

試します。

```
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をアンインストールしてやり直すことにしました
アンインストールの仕方を調べました。

https://teratail.com/questions/129183

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

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

https://qiita.com/shigeru0215/items/03bf8aa6a29191d942b2

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

https://qiita.com/kou_bacchus/items/6448608ee03b0a71dcd4

##3日目

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

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

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

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

http://www.iu.a.u-tokyo.ac.jp/kadota/R_install_mac.pdf

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

https://appcleaner.softonic.jp/mac

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

https://cran.r-project.org/

誤ちに気づきました。

>
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.

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

>	<font color="Red">Intel 64-bit build</font>

>	<font color="Blue">Apple silicon arm64 build</font>

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

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

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

https://github.com/IshidaMotohiro/RMeCab/issues/13

* 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起動画面）

```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]]
  名詞 
"うち" 
```

**了**