SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Flutterで始めるモバイルアプリ開発

Flutterとは何か? 使うメリットや特徴を理解する

Flutterで始めるモバイルアプリ開発 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

React Nativeとの比較

 React Nativeでも紹介しましたが、モバイルフレームワークという点において、現時点でのFlutterの競合フレームワークはReact Nativeと言えるでしょう。そのため、React NativeよりもFlutterを選択する理由がどこにあるのかと興味を持つと思います。

 さらに、FlutterはReact Nativeよりも広く普及していません。そのため、React Nativeの方が良いのではないかと思うのではないでしょうか。筆者も最初はそう思い、React Nativeを採用しましが、React Nativeを取り巻く環境が少々複雑に感じるようになってきました。特に、使い始めよりも、多少慣れてきたときの方がより一層難しく感じるようになりました。次に、筆者がReact Nativeで課題に感じたポイントを紹介します。

React Nativeを取り巻く環境の複雑さ

 React Nativeは、これまで紹介したようにWeb技術を使っている開発者であればなじみやすいです。JavaScriptを使いつつ、それでいてモバイルアプリの問題を非常にうまく回避することができるソリューションです。

 もちろん、JavaScriptではなくTypeScriptを使って開発することも可能ですが、Webアプリと同様にJSXも利用することができます。このような多様性は、Babelというツールに依存するところが大きいです。また、開発中のアプリをすぐに動作確認したい場合などにはExpoというより便利なツールも用意されています。こういった問題の回避や改善するための手法が複数あり、その結果として、関連するソリューションが多くなりすぎているといった印象を受けるかもしれません。

 例えば、ReactもしくはReact Nativeで使われるソリューションとして、図4のようなものがあります。

図4:ReactとReact Nativeを取り巻く環境
図4:ReactとReact Nativeを取り巻く環境

 最初は知らなくても手順通りにできてしまうのであまり気になりませんでした。しかし、開発が進んでいくと、いつの間にかモバイルアプリの問題解決よりも環境の問題解決に多く時間を割いているケースもありました。見つけた問題解決方法が、React Native以外に関する場合には、React Nativeでも適用できるのかを調べる必要があります。

 そして、それぞれのツールやライブラリなどもReact Nativeと同期され、リリースされるわけではないので、時間の経過とともに問題解決の複雑度が増します。すでにこういった周辺環境を熟知し、それを継続していけるという場合でないと難しいです。

開発パターンへの理解の難しさ

 ReactはWebアプリでも広く使われています。そのため、多くの開発パターンやノウハウの情報がたくさんあります。そして、WebアプリでReactを使って最適化できるようなケースは、かなり高度なWebアプリを作る必要があるケースです。そういった背景が、React Nativeを初めてモバイルアプリを作るためのソリューションとして選択する場合には、かえって理解を複雑にするかもしれません。

 例えば、PCのような大きな画面でWebSocketを使ってリアルタイムで画面更新される株やFX売買アプリを作るケースでは、ReactやReactを取り巻くソリューションの恩恵を感じることでしょう。しかし、そのようなWebアプリの難易度に比べて、React Nativeを使ってモバイルアプリを作る場合にはシンプルな場合が多いはずです。

 問題解決するための方法をWeb上で探すと、必要以上に難しい方法や、前提としている環境がWebアプリであったりすることも多々見かけます。React Nativeを通じて「アプリ開発」も、「React」も初めて挑戦するという場合には、それらの情報の前提や背景を吟味し開発をすすめることは難しいです。そういった背景が、React Nativeを使う際に失敗しやすい要因の1つとだと筆者は感じました。

Flutterのデメリット

 React Nativeに対する課題を述べましたが、実はReactのメリットの1つとして、Reactというエコシステムに深く入り込むほど、Reactが便利になってくるという側面があります。

 そして、Reactはサーバーサイドやフロントエンド、モバイルアプリまでカバーしています。そういった側面が、前述した通りReact Nativeのデメリットだと筆者は捉えました。しかし、できるだけ同じ言語や同じツールで異なるレイヤーの開発までをカバーしたいという場合には、やはりFlutterやDartは現時点では適した環境・言語とは言えません。

 Flutterは現時点では、モバイルアプリ開発専用と言えます。その点をデメリットと思うか、メリットと思うかは置かれた状況によって変わってくるでしょう。

次のページ
Flutterの特徴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Flutterで始めるモバイルアプリ開発連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/12718 2020/09/02 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング