なぜ『作って理解するOS』は1072ページになったのか ――監修者⁠⁠・川合秀実氏が語る⁠⁠、32ビットOSと64ビットOSを「両方作る」意味

OSを作りながら、コンピュータの本質に迫る。全1072ページにわたる重厚かつ濃密なOS入門書『【改訂新版】作って理解するOS x86系コンピュータを動かす理論と実装』が、2026年10月26日に発売される。
本書の初版は2019年に発売され、「⁠ITエンジニア本大賞2020」では「技術書部門」のベスト10にもノミネートされた。今回の改訂新版では、UEFI環境で起動する64ビットOSの実装を行う第4部が新たに追加され、300ページ超の大幅増補となっている。
本稿では、本書の巻頭に収録された監修者・川合秀実氏による「発刊によせて」を抜粋して掲載する。

発刊によせて

みなさんこんにちは! 私は『30日でできる! OS自作入門』の川合秀実です。

今あなたが手に取っている『⁠【⁠改訂新版】作って理解するOS』は、大変に意義のある本です。今まで国内外でOSの作り方を説明した書籍がいくつも出版されてきましたが、その中ではっきりと異彩な輝きを持っています。それを正しく理解された上で本書を読まれるのなら、期待を裏切られることはないと私が保証します。

順を追って説明させていただきます。2019年に初版の『作って理解するOS』が発行されました。私は光栄にも監修を任されて、「⁠発刊によせて」の文章を書くことになりました。そこで私は(いいところをたくさん指摘した上で⁠)⁠、この本はなぜ32ビットモード用で書かれているのだろう、今はもう64ビットモードでのプログラミングが主流なのに、みたいな生意気なことを書きました。しかし内心では、モードの違いなんて些細な問題で、扱いやすい32ビットモードで説明するほうがOSを理解するという本書の目的には合っている、ということも分かっていました。私が当時こういう言い方を選んだのは、64ビットモード用のOSの作り方の本が望まれていることを時代の空気として知っていたので、その人たちに「そういう目的なのであれば他の書籍をあたったほうがいいですよ」いうことを伝えるためでした。

今回改訂版を書かれるということで、私はふたたび監修の機会をいただけました。改訂のメインがどこなのかを伺ったところ、64ビットモード対応だと教えていただきました。それはとてもいいなと思い、私は早速原稿を読みはじめました。……しかし途中で、私はかなり不安になりました。レガシーBIOSの説明がそのまま残っていて「あれ? この説明で大丈夫なのだろうか?」と思ったのです。最近のPCはUEFIによるブートがメインで、一部の機種ではレガシーBIOSが使えなくなっているためです。

その不安は第4部に入って一気に解消されます。ここからUEFIで起動するOSの実装がはじまるからです。そしてしばらく読んでいるうちに、私は驚きの事実に気づきます。「⁠本書では、32ビットモード用のOSと64ビットモード用のOSを別々に作っている?!」と。

いや、だって64ビットモードに対応すると言ったら、普通は作るOSを32ビットモード版ではなく64ビットモード版に差し替えるのだろうと思うわけです。説明としてもそれが自然でしょう。しかし本書では、32ビットモード用のOSはそのまま残して、64ビットモード用のOSを別個に作るという方法をとっているのです。当然ですがページ数はかなり多くなっていて、編集部の担当さんからは多少内容を削って縮小するかもしれないと示唆されていました。しかし私は「それはいけない!」と思い、大急ぎでこの原稿の意義を説明した文章を書いてメールで送ったのでした。

本書では1冊の本の中に、「⁠同一作者によって・同じ言語で・ほぼ同時期に書かれた・おおむね同等の機能を有するOS」が、32ビットモード用と64ビットモード用で作られて、それぞれ詳細な説明がついているのです。双方を比較して理解しようと思うのなら、これ以上の本はないでしょう。しかも、似たような本を書こうと考える人は、今後も、おそらく一人も出てこないでしょう。なぜならOSを1つ作るだけで十分に疲れてしまうからです。また出版社も、ページ数が膨大になるのは容易に予想できるので、企画段階でOKを出すことはないでしょう。以上の考察により、今後のことを考えても、この本は唯一の本になる可能性が非常に高いです。ですからよほどのことがない限り、編集部は説明を削ってはいけないのです。

そもそも本書が成立したのは奇跡みたいなところがあります。もし最初から著者の林氏が普通に64ビットモード用にOSを書いていたらどうだったでしょうか。あとから改訂で32ビットモード用のOSを追加したいと言っても、出版社は相手にしてくれないでしょう。だから最終的に2つのOSを載せるのだとしたら、最初は32ビットモードで書く必要がありました。もし林氏が最初からこのプランで本を書いていたのだとしたら、その戦略は天才的です。私が生意気な前文を書くことまでプランに含まれていたかもしれません。いやさすがにそんなことはないだろうと思っているのですが、でも本当のところは林氏のみが知るところであります。

32ビットモード用のOSと64ビットモード用のOSを比較することの意義について説明させてください。x86に64ビットモードが追加されたとき、他にいくつもの改良がされています。単にビット数がちょっと変わった程度の変更ではなかったのです。

しかしコンパイラや開発ツールなどの対応が優秀で、アプリケーション開発においては32/64で共通のソースコードを使った開発が可能なことも多く、その差異をあまり意識しないで済みました。一方でOS開発においては、ブートプロセスのデフォルトがレガシーBIOSからUEFIに変わったことも重なって、かなり大きく変わっています。また機械語やアセンブラを意識した開発では、浮動小数点演算の命令体系がFPU(x87)からSSE2に変更されて、これも差異としては大きなものなのですが、本書ではこれについてもきちんと説明されています。

