酔いどれおじさんのアレだよ・・・アレ放浪記

自称エンジニアの酔いどれおじさんがいろいろ書くブログだよ。

技術書典で仕入れた本 - OS Girls -

はてなダイアリーを最後に書いてから6年程度放置するくらいにはものぐさな@akachochinと申します。

つい先日、技術書典6というイベントが開催されました。私も自称エンジニアとして1冊本を書き、人のブースを間借りして参加しました。いやあ、いかにいい加減な人間かがわかろうというものです。でも、やっぱりおじさん。参加者からうつされたかどうかはわかりませんが、風邪引いて寝込みました。

そんなおじさんも大分体力回復したので、早速買ってきた本のうち、OS_Girlsを読みました。

f:id:akachochin:20190416215947j:plain

表紙からもわかるとおり、数学ガールズのOS版です。OSいじって飲み代稼いでいる自称エンジニアとしては惹かれるモノがあります。で、読んだ次第です。

結論から言うと、この本は、OSの良き学び方ガイドであり、それ以上に良き教え方のガイドです。それでいて、この読みやすい。文才がとてもうらやましい。

導入部もとても好きな入り方なのですが、ここは本を是非とも読んで欲しい。OS界隈でこんな暖まる導入はなかなか見ません。

それは措いて、さらに読み進めると"Hello, World"の話に入ります。「そうきたか。次はシステムコールの話が続くかな?」と思いながら読み進めると、EFI、OSの役割、CPU(x86_64)のレジスタ、メモリバスに関するトピックが次々現れます。良い意味で期待が裏切られます。

さて、先に、「OSの教え方ガイド」と書きました。上の文を一読すると、「初めての人にx86_64のレジスタ?メモリバス?・・・無茶ぶりか?」と思われるかもしれません。

しかし、初めての人にはこの進め方でOSを教えるのは存外効果的だと思っています。

かくいうおじさんも会社でOS未経験の若手にOSを教えたことがあります。そのときは、まず教科書通り、OSの役割から入りました。

しかし、次に教えたのは一般的な教科書にある「プロセス/スレッド」ではなく、「CPUとメモリ、ディスク、ソフトを実行すること(ローダーによるロード、パイプラインの基本的な動き、実行形式ファイルなど・・・)」でした。いわゆるコンピュータアーキテクチャの初歩的な内容です。

OSの講義なのにコンピュータアーキテクチャの初歩を教えるのはなぜか。そもそも「OSが管理する資源」がイメージできないまま、OSの各論を学ぶのはただただつらいからです。 ここを教えておかないと、例えば以下の困難がつきまとうのだと思います。

  • スレッドやプロセスで出てくる「コンテキスト」が非常にイメージしづらい

  • 仮想記憶をイメージし、理解していくことが困難。物理アドレスや物理メモリ、二次記憶装置の理解があると、具体的なイメージがわきやすい

  • ファイルシステムにおける諸々の工夫がなぜ必要か、わからない

こうした自らの経験に照らしたとき、読み物としての面白さだけでなく、教え方ガイドとして秀逸な本だな、という感想を持ちました。 この記事を読んで、買うかどうか迷った人、是非とも買うべし。