第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との連携)

本講義で利用するプログラミング言語やプラットフォーム

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 Google Facebook 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のコーディングは少し癖があるので慣れが必要
  • プロジェクトが大きくなると一回目のビルドが重い
  • プラグインのバグ調査が複雑になることがある

参考資料

ウェブ

書籍

 Date: October 14, 2021
 Tags: 

Previous
⏪ 第2回:基本的なコーディング知識と実習