Flutterのpubspec.yamlとは?意味や書き方をご紹介!!

yamlとは?

YAMLは”YAML Ain’t Markup Language”の略で、
データを簡潔に表現するためのデータシリアライズ言語です。
Configファイルのような設定ファイルやJsonのようなデータファイルに利用されます。

特徴として、YAMLはPythonのようにインデントを使い階層的なデータを表現しています。

flutterのpubspec.yamlとは?

“pubspec.yaml”はFlutterプロジェクトの設定ファイルであり、
アプリケーションの名前、説明、バージョン情報や、プロジェクトが依存するパッケージ情報、
そのパッケージのバージョン等々を管理しています。

pubspec.yamlの構造

“pubspec.yaml”の基本的な構造は以下の通りです:

  • “name”:
      アプリケーションの名前。
  • “description”:
      アプリケーションの簡単な説明。
  • “version”:
      アプリケーションのバージョン。
  • “environment”:
      このプロジェクトが依存するFlutter SDKのバージョンを指定。
  • “dependencies”:
      このプロジェクトが依存する外部パッケージを指定。
  • “dev_dependencies”:
      開発中のみ使用されるパッケージ(テストフレームワークなど)を指定。
      buildrunnerやriverpod_generatorなどの開発時に動くパッケージはこちらに定義します。

実際は以下の様に記述になります。

name: check
description: A new Flutter project.
version: 1.0.0+1
environment:
  sdk: ">=2.17.6 <3.18.2"

dependencies:
  cupertino_icons: 1.0.2
  flutter:
    sdk: flutter
  flutter_localizations: 
    sdk: flutter
  flutter_riverpod:

dev_dependencies:
  build_runner: ^2.4.0
  dart_code_metrics: ^5.7.0
  flutter_test:
    sdk: flutter

pubspec.yamlのバージョンの意味

パッケージのバージョン番号は”メジャー.マイナー.パッチ”の形式で表されます。
各数字の意味は以下の通りです。

  • “メジャー”:互換性のない大きな変更を加えた場合に増加します。
  • “マイナー”:既存の機能に影響を与えずに機能を追加した場合に増加します。
  • “パッチ”:バグ修正や小さな変更の場合に増加します。 

例えば、[パッケージ名: 3.12.4]と指定した場合、メジャーが3、マイナーが12、パッチが4です。

pubspec.yamlのバージョンの指定

pubspec.yamlのバージョンの指定は以下のように書くことができます。

パッケージ名:[空白]
 バージョンを指定しない場合です。最新バージョンが自動的に選択されます。
 稀に破壊的な変更(既存のコードでは起動しない等)があるため、
 特に重要なパッケージには具体的なバージョンを指定することが推奨されます。

パッケージ名: 1.0.0
 バージョンを指定した場合です。記載されたバージョンが選択されます。

パッケージ名: “>=1.0.0 <2.0.0”
 バージョンを範囲指定した場合です。指定した範囲でバージョンが選択されます。

パッケージ名: ^1.0.0
 指定したバージョン以上、且つメジャーバージョンが同じバージョンの範囲で
 自動的に選択されます。この場合、”>=1.0.0 <2.0.0″と同義です。

バージョンを指定しない場合、最新バージョンが自動的に選択されますが、
予期せぬ問題を避けるため、特に重要なパッケージには具体的なバージョンを
指定することが推奨されます。

pubspec.lockとは?

“pubspec.lock”ファイルは、使用されている各パッケージの具体的なバージョンを記録します。
パッケージのバージョンを範囲指定した場合、実際に選択されたバージョンがここで確認できます。

バージョンの更新コマンド

pubspec.yamlは記述しただけでは、バージョンアップは行われません。
以下を参考にコマンドを実施してください。

  • インストール: “flutter pub get”
     pubspec.yamlに記載されているパッケージをインストールします。
     インストール済みの場合は、パッケージのバージョンを最新バージョンに更新します。
     
  • アップグレード: “flutter pub upgrade”
     パッケージのバージョンを最新バージョンに更新します。
     範囲指定した場合は、その範囲内の最新バージョンに更新します。
     
  • ダウングレード: “flutter pub downgrade”
     パッケージのバージョンを最古バージョンに更新します。
     範囲指定した場合は、その範囲内の最古バージョンに更新します。
     
  • バージョン依存関係確認: “flutter pub deps”
     パッケージ間のバージョン依存関係を確認できます。
     プロジェクトの依存関係ツリーが表示され、パッケージ同士の依存関係が参照できます。
     
  • バージョン依存関係確認: “flutter pub deps”
     パッケージ間のバージョン依存関係を確認できます。
     プロジェクトの依存関係ツリーが表示され、パッケージ同士の依存関係が参照できます。
     
  • バージョン確認: “flutter pub outdated”
     以下の項目にて、バージョン情報を確認できる。
     Current:現在のバージョン
     Upgradable:pubspec.yaml ファイルで許可されている最新バージョン
     Resolvable:依存関係のある他パッケージが利用できるバージョン
     Latest:利用可能なパッケージの最新バージョン
     
  • メジャーバージョンのアップグレード: flutter pub upgrade –major-versions
    pubspec.yamlファイルに列挙されているパッケージを
    可能な限り最新のバージョンに更新します。
     
     
  • 個別の更新: “flutter pub [コマンド] [パッケージ名]
     上記のコマンドの後に、パッケージ名を指定するとそのパッケージのみ更新できます。
     例)”freezed”のインストール:flutter pub get freezed

まとめ

“pubspec.yaml” はFlutterプロジェクトでは、主にパッケージ管理の役割がありますが、
その他にもプロジェクトのメタデータの定義、外部パッケージの依存関係管理、リソースの指定など、
も管理できるようです。

pubspec.yamlを使ったバージョン管理はFlutterでアプリの開発にとても重要で、
私はよくバージョン管理を失敗してビルドできなかったり、buildrunnerが実行できなかったりします。

この記事が同じようにpubspec.yamlの設計で困っている人の参考になれば幸いです。

タイトルとURLをコピーしました