fvm

バージョン管理FlutterDartモバイル開発プロジェクト管理

GitHub概要

leoafarias/fvm

Flutter Version Management: A simple CLI to manage Flutter SDK versions.

ホームページ:https://fvm.app
スター5,093
ウォッチ28
フォーク260
作成日:2019年2月22日
言語:Dart
ライセンス:MIT License

トピックス

clidartflutterflutter-releasesflutter-sdk-versionsfvmsdk

スター履歴

leoafarias/fvm Star History
データ取得日時: 2025/7/20 03:50

言語バージョン管理ツール

fvm

概要

FVM(Flutter Version Management)は、Flutter SDKバージョンを管理するためのシンプルなCLIツールです。プロジェクトごとに異なるFlutter SDKを使用でき、チーム開発での環境一致や新機能のテストが容易になります。フラッターコミュニティで広く採用されており、開発効率の向上と「私の環境では動く」問題の解決に貢献します。バージョン固定による安定性とスムーズなSDK切り替えを実現します。

詳細

主な特徴

  • プロジェクト別管理: .fvmディレクトリによるプロジェクトスコープのSDK管理
  • チーム開発対応: 全メンバーが同一Flutter SDKを使用可能
  • IDE統合: VS Code、Android Studio、IntelliJとの完全統合
  • グローバル設定: システム全体のデフォルトFlutter SDK設定
  • キャッシュシステム: ダウンロード済みSDKの効率的な再利用
  • フレーバー対応: 環境別(dev、staging、prod)のSDK管理
  • シンボリックリンク: 軽量な参照システムで容量節約

動作原理

FVMはFlutter SDKを~/.fvm/versionsディレクトリにキャッシュし、プロジェクトの.fvm/flutter_sdkシンボリックリンクで適切なバージョンを参照します。IDEはこのシンボリックリンクを通じてプロジェクト固有のSDKを使用します。

プロジェクト構造

project/
├── .fvm/
│   ├── flutter_sdk -> ~/.fvm/versions/3.16.5
│   └── fvm_config.json
├── lib/
├── pubspec.yaml
└── README.md

メリット・デメリット

メリット

  • 環境統一: チーム全体で一貫したFlutter SDK使用
  • 効率的切り替え: プロジェクト間のSDKバージョン瞬時切り替え
  • 安定性確保: プロジェクトが特定SDKバージョンに固定
  • 容量節約: 複数プロジェクトでSDKを共有
  • CI/CD対応: 自動化環境での確実なバージョン指定
  • 新機能テスト: beta、devチャンネルの安全なテスト
  • IDE統合: コード補完やデバッグが適切なSDKで動作

デメリット

  • 初期設定: プロジェクトごとの初期セットアップが必要
  • ストレージ使用: 複数Flutter SDKのローカル保存が必要
  • 学習コスト: Flutter開発者にとって追加の概念
  • 依存関係: FVMツール自体への依存
  • パス管理: IDE設定の適切な構成が必要

参考ページ

書き方の例

インストール

# スタンドアローンインストール(推奨)
# macOS/Linux
curl -fsSL https://fvm.app/install.sh | bash

# Homebrew(macOS)
brew tap leoafarias/fvm
brew install fvm

# Chocolatey(Windows)
choco install fvm

# Dart pub経由(非推奨)
dart pub global activate fvm

# インストール確認
fvm --version

基本的な使用方法

# 利用可能なFlutterバージョン確認
fvm releases

# 特定バージョンのインストール
fvm install 3.16.5
fvm install 3.19.0

# インストール済みバージョン確認
fvm list

# プロジェクトでのFlutterバージョン設定
cd my-flutter-project
fvm use 3.16.5

# .fvm/fvm_config.jsonが作成される
cat .fvm/fvm_config.json

プロジェクト管理

# 新しいFlutterプロジェクトの開始
mkdir my-app && cd my-app

# プロジェクト用Flutterバージョンの設定
fvm use 3.16.5

# FVM経由でFlutterコマンド実行
fvm flutter create .
fvm flutter pub get
fvm flutter run

