【Unity Web】PWA(Progressive Web App)をざっくり調べてみた話
最近、Unity Web関連を触ることが多くなってきたので、前々から気になっていた「PWA」についてちょっと調べてみました。
何か活用できるようであれば、自作ゲームに活用していきたいなーと。
そもそも何者かも知らなかったのでまずは用語について確認から...
PWA(Progressive Web App)とは
PWA(Progressive Web App)とは、
長ざっくり説明すると、Webサイトをネイティブアプリのように使える仕組みのことです。
たとえば、スマホのホーム画面に追加できたり、
オフラインでも一部機能が動作したりと、
“見た目はWeb、動きはアプリ” な存在らしいです。
PWAでできること(ざっくりまとめ)
機能 | 内容 |
---|---|
1. ホーム画面追加 | アプリのように起動できる |
2. オフライン対応 | キャッシュで一部オフライン動作も可能 |
3. フルスクリーン表示 | アドレスバーを消して没入感UP |
4. 高速起動 | キャッシュによる起動の高速化 |
5. プッシュ通知(Android) | 条件次第で通知対応も可能(iOSは制限多い) |
ただのWebGLに比べて色々できることが多いみたいです。
アプリっぽく+オフラインでも振る舞えるのはいいですね。遊ぶ側からしたら便利そう。
PWAに必要な構成
PWA対応には以下の2ファイルが必要になる模様
service-worker.js
リソースのキャッシュ処理やオフライン対応を行うJS
manifest.json
アプリアイコン・起動URL・表示モードなどを記述
Unityで使うには(WebGL テンプレート)
Unity6000.1.11f1を現状使っていますが、WebGLテンプレートの中に「PWA」が用意されています。
テンプレート内のファイル構成を確認したところ、以下のようになってました。
ファイル名 | 役割 |
---|---|
index.html | ゲームの起動ページ(テンプレートとして使われる) |
manifest.webmanifest | アプリ名・アイコン・表示モードなどを定義する設定ファイル |
ServiceWorker.js | オフラインキャッシュやPWA機能を支えるJavaScript |
もしかしたらUnityバージョンでファイル名や拡張子が異なるかもしれませんが、大枠は変わらないのかな?と思います。
最後に
ということで、今回はざっくりと「PWA」というものがどんなものかをまとめてみました。
Webの大きなメリットは「誰かに遊んでもらうために、ストアの審査を突破しなきゃいけない」というあの面倒なステップを踏まなくても、すぐに公開できることだと思っています。
(iOSならApple、AndroidならGoogleの審査を通らないと、ストアにすら出せません...リジェクトされることも珍しくなく、場合によっては数週間かかることも...泣)
ただその一方で、ブラウザで動かす以上「オンラインじゃないと動かない」などの制約があるのも事実です。
でも、今回調べたPWAの仕組みをうまく活用すれば、そうした制限をある程度回避しつつ、アプリに近い形でゲームを提供できるのでは?と感じました。
軽く調べてみて今すぐPWAを使わなきゃ!というほどのものではなかったですが、選択肢の一つとして知っておくのもありだと思うので、今後ちょっと検証してみたいなと考えています。
実際にUnity WebGLでPWAを試してみたら、そのあたりもまた記事にしてみようと思います!