2020.12.27本記事は、マルチプラットフォーム開発のSDK【Flutter】を用いたモバイルアプリ開発入門の為の記事です。ダーフクFlutterアプリケーションを開発する際に使われるプログラミング言語はDart言語です。Flutterが注目されるまでほぼ知られていなかったこの言語。どんな特徴があるのか、歴史も含めてまとめていきます!目次Dartが作られた目的Dartは、2011年にGoogleによって開発・公開されたWebアプリケーション開発のためのプログラミング言語です。Javascriptの欠点を補う目的として作られました。現在では、クライアントサイド、サーバーサイドだけでなく、モバイル領域(Flutter)にも使われています。公開後、DartはGoogleが開発しているChromeブラウザに組み込まれる(Dart仮想マシンを組み込む)予定でした。2015年、Googleはこれを断念しその他のaltJS(Typescript)などのように、JavaScriptへのコンパイルに専念すると発表しました。これ以降DartはMicrosoft社が開発した「TypeScript」がGoogleの社内標準言語になったと2017年4月に発表があった2018年最も学ぶ価値のないプログラミング言語の1位になったなど、2018年まで人気が低い状態が続いていました。2018年の12月にGoogleがモバイル開発SDK【Flutter】の製品版リリースを発表されて以降、急速に世界中の開発者の注目を集めてきました。2019年の最も学ぶ価値のないプログラミング言語では、14位に下がり、注目されていることが分かります。(以下ランキング記事のリンクです。it.Dartの特徴ここからは、Dartの特徴について、少し詳細に踏み入れて解説をしていきたいと思います。➀高パフォーマンスDartは、パフォーマンスが高く、大規模開発にも対応可能です。➁オブジェクト指向型言語Dartは、Javaなどと同様のクラスベースのオブジェクト指向型言語です。全ての型の元がオブジェクト(nullもオブジェクト)であるという特徴を持ちます。➂静的型付けにも対応Dartは、静的型付けにも対応しています。全ての型を許容したい場合、dynamicキーワードを用いることもできます。言語仕様についても簡単に解説していきます。Dartを試してみたい方DartPadでDartを試すことができます。Languageでは、Dartについてより詳細に解説されています。keywordJavaのようにprivate、public、protectedはありません。そのかわり、名前の前に_を付けることで同ライブラリ外からのアクセスを制限することができます。(privateを実現)また、@protectedを宣言することでprotectedを実現します。doubleintは64bitの整数型です。doubleは64bitの浮動小数点型です。$fuga");}➁StringStringはUTF-16単位の配列です。文字列を作成する際に使います。$hoge");}➂BooleanJavascriptなどと異なり、Dartでtrueと解釈されるのはtrueのみです。それ以外はfalseと解釈されます。}}➃List配列はDartではListと呼ばれます。Generic型(Listの後に<設定したい型>を記述)を使うと、そのListで扱える型を制限できるため、型安全を保つことができます。2];}➄Set一意性を保った配列を作りたい場合、Setを使います。print(sampleSet);}➅Map連想配列を作りたい場合、Mapを使います。print(sampleMap2);}カスケード記号..でつなげることで、連続してオブジェクトの変数にアクセスすることができる。window.alert('Confirmed!'));クラス無名コンストラクターDartのコンストラクターの渡し方は他のプログラミング言語と大きくは変わりません。以下のように書くことで、記述量を減らすことができます。以下は同じ実行結果になる(厳密には異なります。無名コンストラクターに加え、名前付きコンストラクターを作ることもできます。}}:を使うことで、親クラスのコンストラクターを呼べるサブクラスのコンストラクター内で親クラスのコンストラクターを呼ぶ場合、:を使う必要があります。}:を使うことで、変数の事前割り当てができる引数の後に:で繋げることで、変数を予め割り当てておくことができます。$y)');}:を使うことで、同一クラスの別コンストラクターも呼べる同一クラス内で別のコンストラクターを呼び出したい場合、:とthisを使って呼び出すことができます。0);}非同期関数Dartは非同期処理をStreamとFutureで実現しています。FutureFutureは、JavascriptでいうPromiseです。.thenで繋げて非同期で値を取得します。エラー処理は.catchErrorで実装できます。awaitを用いることで同期処理のように記述することもできます。これもJavascriptと似ていますね。}}StreamStreamは連続したデータを非同期で受け取る機能を実装します。Streamを受け取る関数はasyncを記述されていなければなりません。forを用いて返された値を受け取ることが可能です。sum;}Streamについては、以下のリンクで詳しく解説されています。streams.まとめDartプログラミング言語について、歴史から言語仕様まで簡単に解説しました。Dartは独特の文法などはそこまで多くありません。JavascriptやJavaを使ったことのある方でしたらすぐに慣れる言語ですね。モダンな仕様(FutureやStreamなど)も一通り採用しており、今後も利用価値が高い言語であると言えます。Flutterの適用範囲をモバイル領域だけでなく、他の領域に拡げようとしている試みもあります。上記はまだまだ構想段階ではありますが、高い研究開発力のあるGoogleならこれをやってのけてくれるでしょう。この記事が少しでもお役に立てたら嬉しいです。