目次

はじめに

この本を通して学べること
対象読者
サンプルプログラムについて
動作環境
免責事項
表記関係について
底本について

第1章 FlutterとFirebaseを知ろう

1.1 Flutterの概要
1.2 Flutterの特徴
1.3 Firebase

第2章 開発環境を構築しよう

2.1 DartSDKとFlutterSDKの入手方法について
2.2 環境開発構築手順
2.3 Android Studioのインストール
2.4 Flutterプラグインの追加
2.5 flutter doctorの実行
2.6 【参考】fvmを利用した環境開発手順

第3章 Flutterをサクッと動かしてみよう

3.1 Flutterの始め方
3.2 Android Studio 機能解説
3.3 Flutterを実行しよう

第4章 Dartの基礎知識を学ぼう

4.1 Dartについて
4.2 変数
4.3 メソッド
4.4 クラス
4.5 演算子
4.6 非同期処理

第5章 Flutterの基礎知識を学ぼう

5.1 Flutterアプリの画面構造について
5.2 StatelessとStateful
5.3 パッケージ

第6章 アプリの仕様を決めよう

6.1 アプリの仕様
6.2 プロジェクトの作成

第7章 Firebaseの設定をしよう

7.1 アカウント取得
7.2 FlutterアプリとFirebaseの紐付け
7.3 データベースの作成

第8章 一覧画面の実装をしよう

8.1 pubspec.yamlの変更
8.2 リスト作成
8.3 リスト作成の解説
8.4 新規ボタン追加
8.5 新規ボタン追加の解説
8.6 編集ボタン追加
8.7 編集ボタン追加の解説

第9章 入力画面の実装をしよう

9.1 Promiseモデル作成
9.2 Promiseモデル作成の解説
9.3 入力画面作成
9.4 入力画面作成の解説
9.5 一覧画面から入力画面への画面遷移
9.6 一覧画面から入力画面への画面遷移の解説
9.7 ラジオボタン有効化
9.8 ラジオボタン有効化の解説
9.9 日付選択画面作成
9.10 日付選択画面作成の解説

第10章 登録機能の実装をしよう

10.1 登録機能作成
10.2 登録機能作成の解説
10.3 入力チェック機能
10.4 入力チェック機能の解説

第11章 編集機能の実装をしよう

11.1 編集機能作成
11.2 編集機能作成の解説

第12章 削除機能の実装をしよう

12.1 削除機能作成
12.2 削除機能作成の解説

第13章 ログイン機能の実装をしよう

13.1 認証機能の作成
13.2 メールアドレスによる認証機能の作成
13.3 Cloud Firestoreとログイン機能を組み合わせよう

第14章 共有機能を実装しよう

14.1 プラグインを追加する
14.2 共有機能作成
14.3 共有機能作成の解説

第15章 多言語化対応しよう

15.1 多言語化プラグインのインストール
15.2 生成ファイルの確認
15.3 多言語化対応の設定
15.4 言語ファイルの準備
15.5 言語ファイルの反映
15.6 アプリ名の多言語化対応

第16章 アプリのアイコンを設定しよう

16.1 プラグインを追加する
16.2 アプリのアイコンを配置する
16.3 アイコンの生成

第17章 スプラッシュ画面を実装しよう

17.1 プラグインを追加する
17.2 画像の保存
17.3 画像表示設定追加
17.4 画像表示設定追加の解説

第18章 アプリをリリースしよう(Android版)

18.1 jksファイルの作成
18.2 キーストアの登録
18.3 サインイン情報の追記
18.4 リリースAPKの作成
18.5 APKの動作確認
18.6 Google Play Storeへの登録

第19章 【参考】アプリをリリースしよう(iOS版)

19.1 Apple Developer Programへの登録
19.2 iTunes Connectにアプリを登録
19.3 Xcodeプロジェクトの設定を確認
19.4 ビルドアーカイブの作成

おわりに

謝辞
感想

はじめに

 本書を手に取っていただき、ありがとうございます。

 本書では、GoogleによるオープンソースのモバイルアプリケーションフレームワークであるFlutterと、同じく、Googleが提供するFirebaseを使用した、Android・iOS上で動作するアプリを作成します。実際に「貸し借りをメモするアプリ」を作成しながら、Flutterについて学びます。

この本を通して学べること

 「貸し借りを記録できるメモ帳」のアプリ制作を通し、次のことが学べます。

 ・Flutterの開発環境の構築

 ・Dartの文法

 ・Flutterの基礎的なWidgetの使い方

 ・Firebaseを利用したアプリの作成

 ・アプリのリリース方法

