顧客または企業にFlutterを使用するよう説得する方法

こんにちは、Habr! 英語からの翻訳をご紹介します。 会社またはクライアントの記事にピッチングフラッター (著者Wm Leler



What's Revolutionary about Flutterの記事が発行されてから1年以上が経過しました(この資料はまだ関連しています)。 私がその記事を書いたとき、Flutterについて聞いたモバイル開発者はわずかでしたが、それ以来多くのことが変わりました。 今、私はこのアクティブで絶えず進化しているコミュニティに表示される新しい記事やビデオのストリームをフォローする時間はありません。 開発者はFlutterを発見し彼らはそれに夢中です。 Flutterを使用して作成されたReflectlyのサンプルアプリケーションを次に示します。









スマートリフレクトリーダイアリーアプリ



開発者から、会社のマネージャー(または代理店やフリーランサーの場合はクライアント)にFlutterを試してもらうのがどれほど難しいかをよく聞きます。 意思決定者は、最先端であるという理由だけで、最新のテクノロジーに切り替える準備ができていません。 原則として、彼らは問題を理解していますが、技術スタックは彼らの仕事の一部にすぎません。 新しいツールを使用することで、たとえば、新しい消費者を引き付けたり、リスクを軽減したりするなど、市場での会社の成功に役立つことを理解することが重要です。



この記事の対象者:





この記事では、Flutterが特定のアプリケーションに適さない理由についても説明します。これは、情報に基づいた決定を下すのに役立ちます。



フラッターとは何ですか?



スローガンフラッター(簡潔で話す):

記録的な速さで美しいネイティブアプリを作成しましょう!


このスローガンは4つの部分で構成されており、それぞれを個別に考慮する必要があります。



  1. アプリケーション作成
  2. 美学
  3. ネイティブ
  4. 記録日


1.アプリケーションを作成する



現在、FlutterはiOSおよびAndroid用のモバイルアプリケーションの開発のために投獄されています。 しかし、長期的に見ると、既存のモバイルフレームワークの背景に対して際立っています。Flutterは単なるフレームワークではなく、画面を使用するアプリケーションを作成するための本格的なSDKです。 つまり、Flutterには、視覚化ツールやレンダリングを必要とする要素(Flutterの用語ではウィジェット)など、ユーザーインターフェイスを作成するために必要なものがすべて揃っています。



Flutterは、独自の視覚化ツールも提供するUnityUnrealなどのゲームエンジンと多くの共通点を持っています。 違いは、Flutterはゲームではなくアプリケーションのビルドに使用されることです



Flutterは完全なSDKであるという事実は、ディスプレイを備えたほぼすべてのデバイスに移植できることを意味します。 Flutterの視覚化ツールはプラットフォーム間で使用される人気のあるオープンソースグラフィックエンジンであるSkiaを使用します。









デスクトップとRaspberry Piのフラッター



Googleでモバイルアプリケーションに焦点を当てている間、さまざまな企業がFlutterをデスクトップコンピューター (macOS、Windows、Linuxなど)、 テレビNvidia Shield TVでFlutterがどのように機能するかを見ることができます)、およびRaspberry Piに移植しました。 FlutterはFuchsiaのユーザーインターフェイスの構築にも使用されます。



徐々に、アプリケーションは携帯電話の外部に表示されます。 ホームアシスタント(Googleホームハブ、Lenovoスマートディスプレイなど)、車内のインタラクティブディスプレイ、家電(冷蔵庫など)、アクセサリー(時計、衣服)およびその他のIoTを含む複数のデバイスのアプリケーションに一度にアクセスすることはよく知られています-デバイス。



すでに2017年には、このようなデバイスが84億オンラインで登録されており、 International Data Corporationの予測によると、2020年までにその数は300億を超えます(50億台の携帯電話と比較)。 ただし、これらのデバイスの多くにはインタラクティブなディスプレイがあります。 Flutterアーキテクチャには、新しいデバイス用の美しく機能的なユーザーインターフェイスを作成するためのすべての要素があります。









