fnをcall-with-output-stringで呼ぶこと多いので
オプション出力の扱いがめんどう