普段何気なく使っているOSやブラウザ。その「中身」を、自分の手で作りながら学べるようにしたい──この要望を実現するため、土井麻未さん執筆の『[作って学ぶ]ブラウザのしくみ』と、hikaliumさん執筆の『[作って学ぶ]OSのしくみⅠ』という2冊の書籍が技術評論社から出版されています。
その発売記念イベントである「[作って学ぶ]OSとブラウザ~IT基礎技術を手を動かしながら学ぼう!」が2025年6月6日に書泉ブックタワーで開催されました。イベントでは、土井麻未さんとhikaliumさんの2人による、本書の読み方やこれら基礎技術への取り組みが語られました。本稿ではその模様をレポートします。
hikaliumさんアバター状態(左)と土井麻未さん(右)
自己紹介
まずは、2人の自己紹介から。
hikaliumさんがOSに興味を持ったのは小学生のころととても早く、『30日でできる! OS自作入門』(川合秀実著、マイナビ出版、2006年)を読んでOSを作っていたそうです。それからもOS開発への興味は衰えず、現在はGoogleでChromeOSの開発を行っています。まさに「OSが人生」と言って過言ではないでしょう。自作OSを含む低レイヤーの開発の軌跡は、GitHubのリポジトリで見ることができます。
一方、土井麻未さんは、コンピュータ自体に興味を持ったのも大学生のころと、hikaliumさんとは対照的です。服飾などデザインの勉強をしていて、たまたまWebサイトの作成に興味を持ったことがきっかけでした。そのあとにフロントエンドやバックエンド、インフラなどを学んだそうです。インターンでコンピュータの基礎を学び、低レイヤーへの興味が深まったといいます。そうしてブラウザへの興味も生まれ、現在はGoogleでブラウザ開発に従事しています。
二人の出会いと現在の活動
本イベントの最後のQ&Aで、二人の出会いについて質問がありました。二人は前述のインターンで知り合ったそうです。
土井麻未さんから見たhikaliumさんの第一印象は「すごい人がいる」だったそうです。当時、土井麻未さんは低レイヤーに関する知識はほとんど持っていなかったため、自分とはかけ離れた印象を持ったのでしょう。
一方、hikaliumさんは土井麻未さんの学ぶ意欲に感銘を受け、上述した『30日でできる! OS自作入門』を勧めたり、勉強会に一緒に参加したりしたそうです。土井麻未さんは理解を深めるためにエミュレータを作るなども行い、その様子はGitHubのリポジトリで見ることができます。
こうして出会った二人は、現在YouTubeチャンネル「低レイヤーガール」で低レイヤーに関する話題を中心に配信しています。
低レイヤーガールのYouTubeチャンネル
書籍の他己紹介
2つの書籍のコンセプトは共通しています。日常的に触れているOSもブラウザもリッチすぎるため、理解するのが難しい。そこで、必要最低限の機能にしぼり、実装してみることでしくみを学ぶというのがこの「作って学ぶ」シリーズのコンセプトです。
書籍のなかでは、実装を機能ごとなど段階的に行うことで、追加するコードがどのような意味を持っているのかについて理解しやすくしています。また、追加するコードは太字で表記してわかりやすくしています。
新たに実装する部分は太字で表示されている(『[作って学ぶ]OSのしくみⅠ』508ページ)
それぞれの書籍の特徴については、相手が執筆した書籍をお互いに紹介し合う「他己紹介」という形を取りました。
『[作って学ぶ]ブラウザのしくみ』
まずはhikaliumさんから、土井麻未さんが執筆した『[作って学ぶ]ブラウザのしくみ』の紹介がありました。
本書では、ブラウザを少しずつ実装していきます。それが『[作って学ぶ]OSのしくみ』で実装しているOSで動作するという作りになっています。ブラウザを実装してみる書籍は他にもありますが、本書はHTMLだけでなく、簡単なJavaScriptやCSSも動作するのが特徴です。また、実装に必要な仕様書をその都度引用・参照しているため、副次的に仕様書の読み方の勘所もわかるという意外な効用もあるといいます。
フレームワークやAPIなど表面の知識は学びやすく見栄えが良いものの、進化が早くすぐに使えなくなります。一方、本書で扱うツリー構築やレンダリングなどの裏側の知識はそう簡単には変化しないため、いつまでも使える知識です。これらの知識は、Webアプリケーションのパフォーマンス改善や複雑なバグの原因特定の際に、あらゆる開発者がいずれ直面する課題を解決する大きな助けになると伝えています。
『[作って学ぶ]OSのしくみⅠ』
次は土井麻未さんから、hikaliumさんが執筆した『[作って学ぶ]OSのしくみⅠ』の紹介がありました。
OSを自作する書籍は他にもかなりあるものの、おそらくRustで実装している唯一の本が本書です。コードにhikaliumさんらしさが反映されているのも面白く、リファクタリングの過程も掲載されているため参考になるといいます。また、口語で書かれているのも話しかけてくれている感じで良いとのことでした。
また、2進法などPCの基礎的な部分についても書かれている一方、応用的な部分までしっかり解説されています。マルチタスクの実装方法としてasync/awaitを使っているのも珍しく、参考になるそうです。
ハードウェア制御の部分では、各種ハードウェアに対応する大変さが垣間見えたそうです。これについてhikaliumさんは「USBは何でも挿せて便利だが、裏ではソフトウェアが頑張っている。仕様書を探すのも大変」とコメントしています。
hikaliumさんからはⅡ巻の内容についても言及がありました。Ⅰ巻では実装できなかった「ネットワーク通信・プロトコルスタック」「NIC制御」「GUI」「別バイナリのロード(アプリケーションの実行)」などの機能の実装について解説する予定とのことです。
Q&A
本イベントの最後には、来場者からの質問に回答する時間が設けられました。
Q. 自分でもカーネルの実装などを行い学習しているが、行き当たりばったりの実装になってしまって時間を浪費している感じがする。どのようにしているか。
hikaliumさんは「これは難しい課題である」と述べました。自分も最初は行き当たりばったりで書いて、概要などが理解できたら前のコードは捨てて書き直すことが多いそうです。捨てるのは勇気がいりますが、書き直したらもっと良くなるので、この方法を取っていると語りました。土井麻未さんも、RISC-Vのエミュレータは2回書いたと話しています。
Q. ブラウザにどのタグ、どの機能を実装するかの選別はどのよう考えたか。
土井麻未さんは「この部分はすごく考えた」と述べ、「ブラウザとは何か」を真剣に考えたといいます。今イメージするブラウザに必須の機能としてHTML、CSS、JavaScriptが解釈できることが必要と考え、それに合うタグを実装しました。最初はhttp://example.com/が表示できる程度を目指し、あとからCSSやJavaScriptも実装できそうだったので追加した、という流れだったそうです。
Q. OSもブラウザもC言語やC++を使って実装されることが多いが、Rustで実装して良かったことと大変だったことを教えてほしい。
この質問に対してまずは土井麻未さんが回答しました。ライフタイムなどを考える必要があったりして、ブラウザをRustで実装するのは大変なことが多かったと振り返ります。コードがきれいに書けてバグが出にくいかもしれないけど、その分コードを書くのは大変だったそうです。
hikaliumさんも、OSを動くところまで持っていくのはRustでの実装例がないので大変だったそうです。しかし「Rustに慣れると、もうCでOSを書きたくなくなるくらい」とのこと。コンパイル時のチェックが厳しいものの、コンパイルできて動けばバグが発生することはほぼないというのは大きなメリットで、コンパイルエラーもわかりやすく出してくれると語りました。
最後に
OSやブラウザをゼロから開発するのはとても大変な作業です。hikaliumさんも土井麻未さんも、数々の試行錯誤のうえで実装しました。「自分たちが試行錯誤した自作に関してのノウハウが本書に詰め込まれている。同じように興味を持つ後輩が育ってほしい」とhikaliumさんがコメントし、本イベントは締めくくられました。
hikaliumさん(左)と土井麻未さん(右)のサインとともに。ありがとうございました!
関連書籍:『[作って学ぶ]ブラウザのしくみ ──HTTP、HTML、CSS、JavaScriptの裏側』
本書では、シンプルなブラウザをRustを用いて実装することによって、ブラウザ上でWebサイトを開くまでに何が起きているのかを理解することを目的とします。さらに、作成したブラウザを、別冊で解説・実装している自作OSの上で動かすことによって、ブラウザと更にその裏側を理解していきます。
関連書籍:『[作って学ぶ]OSのしくみⅠ ──メモリ管理、マルチタスク、ハードウェア制御』
本書では、シンプルなOSをRustを用いて実装し、普段は見えないOSの役割とその動作を理解していきます。Ⅰ巻ではメモリ管理、マルチタスク、ハードウェア制御に関する部分を実装します。