どこでも画面!



そして、もちろん、Flutterは完全に無料のオープンソースです。



2.美学



Google Playストアの380万のアプリケーションとApple App Storeの200万のアプリケーションと競合する場合、モバイルアプリケーションの成功を保証できますか? ユーザーにアプリケーションをダウンロードするように説得しても、30日後にユーザーがそれを積極的に使用する可能性はわずか3%です! コンサルティング会社Gartner Inc. すべての公開されたアプリケーションの0.01%だけが経済的に成功すると述べた。 このような状況では、ヘルプは不要ではありません。



調査によると、魅力的なデザインを持つことが大きな役割を果たしています。 過去数年間で最も人気のあるモバイルアプリケーションを見ると、それぞれに独自の美的デザインがあることがわかります。 さらに、美しいアプリケーションは賞を獲得し、名声を獲得します。これは特に価値があります。









Alibaba(左)およびTopline(右)









2次元



Flutterアプリの代表例には、Alibaba (世界最大のeコマース企業 )のアプリ 、Abbey Road Studios Toplineオーディオ録音アプリリアルタイムアニメーションを作成するための素晴らしい2Dimensions アプリのデモが含まれます。



ウェブサイトやウェブアプリと同じように、モバイルアプリを企業のブランドに合わせようとする企業が増えています。 これには、 高度なカスタマイズが必要です。



最終的に、デザイナーは多くの場合、ツールボックスの制限のために実装されるまでに非常に侵食される創造的なアイデアを提供します。 Flutterのおかげで、アプリケーションのデザインを実装できます。



他の例は、Flutterの公式WebサイトとIt's All Widgetsにあります。 その中には、記事の冒頭で例として挙げたReflectly日記アプリがあります。 アプリケーションストアからAndroidまたはAppleスマートフォンにダウンロードして、この珍しいアプリケーションに慣れることをお勧めします。 また、必ずFlutterに切り替えた経験についての記事を読んでください。



3.ネイティブ性



このアイテムは、モバイル開発者にとって不可解でなければなりません。 モバイル開発では、「ネイティブアプリケーション」という用語は、特定の言語を使用してプラットフォームAPIに直接アクセスするアプリケーションを指すためによく使用されます。 そして、React NativeやXamarinなどのフレームワークで、すべての人を完全に混乱させるために、「ネイティブ」という用語は、プラットフォームウィジェットを使用できることを意味します。



開発の他の分野では、この用語はモバイルの場合には適用されません。 たとえば、WindowsまたはmacOS(および他の多く)を実行しているコンピューターにLinuxをインストールできますが、WindowsまたはmacOSを「ネイティブ」、Linuxを「クロスプラットフォーム」または「ハイブリッド」オペレーティングシステムとは呼びません。 LinuxはWindowsやmacOSと同じくらいネイティブです



開発における「ネイティブ」のより正確な定義は次のようになります。

特に、このプロセッサー、コンピューター、またはコンパイラーに関連付けられた言語、およびそのシステムで作成されたプログラムの意味において、指定されたシステムに意図または組み込まれています。
Flutterアプリケーションは、iOSおよびAndroidですぐにネイティブマシン( ARM )コードにコンパイルされます。



ネイティブアプリケーションを使用することの利点は十分です。より高速に動作し、最も重要なことは、より安定して動作し、遅延やブレーキの影響が少ないことです(凍結はいです)。 さらに、ネイティブアプリケーションにより、開発者はアプリケーションの動作をより詳細に制御できます。



ネイティブアプリケーションの利点を最大限に活用するために、モバイル開発者は通常、別個のツールと言語のセットを使用して2つの別個のアプリケーションを作成しました。 多くの場合、互いに調整しなければならない2つの別々の開発チームは、そのようなプロジェクトに取り組む必要があります。 このようなアプローチは、開発コストを大幅に増加させ、リスクを増大させ、製品の期限を延期します。 一方、Flutterを使用すると、開発者は単一のコードベースの作成、開発チームの団結、リスクの軽減、市場でのアプリケーションの起動時間の短縮に力を合わせることができます。これらすべてがネイティブアプリケーションの利点と組み合わされます。









