2014年4月13日日曜日

Pub とは

Dart には「pub」と呼ばれるパッケージ管理機能があります。
この pub を使用することで、Dart パッケージに存在するライブラリを使用することができます。


具体的には
- pubspec (依存関係やその他のメタデータを追加するためのファイル)を設定し
- pub を用いてパッケージの依存関係を取得し
- ライブラリをインポート
といった形です。


リファレンスページでは pub コマンドを用いた事細かな情報が書かれていますが、そもそも DartEditor に pub を使用するためのサポートが用意されているので、ここでは簡単な概要のみ説明します。


ライブラリのインポートについて、 dart ファイル上では次のように記載します。
import 'iq150problem.dart';
このファイルは同一ディレクトリ内の「iq150problem.dart」をインポートしています。


では、ディレクトリ構成が次のようになっていたらどうでしょう?
※インポート宣言するのは main.dart
iq150problem/
    lib/
        iq150problem.dart
    web/
        main/
            main.dart
この場合は次のようにインポートしないといけません。
import '../../lib/iq150problem.dart';
このような相対パスを用いた方法だと、インポートするファイルの配置が変わった場合などにコードを修正する必要が出て面倒です(汗)。


上記のような脆弱性や手間を省くために使われるのが pub です。
pub を用いると次のようにインポートすることができます。
import 'package:iq150problem/iq150problem.dart';
pub により、アプリと iq150problem パッケージに依存関係を持たせることで、パッケージ内ならどこに配置しても同じ記述でインポート可能になります。
便利ですね!


今回は pub の超概要のみですが、アプリの規模が大きくなるほど有益な機能であると筆者は考えます。
(あとは、テストコードを書くときとか便利かな~)


pub の設定(今回でいう依存関係を持たせるための設定)などを行うためのファイル「pubspec.yaml」についてまったく触れてないですが、これは機会があればということで。。。