対象読者

 Flutterに興味のある方が対象です。Flutter未経験の方や、Firebaseを利用したモバイルアプリを作成してみたい方にオススメです。

サンプルプログラムについて

 本書で記載されているコードは、すべて次のGitHubリポジトリーからダウンロードできます。タグで章ごとに項目を分けてありますので、ぜひ参考にしてください。

 https://github.com/chasibu/kasikari_memo_v2

動作環境

 本書で想定している動作環境のOSは、次のとおりです。

 ・Windows...Windows10

 ・MacOS...Catalina

免責事項

 本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者はいかなる責任も負いません。

表記関係について

 本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。

底本について

 本書籍は、技術系同人誌即売会「技術書典5」で頒布されたものを底本としています。

第1章 FlutterとFirebaseを知ろう

 この章では、FlutterとFirebaseの概要について説明します。

1.1 Flutterの概要

 Flutterは、Googleが開発したオープンソースのアプリケーションフレームワークです。

 アプリケーション開発は「AndroidであればJavaやKotlin」「iOSであればObjective-CやSwift」「WebアプリであればPHP,Ruby」などのように、動作させるプラットフォーム毎に別の言語を学習する必要があり、開発コストが高くなります。

 しかし、近年において、クロスプラットフォーム開発フレームワークが登場しました。これは、ひとつの言語のみで、複数のプラットフォームに対応したアプリケーションを開発できるツールです。クロスプラットフォーム開発フレームワークのひとつがFlutterです。他には、Facebookが開発したReactNativeやMicrosoftが開発したXamarinなどがあります。

1.2 Flutterの特徴

1.2.1 簡単なUI設計

 マテリアルデザインに沿ったUIを簡単に設計できます。「マテリアル=物質的な」という意味があるように、マテリアルデザインとは「物理的な法則に沿ったデザイン」を指します。現実世界のルールである光や影、奥行き、重なりを取り入れたデザインとなっており、Googleが発表しているWebサイトやアプリに多く用いられています。

 マテリアルデザインに沿った、Google製のような美しいアプリケーションを簡単に作成できます。

1.2.2 開発言語 Dart

 Googleによって開発されたプログラミング言語です。これは、JavaScriptの替わりとなる言語として作られました。JavaScriptやJavaと記法が似ており、どちらかの言語を使ったことがある方には、始めやすい言語です。

1.2.3 ホットリロード対応

 Flutterにはホットリロードという、アプリの実行中にコードの変更をすばやく反映させる機能があります。

 アプリの実行中にコードを変更した場合、通常は再ビルドする必要があり、反映するのに数十秒から数分かかります。しかしホットリロードを使うと、コードを変更してもアプリを停止することなく反映できるため、格段にアプリの開発効率が向上します。

 次の画像は、「Hello World!」から「Flutter」と文字をプログラム上で変更する例です。文字を変更してプログラムを保存すると、1秒後には、画像にあるようにアプリの表示が更新されました。通常であれば数十秒から数分かかるプログラムの反映が数秒でできるので、効率よくプログラムを作成できます。

図1.1: ホットリロード(文字変更)

FuchsiaとFlutter

 Googleが開発しているOSにFuchsia(フクシア)というものがあります。2016年8月にGitHub上で公開され、その存在が明らかになりました。特徴としては、スマートフォン、タブレット、PCなど、幅広いデバイス上で起動させることができ、Flutterで作成したアプリを動作させることができます。2021年5月に「Nest Hub」向けに配信され、話題になりました。今後の動向に注目が集まりそうですね。

図1.2: fuchsiaロゴ

1.2.4 ReactNativeやXamarinとの比較

 他のクロスプラットフォーム開発環境と、Flutterを比較してみます。

表1.1: 他のマルチクロスプラットフォームとの比較
対応プラットフォーム Flutter/Dart ReactNative/JavaScript Xamarin/.NET
Android
iOS
デスクトップ(Win) -
デスクトップ(Mac) -
Web(フロントエンド) -
Web(バックエンド) - - -

 デスクトップアプリも作成できるため、Xamarinと並んで、クロスプラットフォーム開発環境の対応数としては最多です。

