はじめに
記事の目的
M1 MacのローカルでVSCodeを使ってAzure Functionを作成しようとした際にエラーが発生し、解決策を調べていたが英語のドキュメントしかなかったため、日本語向けに記事を作成します。
M1 MacでのAzure Functions Core Toolsのエラーについて
M1 MacでAzure Functions Core Toolsを実行すると、以下リンクのようなエラーが表示されます。GitHubのIssueには報告されていますが、まだ対応されていないようです。
Microsoft.Azure.WebJobs.Script: Architecture Arm64 is not supported for language python
解決策: Rosetta を利用してAzure Functions Core Toolsを実行する
残念ながら、この対応をしてもVSCodeの拡張機能から起動できません、RosettaのTerminalから起動します。面倒ですが、我慢してください。
Terminalを複製してRosetta起動を作る
ターミナルを以下のように複製します。
Rosetta起動のためのターミナルで、「情報を見る」から「Rosettaを使用して開く」をONに設定します。
Homebrewをインストール
Homebrewは、起動時のアーキテクチャごとに別々にインストールされるそうです。Rosettaを起動してインストールし、必要に応じて自分で使用しているものを追加してください。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
ただし、起動ごとにアーキテクチャを確認して使い分けが必要です。.zshrcを以下のように変更します。
if [ "$(arch)" = "arm64" ]; then
eval "$(/opt/homebrew/bin/brew shellenv)"
else
eval "$(/usr/local/bin/brew shellenv)"
fi
Python(pyenv)とAzure Functions Core Toolsのインストール
Pythonは、直接インストールしても構いませんし、pyenvを使用しても構いません。好みに合わせてインストールしてください。ここではpyenvを使用します。
brew install pyenv
pyenvの場合、起動ごとにアーキテクチャで設定が必要です。以下が設定例です。
if [ "$(arch)" = "arm64" ]; then
eval "$(/opt/homebrew/bin/brew shellenv)"
else
eval "$(/usr/local/bin/brew shellenv)"
#pyenv settings
alias pyinstaller=”$HOME/.pyenv-i386/shims/pyinstaller”
export PYENV_ROOT=~/.pyenv-i386
fi
#pyenv
if command -v pyenv 1>/dev/null 2>&1; then
if [ $(arch) = "i386" ]; then
echo "pyenv i386 settings"
export PATH="$HOME/.pyenv-i386/bin:$PATH"
eval "$(pyenv init -)"
else
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
fi
fi
以下のようにアーキテクチャごとにインストールが可能になります。
Azure Functions Core Toolsのインストール
Rosettaを起動したターミナルでインストールを行います。
brew tap azure/functions
brew install azure-functions-core-tools@4
プロジェクトに移動し、起動します。
func start
なお、Rosettaを起動していないターミナルでは、エラーが発生することに注意してください。
vscodeの設定
VSCodeから使用できないと使いにくいため、設定を追加します。設定画面を開いて、以下の内容を入力します。
"terminal.integrated.profiles.osx": {
"rosetta": {
"path": "arch",
"args": [
"-x86_64",
"zsh",
"-l"
],
"overrideName": true
}
}
これでRosettaが追加されます。
ここから起動してください。
まとめ
- M1 MacでAzure Functions Core Toolsを使う際のエラー解決方法を紹介
- 今後の修正されることが期待されるが、現状ではこの方法が最適解