新しいWebサービスを提供する時に、忘れてならないのがスマホ用アプリの存在でしょう。PC用とスマホ用のアプリを同時に提供することは、いまや必須と言っても過言ではありません。そうしたPC用のアプリとスマホやタブレット用のアプリを同時に提供したいと考える企業にとって、重要なキーワードとなるのが「Flutter(フラッター)」という開発技術です。
「いやいや、ウチは発注する側だから、開発会社が何を使ってくれても構わない」と思っていたら、損をしてしまうこともあるかもしれません。
Flutterとは一体何なのか、発注企業にとってどのようなメリットがあるのか、株式会社Electoriaの代表取締役である中村 倫紀氏と、同社役員である平井 雅之氏に詳しくお話を伺いました。
FlutterはWebアプリケーションとスマホアプリの同時リリースに最適なフレームワーク!
―― Flutterとは何なのでしょうか?
Electoria 中村氏: FlutterはGoogleが開発した“モバイルアプリケーションフレームワーク”です。フレームワークとは、目的のアプリケーションを開発するために、有用な機能を提供するソフトウェア部品や、アプリケーションの骨組みとなるソフトウェア部品などをまとめたものです。
アプリケーションは、何もないところから作り上げていくこともできますが、それには時間がかかりますし、自分で新たに作った部分は、不具合がないかどうかの検証も必要です。
しかし、フレームワークを利用すれば、用意された骨組みに肉付けしていくように開発できる上、誰もが利用する部品はすでに検証済みのものが用意されていて、新しく作る部分は限られるため、開発時間を大幅に削減できます。
現在では、Webアプリケーションを開発するには“Webアプリケーションフレームワーク”を利用するのが一般的です。同様に、モバイルアプリケーションを開発するにはモバイルアプリケーションフレームワークを利用します。
―― なるほど。ではモバイルアプリケーションフレームワークの中でFlutterはどのような特徴があるのでしょうか。
Electoria 平井氏: いくつかありますが大きなものとして“クロスプラットフォーム開発”ができることが挙げられます。
スマホのOS(オペレーティングシステム:基本ソフト)は現在、iOSとAndroidの2つが主流です。iOSはアップル社のiPhoneに搭載されており、Androidはその他のメーカーのスマホの多くに搭載されています。
もともとアプリケーションは、OSの基本機能を使うことを前提に作られます。そのため、それぞれのOSに合わせたソースプログラムを作らなければなりません。ソースプログラムとは、エンジニアが開発言語を使って記述するプログラムのこと。そこから実行形式のプログラム、すなわちパソコンやスマホにインストールするアプリを生成します。
たとえ同じ目的のアプリケーションでも、iOS用とAndroid用とでは、別の言語での開発になるため、本来ならば2種類の異なるソースプログラムを用意しなければなりません。ところがFlutterを利用してソースプログラムを書くと、そこからiOS用とAndroid用のアプリの両方を生成することができます。
このように同一のソースプログラムから、異なるプラットフォームに向けたアプリケーションを作り出すことを“クロスプラットフォーム開発”などと呼びます。
新規開発時の予算や納期だけでなく、リリース後のメンテナンスにかかるコストや時間も抑えられる
―― クロスプラットフォーム開発には、どのようなメリットがありますか?
中村氏: コストメリットが大きいでしょう。複数の異なるプラットフォームに対してアプリを同時にリリースしたい場合、それぞれを個別に開発するのに比べると納期短縮やコスト削減をしやすくなります。
たとえば小規模なアプリをiOS用、Android用のそれぞれに開発するとなれば、エンジニアが2人は必要です。これがiOSとAndroidのどちらにも対応しているFlutterのエンジニアを用いることで1人での実装が可能になります。同じ人員で開発にかかれば開発期間を短縮できますし、同じ開発期間をかけるならば人員を削減できます。
また、開発後のメンテナンスコストも抑えられます。たとえば、アプリ運用開始後に新たな機能を追加しようとなったときに、1つのソースプログラムを改修するだけで、すべてのプラットフォームのアプリに反映されます。新規開発部分の検証も省力化できるので、更新のリリースが早いというメリットもあります。
発注企業から見れば、開発のコストや納期、メンテナンスコストが抑えられるという点は、アプリ導入の予算やスケジュールを考えれば、大きな特徴ではないでしょうか。
Flutterの開発言語はDart。Javaエンジニアからの移行もしやすく、今後開発者人口も増える!?
―― ほかにもFlutterの特徴はありますか?
中村氏: 実は、クロスプラットフォーム開発ができるモバイルアプリケーションフレームワークは他にもあり、Flutter以外ではメタ社(旧フェイスブック社)のReact Nativeがよく知られています。
これらのフレームワークは、それぞれ使われる開発言語が異なります。FlutterはGoogleが独自開発した言語Dart、React Nativeはエンジニアに広く使われているJavaScriptが採用されています。
Flutterで使われるDartはオブジェクト指向言語として設計されていて、JavaやC++を使うエンジニアが習得しやすいという特徴があります。Javaエンジニアは市場にも多いため、そうしたエンジニアがアプリ開発に移行する際のハードルは低いかもしれません。
React NativeはJavaScriptがそのまま使えるので、Webのフロントエンドを開発しているエンジニアは比較的容易に移行できます。JavaScriptを使うエンジニアも市場に多いのでReact Nativeも人気のあるフレームワークです。
こうした背景から、現在モバイルアプリケーションのクロスプラットフォーム開発ではFlutterとReact Nativeが人気を二分しています。現在、Flutterのほうが勢いがあり、今後はFlutterを使うエンジニアが増えていくかもしれません。
プラットフォーム間のUIを統一したい、あるいはWebアプリケーションも同一のソースから生成したいというケースはFlutterがオススメ
―― FlutterとReact Nativeは人気を二分しているとのことですが、両者の差はどこにありますか?
中村氏: 発注企業が意識すべき点としては、UI/UXではないでしょうか。React NativeはUI/UXをOS標準のUIを使うため、プラットフォームごとにUIデザインが異なります。もちろんそれぞれにUIをデザインすれば良いのですが、限界があると言われています。
一方のFlutterは、もともと各プラットフォームで独自のデザインUIを利用することができるため、プラットフォーム間のUIデザインを統一しやすいという特徴があります。 アプリをリリースする側も、プラットフォーム間でUIに差が出ないほうが、マニュアル制作やサポートなどの面で、何かと好都合なことも多いでしょう。
また、Flutterは標準でWebアプリケーションも生成できます。つまりPC用のWebアプリ、iOS用アプリ、Androidアプリが同一のソースプログラムから作り出せます。React Nativeでも、PC用のWebアプリを作り出すことはできますが、標準で用意されているわけではないため、少し手を入れる必要があります。逆にReact NativeのもとになったReactというWebアプリ用ライブラリで記述されたものをReact Nativeに移行するのは比較的用意です。
「モバイルアプリ発でWebも」というケースではFlutterが、「Web発でモバイルアプリも」というケースではReact Nativeが良いかもしれません。
Flutterで作れるアプリ、向かないアプリとは?
―― Flutterでは、スマホの機種固有の機能、たとえばカメラやGPSを利用するアプリも作れるのでしょうか?
中村氏: はい。次のような機能はFlutterを利用して開発するアプリからも使えます。
・プッシュ通知
・カメラ
・マイク、スピーカー、イヤフォン
・GPS
・Bluetooth
・生体認証(指紋認証、顔認証等)
・フィットネス(歩数計等)
・モバイル決済機能
アプリでタッチ決済をしたい、搭載カメラやマイクで動画や音声を取り込みたい、GPSで測位した情報を地図にマッピングしたいなど、端末に搭載されるハードウェアは、よほど特殊なものでない限りFlutterを利用したアプリからも利用できます。
―― 反対にFlutterでの開発に向かないアプリというものはありますか?
中村氏: これはクロスプラットフォーム開発全般に言えることですが、iOS用しか必要がないとか、Android用しか必要がないという場合は、それぞれのOSに特化して開発すれば良く、Flutterの恩恵を受けにくいかもしれません。
また、速度を要求される一部のゲームや、アプリの容量を小さくしたいというニーズには向きません。
Flutterを使う多くの開発会社の中から、どこに発注すれば良いのか?
―― Flutterを使う開発会社は多数あります。発注先選びで意識しておくポイントはどのようなところでしょうか?
平井氏: PC用のWebアプリとスマホ用アプリの双方に精通しているかどうか、さらに言えば、サーバーアプリケーションやシステムインフラにも精通している会社であることが望ましいでしょう。
―― スマホアプリの知見だけではないのですね。
平井氏: たとえスマホアプリだけを作る場合でもWebアプリの知見は必要です。
たとえば、スマホのOSには、アプリ内にWebページを表示させるWebViewという機能があります。これはURLを1行指定するだけで表示できるため、一見すると簡単そうなのですが、実はそれだけで済まないこともあります。Webページは表示できても、特定のボタンが動かない、などといったこともあります。Webページの作り方、処理の仕方に詳しくないと、そういうところまで気が回りません。また、ログイン画面はiOSのアプリ審査を通過できないので、別の方法を講じる必要があります。
サーバーアプリケーションやインフラも同様です。サーバーアプリケーションは自社で実装したものが単体で動いているわけではなく、アプリケーションサーバーやデータベースサーバーなど、周辺の複数のサーバーが協働して機能を提供しています。
こうしたサーバー機能をAWSのようなクラウド上に置くケースが増えています。最近は、サーバーを常時稼動しておくのではなく、アクセス要求が合った時だけ稼働し、使った分だけ課金するサーバーレスサービスというものも登場しています。このサービスを利用すると、常時コンピューティングリソースを消費しなくなるため、運用コストを抑えられることもあります。しかし、常時アクセスが発生するような場合は、むしろ割高になることもあるため注意が必要です。
このように、モバイルアプリケーションを展開するためには、幅広い知見が求められます。
豊富な知見と数多くの実績。新規開発も既存Webサービスのモバイルアプリ化も任せられる会社!
―― その点で御社はFlutterの発注先にピッタリですね。
中村氏: 当社は、これまでWebシステムの開発を多数手掛けてきて豊富な知見を持ち合わせています。またFlutterを使った開発を3年半ほど続けており、さまざまな分野のアプリを開発してきた実績があります。AWS利用のノウハウもかなり蓄積されています。
【Flutterによる主な開発実績】
●金融系アプリ
大手保険会社公式。見積、加入申請等。MAU10万、DL数100万を目指す大規模サービス
●エンタメ系アプリ
ゲームのユーザーマッチングプラットフォーム
映画会社の公式アプリバックエンド
●医療系アプリ
オンライン診療。お薬の在庫管理等。
●通話系アプリ
ビデオ通話、ビデオ配信等
●業務系アプリ
勤怠管理
●マッチングサービス
地域特化型のマッチングアプリ、ビデオ通話等
平井氏: まったくの新規開発だけでなく、PC向けの既存サービスをモバイルアプリケーションで展開したいというお客様も、ぜひ当社にご発注ください。アプリ開発からバックエンドのインフラ構築まで、すべてお任せください。
古いモバイルアプリケーションを展開していて、そろそろ刷新したいというお客様も歓迎します。開発実績にあるように、業界は問いません。良い意味で、何でも作れるのが当社の強みです。まずはお気軽にご相談ください。