私たちのようなOS開発を趣味とする者にとっては、これらの差異は進化なのかどうかという点が気になります。つまり、以前よりも使いやすくなっているのだろうかということです。64ビットモードになったことで、アドレス空間は十分に増えて、整数レジスタのビット幅が増えて、しかもついでにレジスタ数も8本から16本に増やしてもらえました。また、SSE2命令はレジスタベースの命令体系になって演算の高速化がやりやすく、とても進化を感じます。さらに、UEFI化によって64ビットモードのままサービス関数を呼ぶことができるようになりました。ただし、込み入った約束事も追加されています。

これらの差異を実感するには書き比べてみるのが一番です。どこがどう便利になったのか、新たにどんな設定項目ができたのか、書き比べればはっきりと実感できます。そしてこれをやろうと思ったら、「⁠同一作者によって・同じ言語で・ほぼ同時期に書かれた・おおむね同等の機能を有するOS」というのが非常にありがたいのです。もはや理想的といってもいいでしょう。作者が同一で同時期に書かれたものならば、書き方のくせなどによる影響は最小限にできます。もし32/64による差異と作者由来の差異が混ざっていた ら、比較する際には「この差異は主にどちらに起因するのか?」を検討しなければならなくなって、手間が増えてしまうのです。

改訂前の「発刊によせて」を私が書いた時は、本書がどういう意図で書かれたものなのか十分には理解できていませんでした。それは「はじめに」で説明されていたのですが、私が事前に読ませていただいた原稿には、これが含まれていなかったのです。その「はじめに」にある通り、本書はOSの入門書であると同時にコンピュータの仕組みを説明している本です。最初から最後まで読み切ればOSやコンピュータに関するかなり広範な知識を得ることができます。そしてその知識を生かして簡単なOSを作ってみようと思われたら、そのための一通りの知識も実例をもって説明してもらえます。そういう本です。

コンピュータの仕組みを説明しているだけの本なら、他にもたくさんあることでしょう。しかしそれを読み終わった後で、ではこの知識を活用してOSを作ってコンピュータを思い通りに動かしてみようなどと思っても、何から手を付けたらいいのかまったくわからず、結局別の書籍を手に取って最初からやることになります。それが普通ですが、明らかに二度手間です。でも本書は違います。そのままOSを作成する流れになっているからです。それまでに説明された知識がどう生かされるのか、はっきりと実感することができるのです。本書を読めば分かりますが、OSを作り始める直前までの知識は説明されているので、ここまで来ておきながら別の書籍を探してきてそちらを読むのはもったいないのです。

コンピュータの仕組みを説明するとしたら、そこはやはり機械語やアセンブラを基礎として説明することになります。実際、コンピュータはC言語やPythonで動いているわけではないのですから、C言語などの高級言語で説明するのは不正確です。そしてアセンブラで説明をした場合、流れとしてはそのままアセンブラだけでOSを実装していくことが自然ですし理想でしょう。レジスタなどもちゃんと意識してプログラムを書きます。著者の林氏はアセンブラのみでOSを書ききるだけの特別な才能があり、だからこそ本書は成立したのだとも言えます。

私はアセンブラというプログラミング言語が好きで、だからニヤニヤと笑みを浮かべながら監修をしてきたわけですが、林氏はそういう好き嫌いなどでアセンブラを選択したのではなく、本書の「コンピュータの仕組みを説明する本」としての一貫性のためにアセンブラにしたのだろうと、今ならわかります。

なお、本書ではUSBについての説明はありません。したがって、USB接続のキーボードはUEFIのブートサービス終了後はおそらく認識できないでしょう。ですからUSB接続のキーボードしかない環境の場合は、実機ではその部分だけはうまく動かせないことになります。多くのノートPCはキーボードが内部でPS/2インタフェースで接続されているのでたいていは問題ないと思いますが、デスクトップ機ではUSB接続がほとんどだと思われますので注意が必要です。いずれの場合でもエミュレータ上で実行する分にはまったく問題はありません。

USBコントローラやUSBデバイスの制御は非常に複雑で、それを本書の詳しさで説明するとさらにページ数が大幅に増えることが予想されます。それを思えば、あえてUSBキーボードに手を出さなかったのは賢明というか、やむを得ないと私には思われます。

さてここを読んでいる方々の最大の関心事は、この本をさらに読み進めるかどうかを決めるための判断材料だろうと思います。私としては、この歴史に残る1冊をぜひコレクションに加えていただくことをおすすめします。きっと若干の悩ましさを感じられるのは、すでに初版をお持ちの方でしょう。イントロダクションから第3部までは大きくは変わっていないため、そこが悩ましいのではないかと思われます。しかし歴史的な構成になったのはこの改訂版のほうなので、熱心な初版の読者としてはやはりこれを逃してはもったいないと私は思います。……でも初版のほうだって重要です。初版が十分な評価を得たからこそ、この改訂版は成立しているとも言えるのです。つまり本書は著者・出版社だけではなく、初版の読者の協力なしには成立しなかったと思うのです。もし初版をすでにお持ちなのでしたら、それは協力の記念としてぜひ大事にしてほしいと私は思います。

2026年9月 川合秀実

おすすめ記事

記事・ニュース一覧