Dartの基礎、特徴を徹底解説!初心者にオススメの理由とは?
みなさんは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の特徴
DartはJavascriptとは異なる特徴を有しています。
これらの特徴がJavascriptの欠点を克服し、より優れた開発言語として認識され始めた理由です。
オブジェクト指向型言語
Dartはオブジェクト指向型言語です。JavaScriptはプロトタイプベースですが、Dartはクラスベースのオブジェクト指向です。
オブジェクト指向とは?オブジェクト指向の基本を徹底解説!メリットやカプセル化の概念は?おすすめオブジェクト指向言語も紹介
単一継承なので多重継承は行えません。
以下にクラスのソースコードの例を記載します。
- // 親クラス
- class Animal {
- // インスタンス変数
- int age;
- String name;
- // コンストラクター
- Animal(this.age, this.name);
- // 関数
- void printAge() {
- print(‘Age: $age’);
- }
- }
- // 子クラス
- class Cat extends Animal {
- Cat(int age, String name) : super(age, name);
- }
- class Dog extends Animal {
- Dog(int age, String name) : super(age, name);
- }
- // メイン関数
- void main() {
- Cat cat = Cat(2, ‘Bella’);
- print(cat.name);
- cat.printAge();
- }
強力な型推論機構
静的型付け・動的型付け両方に対応しています。
変数の宣言時にdynamicを付与すれば動的型付け変数です。つまり臨機応変に切り替えることができます。
- void main() {
- dynamic greeting = ‘Good morning’;
- greeting = ‘Good evening’;
- }
静的型付けであればコンパイル時に検証が行われ、型安全が保証されるので安心して実装が可能です。
また速度的には動的型付けよりも速く、宣言されているので視覚的にも見やすいソースコードになっているでしょう。
ちなみに「var」も指定することができ、代入可能な変数を宣言するときに使用します。
- main() {
- var hoge = ‘Good morning’;
- hoge = ‘Good evening’;
- print(“greeting: $hoge”);
- }
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
Flutterはネイティブコンパイルされたアプリケーションを単一コードから構築できるGoogleのUIツールキットになります。
クロスプラットフォーム対応のアプリケーション構築を可能にするこのツールキットは、以下のプラットフォームに対応可能です。
- Webアプリケーション
- モバイルアプリケーション(iOS・Android・React Native)
- Xamarin
Xamarin(ザマリン)は.NET技術を利用してモバイル・Windows向けのアプリケーションをビルドできるプラットフォームです。
Flutterはプログラミング言語にDartを採用しています。
初心者にオススメの理由
「Dartのメリット」で説明した通り学習コストが低いため、プログラミング初心者にもおすすめの言語です。
またDartは既存言語の良いところを集め、悪いところを改善して作成されました。
つまり多くの言語の叡智を集めたプログラミング言語です。Dartを学習すれば他の多くの言語への応用が効きます。
プログラミング学習全般にいえることではありますが、最初に優れたソースコードや概念に触れるのはとても大事なことです。
Dartはより良い知識と経験をもたらしてくれるでしょう。
JavaScriptとは
JavaScript(ジャバスクリプト)は1995年に登場したプログラミング言語です。NetScapeにより開発されました。
これを皮切りに各ブラウザが独自に言語を開発し混乱、長い年月をかけ紆余曲折を経て仕様が標準化されていきました。
JavaScriptの基本については以下の記事で詳しく解説していますので、宜しければ併せてご参照ください。
【JavaScript入門】JavaScriptの基本を解説!JavaScriptでできることや書き方・配列作成法も紹介
LiveScript
「LiveScript」と呼ばれていましたが、JavaにあやかりJavaScriptに改名されます。しかしJavaとJavaScriptには何の関係もありません。
プログラミング初心者の方はお気をつけ下さい。
ECMAScript
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で記述できるのがメリットで、様々な種類のライブラリが公開されています。
Node.jsの基本を初心者向けに解説!導入のメリットやできることは?OS別インストール方法とバージョン確認の仕方も紹介
AltJS(Alternative JavaScript)
AltJS(Alternative JavaScript)は代替JavaScript言語です。AltJSで書かれたコードをコンパイルしてJavaScriptコードを生成します。
各々のAltJSに特有の文法があり、慣れるまでには多少の時間がかかるでしょう。
代表的なAltJSには以下の言語があります。
- TypeScript
- CoffeeScript
- Dart
TypeScriptはMicrosoftにより開発されたプログラミング言語です。
静的型付けができる・クラスベースのオブジェクト指向・サーバーサイドでも書けるなど、Dartと競合する点がいくつかあります。
【TypeScript入門】TypeScriptの基本をわかりやすく解説!導入メリットやJavaScriptとの違いとは
CoffeeScriptはRuby on Railsでサポートされていますが、学習コストが高くデバッグが難しいことからあまりシェアが伸びていません。
JavaScriptフレームワーク
JavaScriptフレームワークはJavaScript製のWebアプリケーションを作成するためのものです。
沢山の種類のフレームワークが登場しましたが、現在フロントエンドで覇権を争っているのは「Vue.js」「React」の2種類と思われます。
Vue.jsとは?入門者向けに徹底解説!チュートリアルについても紹介!jQueryの代わりになると言われる理由とは?
Reactの基礎を入門者向けに紹介!チュートリアルについても解説!メリットやjqueryとの違いとは?
これらのフレームワークは言語としてJavaScriptを使用するようになっていますが、設定でTypeScriptの選択も可能です。
このようにフレームワークがAltJSを言語として採用することはあります。
DartとJavaScriptの違い
「JavaScript関連用語」でご説明した通りDartはAltJSの仲間です。
Dartで書かれたソースコードはJavaScriptにコンパイルされ、これを利用してアプリケーションが動作します。
どちらかというとTypeScriptと同じ分類です。ではTypeScriptとDartではどちらが有利かというとTypeScriptになります。
Dartの案件は検索してもほとんどありません。TypeScriptの案件は沢山あります。日本で開発に使用され始めるのは随分先になりそうです。
Googleトレンドでプログラミング言語として比較しても、Dartはやっと少しずつ人気が出てきたといったところです。
TypeScriptはほぼ右肩上がりにグラフが変動しています。
言語仕様や技術的な差異は上げていけばきりがありません。
強いて1つあげるなら「DartはJavaScriptのスーパーセットではなく完全なスクリプト言語である」というのが核心だと思います。
おわりに
DartはGoogle社内でも急速に発展を遂げている言語で、Adobe・JetBrains・MailChimpなどの企業も採用しています。
Dartがマイナーになってからというもの、誰がこのような状況を予測できたでしょうか。
CoffeeScriptもDartのように一気に順位を変える可能性はないとはいえません。
JavaScriptの歴史はとても面白いです。この機会にJavaScriptについて様々な観点から調べてみてはいかがでしょう。
toiroフリーランスは、SHIFTグループがプライムとして参画している独自案件をフリーランスエンジニア向けに紹介する唯一のプラットフォームサービスです。
エージェントによるサポートもありますので、ご利用を検討してみてはいかがでしょうか。