初めてのプログラム講習

2023.05.22

クロスプラットフォーム!AndroidとiOSでアプリを作るなら【Flutter】!!

どうも、ヒヨコラボのプログラム担当、ネズマエです。

今回は、少し前からクロスプラットフォーム界隈で注目を集めているらしいFlutter(フラッター)について、自分の備忘録も兼ねてご紹介します。

・Flutterとはなにか
・メリット/デメリット
・他のクロスプラットフォーム対応と比べて何が違うのか

についてまとめていきます。

Flutterとは、同じコードでクロスプラットフォームが対応できる、Googleが開発したフレームワーク

ヒヨコラボではAndoidとiOSの両方でアプリを出していますが、それぞれ別々のコードで記述をしています。
このやり方だと、元があるとはいえ、やはり作業量がかなり膨れあがってしまいます。
Flutterは、そんな困りごとを解消してくれるフレームワークです。

Flutterの特徴は、一つのコードを書くことで、それがAndroidでもiOSでも動作するアプリを作成することができます。
Aというアプリのコードを書くと、そのまま「A(Andoroid用)」と「A(iOS用)」が作れてしまいます。

Flutterはあくまでもフレームワークであり、使用する言語はDartです。
DartはJavaによく似た言語だそうなので、Javaを勉強していた人は習得しやすいそうです。

同じコードで別のOSに対応できるとか、良い時代になったものです・・・(しみじみ)

Flutterを導入するメリット

Flutterを導入するメリットは下記の通りです。

メリット1:作業量の削減
AndroidとiOSの両方でコードを書く必要がない為、その分の作業量が格段に減少します。

メリット2:アプリを起動しながらコード変更を確認できる(ホットリロード機能
Flutterには、ホットリロード機能というものが実装されています。
通常であれば、アプリを作成してる時にコードを変更したら、再度ビルドする必要があります。
ホットリロード機能はその必要がなく、アプリを起動したまま、コードの変更をリアルタイムに反映させることができます。

◆ネズマエメモ
メリット1の作業量削減はストレートに助かる内容。
メリット2のホットリロード機能も地味にありがたい。
ちょっとした調整だけでも、ビルドには数秒〜数分かかってしまうので、何回も繰り返すその時間が削減されるとても良いこと。

作業量の減少に直接つながるメリット!他にも、処理が早いという良い点もあるのだとか

Flutterを導入するデメリット

デメリット1:歴史が浅い
出てきたのが2018年とまだまだ日が浅いです。
ライブラリなどの下地が成熟しておらす、Flutterだと機能を自作する必要性が出てくる場合があります。

デメリット2:Dart言語を習得する必要がある
先に書きましたが、FlutterではDartを使用します。
Javaに似た言語だから、Javaをやったことある人なら習得しやすいと言いましたが、結局新たに習得する必要があります。
Javaをやっていない人なら単純に新しい言語を覚える必要があります。

◆ネズマエメモ
詳しい人材がそもそも少なく、webで検索しても日本語での情報が少ないんだとか・・・
試しに適当に検索してみましたが、とりあえずGoogleの1ページ目は全部日本語でした!
Dart言語についてはまだよくわからない状態・・・ざっと目を通してみましたが、確かにJavaっぽい雰囲気を感じました。(感じただけ!)

歴史が浅くて新しい言語の習得・・・ちょっと大変そうです。

他のクロスプラットフォーム対応(React Native,Cordova,Xamarine)と比べて異なる点

クロスプラットフォームといえば、他にも「React Native」「Cordova」「Xamarine」などが浮かぶかと思います。
これらの違いをすごく簡単にまとめます。

・React Native
OS自体のUI機能を使用する為、OSに沿った実装ができる
その代わり、若干動作が重くなりやすい

・Cordova
WebViewを利用して、端末上でWebアプリを動作させることができる=OSに依存しない動作が可能
通信が必須となるため、動作が通信速度に依存してしまう

・Xamarine
C#で開発できる。
(それ以外のメリットは無さそう・・・?)

・Flutter
Flutter独自のUIを使用する為、OS間で同じUIにできるうえに処理速度も速い
Dart言語の習得が必須

AndroidとiOSでアプリ作るならFlutterが良さそう

Dart言語の習得が必要とはいえ、Googleが開発していることや、作成したアプリの処理が早いことを考えると、今後はFlutterを使用した方が良さそうです。

ただ、ゲームを作るなら相変わらずUnityが強すぎるみたいなので、今後ツール系のアプリを作成する際に試してみたいと思います。

執筆者:ネズマエ