M1 MacにPyxelを導入する

#実行環境
-Macbook Air (M1, 2020)
-メモリ 16GB
-ストレージ 1TB

#失敗例
###とりあえず公式README通りにインストールしてみる
[pyxel/README.ja.md at main · kitao/pyxel](https://github.com/kitao/pyxel/blob/main/README.ja.md#mac)

```
brew install python3 gcc sdl2 sdl2_image gifsicle
```
ターミナルを再起動後

```
pip3 install -U pyxel
```
ターミナルを再起動後

```
mkdir pyxel_sample
cd ./pyxel_sample
install_pyxel_examples
```
###なぜかうまく動作しない
ターミナルの出力

```
user@MACBOOK-AIR pyxel_sample % install_pyxel_examples
Traceback (most recent call last):
  File "/opt/homebrew/bin/install_pyxel_examples", line 5, in <module>
    from pyxel.examples import install
  File "/opt/homebrew/lib/python3.9/site-packages/pyxel/__init__.py", line 10, in <module>
    from . import core  # type: ignore
  File "/opt/homebrew/lib/python3.9/site-packages/pyxel/core/__init__.py", line 42, in <module>
    _lib = _load_library()
  File "/opt/homebrew/lib/python3.9/site-packages/pyxel/core/__init__.py", line 39, in _load_library
    return cdll.LoadLibrary(lib_path)
  File "/opt/homebrew/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ctypes/__init__.py", line 452, in LoadLibrary
    return self._dlltype(name)
  File "/opt/homebrew/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ctypes/__init__.py", line 374, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: dlopen(/opt/homebrew/lib/python3.9/site-packages/pyxel/core/bin/macos/libpyxelcore.dylib, 6): no suitable image found.  Did find:
	/opt/homebrew/lib/python3.9/site-packages/pyxel/core/bin/macos/libpyxelcore.dylib: mach-o, but wrong architecture
	/opt/homebrew/lib/python3.9/site-packages/pyxel/core/bin/macos/libpyxelcore.dylib: mach-o, but wrong architecture
```
###mach-o, but wrong architectureってなんやねん
どうやらPyxelライブラリがx86向けにビルドされていて、M1チップのアーキテクチャであるarm64に対応していないっぽい。
#どうすれば動くか
###Rosetta 2を使ったIntel環境下でやってみた
結果：変化なし
###miniforgeを使ってやってみた
下記サイト参照
[Apple Silicon(M1) MacにpygameとPyxelをインストール](https://zenn.dev/karaage0703/articles/5e77eb77571727)
結果：変化なし
このサイトのコメント欄にも同じように実行できない人がいた。
###ソースコードからビルドしてみた
結果：いろいろあったけど成功！
というわけで、その手順を説明する。
#Pyxelをソースコードからビルドしてインストールする
公式ドキュメント
[pyxel/README.ja.md at main · kitao/pyxel](https://github.com/kitao/pyxel/blob/main/README.ja.md#%E3%81%9D%E3%81%AE%E4%BB%96%E3%81%AE%E7%92%B0%E5%A2%83)

ただし、私の環境ではこの通りに行ってもエラーが出たので、コードを少し書き換える必要があった。(sedコマンド)

```
brew install python3 gcc sdl2 sdl2_image gifsicle
```
ターミナルを再起動後

```
git clone https://github.com/kitao/pyxel.git
cd pyxel
sed -i -e "/macos)$/,/endif/ s/CC = g++-10/CC = g++-11/" ./pyxel/core/Makefile
make -C pyxel/core clean all
pip3 install .
```

ターミナルを再起動後

```
mkdir pyxel_sample
cd ./pyxel_sample
install_pyxel_examples
cd pyxel_examples
python3 ./01_hello_pyxel.py
```

これでPyxelのサンプルコードを実行できるようになった。

###追記(2021/10/13)
conda環境を使用しているとうまくインストールできないようです。
ターミナルを開いたら最初にconda deactivateを実行してください。
インストールできた後も、pyxelを使用する前にはconda deactivateを実行することをお勧めします。
筆者の環境ではcondaは導入されていなかったので干渉しませんでした。

#まとめ
M1チップに対応していないライブラリの存在もあって、プログラミング学習にM1 Macは正直向いていないと思う。今回は上手くいったがいつも解決できるとは限らないので、トラブルに自力で対応できる上級者の方はともかく、これからプログラミングを始める人にはWindowsであれMacであれ、Intel製CPU搭載機をおすすめしたい。そしてプログラミングが授業として存在する大学の生協で、M1 Macが堂々と推奨仕様モデルとして紹介されていることに納得いかない気持ちを抱いた。