M1 MacでFlutterの開発環境を構築する

今までWindowsでFlutterを利用してアプリを開発していましたが、先日Mac mini M1を購入しました。

そこで、このMacにFlutterの開発環境を構築しました。

しかし、途中途中でエラーが発生したので、その解決方法を中心に、MacでのFlutterの開発環境の構築方法をまとめたいと思います。

環境

  • Mac mini M1
  • macOS Big Sur 11.6.1
  • シェル:zsh

Flutter SDKのインストール

Flutter SDKを以下のサイトからインストールします。

Get the Flutter SDKにある~.zipをクリックしてダウンロードしましょう。

次に、Finderでホームへ移動し(Shift+Command+H)、そこにDeveloperフォルダを作成します(Shift+Command+N)。

フォルダを作成したら、解凍されたflutterフォルダをDeveloperフォルダに移動させます。

Flutterのパスを通す

flutterコマンドを実行できるようにするために、パスを通します。

まず、ターミナルを開きます(Launchpad内にあると思います)。

ターミナルを開いたら、vimというエディターを立ち上げるために、以下のコマンドを入力しEnterを押します。

vim .zshrc

これで、vimが起動した状態になるので、キーボードのiを押して、INSERTモードに移行します。

次に、以下のようにflutter/binのパスを入力します。

export PATH="$PATH:(flutterフォルダのパス)/bin"

(flutterフォルダのパス)としているところは、Finderのflutterフォルダをターミナルにドラッグすると、パスが自動的に入力されます。

export PATH="$PATH:/Users/ユーザー名/Developer/flutter/bin"
のようにしてください。

入力したら、Enterキーを押し、次にEscキーを押します。

これにより、INSERTモードが終了します。

そしたら、

:wq

と入力してEnterキーを押してください。

これにより、内容が上書き保存され、vimが終了します。

これでflutterのパスを通すことができました。

パスが通ったか確認するには、ターミナルを再起動して、以下のコマンドを走らせます。

which flutter

/Users/ユーザーフォルダ/Developer/flutter/bin/flutterと表示されればパスが通っています。

Android Studioのインストール

次に、Android Studioをインストールします。

インストールは通常以下のページから行います。

しかし、現在のバージョン(2020.3.1 for Mac)では、Intel chip版とApple chip版ともに、Failed to determine required packagesやAn error occurred while trying to compute required packagesというエラーが発生し、SDKがインストールされませんでした。

そのため、以下のページから、過去のバージョン(私はAndroid Studio 4.1.3)をインストールしました。

インストールしたら、右下のConfigureからPluginsを選択し、DartとFlutterをインストールします。

DartとFlutterプラグインをインストールしたあと、Android Studioを再起動します。

再起動したら、Create New Flutter Projectから、新規プロジェクトをテストとして作ります。

Create New Flutter Projectをクリックしたら、Flutter Applicationを選択しNext。

Project nameに任意のプロジェクト名を入力してください(私は、flutter_appにしました)。

Flutter SDK pathが設定されていない場合は、先程インストールしたflutterフォルダ(/Users/ユーザー名/Developer/flutter)を選択しましょう。

Nextをクリックし、Finishをクリックします。

すると、プロジェクトが開きます。

エミュレーター設定

エミュレーター設定のために、右上の方にあるAVD Managerのアイコンをクリックします。

そしたら、Create Virtual Deviceをクリックします。

まずハードウェアを選択します。私は、Pixel 4にしました。

次に、システムイメージを選択します。

ここで、RecommendにあったAPI30(Target: Android 11.0 (Google Play))を選択して設定したのですが、その後エミュレーターを起動したら、エラーが出てエミュレーターが起動しませんでした。

M1 Macの場合は、Other ImagesにあるABI: arm64-v8aとなっているものを選択しDownloadをクリックしましょう(私は、TargetがAndroid 11.0 (Google APIs)となっているものを選択しました)。

ダウンロードが終わったら、Nextを押します。

Verify Configurationが表示されますが、そのままFinishを押しました。

そしたら、AVD Managerに設定したハードウェアが追加されているので、Actions欄にある再生ボタンを押します。

すると、エミュレーターが起動します。

(私の場合、Unable to local AVDというエラーが表示されましたが、エミュレーターはちゃんと起動したのでそのままにしています。)

エミュレーターが起動したら、Android Studioのデバッグボタンを押して、ビルドが完了しエミュレーターにサンプルアプリが反映されることを確認してください。

