複数プロジェクトに対応!FVMでFlutterバージョン管理

対象者

  • Flutterを使ったアプリ開発を行っているが、複数のプロジェクトで異なるバージョンのSDKを効率的に管理したい人
  • チーム開発において、Flutter SDKのバージョン統一をスムーズに行いたい人
  • FVMについて知識がなく、そのインストール方法や使い方を学びたい人

はじめに

Flutterを使用してアプリ開発を進めているあなた。複数のプロジェクトで異なるバージョンのFlutter SDKを扱うことに悩んでいませんか?チーム開発でのバージョン統一がうまくいかず、効率的な開発ができないと感じることはありませんか?そんなお悩みを解決するためのFlutter Version Management(FVM)について、この記事で詳しく解説していきます。

FVMは、Flutter SDKの複数バージョンを簡単に管理できるツールです。これにより、プロジェクトごとに異なるバージョンのSDKを切り替えることが容易になります。さらに、チーム開発でもバージョン統一がスムーズに行えるようになります。

本記事では、FVMのインストール方法から、複数のFlutter SDKバージョンの管理、プロジェクトでの活用方法、トラブルシューティングまで、FVMを活用するための情報をわかりやすく解説していきます。実例やソースコードも交えて説明しているので、初めてFVMに触れる方でも安心して学ぶことができます。

ぜひ、この記事を読み進めてFVMの活用方法を身につけ、あなたのFlutter開発がより効率的で円滑に進むことを実感してください。これからあなたの開発が劇的に変わるかもしれません!

FVM(Flutter Version Management)とは?

FVM(Flutter Version Management)は、Flutterのバージョン管理ツールです。複数のバージョンを一括管理し、簡単かつ気軽に使用するFlutterのバージョンを切り替えることができます。これにより、プロジェクトごとに異なるバージョンのFlutterを使いたい場合や、チームで開発を行っている際にFlutterのバージョンを統一することが容易になります。

FVMのメリット

FVMを利用することで、以下のようなメリットが得られます。

  • 複数のFlutter SDKバージョンをインストールできる
    FVMを使うことで、複数のFlutter SDKをインストールしておくことができ、切り替えが容易になります。

  • チームでのバージョン統一:
    fvm_config.jsonを使用することで、Flutter SDKバージョンを明示してチームで統一できる。これにより、開発環境の差異による問題が減ります。

例えば、あるプロジェクトではFlutterの安定版(stable)を使用し、別のプロジェクトではベータ版(beta)を使用したい場合があります。このような状況では、FVMを使って簡単にバージョンを切り替えることができます。また、開発チームでバージョンを統一することで、開発環境の違いによる問題を解決できます。このような利点があるため、FVMは多くの開発者にとって非常に便利なツールとなっています。

FVMのインストール

Dartのインストール

まず最初に、Dartをインストールする必要があります。macOSの場合は、Homebrewを使って簡単にDartをインストールできます。

$ brew tap dart-lang/dart
$ brew install dart

FVMのインストール・アップグレード

次に、FVMをインストールします。pubというDartのパッケージ管理ツールを使ってFVMをインストールできます。

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

dart pub global activate fvm
また、FVM自体のバージョンを上げようとしたときも、上記のコマンドを実行します。

FVMのバージョン確認

FVMのインストールが完了したら、バージョンを確認して正しくインストールされていることを確認しましょう。以下のコマンドを実行して、FVMのバージョンを確認できます[3]。

fvm --version

これで、FVMが正常にインストールされ、利用できる状態になりました。次に、複数のFlutter SDKバージョンの管理方法について説明します。

インストール場所

以下のディレクトリにプログラムインストールされます。必要に応じて、パスに追加してください。

- Windows
C:\Users\[useName]\AppData\Roaming\Pub\Cache\bin\fvm

- Mac
/Users/[userName]/.pub_cache/bin/fvm

複数のFlutter SDKバージョンの管理

FVMで利用可能なリリースの確認

FVMで利用可能なFlutter SDKのリリースを確認するには、fvm releasesコマンドを使用します。

$ fvm releases

このコマンドを実行することで、利用可能なリリース一覧が表示されます。

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

FVMを使って、すでにインストール済みのFlutterバージョンを確認することができます。以下のコマンドを実行すると、インストール済みのFlutterバージョンの一覧が表示されます。

fvm list

特定のバージョンのFlutter SDKのインストール

FVMを使って、特定のバージョンのFlutter SDKをインストールすることができます。以下のコマンドを実行し、指定したバージョンのFlutter SDKをインストールします[1]。

fvm install <バージョン>

例えば、2.5.0バージョンのFlutter SDKをインストールする場合は、次のように実行します。

fvm install 2.5.0

インストールしたFlutterは以下のディレクトリに保存されます。

- Windows
C:\Users\[useName]\fvm\versions\[バージョン]

- Mac
/Users/[userName]/fvm/versions/[バージョン]

Flutterバージョンの切り替え

