OpenAIのCodexに、ちょっと面白い機能が追加された。
Codex pets。
Pets. Now in Codex.
— OpenAI Developers (@OpenAIDevs) 2026年5月1日
Use /pet to wake your pet. pic.twitter.com/aAm4lLP4LW
しかも、ただ既存のキャラクターを選ぶだけではなく、自分でオリジナルキャラクターを作れるらしい。
これは試すしかない。
ということで、私はさっそくオリジナルキャラクター作成に取り掛かることにした。
あのTOJキャラ「けんいんぼうや」
今回作りたいのは、2019年のツアー・オブ・ジャパン(TOJ)で印象に残っているファンアート、「けんいんぼうや」だ。

この年のTOJを追っていた人なら、あの独特の存在感を今も覚えている人は私だけではないはず。元ネタは、ロードレーサーの佐野淳哉選手と、街角でおなじみの「とびだしぼうや」を融合させたようなファンアート。東京ステージでは、Cyclowiredにも「『牽引坊や』も東京にたどり着いた」という写真が掲載されたほどなのだ。
つまり、ただの自転車キャラではない。
「佐野淳哉選手らしさ」
「とびだしぼうやらしさ」
「TOJのファンアート感」
「小さなペットとして成立する視認性」
このあたりを全部、限られたサイズのキャラクターに詰め込む必要がある。
ここが今回の一番面白いところだった。
いきなりhatch-petで作り込まない
最初に考えたのは、Codexのhatch-petだけでキャラクターを作り込む方法だった。
ただ、実際に触ってみると、これは少しもったいない。
hatch-petはトークンをかなり消費する。
もちろん、キャラクターの方向性を直接詰めていくことはできる。
しかし、髪型、表情、服装、ポーズ、色、元ネタの要素、シルエット、デフォルメ具合……と細部を調整しようとすると、試行回数がどうしても増える。
小さなキャラクターほど、実は情報設計が難しい。
リアルな一枚絵なら、多少情報量が多くても絵として成立する。
しかし、ペットのような小さなキャラクターでは、細部を入れすぎると潰れる。
逆に削りすぎると、元ネタが伝わらない。
だから今回は、あえて前工程としてGPT-Image2を使った。
GPT-Image2で「情報量の整理」を先にやる
私がGPT-Image2でやりたかったのは、単にきれいな画像を作ることではない。
目的は、小さなキャラクターに必要な情報と、不要な情報を切り分けることだった。
たとえば、今回の「けんいんぼうや」では、入れたい要素が多い。

佐野淳哉選手を想起させる雰囲気。
自転車競技選手らしいサイクルジャージ。
とびだしぼうや的な立ち姿。
ファンアートとしての親しみやすさ。
Codexペットとしての小ささと視認性。
これを全部そのまま詰め込むと、ただの情報過多なキャラになる。
そこで、まずGPT-Image2でキャラクター案を出しながら、どの要素を残すべきかを確認した。
ポイントは、細かい描き込みではなく、シルエットと記号性だった。
小さなキャラクターで一番大事なのは、見た瞬間に何者かわかること。
「自転車選手っぽい」
「とびだしぼうやっぽい」
「ファンアートっぽい」
「けんいんぼうやっぽい」
この印象が残れば勝ち。
逆に、ジャージの細かな柄やロゴ、リアルな体格、顔の細部などは、ペット化したときには潰れやすい。
そこを無理に再現しようとすると、キャラクターとして弱くなる。
再現性で重要だったのは「元ネタの構造」
今回難しかったのは、「佐野淳哉選手」と「とびだしぼうや」を混ぜるという点だった。
これは単に、選手の画像をデフォルメすればよいわけではない。
元ネタの構造を整理すると、こうなる。
まず、ベースにはロードレーサーらしさがある。
サイクルジャージ、競技者らしい体のライン、スポーティな印象。
そこに、とびだしぼうやの要素が乗る。
正面性、単純化された顔、少し記号的な立ち姿、道路標識的なわかりやすさ。
そして最後に、TOJのファンアートとしての文脈が加わる。
ガチの似顔絵ではなく、見る人が「ああ、あれね」とわかるくらいの親しみやすさ。
この3つを混ぜる順番を間違えると、キャラが崩れる。
佐野淳哉選手に寄せすぎると、ただのミニ選手になる。
とびだしぼうやに寄せすぎると、ただの道路標識キャラになる。
TOJ文脈が弱いと、ファンアートとしての意味が薄くなる。
だから、GPT-Image2ではまず「どの要素を主役にするか」を探った。
私の結論としては、主役はとびだしぼうや的な記号性。
そこに、サイクルロードレースの要素を足す。
さらに、元ネタを知っている人には「けんいんぼうや」とわかる程度に寄せる。
このバランスが一番よかった。

hatch-petには「完成形」ではなく「整理済みの設計図」を渡す
hatch-petでいきなり細部を詰めるのではなく、GPT-Image2で方向性を固める。
これには明確なメリットがある。
hatch-petに渡す段階で、キャラクターの設計が整理されているからだ。
たとえば、こんな情報をあらかじめ固めておく。
キャラクターの頭身。
正面向きか、横向きか。
顔のパーツはどこまで単純化するか。
髪型はどの程度残すか。
服装はどの色を優先するか。
ロゴや模様をどこまで省略するか。
ポーズは走るのか、立つのか。
元ネタらしさは、顔で出すのか、服で出すのか、シルエットで出すのか。
ここを曖昧にしたままhatch-petに投げると、毎回違う方向に解釈されやすい。
逆に、GPT-Image2で事前に試しておけば、hatch-petでは「キャラクター化」に集中できる。
これはかなり大きい。
トークンを節約するという意味でも重要だが、それ以上に、キャラクターの一貫性を保ちやすい。
小さなキャラ作成のコツ
今回やってみて、Codexペット用のキャラクター作成にはいくつかコツがあると感じた。
まず、情報を入れすぎないこと。
小さなキャラクターでは、細部はほとんど見えない。
だから、再現したい要素を全部入れるのではなく、見た瞬間に伝わる要素だけを残す。
次に、シルエットを優先すること。
服の柄や顔の細部よりも、キャラ全体の形のほうが印象に残る。
頭の大きさ、体の小ささ、立ち姿、手足の角度。
このあたりでキャラクター性が決まる。
そして、元ネタの「見た目」ではなく「構造」を再現すること。
今回で言えば、佐野淳哉選手をリアルに似せることより、
「ロードレーサー × とびだしぼうや × TOJファンアート」
という構造を崩さないことのほうが大事だった。
最後に、GPT-Image2を下絵・設計工程として使うこと。
hatch-petで完成まで持っていくのではなく、事前にImage2で情報量を整理する。
これだけで、かなり作りやすくなる。
Codexのカスタムペット「けんいんぼうや」完成!
— はしもととおる (@spacevision) 2026年5月3日
Claude codeメインで使っていたけど、ぼうや見るためにCodexも使いたくなるねぇ。カイル君と仲良くね pic.twitter.com/uoxwSAZY8P
生成AIでキャラクターを作る面白さ
今回の「けんいんぼうや」作りで改めて感じたのは、生成AIでキャラクターを作る作業は、単なる画像生成ではないということだ。
むしろ、編集に近い。
何を残すか。
何を削るか。
どこまで似せるか。
どこから別キャラとして成立させるか。
その判断の連続だった。
特に、元ネタがあるファンアート系のキャラクターでは、再現性とデフォルメのバランスが難しい。
似せすぎると重くなる。
削りすぎると伝わらない。
小さなペットにすると、その難しさがさらに出る。
だからこそ面白い。