これらのアプリケーションのどれがネイティブですか? 二人とも!



しかし、ウィジェットはどうでしょうか? Flutterは独自のウィジェットで動作するため、Flutterで記述されたアプリケーションは、ウィジェットやプラットフォームツールで記述されたアプリケーションとは異なるように見える場合があります。



上記のGIFアニメーションは、Flutterで書かれた同様のインターフェースと比較して、iOSで書かれた設定ウィンドウがどのように見えるかを示しています。 ピクセルレベルでのわずかな違いにもかかわらず、Flutterは、ネイティブの画面のように見える画面の作成を大幅に簡素化します。



ネイティブアプリケーションであっても、OSのバージョンによって通常は異なって見えることを忘れてはなりません。 本質的に、フラッターは「ピクセル完璧」である必要はありません。



Flutterウィジェットはターゲットプラットフォームに適合し、アイコン、カラーパレット、レイアウト、フォント、スクロール動作などを含むアプリの外観をアプリに提供します。 Flutterの主なタスクは、特定のプラットフォームを設計するという原則を満たすユーザーフレンドリーなアプリケーションを作成することです。



Flutterで記述されたアプリケーションの高品質なレンダリングは、プラットフォームのキャンバスに直接表示されるという事実によって保証されます。 これは、Flutterに完全なSDKの機能があるために可能です。 したがって、アプリケーションは、ウィジェット、フォント、その他のプラットフォーム要素の変更に依存しません。











Flutterを使用すると、 サポートライブラリの使用が不要になります 。 たとえば、Android Jelly Beanオペレーティングシステム(4.1.2)を搭載した電話機で実行されるこのFlutterアプリケーションは、マテリアルデザインのウィジェットを使用しますが、電話機自体は登場する2年前にリリースされました 。 もちろん、携帯電話にはマテリアルデザインのウィジェットが組み込まれていません。 それがそうであっても、Flutterアプリケーションは、最新のデバイスで動作するのと同じように動作し、驚くほどに見えるでしょう。



Flutterでない場合は、これらの問題を自分で解決する必要があります。 これは、OSの古いバージョンでより徹底的なテストを行い、アプリケーションで使用される要素へのアクセスを提供しないプラットフォームの回避策を見つける必要があることを意味します。 開発者からは、Flutterがテストプロセスを非常に単純化していると常に聞いています。



ネイティブアプリケーションの利点に加えて、Flutterには次の利点があります。







Flutterを使用すると、両方のプラットフォームで単一のコードベースを使用してこれをすべて実行できます。 または、必要に応じて、Flutterアプリケーションの各プラットフォームネイティブコードを追加できます。



4.日付の記録



最後に、Flutterは優れたアプリケーションをさらに高速に開発できるため、優れています 。 最も人気のある(誇大宣伝の)Flutter機能は、ステートフルホットリブートです。 速度(1秒未満)だけでなく、状態の保持も印象的です。つまり、アプリケーションの奥深くでコードを変更した場合、再コンパイル後、アプリケーションの最後の状態を手動で再作成して結果を確認する必要はありません。









ステートフルリブート!



このリブートは、高度なコンパイルテクノロジー(JavaScript用のV8コンパイラーとSmalltalk用のStrongtalkの作成者によって開発された)と、Flutterがネイティブで、リアクティブに更新されたビューに基づいているという事実のおかげで可能になりました。



プロセスの高速化に加えて、多くの開発者は、Flutterが作業スタイルを大幅に変更していることに注目しています。2つのアカウントで新しいレイアウトを作成し、顧客がいるときに必要な変更を行うことができます。



また、必要なものを正確に入手するデザイナーの仕事にもプラスの効果が見られます。 そのため、完璧なオプションが見つかるまで、さまざまなパラメーターで遊ぶことができます。 実際、WebアプリケーションでCSSを使用するデザイナーは、Flutter自体でレイアウトを変更する方法を見つけるのは簡単だと主張しています。