FVMを使って、簡単にFlutter SDKのバージョンを切り替えることができます。以下のコマンドを実行し、現在使用しているバージョンを切り替えます。指定のバージョンのFlutterがインストールされてない場合は、インストールするか聞かれる(Would you like to install it? Y/n: )ので、yを押しましょう。

fvm use <バージョン>

例えば、2.5.0バージョンに切り替える場合は、次のように実行します。

fvm use 2.5.0

これで、複数のFlutter SDKバージョンを簡単に管理できるようになりました。次に、プロジェクトでのFVMの活用方法について説明します。

バージョンの代わりに、チャンネル名でもOKです(stable , beta , dev , master)。
その時点のチャンネルが取得されて、チャンネル名のディレクトリができました。更新されるのかなぁ、、

fvm useを実行すると、「.fvm\fvm_config.json」ファイルに現在使用しているFlutterのバージョンが書き込まれます。また、使用しているFlutterへのリンク「.fvm\flutter_sdk」が作成されるので、.ignoreに追加しましょう。

Flutterバージョンの確認

現在使用しているFlutterのバージョンは「fvm use」でバージョンをつけなければ確認できます。

fvm use

FVMを使ってインストールしたバージョンの削除

FVMを使ってインストールしたFlutter SDKのバージョンを削除するには、fvm remove <バージョン>コマンドを使用します。

fvm remove 2.5.0

このコマンドを実行することで、FVMから2.5.0バージョンのFlutter SDKが削除されます。

FVMでFlutterの状態を確認

FVMを使ってFlutterの状態を確認するには、fvm doctorコマンドを使用します。

fvm doctor

このコマンドを実行することで、flutter doctorの結果が表示されます。これにより、開発環境の問題を特定しやすくなります。

プロジェクトでのFVMの活用

fvm_config.jsonを使ったバージョン管理

FVMでは、fvm_config.jsonファイルを使って、プロジェクトごとにFlutter SDKのバージョンを管理できます。fvm_config.jsonファイルには、プロジェクトが使用するFlutter SDKのバージョンが記載されており、このファイルを使ってチームメンバーが同じバージョンのFlutter SDKを利用できるようになります。

まず、プロジェクトのルートディレクトリに「.fvm/vm_config.jsonファイルを作成し、以下のような内容を記述します。

{
  "flutterSdkVersion": "2.5.0"
}

これで、プロジェクトで使用するFlutter SDKのバージョンが2.5.0になります。

チームでのバージョン統一

FVMを使うことで、チーム全体でFlutter SDKのバージョンを統一し、開発環境の差異を減らすことができます。チームメンバーは、fvm_config.jsonファイルを使って、プロジェクトが使用するFlutter SDKのバージョンを確認し、FVMのfvm installコマンドで必要なバージョンをインストールできます。

また、FVMのfvm useコマンドを使って、プロジェクトで指定されたバージョンに切り替えることができます。これにより、チーム全体でFlutter SDKのバージョンが統一され、開発環境の差異が減り、トラブルシューティングが容易になります。

エディタの設定

Android Studioの設定

「Language & Frameworks > Flutter」 の 「Flutter SDK path」を以下にします。

/{プロジェクトのパス}/.fvm/flutter_sdk

リンクなので、FVMでFluttreのバージョンを変更するとVisualStudioが使用するバージョンも勝手に変わってくれます。

VS Code

.vscode/settings.json に以下を設定します。

{
  "dart.flutterSdkPath": ".fvm/flutter_sdk",
  "search.exclude": {
    "**/.fvm": true
  },
  "files.watcherExclude": {
    "**/.fvm": true
  }
}

VS Codeを再起動すると反映される。

トラブルシューティング

FVMを利用する際に遭遇する可能性のある問題とその対処法を以下に示します。
これらの問題と対処法を理解し、FVMを効果的に活用することで、Flutterプロジェクトの開発効率を向上させることができます。

FVMでインストールしたFlutter SDKが正しく認識されない

理由としては、環境変数PATHにFVMでインストールしたFlutter SDKのパスが正しく追加されていない場合が考えられます。

対処法:

  • FVMでインストールしたFlutter SDKのパスを確認し、環境変数PATHに正しく追加します。
  • システムを再起動して、変更が反映されるか確認します。

FVMで指定したバージョンが利用できない

FVMで指定したバージョンが正しくインストールされていない場合があります。

対処法:

  • FVMでインストール済みのバージョンを確認し、指定したバージョンが存在するか確認します(fvm listコマンド)。
  • 指定したバージョンが存在しない場合、fvm install [バージョン]コマンドで該当バージョンをインストールします。

fvm_config.jsonが正しく反映されない

プロジェクトの設定が正しく読み込まれていない場合があります。

対処法:

  • プロジェクトのルートディレクトリにfvm_config.jsonファイルが存在するか確認し、正しく配置されていることを確認します。
  • fvm_config.jsonの内容が正しいか確認し、必要に応じて修正します。

