 					指手列.append(指手型.動(先後: 先後, 移動前の位置: 位置, 移動後の位置: 移動後位置, 移動後の駒面: 駒面))
 				}
 				if 成って移動可能か(先後: 先後, 移動前の位置: 位置, 移動後の位置: 移動後位置, 移動前の駒面: 駒面) {
-					指手列.append(指手型.動(先後: 先後, 移動前の位置: 位置, 移動後の位置: 移動後位置, 移動後の駒面: 駒面.成る()))
+					指手列.append(指手型.動(先後: 先後, 移動前の位置: 位置, 移動後の位置: 移動後位置, 移動後の駒面: 駒面.成駒面))
 				}
 			}
 

					指手列.append(指手型.動(先後: 先後, 移動前の位置: 指定位置へ移動可能な駒の位置, 移動後の位置: 指定位置, 移動後の駒面: 駒面))
				}
				if 成って移動可能か(先後: 先後, 移動前の位置: 指定位置へ移動可能な駒の位置, 移動後の位置: 指定位置, 移動前の駒面: 駒面) {
					指手列.append(指手型.動(先後: 先後, 移動前の位置: 指定位置へ移動可能な駒の位置, 移動後の位置: 指定位置, 移動後の駒面: 駒面.成る()))
				}
			}
		}

		default: return true // 成駒の移動は不成で移動とみなす
		}
	}
	
	public func 成不成別移動指手候補(先後 先後: 先手後手型, 移動前の位置: 位置型, 移動後の位置: 位置型, 移動前の駒面: 駒面型) -> (成: 指手型?, 不成: 指手型?) {
		return (
			成: self.成って移動可能か(先後: 先後, 移動前の位置: 移動前の位置, 移動後の位置: 移動後の位置, 移動前の駒面: 移動前の駒面) ?
				指手型.動(先後: 先後, 移動前の位置: 移動前の位置, 移動後の位置: 移動後の位置, 移動後の駒面: 移動前の駒面.成駒面) : nil,
			不成: self.不成で移動可能か(先後: 先後, 移動前の位置: 移動前の位置, 移動後の位置: 移動後の位置, 移動前の駒面: 移動前の駒面) ?
				指手型.動(先後: 先後, 移動前の位置: 移動前の位置, 移動後の位置: 移動後の位置, 移動後の駒面: 移動前の駒面) : nil
		)
	}
	
	public func 指定位置へ打つ事は可能か(先後 先後: 先手後手型, 指定位置: 位置型, 駒種: 駒種型) -> Bool {
		if 駒種.指定段に打つ事は可能か(先後: 先後, 段: 指定位置.段) {
			switch 駒種.駒面 {