Flutterの仕組みの詳細については、 このリアルタイムアプリケーション開発の記録をご覧ください。 また、ハッカソンに参加して、どのくらい早くFlutterを学習し、動作するアプリケーションを構築できるかを確認することもできます。



前の段落で述べたように、Flutterアプリケーションでは必要なテストが少ないため、新しい機能をより迅速に追加できます。 JD.comのFlutterでの経験について次のように述べています。

開発チームの半分だけを使用して、同じ機能を作成することができました。 同じ数のエンジニアで、1つのリリースでより多くの機能を追加できます。


Alibabaは 、Flutterを使用すると、新しい機能を追加するのにかかる平均時間が1か月から2週間に短縮されたことにも注目しています。









ハミルトンアプリ



レコードといえば。 Hamiltonアプリでは、開発者はリリースの前夜の夕方に、その安定性に疑問の余地なく大きな変更を加えました ! そして、約3か月で書かれたこのアプリケーションは、両方のアプリケーションストアで提示されました。 さらに、Flutterは、ユーザーの関心を高めるための新機能の定期的な追加を大幅に促進します。



そして、成功したモバイルアプリケーションが作成されます。









Flutterを使用すると、アプリケーションを作成および変更するのと同じくらい速く、簡単にウィジェットを更新できます。 Flutterがプラットフォームウィジェットの更新に対応するのが難しいという懸念をよく耳にします。 しかし、Appleが画面に有名な切り欠きを持つ新しいiPhone Xを発表したとき、Flutterは販売開始前であってもこの切り欠きのサポートを追加することができました。



そして、これはiOSだけに当てはまりません。 GoogleがI / O 2018のマテリアルデザインを大幅に再設計することを発表した頃には、Flutterは新しいアイデアを完全に具現化するためのアップデートをすでに受け取っていました。 これを可能にしたのは、Flutterの迅速なカスタマイズ能力でした。



Flutterのおかげで、彼らは2〜3倍効率的に働き始め、アプリケーション全体がより成功したと主張する開発者からフィードバックを定期的に受け取ります。



リスクと制限



妥協のないソリューションはなく、Flutterも例外ではありません。 Flutterが特定のアプリケーションに最適なツールではない理由はいくつかあります。



FlutterアプリケーションにはFlutterウィジェットと独自の視覚化ツールが含まれているため、プラットフォームに組み込まれたツールを使用するアプリケーションよりも若干大きくなっています。 最近まで、Flutterアプリケーションの最小サイズは6.7MBでしたが、現在は4MBに縮小されています。 今後、さらなる最適化を実施する予定です。



Flutterの最も重要な利点の1つは、両方のモバイルプラットフォーム用のアプリケーションを開発するときに単一のコードベースを使用できることです(Flutterは、1つのプラットフォーム用のアプリケーションの作成にも適しています)。 ただし、特定のプラットフォームに関連付けられたアプリケーションや、プラットフォームによって提供されるプレゼンテーションのラッパーとして機能するアプリケーションがあります。 例は、通知を表示するためにバックグラウンドスレッドで実行されているアプリケーションです。 このようなアプリケーションはFlutterで作成することもできますが、これは特別な利点はありません。



Flutterが市場にとどまるかどうかはよく聞かれます。 私たちが自信を持って言う理由はたくさんあります: はい 。 まず、Google自体はFlutterの忠実なユーザーであり、コンシューマアプリケーションと内部プログラムの開発の両方で、特に最近リリースされたGoogle Adsモバイルアプリケーション(以前のAdWords)はFlutterで作成されました。 GoogleはFlutterを完全にサポートしており、Flutterを成功させるためにあらゆることを行っています。



