4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-01-04

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

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

スクリーンショット 2019-01-04 14.28.59.png

・・・!?!

第95回大会まであと363日

という表記になっていました。

これは、手抜きJavascriptの可能性があります。

エンジニアの端くれとして、これを詳しく調べたい!と思ったので、解説していきます。

ソースを見て見る

view-source:http://www.hakone-ekiden.jp/

まずは、ソースを見てみましょう。上のアドレスをURLバーに貼り付けて見てください。または、箱根駅伝の公式ウェブサイトを開いて、右クリックからページのソースを表示など。

すると。。。24行目付近に

スクリーンショット 2019-01-04 14.32.10.png

早速ありました。count_downという関数を実行しています。明らかにそれっぽそうです。次は、このcount_downが定義されている場所を探っていきます。

Javascriptを探る

ありました。15行目ですね。

スクリーンショット 2019-01-04 14.33.46.png

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回)などを差し替えないと、整合性がとれない

感想

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

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

4
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?