# 依存関係更新
fvm flutter pub upgrade

# ビルド
fvm flutter build apk
fvm flutter build ios

IDE設定

VS Code設定

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

Android Studio/IntelliJ設定

# Flutter SDK pathの設定
# Languages & Frameworks > Flutter
# Flutter SDK path: /absolute/path/to/project/.fvm/flutter_sdk

# 絶対パスの確認
pwd && echo "/.fvm/flutter_sdk"

チーム開発での活用

# プロジェクトのクローン
git clone https://github.com/company/flutter-app.git
cd flutter-app

# .fvm設定からFlutterバージョンを自動インストール
fvm install

# または、設定ファイルから手動インストール
cat .fvm/fvm_config.json
fvm install 3.16.5
fvm use 3.16.5

# プロジェクトの開始
fvm flutter pub get
fvm flutter run

フレーバー管理

# 開発環境用設定
fvm flavor development --flutter-version 3.19.0

# ステージング環境用設定
fvm flavor staging --flutter-version 3.16.5

# 本番環境用設定
fvm flavor production --flutter-version 3.16.5

# フレーバー指定でコマンド実行
fvm flavor development flutter run
fvm flavor production flutter build apk

大規模プロジェクトでの管理

# 複数プロジェクトの管理
mkdir flutter-projects && cd flutter-projects

# プロジェクト1(最新stable)
mkdir project1 && cd project1
fvm use 3.19.0
fvm flutter create .
cd ..

# プロジェクト2(LTS版)
mkdir project2 && cd project2
fvm use 3.16.5
fvm flutter create .
cd ..

# プロジェクト3(beta版テスト)
mkdir project3 && cd project3
fvm install beta
fvm use beta
fvm flutter create .

CI/CD環境での使用

# GitHub Actions例
name: Flutter CI
on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    
    - name: Install FVM
      run: |
        curl -fsSL https://fvm.app/install.sh | bash
        echo "$HOME/.fvm/default/bin" >> $GITHUB_PATH
    
    - name: Install Flutter SDK
      run: |
        fvm install
        fvm use $(fvm list | head -n1 | cut -d' ' -f1)
    
    - name: Get dependencies
      run: fvm flutter pub get
    
    - name: Run tests
      run: fvm flutter test
    
    - name: Build APK
      run: fvm flutter build apk

グローバル設定とメンテナンス

# グローバルFlutterバージョンの設定
fvm global 3.16.5

# システム全体でのFlutter使用
flutter --version  # FVMで管理されたバージョンを使用

# 古いバージョンの削除
fvm remove 3.13.0

# キャッシュクリーンアップ
fvm doctor  # 健全性チェック

# FVM設定の確認
fvm config

# 全体設定のリセット
fvm config --reset

高度な使用例

# カスタムキャッシュディレクトリ
export FVM_CACHE_PATH=/custom/path/fvm
fvm install 3.16.5

# プロキシ環境での使用
export HTTP_PROXY=http://proxy.company.com:8080
export HTTPS_PROXY=http://proxy.company.com:8080
fvm install 3.16.5

# 並列インストール
fvm install 3.16.5 &
fvm install 3.19.0 &
wait

# バッチスクリプトでの自動化
#!/bin/bash
FLUTTER_PROJECTS=(
  "project1:3.16.5"
  "project2:3.19.0"
  "project3:beta"
)

for project_info in "${FLUTTER_PROJECTS[@]}"; do
  IFS=':' read -r project version <<< "$project_info"
  cd "$project"
  fvm use "$version"
  fvm flutter pub get
  cd ..
done

トラブルシューティング

# FVMの状態確認
fvm doctor

# 権限問題の解決
sudo chown -R $(whoami) ~/.fvm

# シンボリックリンクの修復
cd my-flutter-project
rm -rf .fvm
fvm use 3.16.5

# PATH環境変数の確認
echo $PATH | grep fvm

# FVMの完全再インストール
rm -rf ~/.fvm
curl -fsSL https://fvm.app/install.sh | bash