ゆとり日記

心にゆとりを持って生きたいプログラマーの雑記です。気が向いたら書きます。

ServiceWorker導入を一旦諦めようと思った話

自分が関わっているプロダクトにServiceWorkerを入れる試みを4月中盤からやっていたのですが、直近でやり切るのは無理そうな気がしてきたので一旦諦めました。(完全に諦めるわけではなく、地道に研究は続けます。)

その過程で検討した事を記録に書いておくことにします。

やり始めた経緯

社内で技術投資枠(業務時間の10%を使い、実業務に活きるチャレンジングな事をする仕組み)を設ける取り組みが始まったので、前から興味があったServiceWorkerを試してみたくなったのがきっかけです。

Safariで使えないしなー」という言い訳も通用しなくなりつつあるので、本格的に触らなければと思っていたのも理由の一つです。

入れようとしたプロダクトはどんなもの?

僕は今、リブセンスという会社でアルバイトを探すサービスの開発を担当しているのですが、ユーザの行動は以下の3つに絞れると思っています。

  • アルバイトの求人情報を探す。
  • アルバイトの求人情報の詳細を見る。
  • アルバイトに応募する。

ユーザに応募してもらわないことにはお金が生まれないビジネスモデルなので、応募率をいかに増やすかを考えなければなりません。

ということで、応募に辿り着くまでの体験を良くするためにServiceWorkerを活用する余地はあるかどうかを検討していきました。

実際に試してみる

検討したものは以下の通り

  • 静的リソースのキャッシュ
  • ページそのもののキャッシュ
  • プッシュ通知

静的リソースのキャッシュ

これはそこまで難しい話ではありません。

  • 何のファイルをいつキャッシュするか?
  • 運用フローをどうするか?

決めるのはこれくらいです。

ServiceWorkerのインストール成功時に、更新頻度の少ないファイルを選択してキャッシュしておく・・くらいの事なら楽にやれると思います。

とはいえ、今回の場合はキャッシュできるファイルが存外少なく、大した効果が見込めないことがわかりました。(手早くキャッシュに回せるのはロゴのが画像や、フォントファイルくらい)

リソースの更新が発生した場合のServiceWorkerの更新が煩雑になるだけな気がしたので、今回は一旦見送っています。

ページそのもののキャッシュ

どのページをキャッシュして、そのキャッシュをいつ破棄するのかが難題だなと感じています。

ニュースサイトやブログサービスであれば、TOP画面に出ている直近のコンテンツを幾つかキャッシュしておくのは良さそうと思っているのですが、今回の場合はどうすべきなのか非常に悩みました。(やたらとキャッシュしまくって通信料を食いすぎたら意味がないですし)

イデアベースで今回考えられたのは、以下の2つくらいでした。

  • 求人情報にレコメンドされて表示される求人をいくつかキャッシュ
  • 「後で読む」的な機能が存在するので、それに追加された求人情報をキャッシュ

イデアとしては悪くない気がするものの、一人で先走って実装するのは早計なので周りへの相談が必須かなというところに落ち着いています。

(ここ半年、一人で先走って失敗した経験があるので大分慎重になっています・・)

プッシュ通知

悪名高いアレです。

ページを初訪問した途端、「ども!!自分、通知いいすか??」と許可を求めてくるサービスも多く、辟易している方も少なくないと思います。

Rebuild.fmのように配信を通知してくれる使い方は素敵だと思うので、ああいうユーザ体験が増えるといいのですが・・。

というわけで、本番運用するまでの準備は相当慎重に運ぶ事に留意しつつ、アイデアを練ってみました。

「後で読む」している求人の掲載期限が切れそうになったら通知を飛ばす

弊社サービスでは「キープ」と呼んでいる機能があります。

「気になるし、とりあえず保存しておくか」という時に使う機能ですね。 キープしている求人の掲載期限が終わりそうになったら、キープしているユーザにお知らせ通知を飛ばそうという話です。

自分はTwitterの「いいね」を「後で読む」と同じような使い方で使っているのですが、自分でいいねした事を忘れてしまうことがよくあります。 (毎週末、整理するようにはしているのですが)

これと同じ話で、「キープ」されただけで応募されずに埋もれてしまっている求人は多いんじゃないかなーと、個人的に思うわけです。 (書いてる内に気になってきたので、分析したくなりました)

自分一人で進められる話でもないので、これも周りとの相談が必須ですけどね。

試してみた感想

技術的にも興味深い領域で面白くもあり、導入の検討を進める内にプロダクトへの理解も深まったのでやってよかったと思いました。

事業会社に転職して8ヶ月ほど経ちましたが、事業そのものへの理解を深める事への重要性を再認識しました。

「成果を爆速でリリース!」といかなかったのが残念ではありますが、地道にやっていこうと思います。

※手元のメモが消えていたので、参考にしたサイトのURLなどは後で発掘して書きます。

余談

PWAの研究も並行して進めていたのですが、manifest.jsonでフルスクリーン指定にする場合はUIをアプリと親しい構造にしないと逆に使いづらくなるという知見がありました。

Google I/Oのセッションは全然チェックしてないのですが、PWAのセッションはあるんですかね・・?