これで、Androidエミュレーターの設定は完了です。

Xcodeのインストール

iOSアプリをリリースしたり、iOSのシミュレーターを利用するために、Xcodeをインストールします。

XcodeはApp Storeから入手します。

アプリのサイズが12GBほどあるので、インストールには時間がかかると思います。

私の場合、ダウンロードにも時間がかかりましたが、ダウンロード後「インストール中」という表示がしばらく続きました(数時間?)。途中で再起動もしました(インストール中のため再起動できないこともあります)。

諦めて他のことをしてたらいつの間にかインストール中という表示がなくなっていました。

一晩待ってみるというのもありだと思います。

シミュレーター起動確認

Xcodeのインストールが終わったら、iOSシミュレーターの起動確認をします。

Android Studioに戻り、<no device selected>のところからOpen iOS Simulatorを選択。

すると、iOSシミュレーターが立ち上がるので、先程と同様にデバッグボタンを押して、ビルドが完了しアプリが反映されることを確認してください。

flutter doctor

とりあえず、一通りの環境構築は終えました。

が、ここできちんと環境構築できてるか確認します。

確認するには、ターミナルに以下のコードを入力し、Enterを押します。

flutter doctor

すると、Doctor summaryが表示され、正常なものにはチェックマークが、一部エラーがあるものは!マークが、インストールされてないものにはバツマークが表示されます。

チェックマークがついていないものについては、どう解消するか記載されていると思うので、基本的にそれに従います。

この記事の手順を踏んだ方は、おそらくAndroid toolchainとXcodeのところに!マークがついていると思います。

以下その解消方法を説明します。

Android toolchain

Android toolchainのところに!マークがついている場合、指示通り以下のコードをターミナルで走らせます。

flutter doctor --android-licenses

すると、Review license that has not been accepted (y/N)?と表示されるので、yを入力してEnterを押します(これを何回か繰り返すと思います)。

これが終了したら、もう一度flutter doctorを走らせて、Android toolchainの!マークがチェックマークになっていることを確認しましょう。

CocoaPods

Xcodeのところに!マークがついており、CocoaPods not installed. と表示されていると思います。

これは、CocoaPodsというライブラリ管理ツールがインストールされていないことを示します。

このCocoaPodsをインストールしていないと、iOSシミュレーターを利用した際、アプリがシミュレーターに反映されずエラーが出ることがあります。

(私は、はじめこのCocoaPodsをインストールせずに進めようとしたのですが、すでにAndroidでリリースしているアプリをiOSシミュレーターで立ち上げようとすると、CocoaPodsをインストールするように求められ、アプリをシミュレーターで起動できませんでした。)

flutter doctorを走らせてCocoaPods not installed.と記述してあるところのあとをみると、To install: sudo gem install cocoapodsと表示されていると思います。

これはつまり、CocoaPodsをインストールするためには、ターミナルで以下のコードを実行してくださいということです。

sudo gem install cocoapods

このコードを実行すると、パスワードの入力が求められます。

このパスワードは、PCで設定しているログインパスワード(PC起動時やスリープ解除時に入力するパスワード)を入力してください。

入力したパスワードは画面に表示されませんが、ちゃんとキーボードを押していれば反映されているので安心してください。

パスワードを入力し終わったら、Enterを押します。

これで、cocoapodsがインストールされるはずです。

が、私の環境では以下のエラーが発生しました。

ERROR:  Error installing cocoapods:
    ERROR: Failed to build gem native extension.

CocoaPods 1.8.4をインストール(sudo gem install -v1.8.4 cocoapods)したり、Rubyのアップデート(sudo gem update –system)をしたり、ターミナルをRosettaを使用して開いたりしましたが、解決には至らず。

しかし、Homebrewというパッケージ管理ツールを使うことで、CocoaPodsをインストールできました。

(※以下、ターミナルをRosettaを使用して開いた状態で進めています。これがインストール成功に関係あったかどうかはわかりません。ターミナルをRosettaを使用して開くには、Finderのアプリケーション>ユーティリティ内にあるターミナルを右クリックし、情報を見るを選択し、Rosettaを使用して開くにチェックを入れてください。)

まず、Homebrewをインストールするために、以下のサイトの「インストール」にあるコードをコピーし、このコードをターミナルに貼り付けてEnterを押します。

