uchan note

プログラミングや電子工作の話題を書きます

OS自作入門の出版を振り返る

この記事は 自作OS Advent Calendar 2021 の 4 日目の記事として書かれました。

人生の一大事

今年は私にとって大きな出来事がありました。それは出版と結婚です。この記事では前者について述べます。

2021 年 3 月に ゼロからの OS 自作入門 を出版しました。 OS 作りに関する知識が無い状態から始めて、30 章かけて OS を手作りするという本です。 この本の出版に際して書いたブログ記事はこちらです 『ゼロからのOS自作入門』に込めた思い - uchan note

f:id:uchan_nos:20211204103344p:plain
ゼロからのOS自作入門の表紙画像

この本は約 3 年の執筆・開発期間を費やした書籍です。 人生の短くない時間を捧げたものなので、大きな愛着があります。

この執筆に際し、MikanOS という OS を自作しました。 今まで、OS をちょっと作っては飽き、また再燃してはじめから作り直しては飽き、を繰り返していた私がここまでの完成度の OS を作り上げることができたのは、本を出すという目標があったからこそでした。

売れ行き

出版から今までの売れ行きはお陰様で好調で、紙版が現在第 3 刷です。

ニッチな分野の技術書としてはとても売れている方ではあると思いますが、ライバル書よりは低いです。 勝手にライバル視している「30 日でできる!OS 自作入門」ですが、何と、2006/2/28 の出版から 2 ヶ月も経たない 4/13 の時点で第 4 刷になっているのです。 そして 2008 年には 12 刷、2019 年には 23 刷になっています。凄すぎますね。 増刷スピードもそうですが、10 年以上の長きに渡って人々に必要とされているのも大変尊敬します。

刷数がライバル書より伸びないのは、ある程度は割り引いて考える必要があります。 2006 年にはライバル書の電子版は無く、紙版でしか供給されません。 一方、「ゼロからの OS 自作入門」は電子版もあります。 電子版はいくら売れても刷数には影響を与えませんから、同じ販売部数であれば必然的に刷数に差が出ます。

少しジャンルは違いますが、同系統の本である「CPU の創りかた」は 2020 年 11 月の時点で 31 刷であることを確認しています。 2003 年に出版されてから 17 年、売れ続けているわけです。脱帽。

uchan のこれから

「ゼロからの OS 自作入門」の目的は、多くの人に OS 作りの楽しさを味わってもらい、あわよくば低レイヤの世界に興味を持って足を踏み入れていただきたい、というところです。 この思いはもちろん今も抱き続けていて、今年 8 月~10 月に開催されたセキュリティ・キャンプ全国大会 2021 でも「OS 自作ゼミ」を引き続き担当しました。 また、毎週土曜日夜の「MikanOS もくもく会」(今は「雑談会」という名目でやってますが、MikanOS 関連の質問は大歓迎です)も継続しています。

一方、書籍を書き上げ、私の中では「OS の自作」には一定の満足感というか、やりきった感が芽生えたのも事実です。 私が「OS の自作」という概念に触れる前は電子工作(マイコン回路とプログラミングを主体として)をやっていたのもあり、 今はちょっと OS の自作を離れ、電子回路、あるいは CPU といったところを探検しようとしています。

f:id:uchan_nos:20211204105402j:plain
FPGAで作った任意波形発生器

これは OS とおさらばするという意味ではありません。 むしろ、OS をより深く理解する、より面白くするために、OS よりも下にあるハードウェアを探求しようということです。 どんどんと下に潜っていて、底なし沼のようです。 将来的には MikanOS を自作 CPU で動かしてみたいです。 あるいは、OS だけでは実現できない機能を自作の電子回路と OS を組み合わせることで実現するのも面白そうですよね。

OS を作っていると様々なデバイスを制御するわけですが、それらはレジスタ、あるいは IO ポートという、デジタル信号の世界で制御できるようになっています。 あたかもメモリを読み書きするかのようにデバイスを制御できます。 OS は、レジスタインターフェースの先がどのように実現されているかは気にせず、仕様通りのコマンドをレジスタに書けば、あとは裏に控えた電子回路がうまく処理してくれます。

逆に言えば、OS を作っているだけではレジスタの先にどんな回路があるのかが分からないということでもあります。 「OS を自作するとコンピュータ全体を支配することができる」という旨のことを時々言っていますが、これは半分嘘です。 全体的な支配はできるけれども、レジスタから先(末端の部分)は支配できないからです。 レジスタに書かれたコマンドをどうやって実行するかは、そのデバイス自身が決めることであり、OS は手が出せないのです。

ということで、最近の uchan は電子回路に関する発言が多めになっていますが、いずれ、OS に戻ってくるときがあるでしょう。 OS の自作に興味を失ったわけではないので、自作 OS 関連で何かあれば、気軽に話しかけていただいて構いません。 (もちろん電子工作の話題も歓迎です。)