こんにちは。教育系エンジニアのひらまつ(@hiramatsuu)です。
これから新しく、Flutterの連載をやっていきたいと思います。
Flutterからアプリ開発をはじめる方でもわかるように解説
これまでのFlutterの教材は、すでに他のプラットフォームでアプリ開発を行ったことのある方を対象にしているものが多く、アプリ開発の基礎はすでに知っているものとして書かれているものがほとんどです。
ですがFlutterコミュニティの成長に伴って、Flutterからアプリ開発をはじめるという方も増えてきているのかなと思います。
なのでこの連載では、これまでにアプリ開発の経験がなくとも、基本的なプログラミングスキルさえあれば理解できるようなものにしていきたいと思います。
第一回目のテーマは、そもそもFlutterってなんなの?って話です。
Flutterとは?
Flutterとは一言でいうなら、Googleが提供しているオープンソースのSDKです。
SDKとは、「Software Development Kit」の略称で、アプリ開発をするために必要なツールのセットのことです。
つまり、「これさえ使えば、アプリ開発に必要なものはほとんど揃うよ!」というのがSDKというもので、FlutterはこのSDKのひとつです。
そして、Flutterには大きく3つの特徴があります。
- プラットフォームに依存しない開発が可能に
- フロントエンドとバックエンドが同じ言語で開発できる
- ホットリロード/ホットリスタートによる高速な開発サイクル
これらの特徴から、現在では大注目の技術になっています。
ひとつずつ詳しく見ていきましょう。
特徴①:プラットフォームに依存しない開発が可能に
Flutterの最大の特徴は、クロスプラットフォーム開発です。
つまり、1つのコードで複数のプラットフォームのアプリを開発することができます。
通常のアプリ開発では、iOSアプリはSwiftで開発して、AndroidアプリはKotlinで開発して、WebアプリはRubyで開発して、、というように、プラットフォームごとにプログラミング言語などの開発環境を変える必要があります。
ですが、Flutterを使えば、プラットフォームごとにコードを分ける必要はなく、iOS/Android/Web/Windows/macOS/Linuxのアプリをひとつのコードで開発することができます。
これは特に少人数の開発チームにはとても大きなメリットです。プラットフォームごとのコードを書く時間を、プロダクトの質を上げるための時間にあてることができるようになりますからね。
Flutterの公式YouTubeチャンネルの動画によると、Google社のFlutterチームは「プラットフォームからスタートするのではなく、作りたいものにフォーカスできるようにする」という目標を掲げているとのこと。
複数プラットフォームをひとつのコードで開発出来るというのは、まさにこの思想がよく現れた設計ではないでしょうか。
特徴②: フロントエンドとバックエンドが同じ言語で開発できる
アプリ開発においてはふつう、2つ以上のプログラミング言語やマークアップ言語を使います。
例えば、Webアプリを開発する場合であれば、バックエンド(ユーザーからは見えない裏側の処理の部分)はRubyのようなプログラミング言語で開発しますし、フロントエンド(画面部品などユーザーから見える部分)はHTMLやCSSのような言語で開発すると思います。
このように、ひとつのアプリを開発するのに、複数の言語を使わなければならないというのが一般的です。
一方でFlutterは、フロントエンドとバックエンドを共通のプログラミング言語「Dart」で開発することができます。
フロントエンドとバックエンドの両方を「Dart」というプログラミング言語でまるっと開発できるので、2つ以上の言語を使い分ける必要がありません。
ひとりで複数の言語を使い分けるのはけっこう大変です。単純に必要なスキル量が2倍になりますし、言語を使い分けるための頭の切り替えにも時間がかかります。
フロントエンドとバックエンドを別のエンジニアが担当できるような大きなチームであれば話は別ですが、ひとりで開発しなければならない場合ではこれは大きな問題です。
やはりこういった特徴からも、Flutterが少人数チームに向いていることがわかると思います。
特徴③: ホットリロード/ホットリスタートによる高速な開発サイクル
Flutterにはホットリロードやホットリスタートという機能があります。これはコードの変更を高速にプレビュー画面に反映してくれる機能のことです。
従来のスマホアプリ開発の場合、コードを変更した結果をプレビュー画面で確認したければビルドし直す必要があり、これにはハイスペックマシンでも数秒の時間がかかってしまいます。
ですが、ホットリロードやホットリスタートならば瞬時にプレビュー画面にコードの内容を反映できるので、非常に高速にフィードバックを得ることができます。
コードを変更して、画面で確認して、またコードを変更して、、というサイクルはなるべく速い方がよいです。コードの変更を画面で確認するたびに、数秒間待たなければいけないのは結構ストレスになります。
ホットリロード/ホットリスタートによる高速なフィードバックは開発サイクルを高速化してくれるので、開発の生産性を高めることができます。
まとめ
以上がFlutterの概要でした。
Flutterを使えば、クロスプラットフォームやコードの共通化による低コストでの開発ができるうえに、ホットリロード/ホットリスタートによる高速な開発が可能なため、価値の高いアプリを高速に開発することができます。
これだけだとまだイメージ掴みづらいと思うので、次回はFlutterの具体的なコードを見ていきましょう。