一応、brew doctorやbrew -vというコマンドを実行して、Homebrewがインストールできているか確認しましょう。

Homebrewをインストールしたら、以下のコマンドを実行して、CocoaPodsをインストールします。

brew install cocoapods

ただ、私は一度cocoapods 1.8.4をインストールしていたので、以下のコマンドでcocoapodsを一旦削除した後、brew install cocoapodsをしました。

sudo gem uninstall cocoapods -n /usr/local/bin

しかし、Error: The brew step did not complete successfullyというエラーが出たので、指示通り以下のコマンドで解決しました。

brew link --overwrite cocoapods

これで、CocoaPodsのインストールは完了です。

flutter doctorをして、CocoaPods not installedという表示がなくなっていることを確認しましょう。

これで、すべてにチェックマークがついている状態になっていると思います。

以上で、Flutterの環境構築は終了です。

が、私はVisual Studio Codeを使ってアプリ開発したいので、次にVisual Studio Codeの導入について説明します。

CocoaPodsインストールにあたって参考にした記事↓

Visual Studio Codeの導入

私は今まで、アプリ開発にVisual Studio Code(VS Code)を使っていたので、Macでも導入します。

VS Codeを使わず、Android Studioでもアプリ開発できますが、VS Codeでは様々な拡張機能を使うことができるので、よりスムーズに開発を進めやすいと思います。

VS Codeは以下のページからインストールします。

インストールしたら、VS Codeを開きます。

そして、日本語表示のために、Japanese Language Pack for Visual Studio Codeという拡張機能をインストールします。

拡張機能のインストールは、左側のバーにある上から4番目のアイコン(四角が合わさったアイコン)をクリックした画面でできます。

インストールしたら、VS Codeを再起動します。

次に、DartとFlutterの拡張機能をインストールします。

これで、とりあえずVS CodeでFlutterによる開発ができるようになりました。

が、より快適に開発をするため、私は以下の設定をしています。

拡張機能

すでに挙げた日本語パック・Dart・Flutterに加え、以下の拡張機能をインストールしました。

  • Atom One Dark Theme(テーマの色の変更)
  • Flutter Intl(アプリの多言語対応)
  • Pubspec Assist(pubspec.yamlのdependenciesに簡単にパッケージ名とそのバージョンを記述する)
  • Git Hisotry(Gitのコミット履歴を見やすくする)

設定

VS Codeの左下にある歯車アイコンから設定を選択すると、テキストの表示など設定ができます。

私が既定の設定から変更しているものは以下のものです。

  • Bracket Pair Colorizationにチェックを入れる
    (Flutterではコードがネストしやすいので、どのカッコと対応しているかどうかわかりやすくするため)
  • Font FamilyにSourceHanCodeJP-Regularを追加
    (日本語を表示できるコーディング向けのフォント。フォントの追加方法については後述)
  • Font Sizeを15に
  • StartupEditorをnoneに
  • Color ThemeをAtom One Darkに(拡張機能インストール時に設定されます)

このうち、Font Familyに追加したSource Han Code JPは以下のサイトからダウンロードしました。

Fonts version 2.012R (OTF, OTC)にあるSourceHanCodeJP.ttcをダウンロードして開き、「フォントをインストール」をクリックします。

すると、フォントがPCにインストールされます。

そして、VS Codeの設定のFont FamilyにSourceHanCodeJP-Regularを追加すると、VS Codeのコード文に反映されます。

私の場合、設定のFont Familyのところは、
SourceHanCodeJP-Regular, Menlo, Monaco, 'Courier New’, monospace
となっています。

※私はRegularにしていますが、文字の太さを変えたい場合は、MediumやBoldなどに変更してください。

ついでに、ターミナルのフォントも変更しました。

ターミナルのフォントを変更するには、ターミナルを開いて、ターミナルメニューの環境設定(Command+,)を開きます。
そして、フォントのところにある変更…を押して、源ノ角ゴシック Code JPを選択してください。

まとめ

ということで、MacでのFlutterの環境構築方法について紹介しました。

M1チップであることによるものと見られるエラーがいくつか発生しましたが、一応解決できたと思います。

環境構築ができたということで、今後の記事では、Android・iOSアプリのリリース方法をまとめる予定です。

FlutterでAndroidアプリのリリースビルドをする方法はこちら↓

Flutterについてもっと学びたい方はこちら↓

参考にした記事↓