一部Scalaで書き直し