投稿者 : 藤沢瞭介(Ryosuke Hujisawa) りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

【Flutterとは】基礎知識・将来性・技術選定・比較

更新日 :

まずはじめに

 

本日の記事では、プログラミングやFlutterの知見が浅い方でも分かりやすい、

 

Flutterの基礎知識を解説しています。

 

Flutterは、将来的にも益々活用をされていくと思われる、注目のテクノロジーですので、

 

学んでおくと将来の役に立つと思っています。

 

この記事の想定読者

  • プログラミング経験者でFlutterを知りたい方
  • Flutterを新しいサービスの開発言語に検討してる方
  • 他の似たようなツールとの違いを知りたい

 

この記事を読んで分かること

  • Flutterの基礎的な知見が身に付く
  • Flutterを新しいサービスの開発言語に採用するか判断できる
  • 他の似たようなツールとの違いを理解することができる

 

この記事のポイント
  • プログラミングに精通してない方でも分かりやすい
  • エンジニア経験がなくても理解できる、読める
  • 技術選定に関わるマネジメント側の方などにもオススメ

Flutterとは?

Flutterの基礎知識

Flutterは、Googleが開発し2017年5月にリリースされた、

 

無償かつオープンソースのモバイルUIフレームワークです

 

単一のコードベースから、美しいモバイル、ウェブ、デスクトップ、組み込みアプリケーションを構築、テスト、デプロイできます。

 

Android、iOS、Linux、Mac、Windows など… etc 様々なOSで動くアプリを単一のソースコードで作ることが出来ます。

 

このような、単一のプログラミング言語を書くだけで、様々なOSで動くアプリを作れる技術を、

 

マルチ(クロス)プラットフォーム開発と読んだりします。

 

Flutterで何が作れる?

 

Flutterの書き方や使い方を覚えておくと、基本的にはなんでも作ることが出来ます。

 

以下の記事でも色々と紹介されていますが、

 

あれもこれもFlutterで開発されてるって、マ??

 

  • SNSも作れます
  • メモアプリも作れます
  • メディアも作れます
  • 地図アプリも作れます
  • マッチングアプリも作れます

 

基本何でも作れますね、それも、スマホアプリ、Webアプリ一緒に作れます。

 

便利!

 

Flutterの将来性

 

Flutterの将来性は明かるいと思います。

 

マルチプラットフォームの開発ツールにしては使いやすいですし、

 

アプリが重くなることが少なくパフォーマンスも安定します。

 

予算が少ないスタートアップで、webもiOSもAndroidも開発・リリースしないといけないプロダクトの場合、

 

費用のコストが少なく、使い方もそこまで難しくなく、パフォーマンスも安定しやすいので、選ばれる機会は増えるでしょう。

 

Flutterは開発元はGoogleです。

 

Flutterの将来性を担保できる理由の一つとして、

 

Googleが、Flutterの開発をサポートしているという点もポイントです。

 

Flutter version Architecture Ref Release Date Dart version
3.3.2 x64 e3c29ec 9/14/2022 2.18.1
3.3.1 x64 4f9d92f 9/7/2022 2.18.0
3.3.0 x64 ffccd96 8/30/2022 2.18.0

 

上記の票のリリースノートを見ても分かるように、Flutterは多くの人の手によって活発に更新されており、

 

尚且つGoogle社内の優秀なエンジニア達が日々関わっています。

 

というのも、多くのオープンソースのソフトウェアというのは、多くの人に今使われていても、

 

  • どのくらい頻繁に開発されてるのか?
  • 誰がそのソフトウェアを開発してるのか?

 

がしっかりしてないと、怖くて使えないという欠点があるのですが、Flutterのような、

 

既に巨大なIT企業が進めるということが決まってるものは、確実に将来伸びると言えます。

 

Flutterを採用する基準

 

この記事を読んでいる方の中には、

 

  • 将来Flutterを使って開発しようかな?
  • Flutterを採用しても良いプロジェクトとは?

 

