Chapter 02

Flutterとは

Flutter って何

Flutter とは Google によって開発されたアプリ開発のフレームワークで、2018 年に発表された比較的新しい技術です。
本家 Google のホームページを覗くと、次の通り説明されています。

Google 翻訳で日本語に訳すと

Flutter は、単一のコードベースからモバイル、ウェブ、デスクトップ向けにネイティブにコンパイルされた美しいアプリケーションを構築するための Google の UI ツールキットです。

とのこと。とにかく色々なデバイスに向けたアプリケーションをまとめて開発できるスゴいやつということですね。

Flutter のここがスゴい

では具体的に何がどうスゴいのでしょうか。Flutter の 3 つのスゴさを紹介します。

1. ⚡️ 速く開発できる

クロスプラットフォーム

上で説明した通り、Flutter では、1 つのソースコードを書くだけで、色々なデバイス向けのアプリを開発できます。この特徴はクロスプラットフォームと呼ばれています。
現在サポートされているのは、iOS / Android / Web の 3 つです。

新たなサービスを始める際に、今時 1 つのプラットフォームだけ(iOS だけ等)ということは少ないですよね。iOS/Android/Web は全て対応して当たり前と思われてしまう時代です。

しかしクロスプラットフォームを利用しない場合、それぞれ専用の開発言語やフレームワークを学ぶ必要がありました。
iOS は Swift、Android は Kotlin、Web は Rails(Ruby)といった具合です。
これらを 1 人の開発者が全てカバーするのは非常に難しいですし、開発者を増やしたとしても、時間や費用が大きくかかるという問題がつきまといます。
クロスプラットフォームであれば、全部まとめて開発できるので、とにかく速く開発できます。

HotReload(ホットリロード)

また、開発を速く快適に進める為に、HotReloadという機能が用意されており、よく目玉機能として紹介されています。
これはソースコードを実際のアプリに変換する為のビルド処理の速度がすごく速いという機能です。
従来の iOS/Android ネイティブアプリの開発では、アプリ規模に比例してこのビルド時間が長くなるという問題も抱えていました。
実際に開発を進めると、微妙なレイアウトや文言修正のたびに待ち時間が発生するのは大きなストレスです。
実際に体験すると分かりますが、書いたコードがすぐに反映されるのは、すごく気持ちが良いですね。

Dart(ダート)言語

実際のソースコードはDartというプログラミング言語で記述します。
Flutter 以外ではあまり利用されていないので、これから Flutter を始めるという方は触ったことがないと思いますが、不思議と初見でも何となく読むことができます。
この言語も Google 先生が開発しているだけあって、よく考えられています。モダンな開発言語の機能や構造をふまえて、良いとこ取りをしたような言語です。
すでにモダンな言語でのプログラミング経験がある方は、特に苦労せずに使いこなせると思います。

2. 🌈 きれいな UI のアプリを作れる

Widget(ウィジェット)機能

Flutter でのアプリ開発は、基本的にWidgetと呼ばれるパーツを組み合わせて行います。

以下の図はよくあるカード UI のイメージですが、それぞれの番号(パーツ)が全て Widget です。
Widget はツリー構造で構成されます。この場合、カード全体が 1 つの Widget であり、その中に沢山の Widget が含まれています。
リンクや いいね 等の機能を持った物もありますが、Widget は見た目の塊でありながら、機能も内包することができます。

この様々な Widget は自分で一から作るのではなく、多くの完成品を Google が用意してくれています。
なので我々アプリ開発者は、用意された Widget を組み合わせるだけで、簡単に綺麗な UI を作ることができるという訳です。もちろん必要に応じて、細かい部分のカスタマイズも可能です。


最近のレゴブロックはすごく高度になっていて、単純な立方体だけでなく、モーターやタイヤといった機能を持つブロックも用意されていますよね。まさにあのイメージです。

3. 💫 アプリの動作がサクサク

ネイティブアプリと同等にサクサク動きます。
他のクロスプラットフォームでは、Web で表示した内容を読み込むだけみたいな仕組みで動作がモッサリしていることがあるのですが、Flutter ではネイティブと遜色がありません。
この仕組みについては、私も理解が十分ではないので、興味のある方は Google で調べてみてください。
何と iOS ネイティブの Swift よりもパフォーマンスが高いという比較記事も見つけました。素晴らしいですね。

他のクロスプラットフォームと比べてどうか

クロスプラットフォームは Flutter だけの機能ではなく、他にも色々あります。
一番有名なのは、React Native。こちらはあのFacebookが開発している物です。
しかし上記の比較記事でも明記されている通り、アプリとしてのパフォーマンスが全く違います。
React Native は React という Web 開発のスキルをそのままアプリ開発に転用できるという特徴がありますが、アプリのパフォーマンスとしては Flutter の圧勝です。

また、Android の開発元である Google が提供しているという点も他のクロスプラットフォームと比べた優位性になっています。
クロスプラットフォームは共通して OS やデバイス自体の進化への対応が遅くなるという弱点があるのですが、Google が本気で取り組んでいる技術なので、その点も他と比べれば安心できます。(突然「辞めます」と言い出される可能性もなくはないのが怖いところですが、そこは例えネイティブを選んだとしても同様でしょう。)

まとめ

iOS も Android も Web も何でも作れちゃう Flutter 最高! というお話でした。
長くなってしまいましたが、今日はここまで。
次回は、Flutter の開発環境を構築します。お楽しみに。