Edited at

箱根駅伝公式サイトの手抜き!?JavaScriptを解説する

今年も、箱根駅伝盛り上がりましたね!

ふと、箱根駅伝の公式ウェブサイトを見ると、

・・・!?!

第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. 1月2日または3日の場合、「箱根駅伝開催中!」と表示する

  2. 1月1日は、「1(日)」と表示する

  3. それ以外は、現在時刻と1月2日までの差分を表示

ということです。


プログラム評価

・箱根駅伝の性質上、毎年繰り返し使えるプログラムである

・しかし、駅伝終了後は、他の画像要素(第95回)などを差し替えないと、整合性がとれない


感想

最初、手抜きか!?と思ったのですが、次大会に向けた刷新を行うまでは、整合性が取れなくても仕方ないよね・・・と割り切った実装になっているような気もします。

皆さんはどう思いますか?許せますか?許せませんか?