Flutterとは?Java経験者が語るクロスプラットフォーム開発の魅力と実体験を解説!

はじめに 

こんにちは、株式会社メンバーズCross ApplicationOpen in new tabカンパニーのニコラスです。

いきなりですが、皆さんは「Flutter」という言葉を聞いたことがありますか?
プログラミング経験者であれば、おそらく目や耳にしたことがあると思います。しかし、具体的に「Flutterとは何か?」と聞かれると、わからない方が少なくないのではないでしょうか。筆者もその1人でした。
KotlinとJavaを使って、Androidアプリをメインに開発していた頃、Flutterという単語は聞いたことがあっても、実際どういうものなのかは理解していませんでした。
Flutterは具体的にどういうものなのか?なぜ最近人気が高まったのか?他のフレームワークに比べてどういう違いがあるのか?
この記事では、かつて答えられなかったこれらの問いに答えていこうと思います。実務でFlutter開発に取り組みながら、沢山のFlutterの魅力を感じています。

Flutterの魅力をなるべく簡単にわかりやすく紹介しますので、皆さんがFlutterに少しでも興味を持っていただけると嬉しいです!

Flutterとは 

Flutterとは1つのコードベースでクロスプラットフォームアプリのUIを構築するためのオープンソースフレームワークです。

一般の人はFlutterをプログラミング言語として思い込んでしまっているかもしれませんが、FlutterはフレームワークでDartという言語で書かれています。

Flutterは1つのコードベースでクロスプラットフォーム開発ができるフレームワークのため、特定のOSに限らずちょっとした調整で複数OS向けにアプリの開発ができます。

なぜFlutterがおすすめなのか

この章では筆者の経験を元にプラットフォームネイティブな言語やフレームワークよりもなぜFlutterがおすすめなのかを説明します。

  1. 開発効率化

Flutterを使って一つのコードベースで複数のプラットフォーム向けに開発ができるため、以下のメリットがあります。

  • iOSチームとAndroidチームを分ける必要がなくなります。
  • プラットフォーム毎にアプリの仕様の差分が生じるリスクを低減できます。
  • Androidが主流の海外市場にもアプリの展開が可能になります。

  1. Hot reload機能

Hot reload機能とは開発中にコードを変更してもすぐに反映され、アプリを再起動しなくても、リアルタイムなプレビューが可能な機能です。リアルタイムでプレビューが可能になりますので開発時間を短縮することができます。

  1. 新しいフレームワークでありながら、活発なコミュニティがある

2018年にリリースされた新しいフレームワークではありますが、コミュニティが広く、ドキュメンテーションも整っており初めての開発者でもすぐに始められます。また、日本国内のFlutterカンファレンスやセミナーも定期的に開催されているため、需要が最近高まっている技術です。

以下のリンクからご参考ください!
FlutterKaigi 公式XOpen in new tab
Flutter Gakkai 公式XOpen in new tab
FlutterNinjas Tokyo 公式XOpen in new tab
Flutter大学Open in new tab

  1. Dart言語の親しみやすさとオブジェクト指向構文

FlutterはDartという言語で書かれています。筆者は元々Java/Kotlinの開発者でDartを勉強し始めた時に、Dartの構文はJavaに似ているという印象がありました。DartはJavaやKotlinのようなオブジェクト指向言語に近い構文を持っており、これによりオブジェクト指向の基本的な概念がしっかりと反映されています。
構文が似ているので、Dartの知識が全くなくても、Javaの知識があれば勉強が非常に楽です。

Flutter vs React Native?

Flutterの他にクロスプラットフォームのフレームワークの選択肢としてReact Nativeがあります。以下の表でFlutterとReact Nativeを比較しています。

フレームワーク

Flutter

React Native

リリース

2018年12月

2015年3月

開発者

Google

Meta

プログラミング

言語

Dart

JavaScript

プラットフォーム

• Android

• iOS

• Windows

• macOS

• Linux

• Google Fuchsia

• Web

• Embedded devices

• その他の

プラットフォーム

(例:Tizen for

Samsung Smart TV、

LG webOS、 等)

• Android & iOS

(React Nativeの開発者に

サポートされる)

• Windows

(PCやXboxタブレット

のようなWindows 10を

サポートするすべての端末。

Microsotにサポートされる)

• MacOS

(Microsoftにサポートされる)

• Web platform &

Android and iOS TV

platforms

(コミュニティにサポート

される)

理解しやすさ

Dartは静的型付け言語で

型安全のため、

コードの予測可能性が高く、

理解が進みやすい

JavaScriptは動的型付け

による柔軟性の代償として

バグが発生しやすい

傾向がある。また、Webの

知識を求められることも

あり、理解が進みにくい

可能性がある

UI開発

UIやアニメーションの

カスタマイズが豊富

ネイティブに近いUIデザイン

参考:https://www.thedroidsonroids.com/blog/flutter-vs-react-native-comparison

まとめ

みなさん、いかがでしょうか?Flutterに少しでも魅力を感じましたか?

Flutterの他にクロスプラットフォームのフレームワークは多々ありますが、筆者のようにJavaから来た開発者は、Flutterは非常に学びやすいです!

他の言語から来た開発者、若しくはプログラミング未経験の方でもFlutterは比較的学びやすいフレームワークなのでぜひ触れてみてください!

この記事が役に立ったと思ったら、
ぜひ「いいね」とシェアをお願いします!

リンクをコピーXでシェアするfacebookでシェアする

この記事を書いた人

Nicolas Christopher
Nicolas Christopher
日本語、英語、インドネシア語が話せるエンジニアです!2024年にメンバーズに中途で入社、その前は主にAndroidアプリの開発を行っておりました。最近、Flutterに触り始めて興味を持ったのでみなさんにもFlutterの魅力を広げていきたいと思います!
詳しく見る
ページトップへ戻る