記号を消すツールが、コードブロックの中身だけは触らない理由
AI文章の整形コラム
AIの回答から余計な記号を取り除きたい。
ただし、回答にコードが含まれている場合、同じ扱いをすると困ったことになります。
コードの中の記号は、飾りではなく意味を持っているからです。
消してはいけない記号がある
AIの文章に出てくる記号のうち、消してよいものと、消すと壊れるものがあります。
地の文に付いた強調の記号は、消しても意味が変わりません。読みやすさのために付いているだけだからです。
一方、コードの中では違います。
アスタリスクは掛け算だったり、ポインタだったりします。シャープはコメントの開始だったり、色の指定だったりします。バッククォートは文字列の囲みです。
これらを「記号だから」と一律に消すと、貼り付けたコードが動かなくなります。
しかも、消えたことに気づきにくい。エラーが出て初めて分かります。
見分ける手がかりはフェンス
どこがコードかを判断する手がかりが、コードブロックの囲みです。
バッククォート3つ、あるいはチルダ3つで挟まれた範囲は、AIがコードとして出力した部分です。
その内側は、記号の除去から外します。
Suppinizeでは、処理を始める前にこの範囲を一時的に取り出しておき、記号の除去が終わってから元の位置に戻しています。
中身には一切手を加えないので、貼り付けてそのまま動きます。
囲みの行そのもの(```js のような行)は、地の文には不要なので取り除かれます。
インラインのコードは別
同じことが、文中に埋め込まれた短いコードでも起きます。
バッククォート1つで囲まれた部分です。
こちらは判断が分かれます。囲みを残すと記号が残り、消すとコードだと分からなくなる。
渡す先によって正解が変わるので、どちらが良いかは用途次第です。
囲みに入っていないコードは判別できない
この仕組みには限界があります。囲みが無ければ、コードかどうかは分かりません。
AIの回答では、短いコマンドや設定値が地の文にそのまま書かれることがあります。
「設定ファイルに export PATH=... を追記します」のような形です。この部分に記号が含まれていても、囲みが無ければ通常の文として扱われます。
コードを含む回答を機械的に処理するなら、囲みが付いているかを先に見ておくと事故が減ります。
付いていない箇所があれば、そこだけ手で退避してから処理します。
自分で置換するときの注意
ツールを使わず、エディタの置換機能で記号を消す場合、この区別は自動では付きません。
先にコードの部分を別の場所へ退避してから置換し、後で戻す。手作業でも、順番はこれになります。
面倒でも、コードを含む文章では省かないほうが安全です。動かないコードを渡すほうが、記号が残っているより厄介なためです。
余計な記号をワンクリックで除去
Suppinizeなら、文章をペーストするだけでマークダウンや行頭絵文字をすっきり除去できます。