第二に、大規模なアプリケーションは通常2つの無関係なプラットフォーム向けに開発されているという事実のため、企業は、たとえば最初にiOS用のアプリケーションをリリースし、後で需要があればAndroidアプリケーションを作成することはリスクが低いと考えました。 Flutterを使用すると、両方のプラットフォームのアプリケーションを同時にリリースできます 。 したがって、機能の識別によるリスクを軽減するだけでなく、アプリケーションの潜在的な市場を拡大します。 これはAndroidにとって大きなメリットです。



別の潜在的な問題があります。フラッターは比較的新しいフレームワークです。 当然、Flutterは必要なツールを作成し、機能を拡張し、コミュニティを開発するのに時間が必要です。 これまでのところ、プラットフォームにはFlutterがまだ実装していない機能があります。 同時に、GoogleはFlutterに新機能を追加することに常に取り組んでいます。



Flutterをさらに深く学習したい場合は、「Flutter の革命とは」と「FlutterがDart使用する理由 という記事が役立ちます 。 また、最新のFlutterユーザー調査の結果を表示することもできます。



どこから始めるか



Flutterを試すことにした場合、次のヒントが役立ちます。



  1. このガイドは、Flutterのインストール、エディターの構成、および最初のテストアプリケーションの作成に役立ちます。
  2. これらのFlutterビデオをご覧ください。
  3. ここでは、 AndroidiOSReact Native、またはXamarinを使用した経験のある開発者向けのガイドがあります。
  4. モバイル開発の経験がない場合は、以下のチュートリアルが役立ちます: Flutterでのレイアウトの構築インタラクティブ機能の追加 、およびFlutter Widget Frameworkのツアー (リアクティブプログラミングの原理に関する資料が含まれています)。
  5. 貴重なソースは、 Flutterクックブック 、このウィジェットカタログ、およびFAQです。
  6. また、 It's All Widgetsカタログでアプリケーションを見ることができます。 それらの多くは、閲覧可能なオープンソースコードを持っています。 ここで独自のFlutterアプリケーションを追加することもできます。
  7. Flutter Weekly購読して、Flutterの最高の記事を毎週選択してください。
  8. Google Codelabsは多くの優れたFlutterコンテンツを提供していますが、それでも十分でない場合は、Udacityから無料のFlutterビデオコースを受講できます。
  9. 他の便利なドキュメントは、このリンクから入手できます。


TwitterGitter、 Stack Overflowで Flutterコミュニティに参加してください。 Flutter Devメーリングリストに登録することをお勧めします。 または、地元のFlutter MeetupまたはStudy Jamを見つけて、近くで参加できるモバイル開発ハッカソンがあるかどうかを調べることができます。



おわりに



Flutterを使用すると、アプリケーションの高速開発が可能になり、生産性が向上し、高品質のアプリケーションを作成できます。 これは、開発者が製品を完全に制御できる、表現力に富み、非常に柔軟で高度にカスタマイズ可能なツールキットです。 Flutterは、単一のコードベースを使用してiOSおよびAndroid用の高速で安定したネイティブアプリケーションを作成します。



Flutterはあなたのお金を節約し、リスクを減らします。 無料でオープンソースです。 そうすることで、フラッターはあなたがより多くのお金を稼ぐのに役立ちます。 これは、AndroidとiOSアプリケーションの2つの市場に同時に参入し、より短時間でより良いアプリケーションを作成するために可能です。



おそらく、開発者からの最もお世辞は、Flutterを使用したモバイル開発は楽しいということです。 これは素晴らしいです。Flutterを使用している開発者の92%が、 Flutterがニーズを完全に満たしていると言っています。 この調査はバージョン1.0 リリースに実施され、満足しているユーザーの数は絶えず増えていることを忘れないでください!



最後に、Flutterは未来志向です。 これは、リアクティブビューをサポートする唯一のネイティブモバイル開発ツールです。 これは、超高速ステートフルリブートなどの信じられないほどの機能を使用して、より優れたアプリケーションを作成するのに役立つプログラミングパラダイムです。 また、Flutterは本格的なSDKであるため、新しいプラットフォームの開発とともに、その関連性を長期間維持します。



All Articles