# 日報(2021-02-28) cookie 操作 のライブラリをどれ使おうか迷った

Document の cookie プロパティ (opens new window)を使って操作するのですが、クッキーの登録は サンプル (opens new window) の通り 名前=値 を使って

document.cookie = "name=oeschger"
document.cookie = "favorite_food=tripe";

みたいに登録します。なんか代入してるみたいで気持ち悪くて、document は一度に一個のクッキーしか持てないのか不安になるのですが、document.cookie はデータプロパティ (opens new window)ではなくアクセサプロパティ (opens new window)なのだそうで、実際はセッターが呼び出されて一個が登録され、またセッターが呼ばれ、となるので大丈夫なんだそうですが、こういうデータなのかメソッドなのか見た目でわからない多態なあたりが js の気持ち悪い所だなと思うのです

でも登録なんかまだマシなほうで読み込みはもっと気持ち悪くて

document.cookie

これで、登録されている全てのクッキーの 名前=値 を ; でつなげた 文字列 がかえってくるのだそうです ってか、そんなの返してもらっても使いようがないです ^^; なぜ普通に連想配列で返してくれるようにしなかったのか、前世紀の人たちはいったい何を考えていたのか謎です

# なんかライブラリを探す

文字列で返してもらった全てのクッキーを ; で split して、さらに = で split してそれをキーにして連想配列をつくる関数を作ればいいだけの話なのですが、js の場合は再利用のためのパッケージングがまたウザくて、go や deno みたいにどこかのリポジトリにあげておけば自由に使えるわけではなく、npm のパッケージをわざわざ作らなければいけないという python の pypi みたいなウザさがあります

そんなめんどくさいことをしなければいけないのであれば、まず誰かがやってくれた結果を探そうというモチベーションが働き、結果として車輪の再発明が抑止されるというメリットもあるのかもしれません。世界って巧妙にできているものだなあと思う次第です

cookie で探してみるとやっぱりいろいろありまして、js-cookie (opens new window)vue-cookies (opens new window) で、どっちがいいか悩みました

# 使ってみて試してみる

悩んだらとりあえず両方をちょっと使ってみます。使ってみて気にいるか気に入らないかが、物をつくっていくモチベーションの維持に一番大事だとおもいます

vue-cookies は main.js で Vue に mix-in して使うことができます。cookie のライブラリをグローバルに持つ事に気が指すのであればそうせずに都度 import して使うこともできていい感じです。cookie の set がちょっとヘンです

js-cookie は expiration の設定がなぜか day 単位で、たとえば 10秒とかを設定したければ 10/86400 とか設定するそうです。やってみたらうまくいきました

関係ないですけど頭脳明晰な優秀なプログラマな方って一日が 86400秒って覚えてらして、パッと書かれたりするみたいですけど、私のような無能プログラマはただでさえ足りてない脳細胞を贅沢に浪費する余裕はないので

一日 = 24時間 * 60分 * 60 秒
    = 24 * 3600 秒
    = (30-6)(30+6)*100 秒
    = (900 - 36)*100 秒
    = 86400 秒

と、因数分解を使って感嘆に暗算できるので無問題です

# 結局はドキュメントがリッチなほうが

で、サンプルがあっさり書いてあるだけの vue-cookies と違って js-cookie のドキュメントがすごく丁寧にかいてくださってるんですね。これ、とても安心感があります。ソフトウェアってコード+ドキュメントだって偉い人が言ってたきがします

というわけで js-cookie を使うことにしたのでした


Last Updated: 2021/4/21 1:09:16