Flutter asdfを利用してインストール + バージョン管理

2021年のゴールデンウィークも残すところ2日となったが、とある機運により Flutter のモチベーションが高まったので、 入門してみた。

Intel版Mac で Flutter を動かすまでの知見を、備忘として残しておく。

Dart言語のインストール

Flutter は、 Dart という Google が開発した言語で動作するため、まずはこれをインストールする。

$ brew tap dart-lang/dart # リポジトリの登録
$ brew install dart # インストール

ローカル環境構築の方法を知る(Flutter SDK)

ざっと調べたところ、ローカル環境を構築する方法は、下記の3種類のよう。

公式サイトからSDKを直接インストール

最もシンプルなインストール方法は、公式サイトから SDK をダウンロードし、Mac に直接インストールすること。

とりあえず動かすだけならこの方法でよい。 ただし、これでは1つのMacに複数のバージョンをインストールして切り替えるのが難しそうなため、一旦なし。

Dockerイメージにインストール

Docker で環境構築もできそう。 https://qiita.com/kurun_pan/items/47614dec03575036675d

ただし、今回は下記の理由で選択肢から外した。

  • 公式イメージが存在するわけではない(CentOSなどのイメージに自分で Flutter をインストールする)
  • (私個人に)ネイティブアプリ開発の知見が少なすぎて、Web以外の開発で Docker が使えるのか謎

ただ、最終的には Docker で構築して簡単に配布できるようにしたい。

バージョン管理ツールでSDKをインストール

理想としては、バージョン管理ツールを使用し、複数のバージョンを同居させたい。
ざっと調べたところ、下記のいずれかのツールを使用することで実現可能なことが分かった。

今回は 後者の asdf + asdf-flutter-plugin を採用する。

asdf のインストール

下記の公式ドキュメントにて、開発機のOS・インストール方法を選択すると、最適な手順が表示されるので、基本的にはこれに従うのが良い。

私の場合は、MacOS かつ Homebrew を使用したいので、下記の通りの手順となった。

asdf 本体のインストール

$ brew install asdf

asdf の最新版を利用したい場合は、下記コマンドでインストールするとよいらしい(が、私は下記コマンドを実行しなくてもうまくいった)。

$ brew install asdf --HEAD

shell の追加

公式の手順でやれと書かれているのでやるが、なぜこの手順が必要なのかは不明。
(理由が分かったら追記する)

asdf.sh というファイルへの PATH を通す。

$ echo -e "\n# asdf Flutter のバージョン管理に使用" >> ~/.bash_profile
$ echo -e "\n. $(brew --prefix asdf)/asdf.sh" >> ~/.bash_profile
$ source ~/.bash_profile

asdf-flutter-plugin の追加

$ asdf plugin-add flutter

インストールしたプラグインは、下記で確認できる。

$ asdf plguin list # Flutter と表示されればOK

参考:https://asdf-vm.com/#/core-manage-plugins

Flutter のインストール

ここまでのインストールが完了したら、 Flutter 自体をインストールする。

インストール可能なバージョンの確認

$ asdf list all flutter

インストールを実行

asdf install flutter latest # 最新版をインストールする場合
asdf install flutter 2.0.6-stable # 特定のバージョンをインストールする場合

参考:https://asdf-vm.com/#/core-manage-versions

インストール済みバージョンの確認

下記コマンドを実行し、インストール時に指定したバージョンが表示されるか確認する。

$ asdf list flutter

使用するバージョンの選択

ここまででインストールするバージョンの中から、使用したいバージョンを選択する。 下記コマンドを実行すると、 $HOME/.tool-versions に指定したバージョン情報が追記され、この追記を持って、バージョン選択が完了したこととみなされる。

$ asdf global flutter 2.0.6-stable

(余談)global以外にインストールする方法

asdf global <name> <version> [<version>...]
asdf shell <name> <version> [<version>...]
asdf local <name> <version> [<version>...]
  • global: $HOME/.tool-versions に 使用するバージョン情報が記載される。
  • shell: $PWD/.tool-versions に 使用するバージョン情報が記載される。
  • local: 一旦知らなくても問題なさそう。詳細は ここ を読むとよいらしい。

最新安定版のバージョンは global、 プロジェクト固有のバージョンは shell を選択するのが無難なのかもしれない。

現在選択されているバージョンの確認

下記コマンドを実行し、先ほど選択したバージョンが表示されれば、正しくバージョンが選択されている。

$ asdf current flutter

最終確認

asdf コマンドではなく、 下記の flutter コマンド で正しく実行できるか確認する。

$ flutter --version
# Framework • revision 1d9032c7e1 (8 days ago) • 2021-04-29 17:37:58 -0700
# Engine • revision 05e680e202
# Tools • Dart 2.12.3

正常にインストールが成功していれば、上記のように バージョン情報( Famework / Engine / Tools )が表示される。

(余談)

flutter --version の 初回実行時に限り、下記のウェルカム・メッセージも表示される。

Framework • revision 1d9032c7e1 (8 days ago) • 2021-04-29 17:37:58 -0700
Engine • revision 05e680e202
Tools • Dart 2.12.3

  ╔════════════════════════════════════════════════════════════════════════════╗
  ║                 Welcome to Flutter! - https://flutter.dev                  ║
  ║                                                                            ║
  ║ The Flutter tool uses Google Analytics to anonymously report feature usage ║
  ║ statistics and basic crash reports. This data is used to help improve      ║
  ║ Flutter tools over time.                                                   ║
  ║                                                                            ║
  ║ Flutter tool analytics are not sent on the very first run. To disable      ║
  ║ reporting, type 'flutter config --no-analytics'. To display the current    ║
  ║ setting, type 'flutter config'. If you opt out of analytics, an opt-out    ║
  ║ event will be sent, and then no further information will be sent by the    ║
  ║ Flutter tool.                                                              ║
  ║                                                                            ║
  ║ By downloading the Flutter SDK, you agree to the Google Terms of Service.  ║
  ║ Note: The Google Privacy Policy describes how data is handled in this      ║
  ║ service.                                                                   ║
  ║                                                                            ║
  ║ Moreover, Flutter includes the Dart SDK, which may send usage metrics and  ║
  ║ crash reports to Google.                                                   ║
  ║                                                                            ║
  ║ Read about data we send with crash reports:                                ║
  ║ https://flutter.dev/docs/reference/crash-reporting                         ║
  ║                                                                            ║
  ║ See Google's privacy policy:                                               ║
  ║ https://policies.google.com/privacy                                        ║
  ╚════════════════════════════════════════════════════════════════════════════╝

エディタの用意と設定

あとは適当に creat-app 的なコマンドを実行したらプロジェクトが開始できるのかな?と思いきや、 専用のエディタを用意する必要があるらしい。

公式ドキュメントによれば下記のいずれかを使用するとのこと。

  • Android Studio もしくは IntelliJ
  • Visual Studio Code
  • Emacs

参考:https://flutter.dev/docs/get-started/editor

今回は Android Studio を選択する。

執筆日:
本記事のタグ