第1回:本講義の概要
本講義の概要について説明します。
本講義の目的
本講義の目的は、スマートフォンアプリの開発を通じて、スマートフォンアプリケーションの仕組みを理解することです。 特に本講義では、iOSやAndroid、ウェブブラウザなど、 複数のプラットフォーム上で動作するアプリケーションを同時に開発できるクロスプラットフォームのアプリケーション開発を行います。 基本的なコーディングの練習、アプリ開発の環境構築、ユーザインターフェース(UI)の構築、ウェブAPIとの通信、 センサの利用を通して、自身のスマートフォン上に自作のアプリケーションを動作できるようになります。
想定する受講者
本講義は、「アプリの開発の初心者から中級者」を対象としています。
講義担当者
- 名前:西山勇毅(にしやま ゆうき)
- 所属:東京大学 空間情報科学研究センター・講師
- 連絡先:yuukin@iis.u-tokyo.ac.jp
開発に関わったアプリ
開発に関わっているオープンソースソフトウェア
必要な機材
- スマートフォン:iPhoneまたはAndroidの実機
- アプリ開発用PC:WindowsまたはmacOSがインストールされたPC
- (UNIX系のOSでもアプリ開発は可能ですが、授業内でのサポートはしません。)
- Windowds PCの方は、iOSにアプリをインストールすることができません。(iOS端末にアプリをインストールするためには、macOSがインストールされたPCが必要なため)
- インターネット環境
- アプリ開発用のソフトウェア・ライブラリ等をインストールするため
講義内容
- 【第1回】 本講義の概要
- 【第2回】 基本的なコーディング知識と実習
- 【第3回】 アプリ開発:UI構築(DartPadを用いた基礎練習)
- 【第4回】 開発環境の構築
- 【第5回】 アプリ開発:UI構築(実機を用いた実践練習)
- 【第6回】 アプリ開発:ライブラリの活用方法(位置情報)
- 【第7回】 アプリ開発:データの保存と取り出し
- 【第8回】 アプリ開発:通信処理(オープンAPIとの連携)
本講義で利用するプログラミング言語やプラットフォーム
- IED:統合開発環境
- Android Studio
- Xcode (macOS & iOSの場合)
- Visual Studio Code (VSCode) → 基本的にはVScodeを利用します。
- アプリ開発フレームワーク
- プログラミング言語
- サンプルコードの実行環境
OSのマーケットシェア
OSのマーケットシェアは地域や時期によって常に変化するので一つに絞ることは難しい。
世界
Source: StatCounter Global Stats - OS Market Share
日本
Source: StatCounter Global Stats - OS Market Share
イギリス
Source: StatCounter Global Stats - OS Market Share
アメリカ
Source: StatCounter Global Stats - OS Market Share
アジア
Source: StatCounter Global Stats - OS Market Share
何故クロスプラットフォームでの開発が必要なのか?
ネイティブ
デバイスのパフォーマンスをフルに活用できる。 しかし、iOSとAndroidそれぞれを開発するのは、開発・メンテナンスコストが非常に高い。
- Android + Android Studio: Kotlin, Java
- iOS + Xcode: Swift, Objective-C
クロスプラットフォーム:ウェブアプリ
ブラウザベースでの挙動のため、デバイスのリソースを全て活用することができない。 そのため、処理速度が遅い、バックグランドでの処理ができない、一部のセンサを利用できないなどの問題が発生する。開発環境の準備は比較的簡単に行うことができる。
- React
- AngularJS
- Blazor
クロスプラットフォーム:ネイティブアプリ
Flutter | ReactNative | Xamarin | |
---|---|---|---|
Developed By | Microsoft | ||
OSS | ○ | ○ | ○ |
Language | Dart | JavaScript, TypeScript | C#, F# |
IDE | Android Studio, IntelliJ, VScode | VScode | VScode |
Platform | iOS, Android, Windows, macOS, Linux | iOS, Android, Web | iOS, Android, Windows, maOS |
Hot-reload | ○ | ○ | ○ |
UI | Original UI | Native UI | Native UI & Original UI |
Example App | Google Ads, New York Times, MOCHA, iRobot | Facebook, Instagram | COCOA, NHK紅白 |
Flutterとは何か?
Flutterのサンプルアプリはこちらから確認できます。
特徴
- 同じコードでクロスプラットフォームで動作するアプリを開発できる
- サポートプラットフォーム:iOS, Android, Web, macOS, Windows, Ubuntu
- iOSとAndroidのマーケットシェアは場所によって異なる。詳細
- Hot-Reload機能:高速なアプリビルドとテストが可能(Dart言語)
- ハイパフォーマンス:ネイティブアプリとしてビルドされるので高速な動作
- Open Source Software(OSS):サポートが充実
- クロスプラットフォームで同じUIを作成できる
- Google系サービス(FirebaseやGCP)との親和性
- 豊富なプラグイン(pub.dev)
- iOS/Androidのネイティブ部分との連携・拡張が容易
Flutterが不得意なこと
- 各OSがリリースした新機能の利用
- サポートされるまでは時間が必要
- Flutterのコーディングは少し癖があるので慣れが必要
- プロジェクトが大きくなると一回目のビルドが重い
- プラグインのバグ調査が複雑になることがある