AI が書いた日本語の校正 — chaffjs で 9 件の指摘を 0 件にする

AI が書いた日本語の校正 — chaffjs で 9 件の指摘を 0 件にする

AI に書かせた日本語は、読めば分かります。でも、どこが悪いのかを言葉にするのは難しいです。

chaffjs という道具は、それを機械の判定として出します。実際に通してみました。

前の文章

AI が書きがちな形で、20 行ほど書いたものです。

# AIエージェントの並列実行について解説します

本記事では、AIエージェントを並列で実行する手法について解説していきます。

近年、AIを活用した開発が急速に普及しつつあります。その中でも特に注目されて
いるのが、複数のエージェントを同時に動かすというアプローチだと言えるでしょう。

## 並列実行のメリット

並列実行には、大きく3つのメリットがあります。

**開発速度の向上**: 複数のタスクを同時に処理できるため、全体のスループットが
向上します。
**待ち時間の削減**: 1つのエージェントの応答を待つ必要がなくなります。
**品質の担保**: 異なるアプローチを並行して試すことが可能になります。

これらは単なる効率化ではなく、開発の進め方そのものの変革であると考えられます。

## 導入における課題

一方で、課題も存在します。まず、マシンリソースの消費が増大するという点が
挙げられます。また、各エージェントの状態管理が複雑化するという課題もあると
言えます。

しかしながら、これらの課題は適切なツール選定によって解決可能であると言える
でしょう。

## まとめ

本記事では、AIエージェントの並列実行について解説しました。並列実行は、今後の
開発において極めて重要な役割を果たしていくことが予想されます。ぜひ皆さんも
試してみてはいかがでしょうか。

判定

$ npx chaffjs --experimental --compact before.md

  1:25    info    「AIエージェントの並列実行について解説します」の節に
                  数値もコードもリンクもありません(そういう節が 3/4)
                  concrete-evidence-density
  3:1     info    題の後の段落は、題に無い語を 2 個しか足していません
                  no-lead
  3:1     warning 文の長さのばらつきが 28%(30% 以上ほしい)
                  sentence-rhythm
  5:1     warning 「近年」は、どの記事にも当てはまる書き出しです
                  padded-intro
  25:31   warning 「極めて重要」は、中身を言わずに強調だけしています
                  empty-intensifier
  25:71   warning 「いかがでしょうか」で締めています
                  closing-cliche
  25:71   warning 「sentence-rhythm、padded-intro、closing-cliche」が
                  同じ文書にそろっています(3 種、3 種から)
                  ai-generated-composite

指摘 9 件

効いたのは最後の一行です。

ほかの指摘は、一つずつ見れば「まあそう書くこともある」で済みます。ai-generated-composite は違って、三つが同じ文書に揃ったこと自体を根拠にしています。文のばらつきが足りない、書き出しがどの記事にも当てはまる、締めが決まり文句。この三つが同時に起きる文章は、人が書いたものにはあまりありません。

後の文章

同じ主題、同じ行数で書き直したものです。

# AIエージェントを並列で動かすと、何体で詰まるか

20コアのマシンで39体まで並べて、負荷が15を超えたところで増やすのをやめました。

手を動かしているのは `git worktree` です。同じリポジトリのコピーを別の場所に
作るので、エージェント同士がファイルを踏みません。

## 何が速くなるか

速くなるのは待ち時間だけです。1体に頼んで返ってくるまで手が空くので、その時間に
別のことを別の体に頼みます。

総処理量は増えません。増えるのは、自分が待っていない時間です。

## 何で詰まるか

メモリです。16GBで4体を並べるとスワップが始まり、長く回すと余裕が消えます。
公式のドキュメントにあるサブエージェントの同時実行数は既定で20、深さは3です。

もう一つは、どれが止まっているか分からなくなることです。10体のうち2体が止まって
見えても、終わったのか許可を待っているのかは開くまで分かりません。

探している時間が、並列で得た時間を食います。

## まとめ

並列化で消えるのは待ち時間で、総量は変わりません。詰まるのはメモリと、止まった
理由の見分けです。

- MulmoTerminal: https://github.com/receptron/mulmoterminal

再判定

$ npx chaffjs --experimental --compact after.md

指摘 0 件

何をしたか

直したのは四つです。

書き出しの「近年」を、実際に測った数字に替えました。節ごとに数値かコードかリンクを一つ入れました。文の長さを揃えないようにしました。締めの「いかがでしょうか」を消しました。

concrete-evidence-density が一番重かったところです。どの節にも数値もコードもリンクも無いというのは、確かめられることを何も書いていないという意味でした。言い回しを直すだけでは消えません。中身を足すしかありませんでした。

試す

npx chaffjs --experimental <ファイル>

文章は書き換えません。指摘を出すだけです。直すのは書いた人です。

まとめ

AI が書いた日本語の「AI っぽさ」は、言い回しの集まりではありませんでした。

ばらつきの無さ、どこにでも当てはまる書き出し、決まり文句の締め。この三つが同時に起きることが正体で、ai-generated-composite はそれを名指しします。

そして一番直しにくかったのは、文体ではなく、確かめられる中身が無いことでした。

関連: MulmoTerminal の toolbarPins — よく開くコレクションを 1 クリックで出すツールバー設定 / MulmoTerminal の script.json と launchers — テスト完了通知が鳴らない原因と設定の使い分け

この記事をシェア

関連記事

記事一覧に戻る