ちなみに上のプログラムはこれを見て学びました。
http://www.nicovideo.jp/watch/sm3584410
動画で学ぶのも分かりやすくていいものですね。