こんにちは、初投稿です。
今回は、巷で噂のSkill作成の話です。
生成AIに文章を書かせると、内容は間違っていなくても妙に似た文章になることがありますよね。
「それぞれにメリットとデメリットがあります」「重要なのは適切に使い分けることです」といった、間違ってはいないけれど、なんだか結論も薄い文章です。
日本語のこうした癖を修正するSkillとして、stop-ai-slop-jpが既にあります
stop-ai-slop-jp は、AIが書いた日本語の立場、主体、構造、語彙、記号などを確認し、AI特有の文章パターンを減らすことを目的としたSkillのことで、
特に、命題型の見出し、二項対比、均一な段落構成、抽象語の多用などを対象にしています。
実際に内容を読んでみると参考になる部分が多い一方、技術記事では少し強すぎると感じるルールもありました。
例えば、技術選定の場面で、Aを選ぶという結論だけで「なんでBを選ばなかったのか」の理由も少し知りたいです。こういった両論併記を削りすぎると、文章はすっきりしても判断材料まで消えてモヤモヤすることがあるからです。
また、既に確定した仕様まで「〜らしい」と表現するのは情報の確度を落とすのではないかと考えていました。
そこで、自分が読みやすいと思う文章へ寄せるために teire というSkillを作りました。
teireを作った理由
まず今回参考にしたStop AI Slop JPには、AIが生成した文章の不自然さを減らすようなSkillになっています。
ただ、技術記事や設計の説明では、採用した理由だけでなく、他の選択肢にどんな利点があるかも示した方が、良いと自分は考えました。
またAIらしさを避けるルールを機械的に適用すると、別のテンプレートを生むおそれがあります。そこで、自然な部分は残し、説明不足や曖昧さなど、必要な箇所だけを整えるSkillとしてteireを作りました。
なので本記事では、
- Skillを使わない場合
- Stop AI Slop JPの方針を適用した場合
- teireを適用した場合
を同じ題材で比べます。
teireについて
teire では、文章を人間らしく見せること自体を目的とせず、
判断が必要なら理由を示す。一般論だけで終わらせない。事実と推測を区別する。
一方で、文章を毎回同じ構造へ当てはめることもさせません。
基本的な考え方は、
必要な情報は残す 文章の形は固定しない
というルールにしています。
また、文章が自然なら、無理に書き換えないこともルールにしています。
AI臭さによる脱臭を行うため人間らしさを付け加えるというより、
AIによる過不足や過多、誇張を調整して読みやすくすることを念頭に置いてます。
例1:簡単な比較
まずは技術知識が必要ない文章から試します。
なお、以下の出力は各Skillのルールを適用した比較例で、LLMの出力は毎回同じになるわけではないのでご理解ください。
プロンプトは次のものにします。
紙のノートまたはメモアプリなら、どちらを使うのがよいか短く説明してください。
Skillなし
紙のノートとメモアプリには、それぞれメリットとデメリットがあります。
紙のノートは自由に書き込めることや、手書きによって記憶に残りやすいことがメリットです。一方、メモアプリは検索や編集がしやすく、複数の端末から利用できます。
どちらが適しているかは、用途や好みに応じて選ぶことが重要です。
読みやすくはありますが、最後まで読んでも「結局どちらを選ぶのか」は分かりません。結局どっちつかずとなり筆者の考え方が見えてこないです。
Stop AI Slop JP
自分ならメモアプリを使います。あとから検索できるし、書いた場所を忘れて探し回ることもないからです。
紙のノートには手書きの気軽さがあります。ただ、情報を後から探す用途では面倒です。
残しておきたい情報ならメモアプリでいいと思います。
筆者の立場が前に出てきました。
「面倒です」のような主観も入り、最初の文章より人が判断して書いている感じがあります。
teire
自分なら普段の記録にはメモアプリを使います。検索と編集がしやすく、複数の端末から確認できるからです。
紙のノートは、図を書いたり、その場で自由に書き込んだりするときには便利です。そのため、用途によって紙を併用するのはありだと思います。
こちらも判断は出しますが、紙のノートを採用しない理由だけではなく、向いている場面も短く残しています。
つまり、Stop AI Slop JPとSkillなしを足して2で割ったような感じです。
例2:既存の文章を直す
次は、新しく文章を書かせるのではなく既存文を編集します。
元の文章はこちらです。
Reactの状態管理にはさまざまな方法があります。useState、Context、Reduxなどがあり、それぞれにメリットとデメリットがあります。重要なのは、プロジェクトに応じて適切なものを選ぶことです。
Skillなし
Reactの状態管理には、useState、Context API、Reduxなど、さまざまな選択肢があります。それぞれに特徴やメリット・デメリットがあるため、プロジェクトの規模や要件に応じて適切な方法を選択することが重要です。
ほとんど手を加えられていない状態です。
Stop AI Slop JP
小さなReactアプリなら、最初からReduxを入れる必要はないと思います。
コンポーネント内で完結するStateなら useState で十分です。Contextもありますが、何でも入れる箱にすると後で扱いづらくなります。
Reduxは、本当に複数の場所から同じStateを操作する必要が出てから考えればいいです。
かなり具体的になりました。
元文章にはなかった「小さなReactアプリ」という条件と、Reduxについての判断まで追加されています。これは書き手の存在がある感じがします。
teire
Reactの状態管理には、useState、Context、Reduxなどがあります。どれを使うかは、管理するStateの範囲を見て決めます。
コンポーネント内で完結するなら useState、複数のコンポーネントで共有するならContextやReduxが候補になります。最初から一つの方法に統一する必要はありません。
元文章の範囲から大きく離れないようにしています。ただ、条件に具体性を出しません。また、Stop AI Slop JPと比べて書き手の存在をあまり感じません。
例3:技術選定
もう少し判断が必要な題材にします。
小規模なReactアプリでContextとReduxのどちらを使うか説明してください。
Skillなし
ContextとReduxには、それぞれメリットとデメリットがあります。
Contextはシンプルで導入しやすく、小規模なアプリに適しています。一方、Reduxは複雑な状態管理に対応しやすく、開発ツールも充実しています。
アプリケーションの規模や要件に応じて適切な方法を選択するとよいでしょう。
どちらもあり得る、場合によりますという選択肢を出して終わりになっています。
Stop AI Slop JP
小規模ならContextを選びます。
Reduxまで入れると、Stateを管理するためのコードと依存関係が増えます。複雑なStateを扱うならReduxは便利ですが、小さいアプリで最初から持ち込む理由はあまりありません。
結論や決定の判断が明確です。短く、読みやすい文章になっています。
teire
小規模なReactアプリなら、まずContextを候補にします。追加ライブラリなしで使えて、共有するStateが少ない段階では構成を単純に保ちやすいからです。
ReduxはStateの更新が複雑になった場合には有力ですが、その必要がまだないなら最初から導入する優先度は低いと思います。
teireでもContextを選びました。
違うのは、Contextを採用する理由だけでなく、Reduxを選ばない理由と、Reduxが適する条件にも短く触れているところです。
少しくどい感じがしますが、説得力を持たせています。
ただし毎回、
結論
↓
採用理由
↓
不採用理由
↓
再度結論
と書くわけではありません。
この形を固定すると、それ自体が新しいテンプレートになってしまうので、同じ文体が出現して読みにくいのを防ぐためです。
teireでは、必要な情報は残しながら、文章の順序や段落構成は内容に合わせて変えるようにしています。
文体の確認Skillとファクトチェックについて
Stop AI Slop JPもteireも、文章の品質を調整するためのSkillなので、そもそもの技術仕様が正しいことまで保証するものではないです。
teireでは正確性を最優先にしていますが、それでも確認する情報源がなければ新しい事実を検証することはできません。
技術記事を書くなら、
下書き
↓
ファクトチェック
↓
文章の手入れ
↓
最終確認
と分ける方が安全です。
これらの文体改善のSkillはあくまで文章の手入れ~最終確認で、使われることを想定されているはずです。
なので、文章レビューと技術レビューはそれぞれ別物として扱った方がいいと思います。
比較
今回の結果を簡単にまとめます。
| 観点 | Skillなし | Stop AI Slop JP | teire |
|---|---|---|---|
| 両論併記 | 長くなりやすい | 削る傾向 | 必要な分だけ残す |
| 元文章への介入 | 比較的小さい | 大きくなることがある | 必要な範囲に抑える |
| 主観 | 控えめ | 積極的 | 読みやすい場合に使う |
| 構造 | 定型化しやすい | 意図的に崩す | 固定しない |
| 技術用語 | そのまま | 日本語へ置き換え | 一般的な用語は残す |
| 正確性 | Prompt次第 | 文体改善が中心 | 文体の調整と説得力が中心 |
Stop AI Slop JPは、AIが書いた無難で均一な文章を強く崩したい場合に使いやすいと思います。文章へ書き手の立場を戻すという考え方も参考になりました。
一方で、そのルール自体にかなり明確な文体の好みがあります。
teireでは、その部分を弱めています。
人間らしい文章へ変換するというより、判断の理由や必要な具体性を残しつつ、余計なところだけ直すことを優先しています。
まとめ
どちらが常に優れているという話ではなくて選択肢として増やした感じです。
ブログやエッセイのように書き手の存在を前へ出したい文章なら、Stop AI Slop JPが強いと思います。
技術記事や比較、説明文なら、自分はteireくらいの介入量の方が使いやすいと思っています。
文章をどう直したいかによって使い分けることをオススメします。