アプリと Web のハイブリッド、PWA

今この記事を読んでいる方のほとんどがスマホを持っていると思うが、このスマホをスマホたらしめていて不可欠なものが、アプリ(アプリケーション)だろう。

いくら高性能なスマホを持っていたところで、アプリがなければ端末に組み込まれている機能しか利用できない。
Twitter も Facebook も Instagram も LINE も購入時の状態では基本的にプリインストールされていないので、もしアプリがインストールできない状態の場合、スマホの大半の機能が利用できないことになる。

アプリストアの独占と手数料

ところで、普段アプリをインストールする時、ほとんどの人は iPhone・iPad ユーザーは App Store から、Android ユーザーは Google Play からインストールしていると思う。
当たり前のように感じるかもしれないが、これらは独占的だ。

iPhone・iPad・iPod といった iOS / iPadOS は、原則 App Store からでしかアプリをインストールできない。
開発者のデバッグ用にアプリをインストールすることはできるが、抜け道を防ぐため、1週間経つと使えなくなってしまうらしい。
アプリストアが Apple 公式である App Store 以外存在せず、脱獄でもしない限り App Store 以外からアプリをインストールできないなど、iOS / iPadOS のアプリインストールは App Store にすべて独占されている。

その点 Android は設定から「開発元不明のアプリをインストールする」をオンにすれば外部からダウンロードした .apk 形式のパッケージをインストールできるし、メーカーや企業が独自に作ったアプリストアからアプリをインストールすることもできるが、いずれにせよ Google Play のシェアが圧倒的に高く、事実上独占状態にある。

…とはいえ、「別に独占状態でも何ら問題はない」「むしろ独占状態の方がどのアプリはどこからインストールしないといけないとかがなくて便利」という意見もあるだろうし、ユーザー側から見ればこれらは正しい。
独占状態が不満なのはユーザーではなく、デベロッパー(開発者)側だ。

まず iOS / iPadOS では、App Store にアプリをリリースするには年間 11,800 円 を Apple Developer Program のとして納める必要がある。趣味でやっているような個人開発者にとっては、大して儲からないのに毎年諭吉が飛んでいくのはそれなりに痛い。
さらに、App Store に公開しない法人向けのアプリをインストールさせるためには Enterprise ライセンスが必要で、さらに高くつくらしい。

ここまでは企業はさほど問題にならないが、ここからが問題。
ほとんどのアプリはアプリ内課金があったりアプリ自体が有料だったりすると思うが、アプリ内課金やアプリ自体の売上のうち、App Store に全体の 30 % もの金額を徴収されてしまっているのだ。
売り上げが 100 万円あったとしても、App Store に 30 万円徴収されてしまうので手元には 70 万円しか残らない。

Google はこの点良心的(というより Apple が法外なのだが)でデベロッパー登録は最初の 2,000 円だけで OK だが、App Store 同様に Google Play に アプリ内課金やアプリ自体の売上の 30 % もの金額を徴収されてしまうという点は変わらない。

当然デベロッパーからは不満が噴出していて、ヨーロッパやアメリカでは実際に Apple や Google を独占禁止法で訴える裁判が相次いでいるとかなんとか…(詳しくは「参考」内のリンクから)

PWA の登場

そんな中、2016 年に登場したのが PWA (Progressive Web Apps) という新技術だ。
PWA を一言で言うならば、Web アプリとネイティブアプリのいいとこ取りをしたハイブリッドアプリ、といったところだろうか。

Web アプリ自体は以前から存在するが、次のような問題点があった。

・ブラウザは Web サイトからダウンロードしたデータをキャッシュとして暫く保管しているが、これを Web サイト側から制御する方法がなかったので、開く際に毎回リソースを読み込みに行ってしまい、結果的に重くなる
・Web に接続している事が前提なのでオフラインでは使えない
プッシュ通知を送れない
・GPS を使った現在地取得ができない
・スマホの場合はブラウザバーが常に表示されるので邪魔
・アイコンを追加できない
(ショートカットという形では置けるがダサい)

これを解決するべく、PWA では、

