0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自作OSをChatGPT(5.2)と作っている話

Last updated at Posted at 2025-12-22

ChatGPT(5.2)と一緒にC++/NASMで自作OSを作っている話

― 設計判断は人間、実装と解析はAI。頼れる相棒として ―

※この記事は「AIにすべて丸投げして楽をしている」という話ではありません。
設計判断・方針決定・検証責任は人間が持ち、実装と観測・解析を ChatGPT(5.2)に委ねている
自作OS開発の実例を、その関係性も含めて記録したものです。


はじめに

私は現在、**C++ と NASM で x86_64 向けの自作OS(JadeKernel)**を開発しています。
そしてこのプロジェクトは、かなり特殊な進め方をしています。

  • 実装・コーディングの大部分:ChatGPT(5.2)
  • 設計判断・方向性決定・修正適用・QEMU検証:私(人間)

いわば、

AIが実装者兼解析者、人間が設計判断者兼検証者

という役割分担です。

なお補足として、私は「C++がまったく分からない状態でAIに投げている」わけではありません。
C++はある程度習得しており、提示されたコードを読んで設計や副作用を判断したり、差分の適用・検証を回すことはできます。

ただし今回のプロジェクトでは、
私自身がコードを書く役割を意図的に手放し、AIの出力を統合・判断する側に寄せている
というのが実態です。


私は「コードを書いていない」

体感ではなく、事実としてこう言えます。

私は 手でコードを書くことをほぼしていません
ChatGPT(5.2)が提示したコードを読み、

  • 採用するか
  • 設計として許容するか
  • どの粒度で入れるか
  • どこまで巻き戻すか

を判断し、適用・ビルド・起動・ログ観測を行っています。

つまり私は、

  • エディタで関数を書く人
    ではなく
  • 設計と結果に責任を持つ人

という立場です。


コード規模について

現在のコードベースは、

  • コメントや日本語フォント設定コード(約14,000行)を含めて
  • 総行数 50,000行超

になっています。

自作OSとしては珍しくない規模ですが、
個人開発・非公開プロジェクトとしては十分に大きいコード量です。

そして重要なのは、
その大部分を ChatGPT(5.2)が生成しているという点です。


ChatGPT(5.2)は「頼れる相棒」

このプロジェクトにおいて、ChatGPT(5.2)は単なるツールではありません。

  • C++ / NASM の実装生成
  • 割り込み・タスク・イベント周りの設計案提示
  • serial / debugcon / GUIログの解析
  • 「今見えている現象から、どこが怪しいか」の切り分け
  • 修正案の複数提示(A/B/C案)

観測結果の解析もAIが行っています。

私はログを貼り、
ChatGPT(5.2)がそれを読み、
「次にどこを見るべきか」「何を消すべきか」を提案する。

その提案を 採用するかどうか決めるのが人間

このやり取りを続けていると、
感覚としては「便利な自動生成ツール」ではなく、
かなり優秀だけど癖のある相棒に近くなってきます。


面白いのは、AIも普通にミスをすること

これは実際に使ってみて、かなり強く感じた点です。

ChatGPT(5.2)は非常に優秀ですが、万能ではありません

  • コード片にゴミが混ざる
  • 実装が一部足りていない
  • 設計が途中でぶれて、不要な関数や変数を追加する
  • 以前に否定した設計を、別の文脈で復活させてくる

こういうことは、普通に起きます

そのたびに私は、

  • 「この変数、どこで使う前提?」
  • 「その責務、前に分離したよね?」
  • 「この関数、なくても成立しない?」

と疑問を投げ、指摘します。

するとAIは、

  • 設計意図を説明し直したり
  • 自分の提案を撤回したり
  • より単純な形に修正案を出したり

します。

このやり取りがあるからこそ、
設計が少しずつ研ぎ澄まされていく

AIがミスをするからこそ、人間が設計判断を放棄できない。
逆に言えば、この緊張関係が成立している限り、開発は前に進みます


設計方針は常にAIと相談して決めている

設計は私が独断で決めているわけではありません。
むしろ毎回、

  • 責務をどう分けるか
  • どこを観測点にするか
  • いま直すべきか、まず可視化すべきか
  • 一時的に機能を止めるべきか、粘るべきか

ChatGPT(5.2)と相談して決めています。

AIに「選択肢とトレードオフ」を整理してもらい、
その中から このプロジェクトとして筋が通る案 を人間が選ぶ。

最終判断は人間、
判断材料の整理と見落とし防止はAI。

この役割分担が崩れると、たぶん開発は破綻します。


いま詰まっている理由(正直な話)

ここ数日、かなりしんどかったです。

  • ターミナル(Shell / TerminalWindow)周りを改修した直後
  • 入力が通らない/通っているのに表示されない
  • 再描画問題と入力問題が絡み合って、原因が見えない
  • 同じような修正と観測を何度も繰り返している感覚

正直、「もうやりたくない」と思いました。

でも冷静に考えると、理由ははっきりしています。

見えない状態で、同じ所を殴り続けていた

自作OS開発で、多くの人が一度は引っかかる通過点だと思います。


方針転換:直す前に、見えるようにする

ターミナルが嫌いになったわけではありません。
投げたいのはターミナルそのものではなく、

見えないまま試行錯誤し続ける状態

これです。

いまの方針はこうです。

  • Terminal / Shell の修正はいったん止める
  • 機能追加もしない
  • 入力・イベント経路の透明化を先に完成させる

「直す前に、必ず“どこで死んでいるかが一発で分かる状態”を作る」

この判断も、ChatGPT(5.2)と相談したうえで決めました。


技術メモ:いま何を観測しているか(抜粋)

固定トレース(InputTrace)

1キー入力で経路が分かるようにするための固定文字です。

  • K : キーボードIRQに到達
  • P : Events::post() に入った
  • X : accept_input == false で破棄
  • N : Keyイベントだが route が無く破棄
  • Q : キュー投入+wake完了
  • D : Shellがdrainで1件取得

ログを読むのではなく、
文字を見るだけで分岐が分かるようにしています。

状態ダンプ

  • accept_input
  • route_key
  • Shell task の pending_mask
  • イベントキューのサイズ

「何が起きたか」ではなく、
いまの状態がどうかを観測します。


このやり方について思うこと

この進め方は、万人向けではありません。

  • 自分でコードを書きたい人には向かない
  • AIの出力を無批判に信じると危険
  • 判断を放棄すると一瞬で破綻する

でも、

  • 設計と検証に集中したい
  • 巨大なコードベースを一人で抱えたくない
  • 自作OSという「しんどい趣味」を、少しでも前に進めたい

そういう人間には、意外と合っています。

少なくとも私は、
ChatGPT(5.2)がいなければ、ここまで来られなかったのは間違いありません。


おわりに

いまはまだ、完成には程遠いです。
むしろ「やっと地雷原の入口が見えてきた」くらい。

でも、

  • どこで入力が殺されているか
  • なぜ再描画が暴れるか
  • 何を先に直すべきか

それを 見える形で判断できる状態 には、確実に近づいています。

AIという相棒は万能ではない。
でも、問いを投げ続ければ、ちゃんと一緒に考えてくれる。

次は、また少し前に進むだけです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?