loading...

thumbnail

【Dart言語入門】Dartの基礎、特徴を徹底解説!初心者にオススメの理由とは?JavaScriptとの違いとは?

みなさんはDartにどのようなイメージを抱いているでしょうか。ひょっとしたら知らない方もいるかもしれません。

Dartは2018年頃まであまり有名な言語ではありませんでした。それどころか学ぶべきではない言語としてランクインしたことまであります。

本記事ではまずDartとは何か、特徴や機能について説明します。次にメリット・デメリット、Flutterについて触れていきましょう。

後半はJavaScript関連の用語について整理し、タイトルにあるJavaScriptとDartとの違いについて定義を明確にしていきます。

Dartとは

Dart(ダート・ダーツなど)は2011年に発表されたWeb開発用のプログラミング言語です。

Dartの不遇時代

Javascriptの問題を払拭するため、Googleにより開発されました。

登場当初は期待されていたもののDart仮想マシン構想を断念し、コンパイル型言語としてAltJSの仲間に加わります。

Google自体が社内標準にTypeScriptを採用したこともあり衰退、学ぶ価値のないプログラミング言語として認知されマイナーになりました。

関心が集まり始めたDart 2

転換期は2018年、Googleは新たにDart 2・Flutter・Angular Dartを発表します。

Dartは汚名をそそぎ注目を集め、一気に学ぶ価値のないプログラミング言語の順位を下げました。

今後Dartが普及していくかどうか、動向が注目されています。

Dartの特徴

hand and laptop typing closed up

DartはJavascriptとは異なる特徴を有しています。

これらの特徴がJavascriptの欠点を克服し、より優れた開発言語として認識され始めた理由です。

オブジェクト指向型言語

Dartはオブジェクト指向型言語です。JavaScriptはプロトタイプベースですが、Dartはクラスベースのオブジェクト指向です。

単一継承なので多重継承は行えません。

以下にクラスのソースコードの例を記載します。

  1. // 親クラス
  2. class Animal {
  3.   // インスタンス変数
  4.   int age;
  5.   String name;
  6.   // コンストラクター
  7.   Animal(this.age, this.name);
  8.   // 関数
  9.   void printAge() {
  10.     print(‘Age: $age’);
  11.   }
  12. }
  13. // 子クラス
  14. class Cat extends Animal {
  15.   Cat(int age, String name) : super(age, name);
  16. }
  17. class Dog extends Animal {
  18.   Dog(int age, String name) : super(age, name);
  19. }
  20. // メイン関数
  21. void main() {
  22.  Cat cat = Cat(2, ‘Bella’);
  23.  print(cat.name);
  24.  cat.printAge();
  25. }

Dartの公式サイトには簡単に試せる「DartPad」というツールがありますので、雰囲気を掴みたい方は試してみて下さい。

強力な型推論機構

コンピューター

静的型付け・動的型付け両方に対応しています。

変数の宣言時にdynamicを付与すれば動的型付け変数です。つまり臨機応変に切り替えることができます。

  1. void main() {
  2.   dynamic greeting = ‘Good morning’;
  3.   greeting = ‘Good evening’;
  4. }

静的型付けであればコンパイル時に検証が行われ、型安全が保証されるので安心して実装が可能です。

また速度的には動的型付けよりも速く、宣言されているので視覚的にも見やすいソースコードになっているでしょう。

ちなみに「var」も指定することができ、代入可能な変数を宣言するときに使用します。

  1. main() {
  2.   var hoge = ‘Good morning’;
  3.   hoge = ‘Good evening’;
  4.   print(“greeting: $hoge”);
  5. }

Dartのメリット

古い懐中時計
Dartのメリットは開発者への利点が多くあり、パフォーマンスに優れている点です。

学習コストが低い

代替JavaScript言語を目指して開発されたため、JavaScript経験者にとって扱いやすい言語に仕上がっています。

またC#やJavaからも影響を受けているため基本的な仕様や文法はJavaに近く、経験者であれば学習コストを低く抑えることができるでしょう。

またDartは各種IDEやコードエディターがサポートしており、開発ツールの種類が豊富です。

優れたパフォーマンス

Dart製のアプリケーションは非常にパフォーマンスが高く、大規模サービスの開発などの用途にも使用することができます。

またJITコンパイラが搭載されており、これがFlutterのStateful Hot Reload(ステートフルホットリロード)を実現する仕組みです。

Dartはアプリケーション自体のパフォーマンスのみならず、開発プロジェクトそのもののパフォーマンスも向上させます。

Dartのデメリット

英語と若い女性

Dartにはほとんどデメリットらしいデメリットはありませんが、強いてあげるなら以下のような欠点があります。

日本語の情報が少ない

Dart・Flutterは登場時期こそ早いものの、実際にメジャーになってきたのは2018年以降です。

Dartだけに限りませんがフロントエンドの技術は開発速度が尋常ではないため、和訳が出る頃には古い技術となっているケースもあります。

現在、Dartの日本語記事はほとんどありません。学習にあたり当たり前のように英語記事を読んだり、検索をしたりする力が必要です。

発展途上の段階

Dart・Flutterは基本的な機能の実装が大体終わり、やっと追加機能の開発に差し掛かったばかりです。

Javaほど枯れた技術からDartを使い始めると、まだ未発達な部分も見られるでしょう。

パッケージの数も少なく、まだまだこれからといったところです。

DartとFlutter

laptop-3459925_1920

