筒井康隆が90歳になってしまったのかというのと、六本木に松本零士展にいってみて生原稿を見たのと(あと、士郎正宗の原画展もあって)、ちょっとつらつらと文章書きを再開してみる。

文章自体は、技術書を年2冊のペースで書き続けているので、それほど苦労はしないのだが、技術書とは異なり小説の場合は気概というか、何か構えたところがあって、長年復活できないでいた。というか、復活は諦めていたのだ。
書きたいものが無いわけではなく、言いたいことを書く場所が欲しいのは確かで、依頼にせよあるい意味で惰性にせよ技術書を書いているのはそういう意味もある。ただし、完全に自由に書けるわけではない。あたり前だが、技術書なのだから嘘を書くわけにはいかない(結果的に嘘になってしまった=間違ってしまった、ことはあるかもしれないが)。自分なりに検証をしているし、過去に人の本を読み「このコードは動かしていないな?」とイライラしたことがあったので、自分のコードは全て動作をさせている(これも、たまに原稿上で直してしまうことがあって、コードが足りないことがあったりするもすのだが…ごめん、そういう理由で動かないことがあったのね、と昔の著者さんには謝りたい)ので、当然のことながら嘘や現実とは異なることは書けない。
じゃあ、小説の場合は嘘ばかりかというとそうでもない。当然のことながら誤字脱字を直さないといけないし、登場人物の整合性はあわせないといけないし、時代背景やら時代考証が必要なときもある。SF 小説であっても、あまりにも頓珍漢な科学技術を描くわけにはいかない(とはいえ、横田順弥のハチャハチャSF があるんだから、科学的の整合性をあえて外すパターンもある)。それは、どのようなものを自分が書きたいか、に依るだろう。
最終的に小説が売れるか売れないか、という点に拘ってしまうと、読み応えのある長編やら読者層にマッチした流行を取り入れたものやら、が出てくるわけだが。なに、「売れる」と言うこと自体は、「書く」時点で決まっているわけではない。むしろ「売れる」という現象は結果論である場合が多いので(企画ものは違うだろうが)、一定以上になる場合にはそれなりの捨て駒気分が必要なるだろう。
ちなみに、企画が通った技術書を書く場合、ある程度の安定収入(原稿費用みたいなもの)が入る。もちろん、それで開発者なみの給与になるかといえば、そうはならない。そうはならないので、主に技術書は「ボランティア」で書かれてといっても過言ではない。大抵の技術書はそうだろう。お疲れ様です。ひるがえって、私の場合はどうかというと、長年(20年は書いているので、長年といって差し使えないだろう)書いているので、どれぐらいの時間を技術書の執筆に突っ込むか、はある程度決めている。
閑話休題
生成 AI を活用して書き進める
プログラミングをするときに、生成AI あるいは AI エージェントを日常的に使っている人は多いだろう。生成 AI の活用は、2年前の新人教育から使っているのが、質問事項はほぼ「AI に聞け」ということにしてある。文法を全体を網羅して覚えるよりも、基本的な書き方だけ学び、解らなかったら AI に尋ねるということが効率的である。
さらに、今年の6月頃からだったか、AI エージェントが一般的になってきた。生成 AI 単体ではなく、ファイルやプロジェクトの内容を書き変えてくれる AI エージェントの存在は、コーディングというものを一変させている。AI 駆動と言う形で、最初に細かな仕様や設計を決める向きもあるのだが、私の場合は AI ペアプロがお勧めである。AI ペアプロの話は、また別の機会にやるとして、ここでは、短編を書くときの AI 利用についてちょっと気付いたことを書いておきたい。
1時間程度でざっと書き下すのが自分の時間の使い方としては合っているっぽい(長いと、書き飽きてしまうので)。なので、小説としては、2000字ちょっとぐらいの短編あるいは掌小説と言う形になる。ちょうど、星新一のショートショートか筒井康隆の短編ぐらいの長さだ。私としても、この位の短編が好きだった時期もあるので、長くて読みごたえがあるものよりも、小さくまとまって気の利いたものがよい。
文章を最近は VS Code で markdown 形式で書いている。どうやら、この書き方に慣れて来た。最初は、QX で書いたり、Word に貼り付けたりしていたのだが、VS Code + markdown + GitHub Copilot という形で技術書を書いている中で、最近ではこれが効率が良い。なんといっても、Copilot が次の文章を書いてくれるのがよい。
AI のサポートは、わざわざ AI に尋ねるのではなく、文章の続きを AI が差し込んでくれるのがむいている。特に技術書のように書き方が決まっている場合は、巷の Web サイトにある Microsoft や Google の公文書のような文体を差し込んでくれるので丁度よい。私の場合は「ですます調」で技術書を書くことにしているので、Web サイトの解説を AI が学習してくれて、それを私の文章に差し込んでくれるパターンだと、文章が無個性になって丁度よいのだ。「無個性」と言う書き方をしたが、プログラミングの本としては、ポリシーとして筆者の思惑をあまり主張しないようにしている。他の著者さんは違うかもしれないが、技術書は基本読み飛ばしが多いので、あまり文章に個性が出てしまうと読みにくくなってしまう。さらに言えば、私の悪文(多分悪文w)を編集者の方が直してくれている。読点が多いのが特徴で、語るように書くのもそうなのだが、長い文章の中で主語と述語がずれてしまうことがある。これ、語り言葉の場合はそう思えないのだけど、文章になると目立つのだ。特に、”熟読” している読者がいると、目立つ。そりゃ、文法上おかしいのだから目立ちますよね。そんなんに熱心に読まなくても大丈夫ですよ。さらっと、読み飛ばしてください。
で、生成 AI の場合は、なんとなく主語や前の文章を書くと、先の文を続けてくれる。この方式は生成 AI の Transformer に依存するものなのだが、いわゆるトークンとパラメーターの近似状態だけできまる。端的に言えば、top-p と温度というふたつの要素だけで、次の文章を決めることができる。もちろん、ランダム性が加わるので、かならずしも同じ文章になるとは限らない。そこで、ランダム性を広くとって SF 小説などを書くサポートに生成 AI をつけるとよいのである。
それと同時に、小説家にはそれなりに文体がある。例えば、2ch(あるいは 5ch)であるような村上春樹風の文章やら、星新一風の文章であるやらがそれだ。同じテーマを与えて「夏目漱石風に書いて」ということも AI には可能である。実際にどう似ているかは読むと解るのだけど、想像するに
- 「夏目漱石」というとトークンに近い単語を拾ってくる
- テーマとなる、文章に近い単語を拾ってくる
- 両者に近い単語を、コンテキストのパラメーター(近隣値)に合わせて選び出す
という手順でやっているに違いない。実は人間が文体模倣をするときには同じことやっている。夏目漱石の小説を何冊かよみ、文章の繋がりを覚える。元の参考となる文章に、夏目漱石の文章の繋がり(時に副詞、助詞の繋がり、単語の選び方)を加えて、夏目漱石の文体に近づけるわけです。
さて、ここからやっと本題です。
生成 AI は近隣値(ベクトル)が近い形でトークン(単語)を選択するので、先立つ文章に続く生成される文章は、当然のことながら、学習元となる Web サイトや既存の公開されている電子文書(特に論文)に近い方になります。論文を書くとか技術文書を書く場合にはそのほうがよいでしょう。しかし、小説を書こうとなるとこれが一変します。独自性を出す、自分なりの文体を構築しようとしたときに、生成 AI がサジェッションする文章をそのまま採用することはできあません。定番の推理小説ならばいいのでしょうが、ちょっと毛色の変わった自らの文体を作りたい場合は邪魔になります。いえ、寧ろ、生成 AI がサジェッションする文章はそのまま採用できません。
というわけで、独自っぽい文体で書くと、生成 AI はこのように暴走をし始めます。

これ、GPT3 の頃にもよく見た現象ではあるのですが(top-p や温度を調節すると意図的に出すことができます)、GPT5やGPT4.1 でも同じ現象がでますね。つまりは、近隣値(ベクトル)に適当なものがなく、先に書いた文章を続けるしかない、碇シンジ文体になってしまうわけです。
要は、この状態になれば、あなたの文体は学習されていません、の印になるわけです。
