SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Flutterで始めるモバイルアプリ開発

Dart言語の便利な拡張表現とパッケージ管理

Flutterで始めるモバイルアプリ開発 第7回


  • X ポスト
  • このエントリーをはてなブックマークに追加

パッケージ(ライブラリ)の作成

 これまで、Dartでのプログラムの書き方を紹介してきましたが、比較的大きなプロジェクトになるとプログラムを部分的にパッケージとして管理したくなります。

雛形を使ったパッケージプロジェクトの作成方法

 dartコマンドを使うとパッケージ用の雛形を使ったプロジェクトを作成することができます。リスト7は、パッケージ用のプロジェクトを作成する場合の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のようなフォルダとファイルが作成されます。

図1:パッケージプロジェクトの雛形
図1:パッケージプロジェクトの雛形

 また、プロジェクト名と指定した名前は同時にフォルダ名としても利用されます。(2)のように同様のことはflutterコマンドを使っても可能です。ただし、この場合、作成される雛形ファイルは多少異なります。

パッケージとして公開するファイルを指定する

 作成したdartプログラムを他のプロジェクトから利用できるようにするためには、libフォルダ直下にあるファイルにて実際に実装しているファイル名を指定することが推奨されています。また、先ほど作成した雛形では、それぞれのプログラムの実装はsrcフォルダ以下に作成していくことになります。

 しかし、パッケージを利用する側でsrc以下の実装プログラムを調べてimportすることは、利用する側にとっても面倒な作業です。また、パッケージを公開する側にとっても、内部のファイル構造を変えると影響が利用者に影響が生じてしまうのも、よいこととは言えません。

 そのため、パッケージを利用する側が、srcフォルダ内の構造を意識せずに利用できるように推奨されているということです。リスト8が公開するファイルを指定したコード例です。

[リスト8] 公開するパッケージプログラムファイル(sample_pkg/lib/sample_pkg.dart)
library sample_pkg; (1) ライブラリ名の宣言

// (2) 公開する実装ファイル
export 'src/sample_pkg_base.dart';

 (1)では、このプログラムがライブラリの宣言であることを指定し、(2)で実際に公開するプログラムファイルを指定します。公開するプログラムが複数ある場合には、(2)と同じような指定を繰り返していきます。このようにすることで、利用する側はsample_pkg.dartの存在だけを気にすればよいこととなります。

プロジェクト定義ファイル

 Dartプロジェクトでは、プロジェクト管理をするためにpubspec.yamlというファイルを利用します。このファイルでは、大きく分けて、以下2つの情報を管理しています。

  • プロジェクト自身のメタ情報
  • プロジェクトが依存している外部要因(パッケージなど)

 プロジェクト自身のメタ情報では表1の内容がよく利用されます。

表1:pubspeck.yamlファイル内でしている基本的なメタ情報
機能 概要
name プロジェクト名称
version プロジェクトのバージョン情報
description プロジェクトの説明

 プロジェクトの依存情報を指定するには表2の指定を利用します。

表2:pubspeck.yamlファイル内で指定する依存情報
機能 概要
environment Dart SDKのバージョンを指定します
dependencies 利用するパッケージを指定します
dev_dependencies 開発時のみ使用するパッケージを指定します

environmentの指定方法

 Dart SDKのバージョンを指定するには、リスト9のようにsdk:として指定します。今回紹介したNull Safety機能を有効にするには、このバージョンを2.12以上として指定する必要があります。

[リスト9] pubspec.yamlでのenvironment指定例
environment:
  # (1) SDKのバージョン指定
  sdk: '>=2.8.1 <3.0.0'

 (1)ではSDKのバージョン指定は2.8.1以上、3.0.0未満となります。このバージョン指定方法は、後述するパッケージ依存でも同じになります。詳しくは、こちらを参照してください。

dependencies/dev_dependenciesの指定方法

 通常、利用したいパッケージはpub.devというサイトから探して利用します。

図2:pub.devサイト
図2:pub.devサイト

 利用したいパッケージが見つかったらリスト10のように指定します。具体的な利用手順はサイト自身にも記されているので、それを参照すると良いでしょう。

[リスト10] pubspec.yamlでのenvironment指定例
dependencies:
  # meta - https://pub.dev/packages/meta
  meta: ^1.2.4
  # https://pub.dev/packages/crypto
  crypto: ^2.1.5

 このままではプログラム上からはまだ利用できないので、依存しているパッケージをリスト11のようにインストールする必要があります。

[リスト11] 依存しているパッケージをインストールするためのコマンド
$dart pub get
# 以下のflutterコマンドでも同様のことが可能
$flutter pub get

 特にパッケージの取得先を指定していない場合には、dartの標準リポジトリから取得されます。また、先ほど、自分で作成した他のフォルダにあるパッケージを依存に加える場合には、リスト12のようにします。

[リスト12] pubspec.yamlでのenvironment指定例
dependencies:
  sample_pkg:
    # (1) 相対パスでの記述が可能
    path: ../sample_pkg

 (1)のように「path:」を記述することで、別フォルダで管理しているパッケージを参照することができます。また、外部ホストしている場合にも対応しています。

まとめ

 Dartの仕様について紹介してきましたが、言語情報については他の言語に比べて、まだ日本語情報がすくないことは事実です。しかし、JavaScriptやJava、または他の言語を知っている方であれば共有している部分も多く、Dartを使うことはそれほど大きな障壁とはならないはずです。

 次回からは、Flutterを用いたUI部分の作成について紹介していきます。そこで、他の言語では見慣れない表記方法などがありましたら、ぜひ、これまでのDart仕様の紹介を見返してもらえれば幸いです。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Flutterで始めるモバイルアプリ開発連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/13880 2022/09/05 20:12

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング