SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

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

Flutter開発で必要なDart言語の基本を理解しよう

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


コレクション

 基本的な型の他にプログラマがよく利用するものに、一次元配列(リスト)や連想配列(マップやディクショナリと表現する言語もあります)があります。このような、複数の値を管理するデータセット用のクラスを一般的にコレクションと言います。Dartの基本ライブラリでもこれらの型は提供されているので、それぞれ紹介します。

一次元配列(List)

 Dartで配列を管理する場合には、Listが利用できます。Arrayという型は基本ライブラリには無いのでご注意ください。また、リスト12が実際に利用した場合の例です。

[リスト12]Listの利用例(collection_list.dart)
main() {
  // (1)空のリストを作る場合
  List list1 = [];

  // (2)値を設定する場合
  List list2 = [2,4,6,8,10];
  list2.add(12); // (3) 値を追加する場合

  // (3)型が決まらない値を追加する場合
  List list3 = ["two","three","four",5,6,7];

  // (4)値の取得方法
  print(list3.elementAt(0)); // 0番目値の"two"を取得する
  print(list3[2]); // 2番目値の"four"を取得する

  // (5)省略した場合には、dynamicと同じ
  List list4 = [2,4,6,8,10];
  list4.add("twelve");
}

 空のListを作成する場合、(1)のように[]を使うことで作成できます。また、変数の宣言時に値を設定する場合には、(2)の通りにします。そして、値を追加する場合は、addというメソッドを利用します。また、Generic型で追加できる型を制限していますが、指定したくない場合には(3)のようにdynamic型を指定します。

 そして、値を取得するには、(4)のようにelementAtというメソッドを使って取得することもできますが、メソッドを使わず[]を使ってアクセスすることも可能です。(5)のように型を省略できます。その場合には、dynamic型を指定した時と同じになります。そして、値を指定していても、省略した場合にはdynamic型を指定したことと同じです。

ユニークな値の一次元配列(Set)

 Setとは、同じ値を含まない一次元配列のようなデータセットを管理するための型です。リスト13が実際に利用した場合の例です。

[リスト13]Setの利用例(collection_set.dart)
void main(){
  // (1)空のSetを作る場合
  Set values = {};

  // (2)初期値を指定する場合
  Set values2 = {2,3,5};
  values2.add(6); // (3)値を追加する場合
  values2.add(6); // 同じ値は2つ追加できない

  // (4)値を取得する方法
  int val_2 = values.elementAt(0);
  // (5) []を使ったアクセスはできません
  // int val_3 = values[0];
}

 空のSetを作成する場合、(1)のように{}を使うことで作成できます。また、変数の宣言時に値を設定する場合には、(2)の通りにします。そして、値を追加する場合は、Listと同じようaddメソッドを使います。しかし、Listと最も異なるのが、同じ値は重複して登録はできません。そして、値の取得は(4)のようにelementAtを使うことができますが、(5)Listと同じように[]を使って値の取得はできません。

連想配列(Map)

 Mapとは、キーとそのキーにひも付きいた値を管理するための型です。そのため、辞書型(ディクショナリ)と言われる場合もあります。DartではMapと呼ばれています。リスト14が実際に利用した場合の例です。

[リスト14]Mapの利用例(collection_map.dart)
void main(){
  //  (1)空のマップを作成する
  Map values1 = {};

  //  (2)インスタンス作成時に値を設定する
  Map values2 = {'one' : 1, 'two' : 2};

  //  (3)値を追加する方法
  values1['three'] = 3;

  //  (4)値の取得
  print(values2['one']);
}

 空のMapを作成する場合には、(1)のように{}を使うことで作成ができます。また、変数の宣言時に値を設定する場合には、(2)の通りにします。そして、値を追加する場合は、(3)のように[キー値]を使って追加が可能です。そして、値の取得は[]を使って行えます。

まとめ

 今回は、Dart言語の基礎部分について紹介しました。JavaScriptやJavaのような言語と似ていると何度も言及していますが、言語の基本部分でもそれらの特徴を取り入れていると感じられます。

 特に、言語仕様部分ではJavaScript部分よりも厳格にし、データなどの扱い方ではJavaのような厳格さを求めていません。これは、Dartと言う言語がUIを扱うための言語であって、必ずしも広い目的で使える汎用言語ではないためです。そのため、目的を満たす制限と使いやすさのための寛容さを、バランスよく反映できたものだと思います。

 次回は、関数やクラスについて紹介します。関数やクラスの扱い方になると、Dart言語の特徴がより表れるので、今回紹介した内容を前提にしてもらえればと思います。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
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本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/13498 2022/09/05 20:10

イベント

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

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

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

メールバックナンバー