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編集部
FLEXY編集部
ハイスキルIT人材への案件紹介サービス
FLEXYメディアは、テックメディアとしてテクノロジーの推進に役立つコンテンツを提供しています。FLEXYメディアを運営するのは、ITに関連するプロシェアリングサービスを提供するFLEXY。経営課題をITで解決するためのCTOや技術顧問、エンジニアやデザイナーと企業を繋いでいます。

週1日~/リモートの案件に興味はありませんか?

週1日~/リモートの関わり方で、「開発案件」や「企業のIT化や設計のアドバザリーなどの技術顧問案件」を受けてみませんか?副業をしたい、独立して個人で仕事を受けたエンジニア・デザイナー・PM・技術顧問の皆様のお仕事探し支援サービスがあります。

FLEXYでご案内できる業務委託案件

業務委託契約・開発案件

テーマ 案件はFLEXYに登録後、コンサルタントからご紹介します
勤務日数 2〜3日/週
報酬 4万円/日
必要スキル JavaScript・React
勤務地 東京都内 / フルリモート
リモート 週1日のオンラインMTG・リモート

外部CTO、技術顧問案件

テーマ 技術アドバイザリーとして知見と経験を生かす(FLEXY登録後に詳細のご紹介)
勤務日数 1日/週
報酬 5〜10万円/日
必要スキル エンジニア組織立ち上げや統括のご経験、コードレビュー経験、技術的なアドバイスが出来る方
勤務地 東京都内 / フルリモート
リモート フルリモート

インフラエンジニア(業務委託契約)

テーマ 案件はFLEXYに登録後、コンサルタントからご紹介します
勤務日数 2〜3日/週
報酬 5万円/日
必要スキル それぞれの案件により異なります
勤務地 東京
リモート 相談可

業務委託・フロントエンドエンジニア

テーマ 案件はFLEXYに登録後、コンサルタントからご紹介します
勤務日数 週2日〜
報酬 5万/日
必要スキル それぞれの案件により異なります
勤務地 東京
リモート リモートと常駐のMIXなど

技術アドバイザリー案件

テーマ CTO、技術顧問案件はFLEXYに登録後、案件をコンサルタントからご紹介します
勤務日数 週1日
報酬 5万以上/日
必要スキル CTOとして活躍可能な方、エンジニア組織のマネージメント経験
勤務地 東京
リモート 最初は業務委託契約で週3日などご要望に合わせます

業務委託契約・サーバサイドエンジニア

テーマ CTO、技術顧問案件はFLEXYに登録後、案件をコンサルタントからご紹介します
勤務日数 週2〜3日
報酬 案件により異なります
必要スキル 案件により異なります
勤務地 東京都内
リモート 相談可能
個人登録

お仕事をお探しの方(無料登録)
法人の方(IT課題の相談)