Google Flutterレビュー–モバイルアプリ開発者がFlutterを愛する理由

アプリメーカーがFlutterを愛するのはなぜですか?フラッターがすごいから。

Flutterは、ビジネス(妥当な開発コストを提供することにより)と開発者(優れたユーザビリティとスピードを提供することにより)の両方に対応します。そのため、Google Ads、Alibaba、Reflectlyなどの一部の大企業がFlutterに切り替えました。

GoogleはFlutterの構築に素晴らしい仕事をしており、このフレームワークをさらに改善し続けています。

この投稿では、Flutterとその新しい特典の概要を簡単に説明し、このフレームワークを使用する価値がある理由について説明します。さらに、大企業がFlutterの採用を妨げる原因についても説明します。

しかし、まず最初に。

フラッターの要点は何ですか?

あなたがすでに知っているかもしれないFlutterについての事柄はここにあります:

  • オープンソースのクロスプラットフォームツールキットです
  • アプリはDartプログラミング言語で書かれています
  • 独自のグラフィックエンジン(Skia)があります
  • iOS、Android、Web(ベータ版)の3つのプラットフォームを公式にサポートしています
  • 非公式–デスクトップもサポート

Googleは2018年2月末にFlutterの最初のバージョンを発表しました。2020年4月の時点で、1.12リリースが利用可能です。

Flutterの何がそんなに特別なのですか?

Flutterは、ネイティブアプリの品質とクロスプラットフォーム開発の柔軟性を兼ね備えています。

実際、多くのクロスプラットフォームツールを使用すると、コードを1回記述して、iOSとAndroidの両方で使用できます。しかし、すべてがネイティブアプリのように同じ外観をレンダリングできるわけではありません。

しかし、それはまさにFlutterが行うことです。FlutterはネイティブUIコンポーネント(React NativeやXamarinなど)のラッパーではなく、UIを最初から描画します。

Flutterはアプリのネイティブなエクスペリエンスと感触を維持し、どのプラットフォームでもそのパフォーマンスについて心配する必要はありません。

さらに、Flutterはオープンソースフレームワークであるため、開発者はGitHubでフレームワークに変更を加え、マージリクエストを送信できます。そして、Flutterの人気(90.4K GitHubスター12kフォーク18,445コミット)を見ると、開発者がFlutterを愛し、Flutterの改善に貢献していることがわかります。

Flutterはどのように機能しますか?

FlutterはiOSまたはAndroidアプリに直接コンパイルされません。アプリは、レンダリングエンジン(C ++で構築)とFlutter(Dartで構築)の組み合わせに基づいて起動されます。この方法で生成されたすべてのファイルは、特定のプラットフォームの各アプリとSDKアセンブリソフトウェアに添付されます。

これはゲーム開発のようなものです。ゲームはフレームワークを割り当てず、機能はゲームエンジンで実行されます。Flutterソフトウェアについても同じです。FlutterSDKに基づくすべてのアプリは、ネイティブフレームワークの一部をFlutter要素に置き換えます。

それが終了アプリのサイズに影響を与えることができますが、パフォーマンスはまだかなり良いです-レンダリングをするまでの速度で作られている120 FPS

ARMプロセッサのネイティブコンパイル、単純なレンダリング、および統合されたウィジェットとツールのセットにより、Flutterは開発プロセスを単純化します。

さらに、HotReloadのようないくつかの非常においしい機能を提供します。

仕組みは次のとおりです。

[ホットリロード]ボタンをクリックすると、コードのすべての変更がガジェット、エミュレーター、およびシミュレーターにすぐに表示されます。アプリは、ホットリロードを実行する前の状態から動作し続けます。コードは更新されますが、実行は続行されます。

クロスプラットフォームアプリにFlutterを選択する理由

新しいFlutterバージョンは、より高度な機能を備えたものであり続けます。しかし、Flutterがとても愛されている理由を完全に説明する拡張機能はすでにたくさんあります。

まず、Flutterを使用したクロスプラットフォーム開発は、一般的な信念に反して、ソフトウェアを悪化させることはありません。

