表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
とある割烹芸人の開発日誌 ~100日以内に割烹エディターをリリースする割烹芸人~  作者: とある割烹芸人まーくつーせかんど
正式版への道
32/48

92日目 割烹芸人の実装8

今回は作ったサービスをPWA化していきます。

PWA(Progressive Web Apps)はWebアプリケーションをネイティブアプリのようなものにするための仕組みです。


WebアプリケーションをPWA化させることで、オフラインでも動作可能になったり(データの更新を行わない場合)、プッシュ通知(android)を使えるようになったりと、色々なメリットがあります。


スマホユーザーが増えている現状ではこれに対応しておくのが無難だと思われます。


特にオフラインで動かしたり、プッシュ通知したりしないですが、勉強を兼ねてどんな感じになるか知りたいのでPWA化しておきます。



参考

プログレッシブウェブアプリ

https://developer.mozilla.org/ja/docs/Web/Progressive_web_apps





■導入するために必要な物

WebアプリケーションをPWAにするためにはいくつか準備することがあります。


・HTTPS


HTTPS通信を使用している場合のみPWA化することができます。


・サービスワーカー


キャッシュファイルの設定と、インストール処理とキャッシュロード処理を設定します。ここで設定したものがオフラインでも動作するようになります。


・マニフェストファイル


アプリをどのようにユーザーに表示させるかの設定ファイル。


この3つの準備をすることで使えるようになります。


それぞれやっておきます。




1. HTTPS化


HTTPSへはサーバー設定の段階でLet’s Encryptを使って対応させているので問題ないです。また開発環境ではHTTPでPWAの動作確認ができるみたいなので、ここはOK。



2. Service Workerへの登録


ネイティブアプリでやっていたようなことができるようになる仕組み。必要なファイルをキャッシュさせて読み込めるようにできる。



if ('serviceWorker' in navigator) {

window.addEventListener('load', function() {

navigator.serviceWorker.register('/sw.js').then(function(registration) {

// Registration was successful

console.log('ServiceWorker registration successful with scope: ', registration.scope);

}, function(err) {

// registration failed :(

console.log('ServiceWorker registration failed: ', err);

});

});

}


こんな感じの設定をPWA化させたいページに書き込めばOKなようですね。sw.jsというのがサービスワーカー用のjavascriptでここで処理を決める感じ。ということでこれを共通テンプレートに追加。


実際のsw.jsの中身はこんな感じ。



// Cache name

const CACHE_NAME = 'pwa-k-editor-caches-v1';

// Cache targets

const urlsToCache = [

'top.css',

'base.css',

'logo.png',

'editor/editor.js'

];

self.addEventListener('install', (event) => {

event.waitUntil(

caches

.open(CACHE_NAME)

.then((cache) => {

return cache.addAll(urlsToCache);

})

);

});

self.addEventListener('fetch', (event) => {

event.respondWith(

caches

.match(event.request)

.then((response) => {

return response ? response : fetch(event.request);

})

);

});



キャッシュ名とキャッシュさせたいファイル。あとは、キャッシュ処理とキャッシュファイルがあった場合の処理。


他にも更新用の設定など書いてもいいですが、今回は省略。



とりあえずinstallでキャッシュしたいファイルを保存。

fetchでキャッシュしたファイルがあればそれを読み込む感じ。



全てのページで使うimg, CSS, Javascriptをここでキャッシュさせておけば結構いちいちこのファイルをサーバーから読み込まなくてもいいので。動作速度が上がります。


静的なページはここでキャッシュさせておけば、オフラインでも動作させることが可能になります。




3. マニフェストファイルの作成と読み込み。



マニフェストファイルの仕様は以下のページを参考にして作成。


ウェブアプリマニフェスト

https://developer.mozilla.org/ja/docs/Web/Manifest



とりあえずこんな感じにしてみた。


{

"name": "k-editor",

"short_name": "k-editor",

"start_url": "../",

"display": "standalone",

"background_color": "#fff",

"theme_color": "#FFDF97",

"description": "k-editor is an editor for Katsudo Hokoku in syousetuka ni narou.",

"icons": [

{

"src": "Logo192.png",

"sizes": "192x192",

"type": "image/png"

},

{

"src": "Logo512.png",

"sizes": "512x512",

"type": "image/png"

}

]

}




これを共通部分に追加


<link rel="manifest" href="{% static 'manifest.json' %}">



これで完成ですね。



挿絵(By みてみん)


こんな感じに、+マークがアドレスバーに出て、インストールすることができます。


スマホの人は、ブラウザの「ホーム画面に追加」を押すとインストールすることができます。

これをすると若干早くなります。




はい、ということでPWA化も完了です。

スマホ版割烹の最大最強の敵、ユニバーサルセレクタ先輩。


挿絵(By みてみん)



色指定されていない要素をすべて#333333で塗りつぶすというオールレンジ攻撃に苦しめられた割烹芸人は多い。


まじ勘弁してください……

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