日本の高速道路の出入り口はいくつあるのか

ふと所用により、日本の高速道路の出入り口(インターチェンジ)の概算が知りたくなった。頭のいい人ならチャチャッとフェルミ推定して算出するのだろうが、考えるよりダーティコードを書いた方が早いと思ったので高速道路の出入口数を調べるテキトーなスクリプトを組んだ。Wikipediaには「日本のインターチェンジ一覧」というページがあるので、そこから情報を引っ張ってきて日本の高速道路のインターチェンジの数をざっくり算出する。

実行したら、2,692ヶ所と出た。2013年10月11日現在、最低でも日本に2,692カ所は高速道路の出入り口があるっぽい。

以下、概算に使ったコード。ハードコーディングしまくりなので、Wikipediaのページの構成が変わったらすぐに使えなくなるので要注意。

#
# number of interchanges
#
require 'nokogiri'
require 'open-uri'
ic_urls = %w(
http://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%81%E3%82%A7%E3%83%B3%E3%82%B8%E4%B8%80%E8%A6%A7_%E3%81%82%E8%A1%8C
http://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%81%E3%82%A7%E3%83%B3%E3%82%B8%E4%B8%80%E8%A6%A7_%E3%81%8B%E8%A1%8C
http://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%81%E3%82%A7%E3%83%B3%E3%82%B8%E4%B8%80%E8%A6%A7_%E3%81%95%E8%A1%8C
http://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%81%E3%82%A7%E3%83%B3%E3%82%B8%E4%B8%80%E8%A6%A7_%E3%81%9F%E8%A1%8C
http://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%81%E3%82%A7%E3%83%B3%E3%82%B8%E4%B8%80%E8%A6%A7_%E3%81%AA-%E3%81%AF%E8%A1%8C
http://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%81%E3%82%A7%E3%83%B3%E3%82%B8%E4%B8%80%E8%A6%A7_%E3%81%BE-%E3%82%8F%E8%A1%8C
)
sum_of_ic = 0
ic_urls.each do |ic_url|
html = Nokogiri::HTML(open(ic_url))
puts URI.decode(ic_url.gsub('http://ja.wikipedia.org/wiki/', ''))
html.css('h3+ul').each do |ul|
h3 = ul.previous_element
if /^.\[編集\]$/ =~ h3.text
cnt = ul.children.count / 2
sum_of_ic += cnt;
puts h3.text
puts "count:#{cnt}"
puts "sum:#{sum_of_ic}"
end
end
end
puts "all sum:#{sum_of_ic}"

Sinatra用のテンプレートつくった

SinatraでWebアプリケーションを作ろうとしていつも一から作るのもナンセンスなので、自分用のテンプレートを作った。とはいっても、shokaiさんの作っていたsinatra-templateをフォークしてオレオレ改造を施しただけ。

githubにあります。
https://github.com/akiroom/sinatra-template

Webアプリケーション開発に明るくないので、何か変なところがあったらご指摘いただけると嬉しいです。

続きを読む Sinatra用のテンプレートつくった

Lispアニメ占いのソースコードを公開しました。

Lispでアニメーション付きの姓名判断占いができるアプリのソースコードを公開しました。2010年春学期に慶應義塾大学湘南藤沢キャンパスの授業「記号処理プログラミング」の最終課題として作ったアプリケーションです。

以下のURLからダウンロードできます。
https://github.com/akiroom/LispUranai

JimiCityのソースコードを公開しました。


http://akiroom.github.com/JimiCity/

慶應義塾大学湘南藤沢キャンパスにて2010年春学期「オブジェクト指向プログラミング」という授業の最終課題として製作した、都市シミュレーターです。シティセンター効果などのシミュレーションを行い、ある程度自然な都市が生成されるようになっています。授業で指定された学校専用ライブラリを使用しています。

続きを読む JimiCityのソースコードを公開しました。

[jQuery対応] textareaのキャレット座標(XY座標)を取得するjavascriptライブラリを作った

textareaに表示されているキャレット位置(カーソル位置)の画面上のXY座標(ページの一番左上からの位置)を取得したいと思って検索したけれど、キャレットの文字列内の位置(何文字目)を取得するライブラリばかりで、画面上からの位置を取得できるライブラリがなかった。なので、テキストエリアを指定するだけで簡単に現在のキャレット位置の座標が分かるライブラリをつくった。サジェストを表示するWebアプリケーション(EclipseのようなIDEとか?)を作りたい時に便利。jQueryがなくても使えるし、jQueryがあっても使える。

githubにアップロードしているので、そちらも参照。
http://akiroom.github.com/caretposition.js/

以下、使い方の解説。

続きを読む [jQuery対応] textareaのキャレット座標(XY座標)を取得するjavascriptライブラリを作った