スマホアプリ開発者のための2020年動向まとめ

[＜YouTubeでの解説はこちら＞](https://youtu.be/3yE7lFGNhUM)

# はじめに

2019年の令和のお祭りムードから一転して2020年は厳しい年でした。
2021年ももう1ヶ月経ちましたがライフワークということでスマホアプリ業界をこっそりまとめます。

個人的には2020年はリモートでAndroidアプリを中心にネイティブアプリ開発をしていました。
スマホアプリ開発に携わっていない人もこの記事を見れば2020年のいろいろが分かるかも。
振り返り用に「ふむふむ」「へー」程度に見ていただければ幸いです。

【前年】
[スマホアプリ開発者のための2019年動向まとめ](https://qiita.com/keidroid/items/ec6039accaa9d043b514)
[スマホアプリ開発者のための2018年動向まとめ](https://qiita.com/keidroid/items/88ee170f8bc697d4f7e9)
[Unityでスマホアプリ(特にプラグイン)を開発している人のための2017年対応まとめ](https://qiita.com/keidroid/items/5d942afa4ec69f97bd3d)
[Unityでスマホアプリ(特にプラグイン)を開発している人のための2016年対応まとめ](https://qiita.com/keidroid/items/76ff2c7b38cb86b7b691)

# 2020年のトピックス

### 新型コロナウイルスの影響について

スマホアプリ開発者に限りませんが新型コロナウイルスの感染症により日本では2回緊急事態宣言が発令されました。

- 第1回 2020年4月7日〜2020年5月25日
- 第2回 2021年1月7日〜(1月31日継続中)

2021年1月の緊急事態宣言では、事業者に対しテレワークなどを通じた出勤者数の7割削減を求めています。
個人的にも3月あたりからリモートワークとなり、
Zoom、Microsoft Teams、SlackコールなどWeb会議ツールを使用する機会が増えました。

また、技術系のイベントの多くは中止かオンライン開催となりました。

> Google I/O中止のお知らせ
> https://twitter.com/googledevs/status/1241077131993427968
> Apple、6月に全く新しいオンラインでのWorldwide Developers Conference 2020 を開幕
> https://www.apple.com/jp/newsroom/2020/03/apples-wwdc-2020-kicks-off-in-june-with-an-all-new-online-format/
> 「Unite Tokyo 2020」開催見送りのお知らせ
> https://prtimes.jp/main/html/rd/p/000000126.000016287.html

### Apple M1チップ

> Apple、M1チップを発表
> https://www.apple.com/jp/newsroom/2020/11/apple-unleashes-m1/

2020年の開発周りでの一番大きなニュースはM1チップになると思います。
歴史的に見るとPowerPCからIntel Macに移行したのが2006年でそこから14年ぶりのアーキテクチャ変更です。
CPUとしては5nmプロセスの実現により160億個のトランジスタを搭載しています。
iOS向けに開発したアプリがMacOSでも動作するようになりました。

開発機としてはスペックは申し分ないですがDockerやAndroid Emulatorなどのツールがまだプレビュー版のため見送っている方も多いと思います。

> AppleのM1チップ対応「Docker Desktop」プレビュー版が登場、WSL2のGPU対応も
> https://www.publickey1.jp/blog/20/applem1docker_desktopwsl2gpu.html
> Android Emulator Apple Silicon Preview
> https://androidstudio.googleblog.com/2020/12/android-emulator-apple-silicon-preview.html

### 携帯キャリアの料金改定

2020年12月に、2021年3月から開始される新プラン「ahamo」がdocomoから発表されました。
その翌週にSoftBank、auからも同価格帯、同時期から始まる新プラン「SoftBank on LINE」「povo」が発表されました。
「月20GB」「オンライン申し込み専用」という共通点があります。

|キャリア名|サービス名|料金|URL|
|:--|:--|:--|:--|
|docomo|ahamo|2980円/月|https://www.ahamo.com/index.html|
|SoftBank|SoftBank on LINE|2980円/月|https://www.softbank.jp/mobile/special/softbank-on-line/|
|au|povo|2480円/月(無料通話なし)|https://povo.au.com/|

### Epic Games対アップル訴訟

2020年8月にEpic Gamesが30パーセントの手数料に異議を唱え、
iOS/Androidのゲームアプリ「Fortnite」に「Epic direct payment」を導入しました。
それを受けApple,Googleは規約違反として「Fortnite」をストアから削除、
Epic GamesはApple, Googleに対して反トラスト法に違反しているとして訴訟しました。
(裁判は2021年5月3日から開始します)

> 「フォートナイト」開発元のEpic Games、アップルとグーグルを提訴--ストアから削除で
> https://japan.cnet.com/article/35158147/
> https://cdn2.unrealengine.com/apple-complaint-734589783.pdf

また、Appleは2020年11月に「年間収益が100万ドル以内の小規模事業者」に対して
App Storeの手数料率を15パーセントにすることを発表しました。

> Apple、App Store Small Business Programを発表
> https://www.apple.com/jp/newsroom/2020/11/apple-announces-app-store-small-business-program/

# iOS

### iOS14: Android機能の取り込み

iOS14ではアプリの管理やホーム画面が一新されました。
アプリカタログやウィジェットが追加されてMacOSやAndroidのような使い心地になりました。
今回のiOSはAndroidの類似機能を取り込むものが多いように思います。
代表的なものを以下に挙げます。

|新機能|Androidの類似機能|
|:--|:--|
|ホーム画面に追加可能なWidget|Android 1.5 Widget|
|アプリを部分的にインストールできるApp Clip|Android 5.0 Instant Apps|
|動画のPicture In Picture|Android 8.0 Picture In Picture|

### iOS14: プライバシーの取り組み

iOS14での大きな変更点として、端末の広告識別子であるIDFA(Identifier For Advertising)の利用にユーザの許可を必要とする変更が行われました。
また、アプリが取得するプライバシー方針の提出が必須要件になりました。
プライバシー要件は2020年12月8日からAppStoreに掲載されています。

<img width=320 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19692/88932549-cf41-3362-3ef6-b3584a394cfc.png" /> <img width=320 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19692/3adb5606-cea7-314b-a98b-e40155dc0ead.png" />

> User Privacy and Data Use
> https://developer.apple.com/app-store/user-privacy-and-data-use/

2021年1月28日の以下ニュースによると広告識別子のユーザ許可対応は
今年の早春には全デベロッパに適用されるとのことです。

> AppTrackingTransparencyの要件に関するアップデート
> https://developer.apple.com/jp/news/?id=8rm6injj

また、iOS14からブラウザ全般のプライバシーが強化されています。
2020年にUIWebViewを使用したアプリはリジェクトとなりましたが、
iOS14のブラウザアプリ(WKWebView)ではITP(Intelligent Tracking Prevention)機能がデフォルトONとなりリターゲティング広告を防止しています。

> Discover WKWebView enhancements
> https://developer.apple.com/videos/play/wwdc2020/10188/

### iOS14: UIの変更

> Build with iOS pickers, menus and actions
> https://developer.apple.com/videos/play/wwdc2020/10052/

iOS14ではColorPicker、DatePicker、MenuのUIが変更されました。
色々な端末サイズをカバーするユニバーサルデザインになった印象です。
特にDatePicker周りは使用頻度が多いと思います。

<img width=320 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19692/6e4bc9e0-5996-11fa-eebb-fbfc797d9491.png" /> <img width=320 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19692/0d557d33-c4af-c1fe-82c9-fc1fa40970f9.png" /> <img width=320 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19692/be72340e-9704-f60e-0626-999e344c67ec.png" />

### 課金周りの変更

> 新しいサブスクリプションのサーバ通知がプロダクション環境で利用可能に
> https://developer.apple.com/jp/news/?id=an960mux

> 全てのApp内課金に対し、返金通知が利用可能に
> https://developer.apple.com/jp/news/?id=tv3bhra6

サブスクリプションを中心とする課金周りの機能追加がありました。
2020年から「返金通知」「サブスクリプションを自動更新した際の通知」「サブスクリプションの新価格に同意した通知」が受け取れるようになりました。

<img width=320 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19692/1d8685bd-53c5-0052-f444-b96835ea6466.png" /> <img width=320 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19692/dd98b4ff-0698-1120-49c8-2beb611a3dfc.png" />

# Android

### Android 11

> Android 11 におけるプライバシー
> https://developer.android.com/about/versions/11/privacy?hl=ja

Android 11では新機能は抑えめで、主にプライバシー周りの強化が多くされました。
対象範囲別ストレージ(ScopedStorage)や1回限りのアクセス許可などの変更があります。

<img width=320 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19692/28a84ff9-b8cf-f74f-d13f-324b6db18928.png" />

### 非推奨化が多い2020年

個人的な印象ですが2020年に非推奨になったライブラリが多い印象です。
2020年に非推奨化されたものを以下に挙げます。

- AsyncTask (targetSdkVersion30から非推奨、今後はCoroutineもしくはWorkManager推奨)
- Toast (targetSdkVersion30から一部ブロック)
- Kotlin Android Extensions (Kotlin 1.4.20から非推奨。今後はkotlin-parcelize, ViewBinding推奨)
- onActivityResult (AndroidX Activity 1.2.0から非推奨。今後はActivityResultContract推奨)

### アプリ管理/課金周りの変更

Androidでは2020年11月1日に大きな２つの変更がありました。
まずPlay Consoleがリニューアルされ、管理指定の公開手順やユーザ権限周りが変更になりました。

> 関係者は必読！2020年11月からはじまる新Google Play Consoleの変更点
> https://qiita.com/keidroid/items/12d632d0be7675e6b153

また、定期購入(サブスクリプション)周りが大きく変更になりました。
事実上、2020年11月からはBilling Library 2.0以降が必須となっています。

> Google Play で定期購入者を獲得して維持するための新機能と Play Billing Library バージョン 3
> https://developers-jp.googleblog.com/2020/06/new-features-to-acquire-and-retain-subscribers.html

<img width=320 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19692/736afcd1-0e5d-15e2-6932-214e9e63720d.png" />

### 2021年のAndroid対応

> 2021年の新しい Android App Bundle とターゲット API レベル要件
> https://developers-jp.googleblog.com/2020/12/new-android-app-bundle-and-target-api.html

新規アプリは2021年8月2日から、既存アプリは11月1日から適応される要件が多くあります。
以下にまとめます。

- Android App Bundle形式で公開する。
- ダウンロード サイズが150MBを超えるアセットや機能は、Play Asset DeliveryまたはPlay Feature Deliveryを使って配信する。
  - 拡張ファイル（OBB）はサポートされません
- ターゲットAPIレベル 30（Android 11）以上、および動作の変更点に対応する。
- 課金機能はBilling Library version 3に対応する。

<img width=320 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19692/2785a8ea-e6e8-7e89-9316-bd05824af7f5.png" />

# Flutter

### Sound null safety

> Sound null safety
> https://dart.dev/null-safety

2020年11月、betaチャンネルでSound Null Safetyが導入されました。
SwiftやKotlinを使用している方はおなじみの機能だと思いますが
DartのSound null safetyでは以下の利点があります。

- nonnullとnullableを区別する(コンパイルエラーにする)
- nullではないものは実行速度を速くする

### Riverpodの登場

> Riverpod
> https://riverpod.dev/

> List of state management approaches
> https://flutter.dev/docs/development/data-and-backend/state-mgmt/options

Riverpodという新しい状態管理パッケージ(一見名前がライブラリ管理っぽいのですが前発のProviderのアナグラム)が登場し、人気になりました。
Flutterの基本的なサンプルだとStatefulWidgetを使って状態管理を行っていたのですが
Riverpodでは状態管理部分をFlutterに依存せずに記術できるようになりました。

# Unreal Engine
### Unreal Engine 5デモ版公開

> Unreal Engine 5 初公開
> https://www.unrealengine.com/ja/blog/a-first-look-at-unreal-engine-5

Unreal Engine 5が2021年にリリースされることが発表されました。
同時にPS5で動作するデモ映像が発表されました。Unreal Engine 4が2012年5月リリースなので約9年ぶりのメジャーアップデートとなります。

# Unity

### UnityがIPO達成

Unity Software Inc.が9月にニューヨーク証券取引所に上場しました。
開発者に直接の影響はないですが、大きなニュースとして取り上げます。

> IPO達成のUnity、ゲーム業界を越えた事業拡大を目指す同社の素顔とは
> https://jp.techcrunch.com/2020/09/23/2020-09-10-how-unity-built-a-gaming-engine-for-the-future/

### グラフィックの強化について

> 優れたグラフィックスレンダリング
> https://unity.com/ja/releases/2020-2/graphics-rendering

Unity2020.2の目玉がグラフィック周りの大きな進化でした。
主にハイエンド向けですが、PS5で話題のレイトレーシング機能もプレビューで提供されました。

- ユニバーサルレンダーパイプライン
- HDレンダーパイプライン
- 新しいHDRPテンプレート
- レイトレーシング（プレビュー）

レイトレーシングはPS5でも話題になっています。以下Unite2019で解説されている動画がわかりやすいので貼ります。

> Unityでレイトレーシングしよう！レイトレーシング実装と最適化の解説
> https://www.youtube.com/watch?v=2nx20OTgoMQ

### ビジュアルスクリプティングの推進

2019年11月にUnityがBolt開発元のLudiqを買収し、2020年にUnity移行が進みました。
Unreal Engine4のBlueprintが先駆けとしてありましたがビジュアルスクリプティングの流れも進んでいく印象です。

> Bolt ビジュアルスクリプティングがすべての Unity ユーザーにご利用いただけるようになりました
> https://blogs.unity3d.com/jp/2020/07/22/bolt-visual-scripting-is-now-included-in-all-unity-plans/

# Xamarin

> COCOAアプリリリース
> https://www.itmedia.co.jp/news/articles/2006/19/news114.html

コロナウイルスの接触確認アプリとして2020年6月にCOCOAがリリースされました。
AppleとGoogleが共同開発したAPIを使い、端末側はBluetoothを利用した近距離通信によって接触の追跡が行われます。
ソースコードはMicrosoft製のクロスプラットフォームXamarinで開発されていることが話題となりました。

# Firebase

Firebase周りではFabricのCrashlyticsが3月にサポート終了、11月機能停止となり、Crashlyticsの移行作業が必要となりました。

> AndroidでCrashlyticsをFabricからFirebaseに移行する際の注意点
> https://qiita.com/keidroid/items/8df4c49690825665bd6a

# その他

### Oculus

> Oculus Quest 2が本日発売！ オールワンVRデバイスの特徴を改めて紹介。
> https://www.famitsu.com/news/202010/13207554.html

2020年10月、Oculus Quest2が発売されました。
33,800円という低価格、従来の1.5倍の解像度(2,560×1,440)、日本向けコンテンツの充実度が特徴です。
一方でOculus Goは販売が2020年で終了しました。
今後のOculus向け開発は頭部の動きと体の動きを検知する6DoF向け、Oculusコントローラ向けに行えば良さそうです。

### GitHub

> The default branch for newly-created repositories is now main
> https://github.blog/changelog/2020-10-01-the-default-branch-for-newly-created-repositories-is-now-main/

米国の人権運動をきっかけに「Master/Slave」や「Blacklist/Whitelist」など、
センシティブな用語の見直しが全世界的に広まりました。
GitHubでは2020年10月にデフォルトブランチがmainへ変更されました。

### 技術系ブログ

公式系ブログでは、Android Developers Japan、Unity Japanがブログを開始し、
日本語で情報が取得しやすくなりました。

- https://android-developers-jp.googleblog.com/
- https://note.com/unityjapan

個人系ブログのトピックスとしては、Qiitaが2020年3月に炎上しました。
(自分の総いいね数も3月にはじめて若干数減少しました)

> Qiita、読んだ記事の傾向を合意無しに表示して炎上　批判受け機能停止中
> https://www.itmedia.co.jp/news/articles/2003/26/news087.html

この炎上によってかは定かではないのですが、昨今技術系のblogが
「Qiita」「Zenn.dev」「Medium」「note」「YouTube」などに分散されているように感じます。

＃2021/2/1の速報としてZennがクラスメソッド株式会社にJoinしました

### Flash

> Adobe Flash Playerサポート終了情報ページ
> https://www.adobe.com/jp/products/flashplayer/end-of-life.html

2020年12月31日、Flash Playerのサポートが終了しました。
2021年1月12日以降、Flash PlayerにおけるFlashコンテンツの実行はされなくなりました。
ありがとうFlash..!

# まとめ
今年は技術系のリアルイベントがないうえリモートワークで情報があまり入ってこないのでまとめるのがつらい..
iOSもAndroidも機能は少なめでプライバシー・課金周りの対応が多かったです。

この記事が参考になったら高評価をおねがいします。
今年もよろしくおねがいいたします。