・リソースをキャッシュできるので Web アプリを軽くできる
・キャッシュしたリソースを見ることでオフラインでも使える
・(実装面倒だけど)プッシュ通知を送れる
現在地取得ができる
ブラウザバーを隠したり全画面にすることもできる
・アイコンをネイティブアプリのように追加できる
・通常のアプリと異なりアプリストア側でアップデートを行う必要がない(自動更新される)

といったように、今までの Web アプリの欠点を克服し、ネイティブアプリのような機能を Web アプリに持たせる事を可能としている。
(PWA と Service Worker は別だとか諸々あるが複雑になるので割愛)

また、PWA は App Store や Google Play などのアプリストアにリリースする必要がない。
PWA に対応しているサイトなら Chrome や Safari といったブラウザから「ホーム画面に追加」をタップするだけでインストールされ、ホーム画面に追加されたアプリアイコンをタップするとネイティブアプリのように起動するしくみだ。
通常のアプリとは仕組みが異なるとはいえ、今のところ iOS / iPadOS にとっては脱獄せずに App Store 以外からアプリをインストールする唯一の方法ともいえるだろう。

なぜ PWA が生まれたのか

PWA は Google が主導となって開発が進められており、限定的なサポートではあるものの 2017 年には iOS で、その後 Windows や Mac 、Linux でもサポートされるようになった。
PC ではデスクトップアプリのように、スマホではスマホアプリのように振る舞う事ができる PWA は、近年普及が進んでいる。

…とはいえ、Google は Google Play で世界中のアプリをホストさせ莫大な収益を得ているのに、あえてアプリストアを経由しない形のハイブリッドアプリの普及を推し進めているのだろうか。

Web API の進化

考えられる理由はいくつかある。
1つは、Google が自社の開発する Chrome ブラウザに新しい Web API を多数積極的に実装し、ネイティブの範囲まで Web からできるようにしようとしているからだ。

スマホではサービスごとにアプリを作っている Google だが、PC 版のサービスはほとんどがブラウザからアクセス・利用する Web アプリになっている。このうち、Google マップ・Google ドライブ・Google フォト のように最近リニューアルされたサービスでは PWA 対応も行われている。
Web の標準化は W3C という団体が行っているが、そこに新しい API を提案しているのも Google だ。

先述のブラウザから通知ができるようになったのも、元はと言えば Google が W3C に Web Push API として提案してくれた(そして W3C が受理し、Chrome 以外の他のブラウザも実装した)から、とも言える。
Web Push API で例えるなら、Google 自体がブラウザから通知させたかったというのも一つあるだろうし、公共の場である Web をよりよくしたいという思いからでもあるのだろう。
実際、Google が様々な Web API を提案してくれたおかげで実現できている機能はごまんとある(ありがとう!!)。 

クロスプラットフォーム

もう1つ、単に大幅に開発がやりやすくなるから、という理由もある。

Windows・macOS・Linux・iOS / iPadOS・Android といったこれら全ての OS 向けに専用アプリを作る場合、恐ろしい労力と時間が必要になる。
これらの OS はそれぞれ構造が全く違ううえ、アプリを作るためのプログラミング言語も違うため、もし OS ごとに5つのアプリを別々で作る事になった場合の苦労は容易に想像がつくことだろう。
クロスプラットフォーム開発という異なる OS 上で同じアプリを動かす事ができる技術も存在するが、スマホアプリと PC 用アプリは共通化出来ないことが多い上、どうしても OS に依存するコードが発生したりする。

その点、Web アプリとして作れば、1つ Web アプリを作るだけで5つの OS 全てをカバーすることができる。
OS ごとに5つのアプリを作る場合と比較すると、単純計算で 1/5 のリソースを使うだけで済む(実際はもっと複雑だとは思うが)。
Web でできることが増えていけば、ネイティブアプリを作る必要がだんだんなくなっていくのかもしれない。

WebView アプリ

最後の理由は、アプリストアからゴミアプリを一層したいから、というものだ。「ゴミアプリ」という言い方は当然語弊があるが、
世の中には 「アプリの形にしたいがためだけに」スマホ対応の Web アプリの内容をほぼそのままネイティブアプリの WebView で表示させ、わざわざアプリストアに出して通常のアプリとしてリリースされているアプリがかなりの数存在する。 
*WebView … アプリ内で Web ページを取得・表示する機能のこと。

