たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

web app manifestは実体として何をするのか

  1. ユーザーエージェントへ「ネイティブアプリぽいUXでwebアプリを動かす」ためのメタデータを渡す

インストールできるんじゃないの?

manifestを含むwebページを用意しインストール、機内モードにした上でブラウザキャッシュを消し、インストールされたwebアプリを立ち上げると通信エラーでページが開かない.
すなわち、manifestはweb app実体(index.htmlを始めとするコード)をマシンにインストールはしない.
(キャッシュを残しておくと機内モードでも動く。ハマった。ブラウザはなんて優秀なんだ.)

じゃあ何しているの?

ブラウザ(ユーザーエージェント, UA)に「このメタデータに基づきネイティブアプリっぽく起動してね」とお願いしてる.

(典型的には)ユーザーがweb appアイコンをクリックし、UAはmanifestに基づいてtop-level browsing contextを設定、start URLへナビゲート(通常のHTTPSアクセス)する.

startURL = parse(start_url, manifestURL) ?? documentURL

start URL , which is URL that the developer would prefer the user agent load when the user launches the web application (e.g., when the user clicks on the icon of the web application from a device's application menu or homescreen).
The start_url member is purely advisory, and a user agent MAY ignore it or provide the end-user the choice not to make use of it. A user agent MAY also allow the end-user to modify the URL when, for instance, a bookmark for the web application is being created or any time thereafter.

オフラインでも動いてるやつあるけどあれなにさ

Cache API on Service Workerです.

Abstract of Spec

  • Definition: web app manifest === JSON with defined format
  • Purpose: centralized place to put metadata associated with a web application
  • Metadata examples
    • application's name
    • links to icons
    • preferred URL to open when a user launches the web application
    • default screen orientation
    • display mode
      • in fullscreen
    • "scope" a web application to a URL
      • This restricts the URLs to which the manifest is applied and provides a means to "deep link" into a web application from other applications.
  • Usage
    • user agents: create user experiences that are more comparable to that of a native application