t_wの輪郭

2022年7月31日日記

2022/8/1 0:43:00

 昨晩23時にねて、今朝11時に起きた。よく寝た睡眠不足が募っていたがこれで返済できたはずだ。

 起きてから4時間ぐらい漢字振り仮名データを作る作業をした。IMEが作りたい。ありもののデータも活用したいが、これまで書いた入力データを利用してIMEが作れれば、めちゃくちゃ自分に特化したIMEが作れるのではないかと画策している。日本語コンピュータを使う最も重要なソフトウェアの一つなので、これの利便性向上は重要だ。
 ただ、IMEを作ったとしてそれでどうやって儲けるんだという点に関しては全然見通しが立っていない。

 『t_wの輪郭』にプッシュ通知機能を追加した。簡単にできるかなと軽く見ていたら、Service Workerが絡み、DBが絡みとなかなか大変だった。最終的には何とか動くものを作り上げることができた。コードがまだ汚いところがあるので、リファクタリングを進めた後に記事にできたらいいのだが。まあほかの人の記事もあるのでそれを参照いただければなんとかなる。正直もうこのまま動いてるコードを触りたくない。なんで動いているのか全然把握できていない

 Android Chromeで開発機のlocalhost(HTTP)上で動かしているウェブサイトに接続するとService Workerが動かない。もしやHTTPSじゃないとService Workerが動かない?

サービスワーカーは、セキュリティ上の理由から HTTPS での実行に制限されています。

ローカルでの開発を容易にするために、 localhost はブラウザーによって安全なオリジンとみなされます。

 あー完全に理解した。ホストしているPCでlocalhostに接続すると動くなーと思ってたらそういう条件なんだ。スマホからパソコンのlocalhostに接続したら特権を失うということなのね。

 Service Workerを使うプッシュ通知のテストを本番環境でやるの、さすがに利用者の迷惑になるだろうから、やめねばと思っている。
 プッシュ通知を登録する人なんて開発者以外に誰もいないでしょと思ってたら、1人いるっぽいんですよね。大切にしたい。

 利用者が1人しかいない中で、本番環境を使ってテストしたくないとかいうのは開発者のエゴだろうか。
 いや、やっぱりちゃんとローカルでテストできるようにしよう。localhostをhttpsで接続できるようにしよう。

self.addEventListener('fetch', event => {
    event.respondWith(
        fetch(event.request).then(response=>{
            //最初にfetchし、fetchに成功したらキャッシュに保存する
            let responseClone = response.clone();
            caches.open(CACHE_NAME).then(cache=>{
                cache.put(event.request, responseClone);
            })
            return response;
        }).catch(error=>{
            //fetchに失敗したらキャッシュを返す;
            console.log(error);
            return caches.match(event.request);
        })
    );
}