🖥️
「[作って学ぶ] OSのしくみⅠ - Forkwell Library #96」イベントレポート
はじめに
2025年5月29日、オンラインにて「[作って学ぶ] OSのしくみⅠ - Forkwell Library #96」が開催されました。本イベントは、エンジニアのキャリア支援や勉強会を多数手がけているForkwellが主催し、書籍『[作って学ぶ] OSのしくみⅠ──メモリ管理、マルチタスク、ハードウェア制御』をテーマとした内容です。 著者であるhikalium氏(ソフトウェアエンジニア)が登壇し、「OSを書くのとアプリケーションを書くのは何が違うのか?」という視点から、OS開発のおもしろさや難しさを語りました。ここでは、当日の講演内容とQ&Aのやりとりを振り返りながら、学びのポイントをまとめます。
第1部:講演「OSを書くのとアプリを書くのは何が違うのか」(登壇者:hikalium)
OSとは何か
hikalium氏はまず、OS(オペレーティングシステム)とは何なのかを改めて整理しました。
コンピューターは大きく「ハードウェア」と「ソフトウェア」に分けられる。
OSは、ハードウェアとアプリケーションをつなぐ“抽象化レイヤ”であり、最もハードウェアに近い部分を担当するソフトウェア。
アプリケーションが快適に動作するために、ハードウェアの煩雑さをOSが引き受ける一方、OS自体はハードウェアに合わせて絶えず対応しなければならない。
OSとアプリの開発視点の違い
OSとアプリの最大の違いとして、OSにはハードウェアへの強大な権限が与えられていること、そして他のソフトウェアからOSを騙すことは基本的に不可能であることが挙げられました。 一方で、OSには「全ハードウェアを面倒見る」責任があるため、想定すべき状況が膨大になりがちです。たとえば、外部機器の不具合やユーザの実行環境が不安定であっても、OSは極力落ちずに稼働を続けなければなりません。また、OS側がちょっとした変更を行っただけで、アプリの不具合として表面化する場合もあるため、慎重なデバッグや互換性維持が求められます。
デバッグの難しさ
エラーが起きた際、アプリの場合はエラーメッセージが出たり、デバッガが簡単に使えたりしますが、OSの場合は 「デバッガすらOSに依存している」 という構造があるため、エラー原因の切り分けが非常に困難です。
print!
(C言語のprintf
的なもの)を埋め込んでデバッグするそれさえ難しい場合は、無限ループを差し込んで「どこまで処理が進んだか」を確認する
OSのバグはアプリから見ると「アプリが壊れた」ように見えてしまい、トラブル解消までに時間がかかる
こうした“頼れるものが少ない”環境下で、地道に検証を繰り返すことこそ、OS開発の醍醐味だという話が盛り上がりました。
ラスト(Rust)で書くOSの魅力
本書ではC言語ではなくラストを使ってOSを実装することが大きな特徴です。
ラストはコンパイル時チェックが厳格で、メモリ安全性を向上できる。
「一見アプリ向けの高級言語」かと思いきや、低レイヤなハードウェア制御にも対応可能。
安全性を守りつつ、高速なコードを実装しやすい。
とはいえ、OS開発に特有の「エラーが検知されない」「アドレス周りの制御が独特」などは依然としてつきまとうので、実装者は細心の注意が必要。
Q&Aでの主な話題
1. 他のOS本との違い
他にも数多くあるOS自作の書籍との違いについて、hikalium氏はこう語りました。
本書はターゲットがx86_64(UEFI) で、近年のPC環境に対応。
開発言語にラストを採用した珍しいOS自作本。
「ブラウザのしくみ」を解説した姉妹書と合わせると、OSの上でブラウザが動く世界を体験できるのがユニーク。
2. マイクロカーネルかモノリシックカーネルか
「マイクロカーネルとモノリシックカーネルのどちらを採用するか」については、本書で扱う“わび”はモノリシックカーネルを選択したとコメント。
マイクロカーネルは各OS機能を独立プロセス化しやすく、セキュリティが高い一方、設定や設計が難しく、通信コスト増を招きやすい。
解説本としてはモノリシックカーネルのほうが理解しやすいため、本書ではそちらを採用しているとのこと。
3. RustとCでパフォーマンスの違いは?
「Rust性AV1デコーダーが話題になったけれど、OS全体でCとの速度差や問題は?」という質問に対しては、むしろRustのほうが最適化が安定しやすいと指摘。
Cではコンパイラ最適化を有効にした途端、予想外の動作になってOSが起動しなくなる例もある。
Rustではコンパイラが厳格にチェックするため、逆に想定外のクラッシュを減らし、ラストらしい安全な最適化が可能。
4. OSが好きになったきっかけ
「小学生でOS自作に興味を持つのは稀だが、動機は?」との問いに対し、 「エラーメッセージが怖かった」「エラー集を見ているうちに興味がわいた」 などユニークなエピソードを披露。大いなる「好奇心と恐怖心」こそがOS自作への第一歩だったと明かされました。
全体を踏まえた感想 —— OSを知ることが「つぎの一歩」を導く
本勉強会を通じ、「アプリケーション開発者としてもOSの仕組みを学んでおくメリット」を強く感じました。 OSレイヤはアプリに比べてデバッグや環境の多様性など多くの難題を抱えますが、その分「ソフトウェアが動作する本質」に近い部分を理解できるのは大きな魅力です。 実際、RustでOSを書くスタイルはまだ新しく、エラーメッセージやメモリ安全性などでC言語より優位な面があるとはいえ、 「全てを管理しなければいけない」OS開発の大変さは健在。そこに挑戦するからこそ、現代的な手法でOSを構築する知見が深まると言えます。
一方、通常のアプリケーションも大規模化する中で、抽象化やスケーラビリティ、パフォーマンスなどの要求は高まっています。「OSの視点」を取り入れれば、自分のアプリがどうハードウェアとつながっているのか、どんなコストやバグ要因が潜みうるのかを把握しやすくなるでしょう。 勉強会では、参加者からの高度な質問(カーネル設計、低レイヤデバッグ手法など)も多数寄せられ、OS開発への関心が確かに高まっていることを感じました。何より著者自身が語る体験談が刺激的で、 「OSは特別な魔法ではなく、地道な実装とロマンの結晶」 なのだと改めて気づかされます。
今後も、OSとアプリケーションの境界を越えて、低レイヤ技術を活かした開発が広がっていくことでしょう。今回の「作って学ぶOSのしくみⅠ」をきっかけに、ぜひOSに足を踏み入れてみてはいかがでしょうか。 わかりやすい解説と、Rustによる現代的な実装スタイルは、多くのエンジニアにとって「次のステップ」を導いてくれるに違いありません。
Yardでは、AI・テック領域に特化したスポットコンサル サービスを提供しています。
興味がある方は、初回の無料スポットコンサルをお申し込みください。
また、資料請求やお問い合わせもお待ちしております。テック領域の知見を獲得し、事業成長を一緒に実現していきましょう。
Read next
Loading recommendations...