Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

Windows 10 1803の新機能「PWA」とは?
PWAのUWPアプリ化を試してみる

UWPアプリ開発の最前線 第7回

2018/06/25 14:00

 2018年春のWindows 10の大型アップデート「1803」の新機能の一つに、Progressive Web Apps(PWA)のサポートがあります。PWAとは何でしょう? 今回はその解説とともに、PWAをUWPアプリに変換する方法を試してみます。

目次
  • 適用バージョン:Windows 10 version 1803(build 17134)以降

はじめに

 PWAは、Googleが提唱し、Microsoftもプッシュしています。先日開催されたBuild 2018で「Progressive Web Apps」または「PWA」のタグが付けられたセッションは10件もありました(ちなみに、前回・前々回で紹介した「timeline」を検索すると2件しかありません)。

 GoogleもMicrosoftも推すPWAですが、デスクトップアプリやスマホアプリの開発者にとっては耳慣れない言葉だと思います。TwitterアプリがPWA化したという最近のニュースで知った人も多いのではないでしょうか。そして、MirosoftのWebサイト「開発者向けの最新の Windows 10 機能」でPWAの解説を読んでみても(次の画像)、ちょっとピンと来ないだろうと思います。なぜなら、PWAとはWebサイトの作り方の話だからです。

MicrosoftのWebサイトに掲載されているPWAの解説
MicrosoftのWebサイトに掲載されているPWAの解説

 そのWebサイトの話が、なぜUWPアプリに関係するのでしょうか? それは、PWAのWebサイトを表示するUWPアプリを作れるから、です。それも、ただ表示するだけではありません。UWPアプリですからMicrosoftの「ストア」で配布できるのはもちろんのこと、PWAのJavaScriptからUWPのAPIを利用できるのです。

 今回の記事は、前半でPWAについて解説し、後半では実際にPWAをUWPアプリ化してみて、そのメリットを確かめます。

対象読者

  • PWAに興味のある人
  • Webアプリを作っている開発者
  • UWPアプリを作っている開発者

必要な環境

 サンプルコード(GitHub)を試してみるには以下の環境が必要です。

  • Windows 10 1803以降
  • Visual Studio 2017 Version 15.7以降(無償のCommunity Editionで可)
  • UWP用Windows 10 SDK:10.0.17134以降

PWAとは?

 Progressive Web Apps(PWA)という用語は、2015年にGoogleのエンジニアが作りました。Chromeだけでなく、多くのWebブラウザでサポートされつつあります。

 すでにPWAは幾つも登場しています。後ほどUWPアプリ化を試してみる「モバイル版Twitter」のサイトもPWAです。

PWAのコンセプト

 Googleの開発者向けWebサイトのProgressive Web Appsのページでは、3つの特徴が述べられています(次の画像)。このような特徴を持ったWebサイト(Webアプリ)をPWAと呼ぼう、というわけです。

GoogleのProgressive Web Appsのページ
GoogleのProgressive Web Appsのページより
  • Reliable(信頼性):不安定なネットワーク状況であっても、即座にロードし、接続エラーを表示しません
  • Fast(高速):なめらかなアニメーションや引っ掛かりのないスクロールで、ユーザーとのやりとりに迅速に対応します
  • Engaging(エンゲージメント):没入型ユーザーエクスペリエンスを備え、デバイス上のネイティブなアプリのように感じられます

 ざっくり言ってしまえば、「Webアプリをネイティブアプリみたいにしよう!」というイメージですね。

PWAの要件

 いくらコンセプトを力説されても、ピンと来ないかもしれません。やはり開発者としては、「具体的にWebサイトをどうするとPWAになるのか?」を説明してもらわないと分かりにくいものです。Googleのチェックリストもありますが、それよりも短いMicrosoftのPWA要件を紹介しておきます。

必須の要件

 次の3項目は必須です。HTTPSは、個人開発者にとってはちょっとハードルが高いかもしれません。例えば、AzureのWebサイトでは本稿執筆時点で年額8千円弱です(無料の認証局「Let's Encrypt」もあります)。

  • HTTPS:PWAを公開するWebサーバーはHTTPSでなければなりません。サービスワーカーやその他のPWAテクノロジは、安全な接続でのみ動作します(開発時のローカルホスト接続を除く)
  • Service workers(サービスワーカー):オフラインサポートなどを行うJavaScriptのコードです
  • Web app manifest(Webアプリマニフェスト):Webサイトに置くJSONファイルです。Webアプリの情報(アイコンやURLエントリポイントなど)を記述します

 サービスワーカーとWebアプリマニフェストがどのようなものかは、後ほど改めて紹介します。

追加の要件

 必須ではありませんが満たすことが望ましい要件として、次の4項目が挙げられています。

  • Cross-browser compatibility(ブラウザ間の互換性):さまざまなブラウザと環境でテストしてください
  • Responsive design(レスポンシブデザイン):UXをユーザーのデバイスに適合させてください。画面のサイズ、マウスかタッチかなど。
  • Deep linking(ディープリンク):サイトの各ページを一意のURLに結び付けます。Windowsでいえば、「共有」や「タイムライン」でその画面が復元できるように
  • Best practices(ベストプラクティス):Sonarwhal linterのようなコード品質ツールを使用して、アプリの効率、堅牢性、安全性、アクセシビリティを最適化してください

著者プロフィール

  • biac(ばいあっく)

    HONDA R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来20年ほど、より良いコードをどうやったら作れるか、模索の人生。わんくま同盟の勉強会(名古屋)で、よく喋ってたりする。 Microsoft MVP (Windows Developm...

バックナンバー

連載:UWPアプリ開発の最前線
All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5