パッケージ(ライブラリ)の作成
これまで、Dartでのプログラムの書き方を紹介してきましたが、比較的大きなプロジェクトになるとプログラムを部分的にパッケージとして管理したくなります。
雛形を使ったパッケージプロジェクトの作成方法
dartコマンドを使うとパッケージ用の雛形を使ったプロジェクトを作成することができます。リスト7は、パッケージ用のプロジェクトを作成する場合のdartコマンドの利用例です。
$dart create --template=[プロジェクト形式] [プロジェクト名] // (1) sample_pkgというパッケージ名でプロジェクトを作成する例 $dart create --template=package-simple sample_pkg // (2) flutterコマンドでもほぼ同じように作成することができる $flutter create --template=package sample_pkg
プロジェクト形式では、"console-simple"、"console-full"、"package-simple"、"web-simple"があります。パッケージを作成する場合には、(1)のようにプロジェクト形式には"package-simple"を指定します。しかし、flutterアプリ開発の場合には、"package-simple"以外を使うことはないです。このコマンドを実行すると図1のようなフォルダとファイルが作成されます。
また、プロジェクト名と指定した名前は同時にフォルダ名としても利用されます。(2)のように同様のことはflutterコマンドを使っても可能です。ただし、この場合、作成される雛形ファイルは多少異なります。
パッケージとして公開するファイルを指定する
作成したdartプログラムを他のプロジェクトから利用できるようにするためには、libフォルダ直下にあるファイルにて実際に実装しているファイル名を指定することが推奨されています。また、先ほど作成した雛形では、それぞれのプログラムの実装はsrcフォルダ以下に作成していくことになります。
しかし、パッケージを利用する側でsrc以下の実装プログラムを調べてimportすることは、利用する側にとっても面倒な作業です。また、パッケージを公開する側にとっても、内部のファイル構造を変えると影響が利用者に影響が生じてしまうのも、よいこととは言えません。
そのため、パッケージを利用する側が、srcフォルダ内の構造を意識せずに利用できるように推奨されているということです。リスト8が公開するファイルを指定したコード例です。
library sample_pkg; (1) ライブラリ名の宣言 // (2) 公開する実装ファイル export 'src/sample_pkg_base.dart';
(1)では、このプログラムがライブラリの宣言であることを指定し、(2)で実際に公開するプログラムファイルを指定します。公開するプログラムが複数ある場合には、(2)と同じような指定を繰り返していきます。このようにすることで、利用する側はsample_pkg.dartの存在だけを気にすればよいこととなります。
プロジェクト定義ファイル
Dartプロジェクトでは、プロジェクト管理をするためにpubspec.yamlというファイルを利用します。このファイルでは、大きく分けて、以下2つの情報を管理しています。
- プロジェクト自身のメタ情報
- プロジェクトが依存している外部要因(パッケージなど)
プロジェクト自身のメタ情報では表1の内容がよく利用されます。
機能 | 概要 |
---|---|
name | プロジェクト名称 |
version | プロジェクトのバージョン情報 |
description | プロジェクトの説明 |
プロジェクトの依存情報を指定するには表2の指定を利用します。
機能 | 概要 |
---|---|
environment | Dart SDKのバージョンを指定します |
dependencies | 利用するパッケージを指定します |
dev_dependencies | 開発時のみ使用するパッケージを指定します |
environmentの指定方法
Dart SDKのバージョンを指定するには、リスト9のようにsdk:として指定します。今回紹介したNull Safety機能を有効にするには、このバージョンを2.12以上として指定する必要があります。
environment: # (1) SDKのバージョン指定 sdk: '>=2.8.1 <3.0.0'
(1)ではSDKのバージョン指定は2.8.1以上、3.0.0未満となります。このバージョン指定方法は、後述するパッケージ依存でも同じになります。詳しくは、こちらを参照してください。
dependencies/dev_dependenciesの指定方法
通常、利用したいパッケージはpub.devというサイトから探して利用します。
利用したいパッケージが見つかったらリスト10のように指定します。具体的な利用手順はサイト自身にも記されているので、それを参照すると良いでしょう。
dependencies: # meta - https://pub.dev/packages/meta meta: ^1.2.4 # https://pub.dev/packages/crypto crypto: ^2.1.5
このままではプログラム上からはまだ利用できないので、依存しているパッケージをリスト11のようにインストールする必要があります。
$dart pub get # 以下のflutterコマンドでも同様のことが可能 $flutter pub get
特にパッケージの取得先を指定していない場合には、dartの標準リポジトリから取得されます。また、先ほど、自分で作成した他のフォルダにあるパッケージを依存に加える場合には、リスト12のようにします。
dependencies: sample_pkg: # (1) 相対パスでの記述が可能 path: ../sample_pkg
(1)のように「path:」を記述することで、別フォルダで管理しているパッケージを参照することができます。また、外部ホストしている場合にも対応しています。
まとめ
Dartの仕様について紹介してきましたが、言語情報については他の言語に比べて、まだ日本語情報がすくないことは事実です。しかし、JavaScriptやJava、または他の言語を知っている方であれば共有している部分も多く、Dartを使うことはそれほど大きな障壁とはならないはずです。
次回からは、Flutterを用いたUI部分の作成について紹介していきます。そこで、他の言語では見慣れない表記方法などがありましたら、ぜひ、これまでのDart仕様の紹介を見返してもらえれば幸いです。