動くものを作りたい現役アプリエンジニアのブログ

Engineer Life Blog

Flutterで開発するためにDartを勉強する

Flutterで開発するためいDart言語を勉強したい。どうやって勉強すのがおすすめ?

このような疑問に答えていきます。

Dart言語はプログラミング言語なの中でもマイナーな言語Googleが作っている言語であるものの、2018年ごろまでは学ぶ価値のないプログラミング言語とまで言われていました。

しかし、Flutterというモバイルアプリ開発向けのツールが登場して一気に流れが変わりました。Flutterについては下記の記事でまとめたので知らない方は是非みてください。

 

Dart言語自体はあまり人気がなく情報も少ないですが、非常に便利なDart用のWebサイトがあるためそれを使って基本文法までさくっと理解したいと思います。

Dart言語の特徴

Dart言語はGoogle社製のプログラミング言語でDashという名前で開発されましたが、最終的にはDartという名前になったようです。

Dar言語はJavaのようなオブジェクト指向型の言語で、コードの書き方はjavascriptに近いイメージです。

他言語に比べて言語の仕様書が半分程度しかありません。一般的な言語にはあっても不要な機能はできる限り無くす思想で作られています。

そのおかげで人によって書き方に差が出にくいという特徴があります。

見方によっては機能不足という意見もあります。Flutterが出て注目される前はメリットという見方よりもデメリットという見方が強く結果として学ぶ価値のない言語のような誤った概念が広まってしまったのだと思います。

 

Dart言語の勉強方法

Dart言語はweb上で実行することができるサービスがあります。

下記サイトにアクセスしてDart言語の文法を試していきたいと思います。

 

非常に簡単に試すことができます。本来SDKや開発用のIDEをインストールして初めて試すことができますが、Dartについてはこのサイトで入力してすぐに実行して結果を得ることができます。

私個人の勉強方法は下記記事に載せています。もし学習の仕方が定まっていない方は是非参考にしてください。

 

Dart言語の基本文法

型・変数の代入

Dartは全てオブジェクト型です。

他の言語ではプリミティブ型とオブジェクト型の2つの概念があります。例えばjavaの場合intとIntegerは数値を格納するということは同じですが、intはプリミティブ型なので初期化は0でnullを入れることはできません。しかしオブジェクト型のIntegerには初期化がnullでnull自体を取り扱うことができます。

【結果】

List型の取り扱いに少し注意が必要な印象です。通常型に指定した型1つしか入らない概念ですがDartの場合Stringやintも同時に入れられるようです。

varを使った型推論にも対応しているようです。

【結果】

 

若干不思議な仕様もありますが、今まで多言語を習得した経験者ならそこまで苦労しません。

むしろ思ったり制約がなくて適当でも動く印象です。(理解せずに使ってバグ作り込みそうなのでテストは必須ですね)

 

分岐(if文)

 

良くあるif文の書き方で使えます。

繰り返し(for文)

【結果】

こちらも通常の書き方ができます。
複数言語を習得済みなら問題ないですが、for文の書き方がpythonに近いです。
List型を繰り返す際は「:」ではなく「in」です。

関数

【結果】

関数の頭にスコープはつけられません。もしスコープの制御をしたいなら変数に対して「_」などを付与する必要があります。

 

クラス

【結果】

classも通常の扱い通りです。ただし、クラスのフィールド変数への代入のときはthisを省略するのがDartのルールです。
thisをつけるのは引数の名前と同じ場合のみです。

 

同期・非同期

【結果】

何故でしょうか。同期的な動きになります。
本来これで123の前にendが入るような動きになるはずなのですが、DartPadでは再現できませんでした。

 

Dart言語の所感

Dart言語を使ってみてjavascriptのように経験のあるエンジニアなら感覚的に書いても動く印象でした。

また、Javaに近い言語なのでJavaエンジニアならすぐに使い慣れそうです。

これで簡単な文法は使えるようになったので、次はFlutterで開発していきたいと思います。