今年も、箱根駅伝盛り上がりましたね!
ふと、箱根駅伝の公式ウェブサイトを見ると、
・・・!?!
第95回大会まであと363日
という表記になっていました。
これは、手抜きJavascriptの可能性があります。
エンジニアの端くれとして、これを詳しく調べたい!と思ったので、解説していきます。
ソースを見て見る
view-source:http://www.hakone-ekiden.jp/
まずは、ソースを見てみましょう。上のアドレスをURLバーに貼り付けて見てください。または、箱根駅伝の公式ウェブサイトを開いて、右クリックからページのソースを表示など。
すると。。。24行目付近に
早速ありました。count_downという関数を実行しています。明らかにそれっぽそうです。次は、このcount_downが定義されている場所を探っていきます。
Javascriptを探る
ありました。15行目ですね。
base.jsというそれっぽいファイルが読み込まれています。ファイル名をクリックするとひらけます。
count_down発見
ありましたね・・・なんと、シンプルな構造でしょうか
function count_down() {
var now = new Date();
var nowyear = now.getFullYear();
var nowMonth = now.getMonth()+1;
var nowDate = now.getDate();
if((nowMonth == 1) && ((nowDate == 2) || (nowDate == 3))) {
document.write('<span class="now">箱根駅伝<br />開催中!!</span>');
}else if((nowMonth == 1) && (nowDate == 1) ) {
document.write('<span class="counter">');
document.write(1);
document.write('</span>');
}else{
var point = new Date(nowyear+1,1-1,2);
var countdown = Math.ceil( ( point.getTime() - now.getTime() ) / (1000*60*60*24) );
document.write('<span class="counter">');
document.write(countdown);
document.write('</span>');
}
}
ざっと読み解くと、あの日付の表示は、3パターンにあったようですね。
- 1月2日または3日の場合、「箱根駅伝開催中!」と表示する
- 1月1日は、「1(日)」と表示する
- それ以外は、現在時刻と1月2日までの差分を表示
ということです。
プログラム評価
・箱根駅伝の性質上、毎年繰り返し使えるプログラムである
・しかし、駅伝終了後は、他の画像要素(第95回)などを差し替えないと、整合性がとれない
感想
最初、手抜きか!?と思ったのですが、次大会に向けた刷新を行うまでは、整合性が取れなくても仕方ないよね・・・と割り切った実装になっているような気もします。
皆さんはどう思いますか?許せますか?許せませんか?