という疑問を持っている方もいると思います。

 

実際に私がFlutterを使ってきた経験から言うと、Flutterを使うべき・使わないべきのプロジェクトがあると思います。

 

Flutterを使うべきプロジェクト

  • 予算が限られているプロジェクト
  • Web, iOS, Android対応のアプリを最初から出す必要がある
  • 早く作って早く出したい
  • 開発コストをなるべく安く抑えたい
  • マルチプラットフォーム技術で作りたい
  • テスト的にサクッとデモアプリを作りたい

 

Flutterを使わない方がいいプロジェクト

  • 機能性や速度、UXを最高品質にしたい
  • 各々のネイティブ言語でアプリ開発すれば良いと考えている
  • わざわざマルチプラットフォームを使わなくてもいい
  • 予算がしっかり確保されていて開発コストもかけられる
  • 既に売れる見込みのあるアプリのリプレイス

 

要は、Flutterを有効活用できるプロダクトというのは、

 

最短コストで小さなプロダクトを早く作りたい方にオススメということです。

 

もしくは、そこまでUI/UXに拘らず動かせるアプリならオススメです。

 

逆に、モンストやメモアプリ、メルカリみたいに、

 

ッチなUI/UXがアプリのシェアに直結するようなプロダクトには向いてないと思います。

 

それなら、普通にWebはReact, iOSはSwift, AndroidはJava、ゲームはUnityで作った方が良いです。

 

FlutterとReact Nativeの違い

 

Flutterと似たマルチプラットフォームで動く開発言語にReact Nativeがあります。

 

React Native以外にもあるのですが、一番比較されることが多い点で、この二つを比べてみますと、

 

FlutterとReact nativeの一番大きな違いは、FlutterがGoogleが開発した、

 

魅力的でユーザーフレンドリーなモバイルアプリケーションを作成するためのユーザーインターフェース(UI)ツールキット

 

であるのに対し、React nativeはfacebookが開発したオープンソースのjavascriptフレームワークである点です。

 

つまり、思想としてFlutterは、

 

  • ユーザーフレンドリーなモバイルアプリケーションを作成するためのユーザーインターフェース(UI)ツールキット

 

で、ReactNativeは

 

  • facebookが開発したオープンソースのjavascriptフレームワーク

 

であるという点ですね。

 

メリット・デメリットでいくと、ざっくり簡潔に言うと、

 

React Nativeの方が開発はしやすいがパフォーマンスは悪い、という感じかと思います。

 

比較 Flutter React Native
思想 デスクトップおよびモバイル向けの、魅力的なアプリケーションを作成するための、UIツール React(JS)でモバイルアプリも開発できるツール
リリース Google によって開発され、2018 年 12 月 4 日リリース Facebookにより開発され、2015 年 3 月 26 日リリース
メイン言語 Dart を使用 JavaScriptを使用
その他 C、C++、Dart。 Javascript、Java、Python、C++、Objective-C。
テスト 組み込みツールがテストを行う サードパーティのツールを使用
構造 たくさんのウィジェットで構成 サードパーティのツールを使用

 

詳しく書くと、こんな感じです。

 

オープンソースソフトウェアとは?(OSSとは)

 

ところで、先ほどからオープンソースソフトウェア(OSS)という言葉が頻発しているのですが、

 

この言葉が分からない方もいると思うので、付け加えてOSSに関しても説明を書きます。

 

オープンソースソフトウェア(OSS)とは、

 

著作権者がユーザーに対して、どのような目的でもソフトウェアと、

 

そのソースコードを使用、研究、変更、配布する権利を与えるライセンスのことです。

 

早い話が、ソースコードを全部公開しているということですね。

 

Flutterはソフトウェア(つまりアプリ)を作るためのツールですが、そのFlutterも作られたものなわけです。

 

Flutterの強み

 

