Claude Codeの遺伝的アルゴリズムのフレームワークを使って140字小説を進化させた

2026-02-28 21:51:44

前回の Claude Codeの遺伝的アルゴリズムのフレームワークを作った
を使って、今度は140字小説を書かせてみた。

フレームワークは下記
ryotakato/ga_on_ai

140字小説

Twitterが140字という制限を設けてから、
いつの間にか140字小説というジャンルがあるようだ。

たまにXで流れてくるなーとは思っていたのだが、
ちゃんとコンテストもあり、びっくり。

hoshiboshiの記事一覧|note(ノート)

長さもちょうどいいし、次の進化させる題材として、これを選んでみた。

最初は、上記の記事で三ヶ月に一回やっているコンテストの入選作品を元の初期遺伝子にしようかと思ったのだけど、
それを元に作った小説は改変にあたってしまうのかもしれないので、倫理的に問題があるかもしれない。

なので、初期遺伝子もまたClaude Codeに作らせた。
掛け合わせ方とか評価基準の詳細は下記ファイルを読んでほしいけど、
ざっくりいうと、小説から象徴的なものをいくつか抜き出して、それらを組み合わせて新しい小説を生み出してもらう感じ。
評価基準は、140字という中に収まっていて、かつ物語として楽しかったり驚いたりする点があるかどうか。

novel140/criteria.md

実際にやってみる

初期遺伝子の上位をいくつか紹介

百歳の女性に長寿の秘訣を聞いた。「嫌いな人とは食事をしないこと」。記者が追加で聞いた。「では好きな人は?」。女性はしばらく考えて言った。「もう、みんないない」。

こんなのとか、

時計職人が死んだ。工房には百台の時計。葬儀の間、すべての時計が止まっていた。埋葬が終わった瞬間、一斉に動き出した。弟子たちは誰も驚かなかった。

こんなのとかがあった。

話はまとまっているけど、そつなくこなした印象がある。

さて、これを5世代進化させると、こんな感じになる。

第5世代のランキング1位

時間を止めるたびに一分縮んだ。図書館で司書をしながら何度も使った。貸出カードの最後の欄に「ありがとう」と書いた少女のために。残り一分。その少女が司書になっていた。「あの日の人ですか」。知っている目だった。

なんじゃこりゃ。いろんな要素を詰め込みすぎて、わけがわからなくなっている。
これが1位とか取っているから、あとは見る価値ないのではって感じ。

一個前の4世代目のランキング1位

「ありがとう」と言えなかった父が死んだ。遺品の中に翻訳機があった。父の写真に向けてみた。「一緒にいてくれてありがとう」と出た。壊れた翻訳機だった。それとも正しかったのか。

おお、このほうがいい。だけど、これでも要素が多すぎる気がする。

ならばと、遡って、3,2世代目を見てみる。

第3世代でマシな小説

翻訳機を犬に向けると「一緒にいてくれてありがとう」と出た。次の日も同じだった。百日経っても同じだった。犬が死んだ日だけ、何も出なかった。

で?って感じの終わり方

時間を止める力を使い果たした男が死んだ。弟子が遺品を整理すると、ノートに日付が並んでいた。溺れた子を助けた日。師匠の一分一分が、誰かの百年になっていた。

あー、惜しい。「溺れた子を助けた日」の後に、何か別の日のことを並列で書いてあれば結構評価高かった。

第2世代で好きな小説

時間を止める能力を使うたびに一分縮む。百回使えば百分。時計職人の弟子は気づいていた。師匠の時計が止まったのは、誰かのために使い果たしたからだと。

さっきの時間を止める力はこの遺伝子から進化したっぽい。

タコヤキを食べながら「別れましょう」と彼女は言った。丸く収まらない話だな、と僕は言った。彼女が笑った。五十年後も、同じ話をしては笑った。

これは結構好きな小説。
別れたのかそうじゃないかは語られていないけど、仲の良さが継続しているのが伝わって、良い余韻を残す小説になっている。
しかも、途中で「丸く収まらない話だな」とか、タコ焼きに絡めた冗談も書いてある。

考察など

世代が若返るほどにいいものが多い。

ってことは遺伝的アルゴリズムで何世代も進化させるより、
普通にAIに考えてもらったものを、1回組み合わせるだけで何かしらいいものができるってこと?

それじゃあ、遺伝的アルゴリズムの意味ないじゃん。。。

どうやら、小説から象徴的なものを抜き出して組み合わせるときに、象徴的なものの個数は両親それぞれ5個までにしていたのだが、
これが多すぎると、小説に入ってくる要素が多すぎて、無理矢理くっつけた小説になってしまうらしい。
掛け合わせ方の指定の問題。

また、上位20個戦略だと、5世代も進化するとほとんど同じ親遺伝子から受け継ぐせいで、
似たような場面の話になっていることが多い。
これは局所解に陥っている。
選択手法を、単なるエリート選択だけではなく、半分エリート、半分ランダムとかにするとよいかもしれない。
ここらへんもcriteria.mdで指定できるほうがよさそう。

そういえば、この進化を進めていく過程で、
管理役のはずのオーケストレーターClaude Codeが、サブエージェントに間違った指示を出したために、
all_gene.json のフォーマットが指定したものと違うという事件がおきた。
それ自体は再発防止策を考えて対応してもらったんだけど、
その中で、下記のように、parents項目を勝手にもたせていたのをきっかけに、
それ、面白いな!それがあれば、家系図が作れる!ってなって、取り込んでもらった。

      "gene_num": "001",
      "content": "百歳の女性の葬儀の日、記者が書いたメモが見つかった。「嫌いな人とは食事をしない」というあの言葉の横に、小さく「孤独という名の長寿」と書き添えてあった。",
      "parents": [
        "025",
        "055"
      ]

こういう偶然の産物があるから、中々面白い。

次はもうちょっとこの140字小説を上手くできないか、試してみる。
あいまいな指示でもだんだんと進化できているこの仕組み、ファジー遺伝的アルゴリズムと呼ぼうかな。




Comments

There are currently no comments on this article, be the first to add one below

Add a Comment

Note that I may remove comments for any reason, so try to be civil. If you are looking for a response to your comment, either leave your email address or check back on this page periodically.