「どうみてもブラウザで見たときと見た目同じでブラウザっぽいのにアプリ入れろと言われたのでインストールした」といったような経験はないだろうか(特に通販系サービス)。あれが「WebView アプリ」である。
WebView アプリが行っている処理は Twitter や LINE で言う「アプリ内ブラウザ」で Web アプリ本体を表示させているだけだ(例外は当然ある)。
ネイティブアプリにはなるがコーディング量はごく僅かで済むし、プラットフォーム間での依存もほとんどない。

ただこの WebView アプリ、アプリストア側は「ブラウザ版で見たときとほぼ同じアプリなら最初からブラウザ版開かせろよ(それでいてアプリインストールしろと勧めてくるのは論外)」と思っているらしい。それはそう。

どうしてもネイティブでないと実装できない機能が使いたいなどの例外を除き、基本的に WebView アプリはブラウザで全て代替できる。
問題は「アプリではないので中々サイトを開いてもらえない」といった「アプリではない」という事だけだ。
Apple も Google もブラウザで代替できるのに敢えて WebView アプリを入れさせるのは端末容量の無駄でしかない、と考えているのだろう。
実際、Apple は2020年4月以降に申請される新規 WebView アプリ、2020年12月以降に申請される WebView アプリのアップデートをリジェクトする方向らしい。

ここで PWA の出番だ。
PWA であればアプリストアにリリースしなくてもアプリアイコンをホーム画面に追加できるし、スプラッシュ画面まで表示される。
ブラウザバーも表示されないし、見た目はネイティブアプリそっくりだ。もうわざわざクソアプリを作って端末の容量を無駄にさせる必要はない。

Google が敢えて Google Play 経由ではない、収益の入らないハイブリッドアプリの普及を推し進めているのにはこういった理由もあるのだろう。

TWA と PWA の今後

とはいえ、「アプリストアに載らないと中々インストールしてもらえない(ブラウザのホーム画面に追加だけだと弱い)」という声もある。
そんな声に答えたのか、Google は Android 向けに TWA (Trusted Web Activity) という技術も開発した。

TWA は PWA アプリを Google Play にリリースするための技術だ。
Android Studio を開いてネイティブアプリ同様に .apk を作成する必要はあるが、コーディングは一切必要ない。設定してビルドするだけでリリースできる .apk ファイルを作成できる。
PWA アプリを完全に独立したアプリにする技術、のほうがわかりやすいだろか。
通常の WebView アプリと異なり Chrome の機能を利用するため、ファイルサイズを数 MB 未満にできるというのも売りらしい。

PWA (TWA) が普及しても、ネイティブアプリが全てなくなることはないだろう。ネイティブでしか実現できない機能・UX はまだまだ存在するからだ。
セキュリティの関係もあって、Web アプリとネイティブアプリが近づく事はあっても、完全に同じになることもない。

それでも、Web と アプリのいいとこ取りをした PWA はその手軽さもあってこれからも普及していくのは間違いない。
既存の Web サイトを完全な PWA アプリにするのはそれなりに大変だが、ホーム画面にアイコンが追加でき、ネイティブアプリのように使えるようにするだけならほんの少しの実装で済むのも PWA の利点だ。

WordPress の一部のテーマには PWA をスイッチ1つで有効化できる機能がついているものもある。
もし何か Web サービスやブログを運営しているのなら、一度 PWA を試してみてほしい。

参考

米最高裁、App Store独占禁止法違反訴訟の継続を認める。アップルは「いかなる意味でも独占的ではない」と反論
AppleやGoogleが運営するアプリストアはあまりにも多額の手数料を取っているとアプリ開発側の不満が募る
仏当局が独禁法違反でAppleに罰金科す方針固める~App Storeが関係?
アプリストア:固定費用と売上手数料
Appleのアプリ申請・更新が難しくなったみたい
【実践】Google Play Store でPWA配信 (TWA)

この記事が気に入ったらサポートをしてみませんか?