新しい計測タグは、Web管理者に負担をかけないよう拡張する
「旧計測タグでは弊社側の機能拡張の際に、お客さま側での作業が必要となってしまう場合がありました。まず、お客さまは左側の擬似コードのようなスクリプトを書くことによってイベントを弊社側のサーバーに飛ばすことができます。そのために、右上部の擬似コードのように tracker オブジェクトに trackメソッドを事前宣言するようなスクリプトタグをお客様側のWebサイトに埋め込んで頂く必要があります。
このとき、trackメソッドだけを使い続けるのであれば問題ないですが、弊社側で新規の機能としてdeleteのようなtrack以外のメソッドを開発した場合には、右下部の疑似コードのように新しいメソッド宣言を追加する必要がありました。ですので、新しい機能を使いたい場合は、お客さまによる事前宣言用のスクリプトタグの書き換えが必要でした。このような背景もあり、新しいメソッドを容易に開発できないということが課題としてありました。」
そこで、新しい計測タグでは、第1引数がメソッド名となるようなファンクションを生やすようにした。メソッドの定義自体は、サードパーティスクリプト内部に存在している。
「右側の事前宣言用の疑似スクリプトを見るとわかりやすいと思いますが、サードパーティースクリプト内部に存在するメソッド定義が露出するまでにイベントトラッキング関数が叩かれたらargsをarrayに逐次保存しています。そして、サードパーティスクリプトが実行されてメソッド定義が露出した時、arrayに溜まっていたメソッドとバリューのセットを順次読み取って、メソッドを実行しています。このようにメソッド定義がサードパーティスクリプト内部に定義されているので、お客さまが事前宣言用のスクリプトタグを変更することなく、容易にメソッドを追加できるようになりました。」
しかし、計測タグを新しいものに移行するとき、全てのイベントトラッキング関数をお客さまに書き換えていただく必要が出てくる。そこで、互換用のスクリプトタグを作成して、旧計測タグのインターフェースを新計測タグの上に実装することで、書き換えの負担を押さえた。
このような取り組みによりKARTEでは、2015年のサービスリリース以降初となる計測タグとサードパーティスクリプトの全面刷新が実現した。西村氏は、今後もプロジェクトごとJavaScriptのbundle速度の向上や、スクリプトサイズを小さく保っていく仕組みや文化を作っていきながら、サードパーティスクリプト上に乗るプロダクトをがんがん開発していきたいと述べて講演を締めくくった。