MacBookAirで少し古めのQMK環境を整備する

# 概要
新しくmacを買い替えたので少し古めのqmk環境を整備する

使用キーボードはaspara_kb
おそらく最新のqmkには対応してなくて、2年前にforkされたのものがあり、それに合わせて環境を整備する

## 環境
macbook Air M1からmacbook Air M3に移行
新機種はまっさらな状態

#

## 前書き
- 2024/8/19の記事です。よって変更が入っている可能性はあります
- 私はQMKにあまり詳しくありません、内容は間違っている可能性があります、文鎮化しても責任は取りません
- gitにも詳しくないです。よって認識が間違っている可能性があります
- `aspara_kb`という名前のキーボードを使っています
---
qmk firmwareで 以下のようなコマンドでhexファイルを作っている人向けです
```sh
qmk compile -kb sphhjp/rev1 -km (キーマップ名)
```
さらにはgithubでforkされたものが用意されているkb向けです(多分？）
例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393556/f5f73a8e-042a-b4f9-ef0b-e15d8b9f67ea.png)
# 記事構成
ハマったことを順番に書いて、最後に成功した手順を書きます
# ハマったこと、パターン１
https://docs.qmk.fm/newbs_getting_started
公式通りやればいいじゃんと思って
```shell:環境の整備,ターミナル(zsh)で実行
# brew のインストールをする
$ cd ~
$ brew install qmk
$ qmk setup
# ホームディレクトリにqmk_fimfareが作成される
# qmk_firmware/keyboardにasparaがないため、元々使っていたフォルダをGUIから操作して配備
$ cd qmk_firmware
$ qmk compile -kb aspara -km (キーマップ名)
```
エラー文

```shell:エラー文の抜粋
Compiling: keyboards/aspara/aspara_ver1/aspara_ver1.c                                              In file included from <command-line>:
./keyboards/aspara/aspara_ver1/config.h:20:10: fatal error: config_common.h: No such file or directory
   20 | #include "config_common.h"
      |          ^~~~~~~~~~~~~~~~~
```
`config_common.h`が見つからないよ、と怒られる
もともとは`~/qmk_firmware/quantum/config_common.h`と配置されていたようだが、
アップデートで非推奨であり、消されたようだ
(↑discordの公式qmkサポートで検索して見つけた内容、どっかいった)


# ハマったこと、パターン2
confing_common.hが非推奨ってことはの`asparaのソース`が古くて、他の部分が新しいからうまく動かないのかなと思い、旧PCで使っていた`qmk_firmware`をそのまま持ってきた
```shell:環境の整備,ターミナル(zsh)で実行
$ rm -rf qmk_firmware #　さっき作成したのを削除
$ brew uninstall qmk
$ brew install qmk/qmk/qmk # 念の為
# GUI から qmk_firmwareのフォルダごとホームディレクトリに配置
$ qmk compile -kb aspara -km (キーマップ名)
```
失敗(エラー文、紛失)
真偽は不明だが、ただフォルダをコピーすればいいってもんじゃないらしい(なんか紐付けとかがどっかで行われるのかな。。。)


# ハマったこと、パターン３
https://docs.qmk.fm/newbs_getting_started
公式を良く読んだらforkしたgithubのやつはこういうふうな指定ができるとあった。
```shell:公式ドキュメントより
$ qmk setup <github_username>/qmk_firmware
```
とあった。
画像：aspara_kb作者の用意しているgithubがあるので
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393556/f5f73a8e-042a-b4f9-ef0b-e15d8b9f67ea.png)

```shell:環境の整備,ターミナル(zsh)で実行
$ rm -rf qmk_firmware #　さっき作成したのを削除
$ brew uninstall qmk
$ brew install qmk　 # 念の為
$ qmk setup 7-rate/qmk_firmware　 #  <github_username>を指定とあるのでaspara_kbでは7-rateを指定
$ cd qmk_fimware
$ qmk compile -kb aspara -km (キーマップ名)
```

