新規MacユーザーがM1MacにPython(Miniforge)を導入する

# はじめに
こんにちは．
Windowsを3年間使っていましたが，当時RやPython(Anaconda)のインストールはよくわかんないまま，先生に言われるがままインストールして，ぼちぼち使ってました．

Macが届いたのですが，大切に使いたくて，しっかり調べて自分で環境構築をやってみようと思いました．

調べたことを自分のためにまとめたいので初めて記事を書きます，よろしくお願いします．

## 購入したMac

* macOS BigSur 11.2.2
* MacBook Air (2021年4月到着)
* メモリ 16GB
* ストレージ 256GB



# Pythonを入れたい
## Pythonを入れたいけど・・・
Windowsを使っていた時，とりあえずAnaconda入れてJupyterを使っていました．
今回は複数バージョンのPythonを使いこなせるようになりたかったので環境を可変できるようにしたいと考えました．
（本を読んでいて実装するもバージョン違いでうまく動かなかった経験や，Python3.8/3.9を使い分けたほうが良さそうと考えたことから．）

以下，Dockerについてガン無視しているのですが，お手伝いしている研究室の方々がDockerで整えている環境でM1のせいでこれができない！？と水面下で困っている様子見ているので，とりあえずDocker考えるのはやめてます．そもそもDockerのことよくわかっていません．

## Pythonを入れてjupyterに辿り着くまでの諸方法

### 過去の経験
【Windowsのとき】
**Anaconda→Jupyter**
★メリット：楽
★デメリット：要らないライブラリまで入っててデカイ

【CatallinaのMacのとき】（お手伝いしている研究室から借りている2014年製のMacbookAir）
**Homebrew→Pythonいれてzsh上でJupyter**
★M1以前のMacではこれが常套手段のはず・・・？

### 今回
【M1のMac】とにかくいっぱい方法がありました．
**Homebrew→python
Homebrew→Anaconda→Jupyter
Homebrew→pyenv→Miniforge→Jupyter
Homebrew→anyenv→pyenv→Miniforge→Jupyter
Anaconda→Jupyter**
★Homebrewを使うとうまくいかないらしい（自分で試していないので詳細不明）
★Anaconda使うとTensorflow動かないらしい（自分で試していないので詳細不明）

**Miniforge→Jupyter**
★これが推奨されているパターンが多かった．これにします．

★とにかく情報が錯綜している．
Python3.9だから〇〇のライブラリが動かない！と言っている記事や質問も見かけたけど，どうやらそれは環境構築時点でなにか間違っているのでは？と思えてきた．
また，Anacondaでぱぱっと環境構築しました〜までしか書かれておらず，どうやらいざデータを動かすぞいというときにトラブルが起こるであろうがそこまで試さずに記事をまとめているっぽい．