Flutterはネイティブコンパイルされたアプリケーションを単一コードから構築できるGoogleのUIツールキットになります。

クロスプラットフォーム対応のアプリケーション構築を可能にするこのツールキットは、以下のプラットフォームに対応可能です。

  • Webアプリケーション
  • モバイルアプリケーション(iOS・Android・React Native)
  • Xamarin

Xamarin(ザマリン)は.NET技術を利用してモバイル・Windows向けのアプリケーションをビルドできるプラットフォームです。

Flutterはプログラミング言語にDartを採用しています。

初心者にオススメの理由

Website design. Developing programming and coding technologies.

「Dartのメリット」で説明した通り学習コストが低いため、プログラミング初心者にもおすすめの言語です。

またDartは既存言語の良いところを集め、悪いところを改善して作成されました。

つまり多くの言語の叡智を集めたプログラミング言語です。Dartを学習すれば他の多くの言語への応用が効きます。

プログラミング学習全般にいえることではありますが、最初に優れたソースコードや概念に触れるのはとても大事なことです。

Dartはより良い知識と経験をもたらしてくれるでしょう。

JavaScriptとは

JavaScriptを指差す男性

JavaScript(ジャバスクリプト)は1995年に登場したプログラミング言語です。NetScapeにより開発されました。

これを皮切りに各ブラウザが独自に言語を開発し混乱、長い年月をかけ紆余曲折を経て仕様が標準化されていきました。

LiveScript

LiveScript」と呼ばれていましたが、JavaにあやかりJavaScriptに改名されます。しかしJavaとJavaScriptには何の関係もありません。

プログラミング初心者の方はお気をつけ下さい。

ECMAScript

79768650_xl

ECMAScript(エクマスクリプト)はJavaScriptの標準規格です。

最近ES5・ES2015(ES6)という単語と共に聞くようになったので、知っている方も多いと思います。

ちなみにECMAScript Edition 1は1997年からあります。では何故、最近になって急に注目されるようになってきたのでしょうか。

JavaScriptの進化スピードは年々早まっており、特に書き方が大きく変化したのがES5以前とES2015(ES6)の間でした。

このため比較記事や移行を考える開発者の投稿が増えています。

今から学習するならES6で書いてBabelで変換するのが良いと思いますが、既存のプロジェクトでES5以前のコードを触ることもあるでしょう。

JavaScript関連用語

本で勉強する女子生徒

DartとJavaScriptの違いを知るには、JavaScript関連の用語について整理する必要があります。

Node.js

Node.jsは簡単にいうと「サーバーサイドでJavaScriptを動かす技術」です。

フロントエンド・バックエンド両方を同じJavaScriptで記述できるのがメリットで、様々な種類のライブラリが公開されています。

AltJS(Alternative JavaScript)

AltJS(Alternative JavaScript)は代替JavaScript言語です。AltJSで書かれたコードをコンパイルしてJavaScriptコードを生成します。

各々のAltJSに特有の文法があり、慣れるまでには多少の時間がかかるでしょう。

代表的なAltJSには以下の言語があります。

  • TypeScript
  • CoffeeScript
  • Dart

TypeScriptはMicrosoftにより開発されたプログラミング言語です。

静的型付けができる・クラスベースのオブジェクト指向・サーバーサイドでも書けるなど、Dartと競合する点がいくつかあります。

CoffeeScriptはRuby on Railsでサポートされていますが、学習コストが高くデバッグが難しいことからあまりシェアが伸びていません。

JavaScriptフレームワーク

translate

JavaScriptフレームワークはJavaScript製のWebアプリケーションを作成するためのものです。

沢山の種類のフレームワークが登場しましたが、現在フロントエンドで覇権を争っているのは「Vue.js」「React」の2種類と思われます。

これらのフレームワークは言語としてJavaScriptを使用するようになっていますが、設定でTypeScriptの選択も可能です。

このようにフレームワークがAltJSを言語として採用することはあります。

DartとJavaScriptの違い

プログラミング 数学

「JavaScript関連用語」でご説明した通りDartはAltJSの仲間です。

Dartで書かれたソースコードはJavaScriptにコンパイルされ、これを利用してアプリケーションが動作します。

どちらかというとTypeScriptと同じ分類です。ではTypeScriptとDartではどちらが有利かというとTypeScriptになります。

Dartの案件は検索してもほとんどありません。TypeScriptの案件は沢山あります。日本で開発に使用され始めるのは随分先になりそうです。

Googleトレンドでプログラミング言語として比較しても、Dartはやっと少しずつ人気が出てきたといったところです。

TypeScriptはほぼ右肩上がりにグラフが変動しています。

言語仕様や技術的な差異は上げていけばきりがありません。

強いて1つあげるなら「DartはJavaScriptのスーパーセットではなく完全なスクリプト言語である」というのが核心だと思います。

おわりに

ラップトップPCと本による電子書籍ライブラリ

DartはGoogle社内でも急速に発展を遂げている言語で、Adobe・JetBrains・MailChimpなどの企業も採用しています。

Dartがマイナーになってからというもの、誰がこのような状況を予測できたでしょうか。

CoffeeScriptもDartのように一気に順位を変える可能性はないとはいえません。

JavaScriptの歴史はとても面白いです。この機会にJavaScriptについて様々な観点から調べてみてはいかがでしょう。

RANKING週間人気コラムランキング

RANKINGカテゴリーランキング

CATEGORY

TAG

TOP