```shell:エラー文
Ψ Added https://github.com/qmk/qmk_firmware as remote upstream.
Error: %s: %s ('ImportError', ImportError("cannot import name 'format_ansi' from 'milc' (/Users/PCの名前/Library/Python/3.9/lib/python/site-packages/milc/__init__.py)"))
Traceback (most recent call last):
  File "/Users/PCの名前/Library/Python/3.9/lib/python/site-packages/qmk_cli/script_qmk.py", line 76, in main
    import qmk.cli  # noqa
  File "/Users/PCの名前/qmk_firmware/lib/python/qmk/cli/__init__.py", line 13, in <module>
    from . import doctor
  File "/Users/PCの名前/qmk_firmware/lib/python/qmk/cli/doctor.py", line 13, in <module>
    from qmk.questions import yesno
  File "/Users/PCの名前/qmk_firmware/lib/python/qmk/questions.py", line 4, in <module>
    from milc import cli, format_ansi
ImportError: cannot import name 'format_ansi' from 'milc' (/Users/PCの名前/Library/Python/3.9/lib/python/site-packages/milc/__init__.py)
```
正直よくわからないけど古すぎて`qmk setup xxxx`みたいな形式に対応してないのかなって感じた

# ハマったこと　外伝
qmkのバージョンを下げる
```
pip install qmk==0.4.0
```
無駄だった
あとqmkは qmk cilとqmk_firmwareがあって
qmk --versionで調べられるのはqmk cilのバージョン
qmk_firmwareはqmk_firmwareのフォルダに紐づいているみたい
(だからqmkがバージョン違いだよ、ってみても　qmk cilのバージョンを下げても多分意味ない)


# 成功例
削除などもまとめて書く、
本来やるべき手順は一番下にもう一回書く

```shell:環境の整備,ターミナル(zsh)で実行
$ rm -rf qmk_firmware #　さっき作成したのを削除
$ brew uninstall qmk
$ brew install qmk　 # 念の為
$ git clone https://github.com/7-rate/qmk_firmware.git
$ cd qmk_fimware
$ git checkout aspara_kb #ブランチ移動しないとasparaが無かったから移動、よくわかってない
$ make git-submodule #いるらしい（ないとエラーだった)
$ qmk compile -kb aspara -km default
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393556/f5f73a8e-042a-b4f9-ef0b-e15d8b9f67ea.png)

成功


# 本来やるべきだったこと
次乗り換える時はここの手順だけ見てやる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393556/f5f73a8e-042a-b4f9-ef0b-e15d8b9f67ea.png)

```shell:環境の整備,ターミナル(zsh)で実行
# brewのインストール、やり方はgoogleで調べる
$ brew --version
Homebrew 4.3.16

$ cd ~
$ brew install qmk/qmk/qmk
$ git clone https://github.com/7-rate/qmk_firmware.git
$ cd qmk_fimware
$ git checkout aspara_kb #ブランチ移動しないとasparaが無かったから移動、よくわかってない
$ make git-submodule #いるらしい（ないとエラーだった)
# GUIで操作：カスタマイズしたもので、qmk_firmware/keyboard/asparaを上書きする
$ qmk compile -kb aspara/aspara_ver1 -km myset #ここは構成に応じて変える
```

```md:構成の参考
qmk_firmware
└─keybords
    　　└─apsara/aspara_ver1
                　　　　├─rules.mk
                　　　　├─config.h
                　　　　├─keymaps/myset/keymap.c
                　　　　└─(省略)
------------------------------------------------
$ qmk compile -kb aspara/aspara_ver1 -km myset
⇧を実行し、生成されたhexファイルをqmk tool　boxを使って本体に書き込む
```

```shell:参考情報
$ brew --version 
Homebrew 4.3.16
$ qmk --version
1.1.5
$ cd qmk_firmware
$ git branch --contains
* aspara_kb
```

# 感想など

まずハマったらqmkのdiscordを検索するのが良い
ChatGPTに聞くのもあり、(真偽は確かめる)

- qmk_firmware周りは更新するたびにエラーで動かなくなっている気がするので固定の環境を用意した方がいいかもしれない
     - アップデートしないといけない機能は使うことがなく、配置やレイヤー、マクロをいじる程度
     - aspara_kbもqmkアップデートを追っている様子もないので限界がある
         - そもそもqmk自分で動かすことをあまり想定していないのだろう

候補としてはVPSで環境を維持しつづけるかとか、dockerで環境をそのまま保存する、とかなのかな
dockerでそういうことができるのかはよくわからないけど
なんかいい方法あったら教えてください