では、なぜFlutterはそこまで多くの人に評価されているのでしょうか?

 

シンプルに、「高性能で使いやすいから」と言ってしまえば、それで終わりなのですが、

 

今回は自分なりに、Flutterが選ばれる理由をピックアップしてみました。

 

  1. 全OSで同じコードとUIを使える
  2. hot reloadで開発時間の短縮
  3. SwiftやJavaと同等のパフォーマンス
  4. 複雑なアニメーションが実現可能
  5. ネイティブの実行コードにコンパイルされる

 

Flutterの弱点

 

マルチ(クロス)プラットフォーム開発の言語では、各々のOSのネイティブ言語よりも、

 

パフォーマンスが劣るという弱点があります。

 

Flutterはパフォーマンスの面でも優れていると言われていまして、

 

これは、FlutterがDartという言語で書かれているからで、

 

Dartは複数のプラットフォームで高速に動作するアプリのために最適化された言語と呼ばれているのですが、

 

それでも、やっぱ、完璧に早く軽くはない

 

だから、UI/UXが完璧なヌクヌク動くアプリを作りたければ、やはりネイティブの言語を使うのが妥当でしょう。

 

Dartとは?

画像引用: https://dart.dev/

 

さて、FlutterはDartで作られてると紹介しましたが、Dartとはなんでしょうか?

 

Dartとは、Webやモバイルアプリなどのクライアント開発用に設計されたプログラミング言語です。

 

今はFlutter御用達の言語という印象がありますが、元々はJavaScriptの弱点をカバーする為に生まれた言語です。

 

なんならJavaScriptを超えることを目指して生まれた言語と言える。

 

 

Wikiにもこのように書かれています。

 

Dart言語はJavaScript言語にある解決できない言語上の問題点を解決し[8]、なおかつ、より優れたパフォーマンスを発揮し、大規模なプロジェクト用途にも耐え得る特徴を備え、セキュリティ面でもより優れた言語[9]として、設計された

Dart ウィキペディア(Wikipedia)

 

事実、Dartはモバイル向けだけではなく、ウェブアプリとモバイルアプリのクライアント開発向けに設計されたプログラミング言語です。

 

残念ながら、Googleは公式としてTypeScriptを採用してしまったので、DartがJSに置き換わることは無くなりましたが、

 

開発元は、こちらもGoogleが開発していますので、サーバーアプリケーションやデスクトップアプリケーションの構築にも使用できる。

 

そのような柔軟性が、今のFlutterと結びついて、さまざまなOSで使える素晴らしいツールに昇華されたという感じですかね。

 

Flutterチームも、さまざまなプログラミング言語を検討した結果、自分たちのユーザーインターフェースの構築方法にマッチするDartを選びました。

 

Dartはマルチプラットフォームの開発をする際に、完全なネイティブコードがコンパイルされるので、パフォーマンスも向上させやすいんですよね。

 

Flutterを使ってアプリ開発をするには何が必要?

 

ここまでで、Flutterの魅力は十分に伝わったかと思いますので、次はFlutter開発をするには、何が必要かを紹介しています。

 

パソコン(iOSやMac OSアプリを作るにはMACが必要です)

 

まず、もしFlutterでiOSアプリやMac OSのアプリを作りたければMacが必要です。

 

これは、Flutterの問題というよりかは、XcodeでないとiOSプリが動かないから必要なのです。

 

テキストエディタ

 

テキストエディタは、プログラミングをする上ではとても大切です。

 

なんでも良いのですが、もしFlutterで開発するなら、無料で高性能なVSCodeを使うと良いでしょう。

 

スマホ実機

 

Flutterスマホアプリを開発するとき、シミュレーターのソフトで動きを確認できます。

 

ただし、実機でテストしたい場合もあると思います、そのために、色々なデバイスを用意しておくと良いでしょう。

 

iOSとAndroidのデベロッパーアカウント

 

