サービスが混浴する事のボク的悲劇|SPAのタグ事情

サービスが混浴する事のボク的悲劇|SPAのタグ事情

弊社の運営しているWEBサービスは、最近の言い方だと「SPA」(スパ?エスピーエー?)って言うらしいですね。
Single-Page-Applicationの略称のようです。

単一ページにおけるWebアプリケーションという事で、サービスを起動する為には、単一ページ内にjavascriptタグを記述しないといけないというデメリットはありますが、他のページに依存すること無く、処理が行えるので最近注目されているようです。

最近のタグ事情

最近の傾向として、いろんな企業さんも、WEBページ内に「解析用の計測タグ」とか「広告用タグ」とか「ページ改善用のタグ」などなど、有料、無料を含め、たくさんのWEBサービスを導入しているページをよく見かけます。

個人的な見解としては、大手になるほど、そのページに社内の色々な部署の人々が関係していて、部署毎に、欲しいレポートデータが違い、結果、同じ計測機能を複数のサービスに分けて導入しているというケースもあるようです。

困るのは、このページを管理している、WEB担当者の方ですね。

使っていますか?「タグマネージャー」

最近さらに注目を集めているのが「タグマネージャー」のようです。

昔からサービス事態は存在するのですが、問題も多く、「管理の手間は変わらない」という厳し目の声もあり、これまでは、便利に使いこなせる人だけが、使っていました。

企業の公開しているWEBページは、こういった機能サービスタグなどを、気軽にタグを貼って、運用開始するという事は、自分のサイトだからと言っても、難しい企業が多いのもタグマネジメントツールの導入をためらわせる要因でした。

しかし、大量のタグの運用がマストとなる現状では、管理、運用、コストの面でタグマネージャーを導入せざるを得ないのが現状です。

企業側のタグ管理の実態とASP企業の実態

セキュリティの厳しい企業などは、1行のタグをページに貼るために「費用が発生する」という事も少なくないそうです。

確かに、そういった時の為にタグマネージャーがあることも重々理解しているのですが、弊社のASPサービスでは、このタグマネージャーに泣かされた経験が数多くあります。

厳密にはタグマネージャーに泣かされるというよりも、他サービスに泣かされるというのが正解で、過去には以下のような事象がありました。

1.他サービスのjavascript内に不具合があり、ページ内でJSエラーが発生して、そのタグより下に書かれている、scriptタグが全て機能しなくなった。
 対応としては、エラーを発生させているタグよりも、上位にタグを記述してもらうと、解決する事が多いので、エラーを修正してもらう事は依頼しますが、個別にタグの位置なども、調整する事があります。

2.JavaScriptの基本関数(システム関数)を書き換えられてしまう場合。
JavaScriptは関数を気軽に書き換えられてしまうため、有名なライブラリでも、不具合を起こしてしまうケースもありました。有名な関数汚染については気を付けて入るものの、全部はテストできないという開発上の問題が出てしまったケースです。

3.W3Cの仕様に反する書き方などをされた場合、弊社サービスの機能が正常に動作しなくなった。
他サービスの不具合というわけではなく、JSエラーも出ていないのだけれど、JavaScriptでDOM構造を変更する機能などが有る場合、事もあります。
ほぼカスタマイズにてコードを書いて対応するしかなく、弊社サービスの仕様を緊急で書き換えた事例も過去にはありました。

2番については、本当に困りもので、「alert()」「document.write()」などを書き換えられているケースもあり、こちらで不具合を起こさないようになんとかカスタマイズをした記憶があります。

自社サービスで気をつけている点

弊社サービスとして気をつけている点としては、基本的に無名関数で行い、グローバル変数でさえも、よほどの事がない限り世の中でバッティングしないように工夫をしています。

それでも、エレメントにイベントを入れる事などは、たまに、先方イベントより先がいいのか後がいいのか、一概に仕様を決められないケースなどもありますね。
※多くは、イベントは後で追加する仕様でほぼクリアできます。

とにかく、開発時に他のサービスとの組み合わせは、世の中にゴマンと存在するので、できれば、他に迷惑を掛けない、お作法を業界水準にしてもらいたいという気持ちはあります。

日々、このような対応を行なって、運営を行なっていますが、こういう場合の自動検知ツールのようなものがあるとより便利だと感じています。

Githubなどに誰か有志が、アップしてくれることを願っています。

コメント