# MiniforgeからPython3.8環境を作る
[こちら](https://zenn.dev/osuzuki/articles/380be0f682d72d)のサイトを非常に参考にしました．


https://github.com/conda-forge/miniforge

まずこちらからMiniforge3-MacOSX-arm64のシェルスクリプトをDLします．
この後からはターミナル上の作業です．

ディレクトリの移動

```
cd Downloads
```

先ほどDLしたシェルスクリプトでMiniforgeをインストールします．

```
bash Miniforge3-MacOSX-arm64.sh
```
Enter押したりyesを選択したりしました．

.zshrcを読み込みます．
これでcondaのbase環境が有効化されました．
コマンドの頭に(base)がついています．

```
source ~/.zshrc 
```

ターミナルを上げるたびにcondaのbase環境が出てきてしまうそうなのでデフォルトをfalseにします．

```
conda config --set auto_activate_base false
```

Python3.9環境にはまだしたくなかったのでとりあえずPython3.8環境を立ち上げときます．

```
conda create --name python38 python=3.8
```

このコマンドで立ち上げて

```
conda activate python38
```

このコマンドで停止することができます．

```
conda deactivate
```

activateされたままの状態で，次はこの環境下にjupyter labを入れたいと思います．
今まではjupyter notebookを使っていましたが，labが流行りらしいということと，タブ増えないし見た目もカッコええのでいいかなと考えました．
とりあえず今回のM1Macではしばらくjupyter labの上でPython生活を送りたいと思います．

```
conda install jupyterlab
```

installできたらさっそくお呼びしたいと思います．

```
jupyter lab
```

よろしくお願いします．

lab上のファイルでcondaを叩いて，numpy/pandas/matplotlib/sklearn/tensorflow/kerasも入れました．
各ライブラリで軽く動作確認をし，問題なく動くことがわかりました．今のところはこれで問題なさそうですが何か起こったらまたまとめたいと思います．
これで私のM1MacでのきらきらPythonライフがスタートしました．がんばります！






# [備忘]調べていたときに出てきたが分からなかった言葉まとめ
こんなところからまとめると驚愕されそうだけど本当にわからないので．

### Rosetta
* AppleSiliconが搭載されるにあたり，IntelのCPUからArmのCPUになった．これらはCPUアーキテクチャが異なり，互換性がない．
* このように，互換性のない2種類のCPU(x64/AppleSilicon)でソフトウェアを動せるようにするバイナリをユニバーサルバイナリという．
* よってAppleSiliconに対応していないAppを使う時に，Rosettaがバックグラウンドで常に動作し，使用可能にする．
* 初めて未対応Appを起動した時にダイアログが出て，Rosettaがインストールを促される(私はまだインストールしてません)．
* せっかくM1を買ったのでRosettaを使わない環境構築をしたい！しかしRのインストール時に出てきてしまい中断，ただいま別の方法を捜索中…


### Xcode
* Mac，iPhone，iPadなどのアプリケーション開発で使う統合開発環境．Appleがリリースしている．
* AppStoreからインストールすると11.6GBくらいあるらしく大きい．
* Homebrewのインストールに必要だが，AppStoreからでなくてCommand Line Toolsというのがあれば良いらしい．
* とりあえずこれは入れておくことにしました．Python導入前に入れています．

```
xcode-select --install
```
これをターミナルに入力するだけですぐにできました．開幕は残り2時間24分と出て少し焦りましたが，すぐに減り，結局体感3分で終わりました．




### Homebrew
ビールのアイコン:beer:のやつ．

* Macのアプリケーションやコンポーネント，ライブラリなどの管理をするのパッケージ管理ツール
* ホームブルーと読む(知ってる人の前で間違えたくない)
* これを入れるためにはXcodeが必要
* AppleSiliconにも対応したそうですが，まだ必要を感じなかったので入れていません．もう少し調べます．


# 参考にさせていただいた記事
本当にありがとうございました・・・！助かりました．

Python/Jupyterlabの導入までに参考になりました

* (上でも載せました)[osuzukiさんのZennブログ「M1 MacにPythonインストールして開発環境構築してみた」](https://zenn.dev/osuzuki/articles/380be0f682d72d)
* [9doさんのQiita記事「M1 mac で miniforge をインストールして環境構築」] (https://qiita.com/9bo0218/items/05a0935964633e410c09)
* [damyarouさんのQiita記事「M1搭載MacBook Airが来た！手っ取り早くPython計算環境を作ってみる」](https://qiita.com/damyarou/items/f0e0b4026bdda94df46f)
* [karaage0703さんのZennブログ「M1 Mac+tensorflow-macosでディープラーニングする」]
(https://zenn.dev/karaage0703/articles/0ab9e654cfb0ec#miniforge%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%96%B9%E6%B3%95)
* [hinastoryさんのZennブログ「絶対にRosetta 2を入れてはいけないM1 Mac開発環境構築 2021-2-1版」](https://zenn.dev/hinastory/articles/71983c4ac8aa2d#anyenv%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)

環境構築についてわかりやすくまとまっていて大変参考になりました

* [ganariyaさんのQiita記事「pythonの環境構築戦争にイラストで終止符をどうやら打てない」](https://qiita.com/ganariya/items/1bf870275bad7b5ab506)