Flutterとは?特徴や案件の傾向を知ってマルチプラットフォーム時代に備えよう

こんにちは。FLEXY編集部です。

React NativeやXamarinなど、マルチプラットフォーム対応のフレームワークが増えてきました。

近年特にバージョンアップが進んでいるのが、Flutterです。あのトヨタ自動車も、車載システムの開発に採用しているのはご存じでしょうか?

注目度が高まっている今、FlutterはWeb系エンジニアであっても組み込みエンジニアであっても、基本的な知識は会得しておきたいところです。

Flutterにはどういった特徴や利点があるのでしょうか。案件の傾向も合わせてご紹介します。

Flutterとは

Flutterは、Googleがオープンソースとして提供している開発フレームワークです。現在の最新バージョンは2021年5月にリリースされた2.2です。

以前より主にスマートフォンアプリ開発に適したフレームワークとして知られてきましたが、より対応範囲を広げてマルチプラットフォームに対応するフレームワークとして進化しました。現在ではスマートフォンアプリ以外の開発でも徐々に採用されてきています。

画像引用:Flutter公式サイト   https://flutter.dev/

マルチプラットフォーム(クロスプラットフォーム)とは

マルチプラットフォームとは、1つのコードでさまざまなOS上で動作させること、またその環境を指します。別名でクロスプラットフォームとも呼ばれるものです。

モバイルアプリの開発は、iOS向けならSwiftやObjective-C、Android向けならJavaやKotlinといったように開発言語が異なります。したがってiOS・Android両方に発表するモバイルアプリの場合、開発はiOS用アプリとAndroid用アプリでそれぞれの言語で作成することになります。

この方法だと2つのアプリを開発することになるため、開発工数やコストが増加してしまうのです。

Flutterはマルチプラットフォーム対応で、開発工数やコストを削減可能です。単一のコードで、iOSやAndroidのモバイルアプリ、Windows、Mac、Linuxデスクトップアプリ、Webアプリ、組み込みデバイスのアプリまで生成できます。またFlutterは、2021年5月に配信が開始されたGoogleのOS「Fuchsia」にも対応しています。

Flutterを利用できる開発環境は?

Flutterを利用できる開発環境は、Android Studio、IntelliJ IDEA、Visual Studio Code、Firebaseです。

それぞれ以下に簡単に解説いたします。

■Android Studio: Googleが提供する、Android向けアプリ開発用の統合開発環境
■IntelliJ IDEA: JetBrains社が提供している、Java、KotlinなどJava関連のプログラミング言語に対応した統合開発環境
■Visual Studio Code: Microsoftが提供している、Windows、Linux、Mac用のソースコードエディタ
■Firebase: Googleが提供している、モバイルアプリ・Webアプリ開発用のプラットフォーム

▼参考サイト https://flutter.dev/docs/development/tools/android-studio

またデザインツールである「Adobe XD」もFlutterに対応しています。

プラグインを用いて、Adobe XDで作成したデザインをFlutter用のコードやウィジェットに変換することが可能です。

Flutterの特徴

マルチプラットフォーム対応であるほかに、Flutterにはこのような特徴があります。

迅速な開発が可能

従来のアプリ開発では、プログラムを変更した後にアプリを再起動させる必要がありました。そのためプログラム変更後の動作確認には時間を要してしまいます。

一方のFlutterにはホットリロードという機能が備わっています。ホットリロードは、プログラムの内容を変更した後に、その修正点がエミュレーターの実行画面や実機上の画面にすぐに反映される機能です。ホットリロードならプログラム修正後、コンパイル完了までの待ち時間が短縮されるため、迅速な開発につながっていくのです。

標準のUIを使える

Flutterには標準でUIが豊富に用意されており、AndroidでもiOSでも同じような見た目のアプリを作成できます。画面の実装方法も簡易であり、画面を構築する関数に、表示したい文字などの動的な変数を渡すだけで画面が実装できる「宣言的UI」の仕組みがあります。またUIはカスタマイズも可能です。

ただしUIはFlutter独自のものです。iOSやAndroidのネイティブのUIとは多少デザインが異なることにはご注意ください。

Dart 言語で書かれている

Flutterアプリや基本ライブラリは、Dart言語で書かれています。オブジェクト指向言語であり、動的型付け・静的型付けの両方に対応しているのもDart言語の特徴です。

またJavaScriptの代替言語として開発されている経緯があり、JavaScriptやJava、C#などと似た構文を持ちます。既に何らかのプログラミング言語の開発経験があれば、Dartの習得も比較的容易となることでしょう。

Flutterが採用される案件の傾向

Flutterでの開発は、スタートアップ企業を中心に徐々に増えてきています。

モバイルアプリ開発

Flutterが採用される案件で多いのは、モバイルアプリ開発です。

案件の内容は、Flutterでの開発、Flutterへのリプレイス案件、機能拡張の案件などさまざま。まだFlutterが登場して数年であるためか、Flutterの開発経験は問わない、もしくは「あれば歓迎」程度のスキルを求める案件もあります。ただその場合はアプリエンジニアとして、iOSやAndroidでの開発経験、JavaやSwiftの経験、他の開発フレームワークの経験が求められるでしょう。

社内Webシステムのアプリ対応プロジェクト

先行して開発されたWebシステムを、アプリでも使えるように機能拡張するプロジェクトも見受けられます。たとえば社内でPCによる操作を想定した人事システムを、社外で手軽に使えるようスマートフォンからアクセスできるアプリを作成する案件などです。

組み込みシステム開発

Flutterの案件の傾向で特徴的なのは、製造業でも使われていることです。

例えば冒頭でも紹介した通り、Flutterはトヨタ自動車株式会社の車載システムの開発で採用されています。開発の内容は大まかに言うと運転手が操作する機器のUIに関するもの。同社ではUI/UXを重視していくことを公表しています。

トヨタがFlutterを採用したことで、今後他の業界においてもFlutterを組み込み機器へ適用していくことが予想されます。

Flutterを学ぶときの注意点

Flutterは既存の開発フレームワークやプログラミング言語を習得していれば、比較的習得しやすいとの声もあります。

ただしFlutterやDartの公式情報は豊富にそろっているものの、英語のドキュメントが多いのが現状です。したがって最新情報を得るためには英語の能力が必要になってきます。

また他の言語に比べると機能がまだまだ整っていないとの評価もあり、今後のバージョンアップに期待したいところです。

まとめ

Flutterの特徴を簡単にご紹介しました。Flutterの案件数は現在のところ、他のフレームワークに比べると少ないですが、今後マルチプラットフォーム対応の案件は増加していくことが見込まれます。

Flutterが使える開発者はまだ少ないため、今習得しておけば将来的には案件獲得に有利となることでしょう。特にアプリ開発者や組み込みエンジニアは、今後対応できる業務の幅を広げるために、Flutterを学習してみてはいかがでしょうか?

※この記事は2021年6月時点の情報を元に作成しています。

企画/編集:FLEXY編集部

FLEXYとはABOUT FLEXY

『FLEXY』はエンジニア・デザイナー・CTO・技術顧問を中心に
週1~5日のさまざまな案件を紹介するサービスです