先日、Chrome Extension の更新版をリリースしました。(詳しくはこちら)
その際にいくつかのミスがありましたので、備忘録としてここに記録しておきます。
(1) 大量データに関する問題
コメントでご指摘いただき、初めて気づくことができました。
私は、品質向上のためには性能試験が重要だと考えているにもかかわらず、大量データに対するテストを行わずにリリースしてしまいました。
自分の Amazon 購入履歴は多くても10ページ程度だったため、それ以上のケースは「テストできない」と思い込んでいました。
しかし、それは単なる言い訳です。たとえば、1ページを10回ずつ読み込むようにコードを少し変更すれば、簡単に大量データのシミュレーションができます。
原因と対応策
エラーの原因は、巨大な配列を String.fromCharCode に展開して渡した際、
「Maximum call stack size exceeded(スタックオーバーフロー)」が発生していたことです。
これに対しては、32KBずつに分割して処理することで対応しました。
該当の修正コミットはこちら
(2) ZIP 作成ミス
こちらもコメントでご指摘いただきました。ありがとうございます。
Chrome Extension は ZIP にまとめて Chrome Web Store にアップロードする必要があります。
しかし、リリース版にテスト用のデータ水増しコードがそのまま含まれてしまうという、非常に初歩的なミスをしてしまいました。
私は修正後に git commit をしたことで、未コミットのファイルは ZIP に含まれないと思い込んでいました。
これは、他のプロジェクトでは CI/CD により自動でビルド・リリース用の ZIP が作成されるため、その感覚が残っていたことが原因です。
今後の対策
今後は、ZIP 作成処理をスクリプト化する予定です。
具体的には、別フォルダに最新コードをクローンし、そこから ZIP を作成する仕組みにします。
以下は参考までに、macOS 上でのシェルスクリプト例です:
cd /tmp
rm -fr ./work
mkdir work
cd work
git clone --depth 1 --branch main git@github-greencode:green-code-developer/chrome_extension_amazon_jp_history .
zip -r extension.zip ./extension
ls -l /tmp/work/extension.zip
ご指摘くださった皆さま、本当にありがとうございました。
この経験を次回のリリースに活かしていきたいと思います。