1.3 Firebase

 Firebaseは、Googleが運営するBaaS(Backend as a service)です。BaaSとは、サーバーサイドのプログラミングが不要で、データベースや認証機能、プッシュ通知などを行ってくれるサービスです。本書では「Firestore Database」という、クエリと自動スケーリング機能を兼ね備えたリアルタイムデータベースを使用します。

第2章 開発環境を構築しよう

 Flutterで開発するための環境を構築します。インストールするものは次のとおりです。

 ・DartSDK(version:2.13.1)

 ・FlutterSDK(version:2.2.2)

 ・Android Studio(version:4.2.1)

 ・Xcode(iOSの開発を行う場合)

2.1 DartSDKとFlutterSDKの入手方法について

 DartSDKの入手方法は3種類あります。

 1.Homebrewなどのパッケージ管理ツールを使用してインストールする。

 2.Zip等で配布されているSDKをダウンロードする。

 3.Flutterに付属されているDartSDKを利用する(Flutter 1.21以降のバージョンのみ可能)。

 また、FlutterSDKの入手方法は2種類あります。

 1.Zip等で配布されているSDKをダウンロードする。

 2.fvmなどのFlutterバージョン管理ツールを利用し、ダウンロードする。

 プロジェクト毎にバージョンを変更できるfvmの利用が便利ですが、少し手順が複雑です。本書では、Zipで配布されているFlutterSDK利用した手順を紹介します。

fvmを使ってみたい方向けに、この章の最後にfvmを利用した導入手順を記載しますので、興味のある方はそちらも参考にしてください。

2.2 環境開発構築手順

 WindowsとMacのインストール手順が異なるので、順に説明します。

2.2.1 Windows版

 公式のFlutterのサイト1にアクセスします。Flutter SDKのダウンロードリンクをクリックし、ダウンロードします。

※執筆時点では、フォルダー名が「flutter_windows_v2.2.2-stable.zip」となっております。

図2.1: ダウンロードリンク

 ダウンロードしたZipファイルを展開し、中身のFlutterフォルダーを「C:\Users\ユーザーフォルダー」の下などに配置します。

図2.2: フォルダー配置

 「コントロールパネル > ユーザーアカウント > ユーザーアカウント > 環境変数の変更」をすると、次のような画面が表示されます。「Path」と書かれた行を選択した上で、編集というボタンを押します。

図2.3: パス設定

 先ほど展開したZipフォルダーのパスを設定します。「編集」をクリックします。本書と同じ手順であれば、「C:\Users\ユーザーフォルダー\flutter\bin」となります。設定が完了したらOKをクリックし、画面を閉じます。

図2.4: パス設定

 コマンドプロンプトを実行し、ダウンロードしたFlutterのフォルダーに移動します。本書と同じ手順であれば、次のコマンドで移動できます。

  > cd C:¥Users¥ユーザーフォルダー¥flutter¥

 次のコマンドを実行し、Flutterのバージョンを切り替えます。

  > git checkout refs/tags/2.2.2

 Windows版のFlutter SDKの準備は完了です。

2.2.2 Mac版

 公式のFlutterのサイト2にアクセスします。Flutter SDKのダウンロードリンクをクリックし、ダウンロードします。

※執筆時点ではフォルダー名が「flutter_macos_v2.2.2-stable.zip」となっております。

図2.5: ダウンロードリンク

 ホーム直下に「development」フォルダーを作成し、ダウンロードしたzipファイルを展開しましょう。

  $ mkdir ~/development

  $ cd ~/development

  $ unzip ~/Downloads/flutter_macos_v2.2.2-stable.zip

 「~.bashrc」ファイルにパスを書き込みます。※zshを使用している方は「~.zshrc」に読み替えてください。

  $ vim ~/.bashrc

  #ファイルの一番下に書き込む。USERと書かれた部分には実行ユーザー名が入ります。

  export PATH="$PATH:/Users/${USER}/development/flutter/bin"

 pathを定義したファイルを再読み込みします。※zshを使用している方は「~/.zshrc」に読み替えてください。

  $ source ~/.bashrc

 ターミナル上でダウンロードした、Flutterのフォルダーに移動します。本書と同じ手順であれば、次のコマンドで移動できます。

  $ cd ~/development/flutter

 Flutterのバージョンを切り替えます。

  $ git checkout refs/tags/2.2.2

 Mac版のFlutter SDKの準備は完了です。

1. https://flutter.dev/docs/get-started/install/windows

2. https://flutter.dev/docs/get-started/install/macos

試し読みはここまでです。
この続きは、製品版でお楽しみください。