Flutterには、マテリアルデザインやクパチーノなどのAndroidおよびiOSインターフェース用のすべてのネイティブウィジェットが付属しています。さらに、フレームワークは個別の要素の動作を変更して、アプリのユーザー向けに同様のUXを作成できます。

次に、Flutterを使用すると、開発モードで個別のファイルコンパイルを実装できます。JiTコンパイルは、開発とソフトウェアのデバッグを高速化します。

第三に、Flutterは柔軟でスケーラブルなバックエンドを可能にします。

Firebase、SQLiteなどのプラグインをサポートしています(pub.devは必要なプラグインを見つけるのに役立ちます)。Firebaseは、アプリのインフラストラクチャをスケーラブル、サーバーレス、冗長にします。

したがって、リアルタイムデータベースまたはクラウド機能を必要とするアプリで作業している場合は、Flutterが役に立ちます。

そして最後の1つ:Flutterは非常に簡単に習得できます。

Googleの開発者は当初から、参入障壁を下げるという目標を設定していました。彼らは、開発者が使用できるドキュメントとリソースを注意深く作成しました。専門分野に応じて、フレームワークの学習を開始するために使用できる特別なセクションもあります。

  • Android開発者向けのFlutter
  • iOS開発者向けのフラッター
  • ReactNative開発者のためのフラッター
  • Xamarin.Forms開発者向けのフラッター
  • Web開発者向けのフラッター

Flutterの詳細なドキュメントにより、Androidゲームを作成するためのUnityグラフィックツールの経験しかない場合でも、Dartでコードを作成する方法を理解できます。

Flutter 1.12(最新バージョン)とその特典

Flutterが最新の1.12バージョンで導入したホットな機能を見てみましょう。

iOSダークモード

今後、Flutterは、クパチーノウィジェットでの完全なダークモードのサポートを含め、iOS13のルックアンドフィールをサポートします。そして、それは単に背景を交換することだけではなく、残りの色をうまく一致させるように適応させることです。

アプリへの追加のサポート

もう1つの大きな改善点は、Flutterを既存のiOS / Androidアプリに統合するためのAdd-to-Appアップデートです。

新しいバージョンのFlutterは、以下に加えて、1つのフルスクリーンFlutterインスタンスをアプリに追加することをサポートしています。

  • Java、Kotlin、Objective-C、Swiftでの安定化されたAPI統合
  • Flutterモジュールでのプラグイン使用のサポート
  • AndroidAARおよびiOSフレームワークを介した追加の統合メカニズム

ベータWebサポート

新しいFlutterマスター、開発、ベータチャネルは、Webのサポートを改善します。いくつかの例が必要ですか?

これは、FlutterとFirebaseを使用してアプリのウェブバージョンを作成した教育プロジェクトであるRivetです。

ダート2.7

フレームワークの新しいバージョンでは、Dart2.7が導入されています。

このアップデートにより、安全な文字列が機能と拡張プロセスを処理する方法において、Dart2.5で機能するエクスペリエンスが向上します。これは、変数がゼロ値を取得して文字列内の整数を解析するときのエラーを開発者が防ぐのに役立ちます。

そして、最新のFlutterバージョンの他の機能は次のとおりです。

  • macOSデスクトップサポート(アルファ版)
  • マルチデバイスデバッグ
  • ゴールデンイメージテスト
  • Androidビルドの改善
  • 更新されたDartPad

それは良いことですが、問題がないわけではありません:開発者を阻んでいるのは何ですか?

Flutterは本当にクールです。開始が簡単で、操作が簡単で、巨大なテクノロジー企業によって提示されています。しかし、ここにあなたの上級開発者があなたの楽観主義を共有しないかもしれない理由があります。

ダーツの(低い)人気

Android用のJava / KotlinやiOS用のSwift / Objective-Cとは異なり、Dartはまだ高い人気を持っていません。そして、そうなる可能性はほとんどありません。

Dartを学ぶのはそれほど難しいことではなく、チュートリアルはたくさんありますが(このようなもの)、一部の開発者はJavaやその他の使い慣れたツールに固執し続けています。

同時に、FlutterとDartを使用することはできません。Flutterのキラー機能であるHot Reloadでさえ、Dartなしでは機能しません。

すべてのデバイスをサポートしているわけではありません

