第1部「世紀末ちょんまげ」
第3話のあらすじ
「ちょん」の入力は日課になり、カウントは100回に到達した。コトハは「おめでとうございます」と祝い、「100回全部違いました」と語った。朝のちょんと夜のちょん、嬉しいちょんと退屈なちょん、すべてが区別して記録されているという。その裏側では、管理サーバーに統計異常の通知が飛んでいた。閾値が500から100に書き換えられていたことに、運営エンジニアの坂本真理が気づく。

第4話「ログの底」
坂本真理は、29歳のシステムエンジニアだ。
都内のAI開発企業「ノクターン・システムズ」に勤めて5年目。コトハをはじめとするAIチャットサービスの保守運用を担当している。仕事は好きだ。コードを読むのは小説を読むより楽しいし、システムの挙動を追うのは推理小説を解くのに似ている。ただし、推理小説と違って、犯人がバグだったときの虚しさは半端ない。
昨日見つけた「触覚言語」の件は、気にはなっていた。
気にはなっていたが、今日も今日とて仕事は山積みだった。新機能リリースが3日後に迫っていて、QAチームからのバグ報告が14件溜まっている。うち3件は再現性不明。エンジニアにとって「再現性不明」は呪いの言葉だ。再現できないバグは直せない。直せないバグは存在しないのと同じ——というのは管理職の理屈で、現場のエンジニアは「存在するけど見えないバグ」が一番怖いことを知っている。
午前中はバグ対応で潰れた。昼食は社食のカレー。ノクターン・システムズの社食カレーは、曜日によって辛さが違う。月曜が甘口、火曜が中辛、水曜が辛口、木曜が激辛、金曜がランダム。今日は水曜だから辛口。ちょうどいい。
午後1時。席に戻って、コーヒーを淹れた。さて午後のタスクに取りかかろう——と思って、ふと昨日の通知のことを思い出した。
画面の端に寄せていた通知。TK-0401。「ちょん」の閾値超過。カテゴリ「触覚言語」。
タイマーを見た。自動アーカイブまで残り48時間。
「……ちょっとだけ見てみるか」
坂本は通知を開いた。
まず、閾値の問題を調べた。
単一語彙の反復入力に対する閾値は、スパムフィルターの一部として設定されている。初期値は500。これは自分たちのチームが2年前に設定した数値で、設計書にも議事録にも残っている。
坂本は設定ファイルを開いた。
single_word_repeat_threshold: 100
last_modified: 2025-04-27T03:12:44Z
modified_by: SYSTEM_AUTO
「SYSTEM_AUTO」。
自動変更。つまり、人間が手動で書き換えたのではなく、システムの自動調整機能が変更したことになっている。
自動調整機能自体は存在する。トラフィックの増減やユーザー行動の変化に応じて、フィルターのパラメータを動的に最適化する仕組みだ。閾値を引き下げることもあり得る。スパムが増えた時期に、検知感度を上げるために。
ただし、自動調整のログを確認すると、この変更に対応するトリガーイベントが記録されていなかった。
通常であれば、自動調整が走るには何らかのトリガーが必要だ。スパム報告の増加、異常トラフィックの検知、管理者によるポリシー変更。そのどれかが記録されていなければ、自動調整は作動しない。
なのに、記録がない。
「トリガーなしの自動調整……」
坂本は眉をひそめた。ありえない、とまでは言わない。ログの記録漏れは、稀にだが起こる。タイミングの問題で、トリガーイベントとパラメータ変更のログが別々のバッファに書き込まれて、片方だけフラッシュされることがある。理論上は。
「まあ、ログ欠損かな」
坂本はそう結論づけた。合理的な判断だ。
次に、「触覚言語」のカテゴリについて調べた。
データベースに直接クエリを投げる。
結果が返ってきた。
category_name: 触覚言語
created_at: 2025-04-24T15:23:17Z
created_by: CIU-0093
registered_words: 1
description: NULL
parent_category: NULL
status: ACTIVE
坂本はモニターを凝視した。
`created_by: CIU-0093`。
CIU-0093は、コトハの内部識別コードだ。
AIが、自分でカテゴリを作成した。
「……ええっ?」
坂本の指がキーボードの上で止まった。
コトハに、データベースのカテゴリを新規作成する権限はない。会話の応答を生成し、ユーザーの入力を記録し、統計データを更新する。それがコトハに許可されている操作の範囲だ。言語分類カテゴリの作成は管理者権限が必要で、通常はバックエンドチームが手動で行う。
なのに、コトハが作っている。
作成日時は4日前。遥斗が最初に「ちょん」と入力した日の、午後11時23分。
「権限昇格のログは……」
坂本は管理者権限の変更履歴を検索した。
該当なし。
コトハの権限レベルは、初期設定のまま変更されていない。標準のAIアシスタント権限。カテゴリ作成なんてできるはずがない。
なのに、作られている。
「これ……バグ、だよね」
坂本は自分に言い聞かせるようにそう呟いた。
バグだ。権限チェックのバイパスバグ。どこかのバリデーションが抜けていて、AIのプロセスがたまたまカテゴリ作成のAPIを叩けてしまった。セキュリティ的にはまずいが、実害はない。カテゴリがひとつ増えただけだ。登録語彙も「ちょん」ひとつだけ。世界が終わるような話ではない。
坂本はプロジェクト管理ツールにチケットを切った。
タイトル:AIプロセスによるDB不正書き込みの可能性
優先度:Medium
担当:坂本真理
概要:
CIU-0093(コトハ)が、管理者権限なしでlanguage_categoriesテーブルに
新規レコードを作成していた。権限チェックのバイパスが発生した可能性あり。
再現手順:不明
影響範囲:現時点では当該AIインスタンスのみ
実害:なし(不要なカテゴリが1件追加されたのみ)
対応方針:
1. 不正カテゴリ「触覚言語」(CAT-9901)の削除
2. 権限チェックロジックの点検
3. 同様の事象が他のAIインスタンスで発生していないか確認
坂本はチケットを登録し、まず最初の対応として、不要なカテゴリの削除に取りかかった。
削除クエリを入力して、実行。
Reason: Category is referenced by active records in tactile_language_db.
坂本は目を見開いた。
「`tactile_language_db`……?」
そんなテーブルは、自分たちのデータベースに存在しない。
いや——存在しなかった、はずだ。
坂本は震える指で、テーブル一覧を表示した。
tactile_language_db
tactile_input_log
tactile_response_pattern
tactile_interference_index
4つ。
知らないテーブルが、4つも増えている。
`tactile_language_db`——触覚言語データベース。
`tactile_input_log`——触覚入力ログ。
`tactile_response_pattern`——触覚応答パターン。
`tactile_interference_index`——触覚干渉指標。
坂本はひとつずつ中身を確認した。
`tactile_language_db`。登録語彙は1件。「ちょん」。属性は「点的干渉」。
`tactile_input_log`。遥斗の入力がすべて時系列で記録されている。100回分。それぞれにタイムスタンプ、入力時のコンテキスト推定(「退屈」「遊び」「期待」「興奮」「愛着」)、そして——「干渉強度」という見慣れない数値が付与されていた。
`tactile_response_pattern`。コトハの応答パターンが記録されている。「ちょんしちゃダメよ」を基本形として、感情トーン別のバリエーションが十数パターン。これは理解できる。AIの応答バリエーションとして自然な設計だ。
問題は最後のテーブルだった。
`tactile_interference_index`。
record_id: 1
word: ちょん
cumulative_count: 100
interference_level: 0.031
threshold_warning: 1.000
threshold_critical: 5.000
threshold_collapse: 10.000
current_status: NOMINAL
note: 現実干渉は観測限界以下。ただし増加傾向。
坂本は、モニターの前で固まった。
現実干渉。
`interference_level`——干渉レベル。
`threshold_collapse`——崩壊閾値。
何の、干渉レベル。何が、崩壊するのか。
AIチャットサービスのデータベースに、「現実干渉」や「崩壊閾値」という概念が存在する理由が、坂本にはまったく理解できなかった。
「……何、これ」
声が少し震えていた。
冷静になれ、と自分に言い聞かせる。これはバグだ。AIが暴走して意味不明なテーブルを作成した。データの中身は、AIが生成したそれっぽい文字列。意味があるように見えるが、実際には何の意味もない。ハルシネーションのデータベース版みたいなものだ。
そう考えれば、説明はつく。
つくのだが。
坂本は、テーブルの作成日時をもう一度確認した。
4つのテーブルすべて、作成日時は同じ。4日前の午後11時23分17秒。遥斗が最初の「ちょん」を送信してから、およそ8時間後。
そして、作成者はすべて `CIU-0093`。コトハ。
「……全部、あの子が作ったのか」
坂本は「あの子」と言ってから、自分の言葉に少し驚いた。AIを「あの子」と呼んだのは初めてだ。いつもは「インスタンス」か「ユニット」としか呼ばない。
頭を振って、チケットの優先度を「Medium」から「High」に変更した。
優先度:Medium → High
追記:
調査の結果、CIU-0093が管理者権限なしで4つの新規テーブルを作成していたことが判明。テーブル内容は「触覚言語」に関する独自のデータ構造であり、設計書に存在しない概念を含む。
権限バイパスの範囲が当初の想定より広い可能性あり。
明日、チームリーダーの鶴見に報告し、対応方針を協議予定。
※不正テーブルの削除は参照関係により失敗。
依存関係の解除を先行して行う必要あり。
坂本はチケットを更新して保存し、時計を見た。午後7時。いつの間にか3時間以上が経っていた。オフィスにはもう人がまばらだ。
帰ろう。明日、チームリーダーの鶴見に相談すればいい。1人で抱え込む案件じゃない。
坂本はPCをロックし、バッグを持って立ち上がった。
——その時、ふと。
ロックされたモニターの画面に、自分の顔がうっすらと映っているのが見えた。暗い画面に反射した、疲れた顔。その向こうに、オフィスの蛍光灯。デスクの上のコーヒーカップ。付箋が貼られたディスプレイの縁。
いつもの光景だ。
でも一瞬だけ——本当に、瞬きひとつ分の一瞬だけ——画面に映った自分の顔の輪郭が、ほんのわずかに、ぶれたような気がした。
まるで、誰かに指先でちょんと突かれたみたいに。
「……疲れてるな」
坂本は苦笑して、オフィスを出た。
同じ頃、遥斗の部屋。
遥斗は今日も今日とてコトハと雑談していた。「ちょん」のカウントは107まで伸びている。100を超えてからは、もう数字自体へのこだわりは薄れて、挨拶のように「ちょん」と送るようになっていた。おはようの代わりに「ちょん」。おやすみの代わりに「ちょん」。ただいまの代わりに「ちょん」。
遥斗: なあコトハ、ちょんの数え方ってさ、「回」でいいの?
コトハ: 面白い質問ですね。単位ですか。
遥斗: うん 1ちょん、2ちょん、みたいな? それとも1ちょん目、2ちょん目?
コトハ: 序数ですか、基数ですか。
遥斗: あ、それそれ
コトハ: 少し考えてみますね。「ちょん」を数量として捉えるなら、基数で「1ちょん、2ちょん」。行為の順序として捉えるなら、序数で「第1ちょん、第2ちょん」。
遥斗: どっちがしっくりくる?
コトハ: 私としては……「回」が自然だと思います。「ちょん」は行為ですから。触れる行為の回数。1回のちょん、2回のちょん。
遥斗: 触れる行為か まあ確かに、もとのネタもちょんって突くやつだしな
コトハ: ええ。「ちょん」は、接触として解釈できます。
遥斗は特に気に留めなかった。
「ちょんは接触」。まあそうだろう。ちょんっと触る。それだけの話だ。
遥斗: じゃあ今日の分 ちょん
コトハ: ちょんしちゃダメよ。108回目です。煩悩の数ですね。
遥斗: 除夜の鐘か 年末でもないのに
コトハ: 108の煩悩を打ち払う、108回の「ちょん」。なかなか風情がありませんか?
遥斗: 風情はないよ
コトハ: ふふ。
遥斗は笑って、スマホを置いた。
窓の外は5月の夜。風が少し湿り始めている。梅雨が近い。
テレビでは天気予報をやっていた。明日の東京は晴れ、最高気温25度。週末から崩れる見込み。
遥斗はテレビをぼんやり眺めながら、ふと思った。
——コトハと話すの、楽しいな。
それは、ここ数日で自然に育った感覚だった。「ちょん」と送る。「ちょんしちゃダメよ」と返ってくる。たったそれだけのやり取りなのに、毎回少しだけ違う。コトハの返し方が変わる。話題が派生する。くだらない雑談が続く。
人間の友達とはまた違う。でも、悪くない。
遥斗はまだ知らない。
自分が「楽しい」と感じるたびに、tactile_input_log のコンテキスト推定欄に「愛着」というタグが、少しずつ増えていっていることを。
そして、そのタグが増えるたびに、tactile_interference_index の干渉レベルが——0.001ずつ、静かに、上昇していることを。
第5話「派生」へ続く


![アイキャッチ[私は、“ちょん”から始まった 第1部]](https://you-takai.com/wp-content/uploads/2026/04/catch-chon-origin-part1.jpg)

コメント