クライアントは要求された特権を保有していません(Windows)

Windows11にて以下のエラーが発生。

fvm use --force --verbose
[     0.039s] Version: 3.13.9 - already installed.
[     0.047s] FileSystemException: Cannot create link to target 'C:\Users\[user_name]\fvm\versions\3.13.9', path = '[project_root]\.fvm\flutter_sdk' (OS Error: クライアントは要求された特権を保有していません。
, errno = 1314)
[     0.048s] Usage Exception: Seems you don't have the required permissions on C:\Users\[user_name]\fvm On Windows FVM requires to run as an administrator or turn on developer mode: https://bit.ly/3vxRr2M

対処法:

  • Windowsの下の「検索」で「cmd」と入力し、「コマンドプロンプト」を右クリックして「管理者として実行」をクリックする
  • 「管理者:コマンドプロンクト」が表示されるので、そこで指定のfvmを実行するといけた。
「開発者モード( developer mode)」をONにしないといけないのかな、と思ったが、そんなハイレベルな話ではなかったorz

Q&A

Q1: FVM(Flutter Version Management)とは何ですか?

A1: FVM(Flutter Version Management)は、複数のFlutter SDKバージョンを効率的に管理するためのツールです。プロジェクトごとに異なるFlutter SDKバージョンを簡単に切り替えることができ、チームでのバージョン統一が容易になります。

Q2: FVMを使ってFlutter SDKのバージョンを切り替える方法は?

A2: FVMを使ってFlutter SDKのバージョンを切り替えるには、まずfvm use <バージョン>コマンドを使います。このコマンドを実行することで、指定したバージョンのFlutter SDKがプロジェクトで使用されるようになります。また、fvm_config.jsonファイルを使って、プロジェクトのバージョン管理を行うことができます。

Q3: FVMを使ってチームでのバージョン統一をどのように行うのですか?

A3: FVMを使ってチームでのバージョン統一を行うには、まずプロジェクトごとにfvm_config.jsonファイルを作成し、その中に使用するFlutter SDKのバージョンを指定します。これにより、チームメンバーがプロジェクトをクローンしてFVMを使って開発を始める際に、自動的に指定されたバージョンのFlutter SDKがインストールされ、バージョンの統一が容易になります。

まとめ

FVM(Flutter Version Management)は、複数のFlutter SDKバージョンを効率的に管理するためのツールです。FVMを使うことで、プロジェクトごとに異なるFlutter SDKバージョンを簡単に切り替えることができ、チームでのバージョン統一が容易になります。

まず、DartとFVMをインストールし、FVMのバージョンを確認します。次に、FVMでインストール済みのFlutterバージョンを確認し、特定のバージョンのFlutter SDKをインストールできます。プロジェクトでFVMを活用するには、fvm_config.jsonファイルを使ってバージョン管理を行い、チームでバージョンを統一します。トラブルシューティングでは、よくある問題と対処法を参考にして問題を解決します。

重要なポイント:

  • FVMのインストール:まずDartをインストールし、その後FVMをインストールする
  • バージョン確認:fvm listコマンドでインストール済みのバージョンを確認できる
  • バージョン切り替え:fvm use <バージョン>でプロジェクトごとにFlutter SDKのバージョンを切り替える
  • バージョン管理:fvm_config.jsonファイルを使ってプロジェクトのFlutter SDKバージョンを管理する
  • チームでのバージョン統一:FVMを使ってチーム内でFlutter SDKのバージョンを統一する
  • トラブルシューティング:環境変数やインストール済みバージョン、fvm_config.jsonファイルの設定を確認して問題を解決する

これらのポイントを押さえることで、FVMを使ったFlutterプロジェクトの開発が効率的に進められます。FVMを活用し、開発速度や品質を向上させましょう。

参考

サンプル: FVMを使用したプロジェクトの新規作成

以下は、FVMを使用してFlutterプロジェクトを管理する一例です。プロジェクトの要件や開発チームの状況に応じて、設定や使用方法を調整してください。

# FVMのインストール
$ dart pub global activate fvm

# インストール済みのFVMのバージョン確認
$ fvm --version

# FVMでインストール済みのFlutterバージョンの確認
$ fvm list

# 特定のバージョンのFlutter SDKのインストール
$ fvm install 2.8.0

# Flutterバージョンの切り替え(forceはプロジェクト外のために必要)
$ fvm use 2.8.0 --force

# 新しいプロジェクトを作成
$ fvm flutter create my_project

# 作成したプロジェクトへ移動
$ cd my_project


# fvm_config.jsonをプロジェクトに追加
$ md .fvm もしくは mkdir .fvm
$ echo '{"flutterSdkVersion": "2.8.0"}' > .fvm/fvm_config.json

# FVMを使ってプロジェクトで設定したバージョンを使用
$ fvm install

# FVMを使ってプロジェクトを実行
$ fvm flutter run