とりあえずこれでうまく処理できるようになった。
問題なさそうなので、この動作をベースにjavascript化してみようと思う。