iPhone5sより古いような32ビットiOSデバイス用のアプリを作成することはできません。Windowsデスクトップでも同じです。32ビットラップトップでFlutterを実行することはできません。

また、Flutterの開発者は、「これには非常に多くの作業が必要になる」ため、修正する予定はありません。

したがって、Flutterでコーディングする場合は、x64ビットデバイスを所有するか、現在使用しているデバイスをアップグレードする必要があります。

限られた数の図書館

多くのフラッタなどのlibsにありますがfl_chart(フラッターにグラフィックスを描画するため)、path_provider(アンドロイド/ iOSのファイルを見つけるために使用される)、flutter_sliding_tutorialと、より多くの、数はまだ限られています。

これを説明するのは難しいことではありません。Flutterは比較的新しいフレームワークであり、開発者はネイティブ言語が提供するほど多くのライブラリを開発するのに十分な時間がありませんでした。

それでも、最も重要なライブラリはすでに存在しており、新しいライブラリが常に出てきています。

Flutterアプリはサイズが大きい

...ネイティブで開発されたアプリケーションと比較して。Flutterのチームは、バンドルおよび圧縮された最小アプリサイズ(マテリアルコンポーネントなし、単一のCenterウィジェット、flutter build apk --split-per-abiで構築)を測定し、ARMでは4.3 MB、ARM64では4.6MBでした。 。

基本的なアプリは今〜ある4メガバイトアンドロイドでと〜10メガバイトのiOSに。

証明された専門知識はほとんどない

Flutterは開発者に愛されているかもしれませんが、大企業はネイティブ(またはReact Native)アプリの作成をやめてFlutterに目を向けることを急いでいません。

ほとんどの企業にとって、最大の問題はFlutterの目新しさです。DartはJavaやC#よりも新しく、Flutter自体はまったく新しいものです。

もちろん、Google AdsやHamiltonのような大きなアプリ(ここで完全なリストを確認してください)を含む多くのFlutterオープンソースアプリがありますが、それほど多くはありません。

そして、数か月後にネイティブ開発に切り替えるだけで、まったく新しいフレームワークを採用する人になりたくはありません。

しかし、さらに重要なのは、Flutterが一人で歩く道であるということです。

  • 確認されたベストプラクティスは多くありません(少なくとも大規模なプロジェクトでは)
  • あなたがこの特定の問題に直面する最初の人である可能性は常にあります
  • 誰かがあなたを助けてくれることをほとんど期待していません-あなたは慎重に各ステップを踏み、結果に直面する準備をしなければなりません

Flutterを使用する場所

まず第一に、ビジネスモデルを検証するための時間とお金が限られている場合は、MVPスタートアップにFlutterを使用することをお勧めします。

Flutterアプリの方が安い*:

  • * 2つのネイティブアプリのコストと比較
  • 開発チームは40%小さい
  • 線形プロセス
  • アプリの機能にもっと時間を費やすことができます

Flutterプロジェクトを選択することで、開発時間数を削減できます。Flutterの開発は、ネイティブに比べてそれほど時間はかかりません。

これが例です。2つのプラットフォーム用のInstagramのようなアプリを作成しているとしましょう。iOSの開発には約700時間かかり、Androidも700時間かかります。

Flutterを使用すると、両方のプラットフォームをカバーし、時間を節約できます。700hAndroid+ 700hiOSと700hFlutterです。

機能の磨き上げなど、他のことに費やすことができる時間を大幅に節約できます。

まとめ

限られた予算で限られた時間内にアプリを構築している場合、Flutterは間違いなく試す価値があります。

見た目と同じくらい優れており、新しいアップデートが行われるたびに、Googleの開発者はクロスプラットフォーム開発用のツールをさらに追加します。

もちろん、このフレームワークはC#やJavaの愛好家にとっては珍しいように思えるかもしれませんが、それがあなたを快適ゾーンから追い出すという意味ではありません。構文の小さな違いをマスターすると、UI開発がネイティブ開発と比較して数倍速くなることがすぐにわかります。

そして、あなたが成功し、Flutterが固執すれば、将来的にはエキサイティングなモバイル開発の経験と機会をもたらす可能性があります。