Dartの最新フレームワークを完全解説!

Dartは2011年にGoogleがJavaScriptの問題点を解消するために開発したプログラミング言語です。既存のJavascriptにはいくつかの問題があるため、それらの問題を解決できる機能を有したプログラミング言語として登場しました。
このDartには開発を効率化するためのフレームワークが存在します。今回はプログラミング言語の概要から具体的にDartで開発されているフレームワークにはどのようなものがあるのかご紹介します。
Dartとは?
最初にプログラミング言語としてDartがどのようなものであるのかご説明します。
Dartとは
Dartは2011年にGoogleによって開発されたプログラミング言語です。比較的新しいプログラミング言語であり、現在多用されているJavaScriptの問題点を解決するために開発されました。
Javascriptは非常に利便性の高いプログラミング言語ではありますが、プログラミング言語の仕様として対応できない実装が存在します。そのような実装に対応できるようにするために、DartがGoogleから公開されたのです。
なお、公開されてからすぐは注目を集めていましたが、一時期は注目度合いが下がってしまいました。TypeScriptなど似たような性質を持つプログラミング言語が公開されていたからです。しかし、現在は新しいフレームワークが公開されるなどして、改めて注目を集めています。
Dartの特徴
DartはJavaScriptを改良したプログラミング言語であり、以下のような特徴があります。
- オブジェクト指向で開発できる
- 大規模開発に対応している
- 比較的パフォーマンスが高い
- セキュリティを担保しやすい
- 動的型付けと静的型付けに対応できる
JavaScriptと似ている部分もあれば、JavaScriptと異なる部分もあります。完全に新しいプログラミング言語というわけではなく、JavaScriptの特徴を踏まえたプログラミング言語です。JavaScriptの課題を解決しているため、JavaScriptにはない特徴もありますが、似た部分も多いと考えておきましょう。
Dartのメリット
Dartでアプリケーションを開発すると以下のようなメリットを感じられます。
クラスベースのオブジェクト指向で開発できる
JavaScriptがプロトタイプベースのオブジェクト指向に対応したプログラミング言語であるのに対して、Dartはクラスベースのオブジェクト指向で開発できます。そのため伝統的なオブジェクト指向言語と似ており、今までJavaなどのオブジェクト指向言語に対応してきたならば、スムーズに開発ができるようになるでしょう。
なお、オブジェクト指向を利用できることで、開発効率や生産性が上がります。エンジニアの負担も減るため、2次的なメリットもあると考えましょう。
実行時のパフォーマンスが高い
JavaScriptもパフォーマンスの高いプログラミング言語に分類されますが、Dartはさらにパフォーマンスの高いものです。Googleがプログラミング言語としてのパフォーマンスを重視して開発しているため、その効果は感じやすいでしょう。
ただ、実際にWebブラウザ上で実行するときは、DartからJavaScriptに変換する場合があります。変換するとJavaScriptとして処理されるため、このメリットは少々薄れてしまうのです。
Dartのデメリット
Dartには以下の通りデメリットもあります。
日本語の情報が少ない
日本では普及途中のプログラミング言語であるため、日本語の情報が限られています。「全く情報が得られない」という状況にはなりませんが、情報が得にくいことがデメリットです。
例えば、日本語でDartについて解説している書籍は少ない状況です。後ほどご説明するDartのフレームワークについても、日本語の書籍などは数多く発売されていません。
なお、海外のエンジニアはDartを利用している人も多く、英語の情報ならば手に入ります。そのため、翻訳ツールなどで翻訳して内容を把握することは可能です。
ライブラリなどが少ない
発展している途中のプログラミング言語であるため、ライブラリなど、開発をサポートしてくれるものが限られています。ライブラリ自体を開発するエンジニアが少ないため、限られたものしか公開されていないのです。基本的には自分で設計から実装までしなければなりません。
ただ、種類は多くないものの、後ほどご説明するとおりFlutterと呼ばれるフレームワークが公開されています。このフレームワークはDartでの開発を大きくサポートしてくれるので、ライブラリなどが少ないデメリットをある程度は解決してくれます。
Dartのフレームワーク「Flutter」
Dartで開発されているフレームワークにはFlutterと呼ばれるものがあります。続いてはこちらのフレームワークがどのようなものであるのかご説明します。
Flutterの特徴
Flutterは2018年にGoogleが正式にリリースしたフレームワークです。DartはGoogleが開発しているプログラミング言語ということもあり、Dartを活用したオープンソースのフレームワークが発表されたのです。
DartはJavaScriptの代替でありWebアプリケーション開発全般に利用されますが、Flutterはモバイルアプリの開発に特化しています。基本的にはスマートフォン向けアプリの開発に利用されるフレームワークです。ただ、スマートフォン向けアプリケーションと同じ機能をWindowsやMacなどのパソコン向けに提供したい時も利用できます。
なお、Googleの設計志向が取り入れられているため、全体的にソースコードが簡潔に記述できるようになっています。簡潔であるがゆえに慣れるまでは違和感を抱くかもしれませんが、慣れてしまえばJavaScriptよりもスムーズにコーディングできるでしょう。
Flutterのメリット
Flutterにはひとつのプログラミング言語でマルチプラットフォーム開発ができるメリットがあります。例えば、Android向けに開発したソースコードを利用してiOS向けのアプリケーションが開発可能です。今までは複数のプログラミング言語を使い分ける必要がありましたが、Flutterで実装すればそのような手間がなくなります。エンジニアの負担が軽くなり時間効率も高まるのです。
また、Flutterはホットリロードに対応しているフレームワークです。そのため、プログラムを実行しながら、マネージメントコードの修正ができます。一度、アプリケーションの動作を止めてからソースコードを修正し、改めて実行するという手間がかかりません。スムーズに変更結果を確認できるため、エンジニアの開発効率を高められます。
Flutterのデメリット
Flutterのデメリットは十分に使いこなせるエンジニアが少ないことです。少しずつ日本でも活用されているためエンジニアが増えてきていますが、必要なタイミングですぐに確保できないかもしれません。また、エンジニア目線では周りにFlutterやDartを扱っている人が少なく、情報共有がしにくい状況です。
海外では日本よりも早くDartやFlutterが注目されたため、日本よりも多くのエンジニアがいます。もし、何かしらまた最新の情報を得たいと考えるならば、このような海外のエンジニアとコミュニケーションを取らなければなりません。
また、マルチプラットフォームに対応できる点はメリットですが、Flutterで解決するとは言い切れない点がデメリットです。OSごとに独自の技術が必要となる場合があります。
例えば、位置情報を活用するアプリケーションでは、情報の取得方法についてOSごとの記述が必要です。特にデバイスを操作する部分については個別の対応が必要となるため注意しなければなりません。
Flutter2
現在、FlutterといえばFlutter2を指しています。上記でご説明したようなメリットや特徴はこちらのバージョンでリリースされたものです。それまではマルチプラットフォームには対応しておらず、モバイルアプリを開発するためのフレームワークでした。
バージョンが新しくなったことで、新しい機能が追加されたり古い機能が利用できなくなったりしています。そのため、Flutterを利用している場合はバージョンアップするか慎重に検討しなければなりません。
なお、現在は基本的にFlutter2を利用した開発が行われるため、新しく開発する場合は意識する必要がないでしょう。
Flutterの将来性
マルチプラットフォーム開発を実現できるフレームワークであるため、これから需要が高まっていくと考えられます。Dartも注目度が高まっているため、どちらの将来性も明るいと考えてよいでしょう。
ただ、海外では注目されているフレームワークですが、日本では普及の途中です。短期的には需要が少なく「将来性が明るくない」と感じてしまう可能性はあります。
Dartのフレームワーク「shelf」
shelfはDartで開発されたWebフレームワークです。スマートフォン向けのアプリケーション開発に利用するフレームワークではなく、Webサイトを構築するためのものです。FlutterはWebアプリケーション開発にも対応しているため、この部分の代替ができるフレームワークとイメージしましょう。
Webアプリケーションの構築に特化したフレームワークであるため、FlutterよりもWebサーバの制御を得意としています。例えば、通信を制御するためにJavaScriptを活用する機能などが最初から備えられているのです。
ただ、これを利用してもFlutterのようにマルチプラットフォームのアプリケーションを開発できるわけではありません。用途が大きく異なっているため、そこは理解しておきましょう。
DartとSwiftの比較
Dartと同じくスマートフォンアプリを開発できるプログラミング言語にSwiftがあります。簡単にこちらとの比較もご紹介します。
Swiftの概要
SwiftはiOS向けのスマホアプリを開発するプログラミング言語です。これまで利用されていたObjective-Cよりも簡単にコーディングできるため利用される機会が増えています。
また、スマートフォンだけではなくiOSのアプリならば幅広く実装可能です。Macアプリの開発なども可能となっていて、Apple社の製品に関わる人には非常に重要なプログラミング言語です。
生産性、開発スピード
iOS向けのアプリ単体を開発する場合は、Swiftを利用した方が生産性が高まります。Dartよりも簡単な文法でコーディングできるプログラミング言語であるため、エンジニアの負担が少なくて済むからです。
ただ、複数のOS向けにアプリを開発するならば、Dartを利用した方が良いでしょう。iOSアプリをSwiftで開発してしまうと、Androidアプリを別のプログラミング言語で実装しなければなりません。こうなるとエンジニアの負担が高まってしまうことは言うまでもありません。
コンパイラの性能
コンパイラの性能はDartのほうがSwiftよりも優れています。同程度のソースコードをコンパイルする場合、Dartでコンパイルしたほうが短時間かつ低リソースです。
ただ、純粋なコンパイラの性能はDartが優れていますが、その分、エンジニアのコーディング力が求められます。Dartはメモリ管理などの概念をエンジニアが意識する必要があり、コンパイルの際は細かくチェックされません。このようにコンパイラの仕様が性能に影響しているため、高速なコンパイルが必ずしも良いとは言い切れないでしょう。
学習の難易度
学習難易度はSwiftのほうがDartよりも簡単です。これは純粋に実装できる内容に大きな違いがあるからだと考えましょう。SwiftはApple社の製品向けプログラミング言語であるのに対して、Dartはマルチプラットフォーム向けです。
また、Swiftはそもそもプログラミング言語としてシンプルな実装ができるように考えられています。シンプルな実装が必ずしも良いとは言い切れないものの、初心者が学習すると仮定した場合、DartとSwiftには難易度に大きな差があります。
Dartフレームワークのトレンド
Dartのフレームワークや関連するパッケージについてGoogleTrendで検索してみると、結果はこのとおりとなりました。圧倒的にFlutterに関する検索が多く、それ以外のフレームワークもやや検索されている状況です。
Flutterの検索数はDartの需要が高まっていることを示すように近年増加しています。他のフレームワークについてもやや検索されていて、同様にDartの人気を示しています。
Dartエンジニアの需要
Dartの需要は徐々に増えているため、Dartエンジニアの需要も少しずつ増えてきています。ただ、まだまだJavaScriptなど主要なプログラミング言語と比較すると少ない状況です。
GoogleTrendの検索結果からも見えてくるとおり、これからDartの需要が高まりエンジニアも一気に求められると考えられます。ただ、そうなるまでには少し時間を要してしまうでしょう。
まとめ
Dartはjavascriptの問題点を解消したプログラミング言語でGoogleが開発しています。ただ、意外と知られていないプログラミング言語で、公開されてからも積極的には活用されていませんでした。
しかし、近年は、Flutterが活用されるようになるなど時代が変化してきています。まだまだ、需要やシェアの高いプログラミング言語ではありませんが、案件数は増加してきているのです。
現状、Dartだけで生活するのは難しいかもしれません。ただ、これからの伸びに期待できるプログラミング言語であるため、Flutterなどのフレームワークを習得しておくと良いでしょう。
関連記事:Dartでできること3選!将来性、需要は?
関連記事:Flutterか、Kotlinか?Androidアプリの開発言語