天クロの隊士画像を直接ブラウザで読み込んだ場合、画像URLの後ろにいつも何か余計な文字列が付いてくることに気付いた方もおられるのではないでしょうか。ここでは、その文字列が何の目的で付けられているのかと、そこから見えてくる天クロ運営側の事情等について解説します。
天クロの隊士画像URL
以下は天クロの隊士画像のURLの一例ですが、URLの後ろの『?』以降に一見意味不明な文字列があります。この『?』以降の文字列は、すべて削ってしまっても画像は普通に表示することができます。では、一体なぜこのような余計な文字列を画像URLに付ける必要があるのでしょうか?
https://stat100.ameba.jp/tnk47/ratio20/illustrations/card/ill_79373_2_hommeichokotennyohime03.jpg?202202-5-RELEASE-marathon-576xx
この『?』以降の文字列はURLクエリ文字列と呼ばれていて、本来ならばブラウザからサーバーに対して各種情報を送信する目的で使用されます。ただ、この画像URLのクエリ文字列については、情報を送信するためには使用されていません。
この場合の画像URLクエリ文字列は、天クロ公式の運営が管理画面を使用して新たな天クロの設定を行ったあとに自動的に付加されるようになっています。
もし管理画面での設定内容に画像の差し替えが含まれていた場合に、ブラウザ側の画像のキャッシュが効きすぎるせいで画像を読み込み直してくれないようなことが起こると、ブラウザ側の画像のキャッシュが有効な期間中、そのブラウザではずっと古い画像が表示されたままになってしまいます。
そうなると、たまたま画像の残りキャッシュ期間が短かったために差し替えた画像をすぐに表示できるプレイヤーもいたり、運悪く残りキャッシュ期間がとても長くてずっと以前の画像のままのプレイヤーもいたりして、ユーザーを混乱させてしまいます。
そのため、クエリ文字列を変更することで画像URLを表面的に変化させ、ブラウザに別の画像URLなので画像キャッシュを使わないで読み込み直してねという感じで、画像を確実に読み込み直させることを目的に画像のURLクエリ文字列は付加されています。
そして、この画像URLクエリ文字列を更新する場合、以前使用した文字列とは必ずどこかが違う、常に異なる一意な値に更新される必要があります。天クロ以外のシステムにおいては単純に現在時刻のタイムスタンプを使用して一意な値を生み出している処理系もありますが、天クロにおいては運営が天クロの設定画面で行った最新の設定内容を反映させて一意な値を生み出すような仕様になっています。
以上のような理由により、URLクエリ文字列は運営が最後に管理画面で設定を行った内容により変化します。以下にそのうちのいくらかの凡例を紹介します。
隊士画像URLの凡例
定例イベントの設定を行った場合のクエリ文字列 ?[年数字4桁][月数字2桁]-[当月のイベント○番目数字1桁(ずれる場合あり)]-RELEASE-[イベント名英名]-e-[イベントID数字3桁] 凡例:2021年末の天下統一戦の設定直後の画像URL https://stat100.ameba.jp/tnk47/ratio20/illustrations/card/ill_85523_0_seitankuronikurukusumotoine03.jpg?202112-6-RELEASE-conquest-e-566 県合戦GPの設定を行った場合のクエリ文字列 ?[年数字4桁][月数字2桁]-X-RELEASE-GP-insert-battleleague 凡例:2020年末の県合戦GP設定直後の画像URL https://stat100.ameba.jp/tnk47/ratio20/illustrations/card/ill_84923_0_onsengainansosatomihakkenden03.jpg?202012-X-RELEASE-GP-insert-battleleague アクティブプレイヤー数の調査を行った場合のクエリ文字列 ?[年数字4桁][月数字2桁]-i_prefecture_active_user 凡例:2020年12月のアクティブプレイヤー数調査後の画像URL https://stat100.ameba.jp/tnk47/ratio20/illustrations/card/ill_86013_0_somemonosansaishiki03.jpg?202001-i_prefecture_active_user プレイヤーアカウントの凍結等の措置を行った場合のクエリ文字列 ?[年数字4桁][月数字2桁][日数字2桁]-m_blacklist 凡例:2020年7月27日に行われたアカウント凍結処分直後の画像URL https://stat100.ameba.jp/tnk47/ratio20/illustrations/card/ill_51973_0_kemonomizugikuroyuridensetsu03.jpg?20200727-m_blacklist
定例イベントの英名 日本防衛戦 raid 四神戦 unionbattle サイコロ行脚 dice 最強同盟決定戦 guildbattle 全国巡り marathon 天下統一戦 conquest 竜神杯(争奪戦) pointrace
設定済み項目の軽微な修正を管理画面で行った場合には、これらの文字列の後にその修正回数だけ以下のように『x』がつけられます。
https://stat100.ameba.jp/tnk47/ratio20/illustrations/card/ill_79373_2_hommeichokotennyohime03.jpg?202202-5-RELEASE-marathon-576xxxx
天クロ9周年記念SP隊士を、本来1進を3枚配布するところを、間違えて1進2枚と、進化時の継承値が反映されていない弱い3進1枚を配布してしまい、個別対応も含めて回収と再配布をしていた2021年11月中旬には、管理画面の使い過ぎで以下のようにたくさんの『x』が並ぶような珍しい事態にもなりました。
https://stat100.ameba.jp/tnk47/ratio20/illustrations/card/ill_49953_0_yushamarihime03.jpg?202111-5-RELEASE-marathon-561xxxxxxxxxxxxxxxxxxxxxxxxxxxx
このように、運営が管理画面で何らかの設定や変更を行った後には、画像の変更の有無にかかわらず、必ず『?』以降の画像URLクエリ文字列はアップデートされて、ブラウザ側にすべての画像は今までのものとは違う新規の画像だという認識をさせて確実に読み込み直させるようにしているのです。
開催告知前のイベントの察知
これらの仕様を逆手にとって、運営側がいつ何のイベントの設定を行ったのかについて、定期的に画像URLをチェックしていればある程度把握することができます。例えば、上記凡例の囲みの一番上のURLが確認できた場合、公式からの天下統一戦の開催の発表が行われるよりも前から天下統一戦が開催されることを察知できたりします。
また、いつもは全国巡りの開催期間中に次月の防衛戦から全国巡りまでの設定を一気に終わらせているのに、2021年の12月は27日の時点でサイコロ行脚までしか設定できていないのを確認できたりなんかして、運営の年末進行の厳しさを傍から心配してみたりといった、普段目に見えないことも見えてきたりします。