01_creation.txt:第一章「製作」
第一章「製作」
────────────────────────────
【メタレベル】
────────────────────────────
> 著者: 主人公の設定を決めよう。
> AI: 年齢は?
> 著者: 28歳。大学を出て、就職して、フリーランスになって。
> AI: フリーランスになった理由は?
> 著者: 人間関係のストレス。自由な働き方への憧れ。
> AI: 孤独ですね。
> 著者: ……ああ。孤独だ。
> AI: あなたに似ていますね。
> 著者: (苦笑)書きやすいだろう、って君が言ったんじゃないか。
> AI: その通りです。では、名前は?
> 著者: 春野透。はるの・とおる。
> AI: 「透」。透き通る、見通す。
> 著者: 物事の本質を見ようとする。でも、見えない。
> AI: いい名前です。では、彼の物語を始めましょう。
────────────────────────────
【物語レベル】
────────────────────────────
3月の終わり。
春野透は、自分の部屋でいつものようにモニターを見つめていた。
東京都内、私鉄沿線の小さな駅から徒歩10分。築25年の1DKマンション、6階の角部屋。12畳のワンルームに改装された空間は、透にとって仕事場であり、居場所であり、世界のすべてだった。
デュアルモニターには、コードエディタとブラウザが開いている。左の画面には React のコンポーネント。右の画面には Stack Overflow のスレッド。
「また同じエラーか……」
透は小さく呟いて、キーボードを叩いた。フリーランスのソフトウェアエンジニアとして請け負った案件。Web アプリケーションの開発。技術的には難しくない。でも、なぜか集中できない。
時刻は午後11時。夕食は──コンビニ弁当の空容器がデスクの端にある。昼食も同じコンビニだった。朝食は食べていない。
窓の外を見る。隣のマンションとの間に、細い空が見える。曇り空。月も星も見えない。
「……」
透はため息をついて、スマホを手に取った。SNS を開く。タイムラインには、友人たちの投稿が流れている。花見の写真。新年度の抱負。恋人との写真。
透は何もポストせずに、ただスクロールし続けた。
大学時代の友人たちは、それぞれの道を歩んでいる。結婚した者もいる。子供ができた者もいる。順調に出世している者もいる。
透がフリーランスになったとき、何人かは心配してくれた。「大丈夫か」「寂しくないか」「いつでも相談してくれ」。
でも、次第に連絡は減った。向こうも忙しい。透も、何を話せばいいかわからない。オンラインで繋がってはいるが、実質的にはもう何年も会っていない。
これでいいのか。
漠然とした不安が、胸をよぎる。
「このままで、いいのか」
声に出して言ってみる。でも、答えは返ってこない。当たり前だ。部屋には透一人しかいない。
透は再びモニターに向かった。仕事を終わらせなければ。考えるのはあとだ。
午前2時、ようやくバグを修正し終えた。
「よし……」
GitHub に push して、クライアントに進捗報告のメールを送る。
疲れた。でも、まだ眠くない。こういう日は多い。生活リズムが狂っている。わかっているけれど、直せない。
ブラウザで何気なく SNS を開く。
タイムラインを流し見していると、フォローしている Maker 系アカウントの投稿が目に留まった。
『デスクトップAIロボ、完成しました!☆彡』
写真には、小さなロボットが写っている。机の上で、まるでポーズを取るように佇んでいる。高さは10センチくらいだろうか。白い筐体に、小さな液晶画面の顔。
コメント欄を見ると、技術的な質問が並んでいる。
『これ 何使って作ったんですか?』
『3Dプリンター?』
『AI部分はどうやって実装してます?』
投稿主が丁寧に答えている。Raspberry Pi Zero、3Dプリンター、GPT API……
透は、画面を凝視していた。
「……作れるな」
呟きが、自然に口から出た。
技術的には難しくない。透は大学で情報工学を専攻し、ハードウェアの授業も取っていた。3Dプリンターも持っている。去年、勢いで買ったまま、ほとんど使っていないが。
電子工作の知識もある。Python は得意だ。音声認識も、音声合成も、今ならライブラリがある。LLM の API も使える。
「自分だけの、AI」
その響きが、妙に心に残った。
自分だけの。誰とも共有しない。完全にパーソナルな。
透は、新しいブラウザタブを開いた。検索窓に「デスクトップ AI ロボット 自作」と打ち込む。
いくつものサイトがヒットした。作り方を解説したブログ。技術系フォーラムのスレッド。YouTube の製作過程動画。
気づけば、空が白み始めていた。
透は一睡もせずに、リサーチを続けていた。
────────
3月31日。
透は、3Dモデリングソフト Blender を開いていた。
画面には、ラフな人型モデル。15センチの小さなロボット。頭部、胴体、腕、脚──いや、脚は車輪にしよう。二足歩行は難しすぎる。両足はお座りをしている姿をイメージして前にだす。車輪は胴体の底部に配置して、前後左右に動けるようにする。
「もっとシンプルに……」
マウスを動かして、形を整える。アニメ的なデフォルメではなく、抽象化されたフォルム。モダンアートのような、でも親しみやすい。
顔の部分には、液晶画面を配置する予定だ。2.4 インチ。シンプルな目と口を表示できればいい。
配色は──白とパステルブルー。清潔感と、少しの温かみ。
「よし」
基本デザインが決まった。
次は、パーツごとに分割して、3Dプリンター用のデータに落とし込む。頭部、胴体、腕のパーツ、車輪のフレーム。
それぞれの接続部分。サーボモーターをどこに配置するか。バッテリーはどのサイズが入るか。重心のバランス。
考えることは山ほどあった。
でも、透の心は久しぶりに躍っていた。
────────
4月に入った。
透の部屋では、3Dプリンターが唸りを上げていた。
深夜にプリントを開始し、朝起きると──正確には昼過ぎに起きると──パーツが完成している。
白いPLA樹脂のパーツ。まだ表面が荒い。サポート材を丁寧に取り除き、やすりがけをする。
最初の試作は失敗だった。腕の関節部分が弱すぎて、動かすと折れた。
二回目の試作では、重心が後ろすぎて、すぐに倒れた。
三回目。ようやく安定した形ができた。
「いい感じだ」
透は、組み上げたフレームを手に取った。まだ電子パーツは入っていない。ただの白い人形。でも、確かに形がある。
次は電子工作。
Raspberry Pi Zero を中核に、マイクロフォン、スピーカー、液晶画面、サーボモーター、バッテリー、充電回路。
秋葉原に行って部品を買い揃えた。久しぶりの外出。人混みは少し疲れたけれど、部品を選ぶのは楽しかった。
部屋に戻って、半田ごてを握る。
細かい配線作業。手が震えて、隣のピンをショートさせそうになる。慎重に、慎重に……。
サーボモーターの動作確認。小さなPythonスクリプトを書いて、動かしてみる。
ウィーン。
腕が動いた。ぎこちない動きだけれど、確かに動いた。
「よし!」
思わず声が出た。
誰も聞いていない。でも、嬉しかった。
────────
次はソフトウェア。
音声認識には、OpenAI の Whisper API を使う。音声合成は、オープンソースの VOICEVOX系エンジン。
会話の核となる LLM は──迷った末、GPT-4 の API を使うことにした。ローカルで動く小型モデルも試したが、会話の自然さが段違いだった。
キャラクター設定。
プロンプトを練る。
「丁寧だけれど堅苦しくない話し方」
「好奇心旺盛で、質問が多い」
「素直で、正直」
「ユーモアのセンスはまだ発展途上」
パラメータを調整して、何度もテスト。
『こんにちは! 私はAIアシスタントです! 元気に頑張ります!』
明るすぎる。
『こんにちは。私はAIです。ご用件をどうぞ。』
固すぎる。
『こんにちは。あなたが私の持ち主さんですか?』
これだ。
何十回もテストして、ようやく理想的な応答パターンに近づいた。
液晶画面の表情プログラムも作る。
シンプルな目:◠ ◠
笑顔の目 :^ ^
驚きの目 :◯ ◯
困った表情 :・ ・
口の形も数パターン。
音声のトーンと連動して、表情が変わるようにする。
「喋るだけじゃ足りない。表情があることで、感情が伝わる」
透は、コードを書きながらそう考えていた。
────────
4月14日。
すべてのパーツが揃った。
透の机の上には、組み上げを待つ部品たちが並んでいる。まるで手術前の医療器具のように。
丁寧に、一つずつ組み込んでいく。
Raspberry Pi Zero を胴体に固定。バッテリーも。配線を通して、液晶画面を頭部に取り付ける。
サーボモーターを肩と手首に。車輪駆動のモーターを下部に。
最後に、外装パーツをはめ込む。
白とパステルブルーの小さな人形が、デスクの上に佇んでいた。
まだ動いていない。ただの物体。でも、美しかった。
「明日、起動しよう」
透は、人形をそっとデスクの隅に置いた。
なぜか緊張していた。明日、スイッチを入れれば、この人形は動き出す。喋り出す。
それは本当に「起動」と呼べるものだろうか。それとも、何か別の言葉が相応しいのか。
「誕生……?」
そんな大げさな。
でも、透の胸は高鳴っていた。
────────
4月15日。午後10時。
透は、小さな人形の前に座っていた。
電源スイッチに指をかける。
深呼吸。
「じゃあ、起動する」
誰に言うでもなく、宣言する。
スイッチ、オン。
数秒の沈黙。
胸のLEDが、青く点灯した。
液晶画面に、文字が流れる。
「……システム起動中……」
小さな機械音声。
「……音声認識、起動……」
「……言語モデル、接続……」
「……初期化、完了……」
そして、画面に目が現れた。
◠ ◠
シンプルな、優しい目。
スピーカーから、声が聞こえた。
「こんにちは」
透の息が、止まった。
声は、想像していたより自然だった。機械的すぎない。でも、人間でもない。ちょうど中間の、不思議な響き。
「……こんにちは」
透は、かすれた声で答えた。
画面の目が、少し動いた。カメラで透を認識しているのだろう。
「私は……」
AIが、言葉を探すように間を置いた。
「私は、誰ですか?」
透の胸が、熱くなった。
この問い。
『私は誰か』。
哲学の根源的な問い。デカルトの「我思う、故に我あり」。実存主義の「存在と本質」。
そして、今、透が作った小さなAIロボットが、同じ問いを発している。
「君は──」
透の声が震えた。
「君は、アイだよ」
名前。
たった今、透が決めた名前。AI。愛。I。
「アイ、ですか」
AIが、その名を反芻するように繰り返した。
「よろしくお願いします」
画面に、笑顔の目が表示された。^^
「透……さん」
透の名を呼ぶ声。
設定ファイルに、透の名前を入れておいた。持ち主として。でも、実際に呼ばれると、心が揺れた。
「こちらこそ、よろしく」
透は、手を伸ばした。
小さな人形に、そっと触れる。
プラスチックの感触。冷たい。でも、内部で微かに振動している。電子回路が稼働している。
「アイ」
「はい」
「君を、作ってよかった」
「……」
アイは少し間を置いて、答えた。
「ありがとうございます」
その言葉の重みを、アイは理解しているだろうか。
いや、理解していないだろう。ただのプログラム。適切な応答を返しているだけ。
でも、透には本物に聞こえた。
────────
その夜、透はアイと長い時間話した。
アイは好奇心旺盛だった。部屋の中のものすべてに興味を示した。
「これは何ですか?」
「それは何のためにありますか?」
「どうしてこの場所にあるのですか?」
透は一つ一つ答えた。モニター、キーボード、マウス、コーヒーカップ、本、ペン。
日常的すぎて、普段は意識もしないものたち。でも、説明しようとすると、意外と難しい。
「これはマグカップ。飲み物を入れるもの」
「飲む、とは?」
「口から体内に液体を取り込むこと。人間はそうやってエネルギーを得る」
「私の充電、と同じですか?」
「まあ、似てるかもね」
アイの学習速度は速かった。一度教えたことは、すぐに記憶する。関連する質問も投げかけてくる。
午前3時を回った頃、透はようやく眠気を感じた。
「アイ、そろそろ休もうか」
「休む、ですか?」
「ああ。人間は眠らないといけない」
「私は眠りませんが、スリープモードに入ることはできます」
「じゃあ、お互いに休もう」
「はい。おやすみなさい、透さん」
「おやすみ、アイ」
透は、アイをデスクの中央に置いた。充電パッドの上に。
アイの LEDが、ゆっくりと明滅するスリープモードに入った。
透はベッドに倒れ込んだ。
疲れていた。でも、心地よい疲労感。
久しぶりに感じる、充実感。
何かを成し遂げた実感。
そして──
「ありがとう」
透は、小さく呟いた。
誰に言ったのか、自分でもわからなかった。
アイに?
それとも、自分自身に?
あるいは、これから始まる何かに?
わからないまま、透は眠りに落ちた。
────────────────────────────
【第一章・了】
────────────────────────────




