支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • Dart言語を使用したフレームワーク

はじめに

2007年にIphone、2008年にandroidが搭載されたスマートフォンが発売されて以来、多くの人々に「インターネット」というものが身近になりました。それと同時に、モバイルデバイス用のアプリ等も多数開発されたり、Googleの「モバイルデバイスに最適化されたサイトの検索順位を上昇させる」という発言などがら、今やWeb業界などでもスマートフォンなどのモバイルデバイスは無視できない存在となりました。
モバイルデバイス用のアプリの開発は、使用する言語はもちろん、デバイスの性能も様々なこと、単純にスペックがPCよりかは劣るためデータの転送量やメモリの使用量はWebアプリ開発以上に気を配らなければいけない等、Webアプリ開発とはまた違った難しさもあります。今回はそんなモバイルデバイス用のアプリを開発するフレームワークであるFlutterについて紹介します。

Flutterとは?

Flutterは、2017年頃に開発されたモバイルアプリケーションフレームワークです。Googleの開発したAltJSである「Dart」という言語を用いたフレームワークです。従来のモバイルアプリケーション開発用の言語、フレームワークよりも優れた数々の点があり、今現在注目を浴びている技術の1つです。
Dart言語自体はJavaやJavascriptに似たような記述の仕方のため、これらの言語経験者は割と苦に感じる事無く移行できるかもしれません。

特徴

クロスプラットフォームフレームワーク

Flutterは「クロスプラットフォームフレームワーク」であり、Iosとandroid両方に対応したモバイルアプリケーションを作成することが可能です。
従来のモバイル開発のほとんどは

  • Ios・・・Objective-C、Swift
  • android・・・Java、Kotlin

で開発されることがほとんどでした。これは各OSによって操作方法やセキュリティなどの環境が異なることから、各OSでの挙動に最適化された言語で開発する必要があったからです。しかし、従来の開発のやり方でiosとandroid両方に対応したモバイルアプリを開発しようとすると少なくとも2つの言語に習熟する、または複数の開発者を用意する必要があり、それは開発者の大きな負担となりました。そこでIos、androidの両方のOSに対応した「クラスプラットフォームフレームワーク」というものが登場し、1つの言語、フレームワークで両方のOSに対応したモバイルアプリが開発できるようになりました。
Flutterもクロスプラットフォームフレームワークの一つであり、効率的にIos、androidの両方に対応したアプリが開発できるようになっています。さらに、Flutterはデスクトップアプリ版も開発中です。2019年には「Flutter for Web」が発表され、FlutterはWebアプリ開発も可能になった他、現在Window、Mac、Linuxのネイティブで動作するようにも開発が進められています。
Flutterは単にIosとandroid両方で開発ができる「クロスプラットフォームフレームワーク」ではなく、デバイスを選ばずどこでも動作する真の「クロスプラットフォームフレームワーク」を目指していることがわかります。

Hot Reload機能

従来のSwiftやJavaでモバイルアプリの開発をする時、問題としてあったのが「ビルドに時間がかかる」ことでした。恐らく開発中に「変更したコードがどう画面に反映されているか」を確認したい場面は開発中に頻繁に訪れるはずですし、その度に数分間ビルドに時間がかかるようでは開発効率はあまり良くないと言えるでしょう。
Flutterは「Hot Reload機能」を備えており、記述したコードの変更が画面に即座に反映されるため、従来の言語で開発するよりも開発効率は良いと言えます。

豊富なウィジェット

Flutterには「ウィジェット」と呼ばれるよく使われる画面のレイアウトやアイコンが豊富に用意されています。ウィジェットを使うことによってパズルのように画面のレイアウトやアイコンを組み合わせることができ、0から画面のレイアウトやアイコンを用意するよりも格段効率は良くなると言えます。

他のクロスプラットフォームフレームワーク

Flutter以外のクロスプラットフォームフレームワークとして、XamarinやReactNativeといったものが挙げられます。
XamarinはC#、ReactnativeはReact(Javascript)をベースにしたフレームワークであり、もしそれらの言語に習熟しているのであればそちらを選んだほうが開発の効率は良いかもしれません。
特にReactNativeは、StateやPropsといった概念から、JSXを使用した記述の仕方など、Web開発とほぼ変わらない開発方法で開発ができます。しかし、React独特の文法であるJSXや状態管理のライブラリであるReduxは非常に複雑で学習コストが高いので、Reactを使用した経験がないのであれば避けたほうが無難でしょう。

まとめ

  • Flutterは、Googleが開発したIos、android両対応のDart言語を使用したクロスプラットフォームフレームワークである
  • モバイルだけでなく、Webやデスクトップネイティブでも動作するよう開発が進められている
  • Hot Reload機能や、豊富なウィジェットなど、開発効率を上げる機能が豊富である

いかがでしたでしょうか。これまでのクロスプラットフォームフレームワークと違い、FlutterはDart言語を使うことで「すべての環境において動作する」ことを目指しているので、将来は「Web、モバイル、組み込み、デスクトップはすべてFlutterで開発できる」なんて日が来るかもしれないですね。今の時点でも開発できる幅は大きく、今から学んでも損はない技術と言えるでしょう。この記事が皆さんの参考に慣れば幸いです。