もしも、FlutterアプリをApp StoreやPlay Storeにリリースする場合は、別途デベロッパーアカウントが必要になります。

 

この記事では、詳しくリリース周りの準びは説明しませんが、Androidであれば最初に三千円くらいの登録費用が必要になる。

 

iOSだと、毎年1万円くらい費用がかかってきます。

 

 

Flutterの使い方を学ぶにはどうすればいい?

 

さて、ここまでFlutterに関して色々と紹介をしてきました。

 

では、Flutterを学ぶにはどのような方法があるのでしょうか?

 

実は、Flutterはまだまだ新しい技術なため、日本語の記事が少なかったりします。

 

英語ができる人は、英語のドキュメントや動画なんかを見たり読んだりできるかもしれない。

 

でも、多くの日本人にとって英語というのは、そこまで簡単なものではないですよね。

 

なので、色々とFlutterを学ぶために便利なサイトや本、教材を紹介します。

 

FlutterやDartの公式ドキュメント

 

まずは公式のドキュメントを見ましょう、英語が辛いということであれば、日本語のドキュメントも少しずつネットに揃ってきています。

 

ここら辺のサイトを見てみると良いかもしれない。

 

 

Udemyなどの動画教材

 

Udemyという動画教材プラットフォームがあります。これを見るのも結構良いです。

 

講師は、プロのエンジニアが直々にコースを出しているので、YouTubeとかで趣味的に出してる動画とはレベルが違う。

 

特に、体系的に学ぶのであれば最高の教材だと思っています。

 

世界最大級のオンライン学習プラットフォーム Udemyで今すぐ学ぶ

 

プログラミングスクールに通う

 

Flutterは、これまでにネイティブアプリ開発がない人であれば、独学するのは難しいかもしれません。

 

なので、プログラミングスクールに通って覚えるのもアリだと思っています。

 

プログラミングスクールに通う意味っていうのは、色々とあると思うんですが、

 

FLutterアプリを作れるようになれば、自分でサービス開発して金を稼ぐこともできるし、

 

別の業界からの未経験転職でも出来るようになると思います。

 

しかし、プログラミングスクールで今Flutterを教えられるスクールは殆どありません・・・

 

なので、ぶっちゃけ、もしこの記事を読んでいる方でFlutterやDartを学びたいと思ってる人がいたら、

 

僕が教えます!僕は現在、Flutter歴は1年ほどあり、リリース経験もあるので、良ければDMで相談ください。

 

リリースしたアプリはこちら

 

他のプログラミングスクールよりは、遥かに格安で教えられるので。

 

Flutter 採用の基準は?

 

ちなみにですが、この記事の想定読者は、結構広めに考えています。

 

だから、多くの人が、どのような目的でFlutterを知りたいか考えてみようと思いました。

 

ズバリ、Flutterってどういう時に使えばいい?というものです。

 

そのツイートがこれ。

 

 

僕が考えるに、Flutterを使ってアプリ開発をするのにベストなタイミングというのは、

 

高性能なアプリを、低価格で早く作りたいという需要がある場合は、Flutterはとても良い選択肢だと思っています。

 

ぜひ参考にしてみてください。

 

Flutter 界隈で有名な人たち

 

では最後に、Flutterの情報の最新を常に発信してるFlutter界隈で有名な方を紹介して終わります。

 

もしTwitterをやってれば、ぜひ彼らをフォローしてください。最新のFlutter情報が触れられます。

 

@kimura9438

 

@_mono

[st-minihukidashi webicon=”” fontsize=”” fontweight=”” bgcolor=”#F48FB1″ color=”#fff” margin=”0 0 20px 0″ radius=”” position=”” myclass=”” add_boxstyle=””]おまけ、最近読んだFlutter系の記事ですごく良かった記事です[/st-minihukidashi]

 

 

 

 

 

 

 

 

               



コメントを残す

メールアドレスが公開されることはありません。

関連記事