「作って学ぶブラウザのしくみ」って本が良かった話
この記事について
[作って学ぶ]ブラウザのしくみ──HTTP、HTML、CSS、JavaScriptの裏側 (WEB+DB PRESS plusシリーズ) | 土井 麻未
Webブラウザは、開発者にとってもユーザーにとっても、もはや日常の一部となっているほど身近なソフトウエアですが、近年のブラウザはあまりにも高機能かつ巨大になってしまったため、その仕組みを詳しく理解することは困難です。そこで、シンプルなブラウザをRustを用いて実装することによって、ブラウザ上でWebサイトを開くまでに何が起きているのかを理解することを目的とします。さらに、作成したブラウザを、別冊で解説・実装している自作OSの上で動かすことによって、ブラウザと更にその裏側を理解していきます。
「作って学ぶブラウザのしくみ」は 技術評論社 から出版されている 土井 麻未 さんが書かれた技術本で、ブラウザのしくみを Rust を使って解説されています。
この本を買って一通りやってみたところけっこう良かったので、この本の魅力を私なりに共有したいと思います 💪
仕様書が大事
まず初めに思ったのは「ダメになりそうなとき~♪仕様書が大事~♪」ってことです。
本書には HTML Liviing Standard や DOM Living Standard などの様々な仕様に沿って処理を実装してくので、そもそも仕様について理解する姿勢が無いと死にます( 大袈裟 )。
私はなるべく仕様書は読みたくない派なので、仕様書の部分は読み飛ばしながら実装していきましたが、そうすると書いている処理が何しているのか全く分からなくなり、ダメになりそうになりました。
そんなとき、仕様書や予め解説されている所を何度も読み込むことで実装した部分の理解が深まり、メンタルも回復し、性格も明るくなり、恋人もでき、生活が豊かになりました。
読者の中にも仕様書などへ抵抗感を持っている方や、避けている人もいるかと思いますが、本書では「ブラウザをつくる」という分かりやすい目的を持ちながら仕様について学べるので、仕様書嫌悪勢の方でも始めやすいかなと思います。
Rust が分からなくてもなんとかなる!( はず )
よーし、今日は Rust 勉強するぞ!この頃、勉強できなかったからな~何かいい教材ないかな~。おっ!
Rustを学ぶ - Rustプログラミング言語
効率的で信頼性のあるソフトウェアを書く力を与える言語
こんないいサイトがあるのか~。ほんじゃ、これを参考に勉強していくぞ!
ってことが私はよくあったんですが、本書はそんな私でもすんなりできてしまうほどいい塩梅で書かれていて、Rust の入門書とまではいかないですけど、何か作りつつ Rust の世界を少し覗きたいな~って方には持って来いの本だと思いました。
ただ、Rust の所有権については理解しておいた方がバグ修正とか直しやすいと思うので、その辺の知識は持っておいた方がいいと思います。個人的に以下の動画とかがとても参考になりました 👇
【Rust入門】宮乃やみさんにRustの所有権とライフタイムを絶対理解させる #ch789
"わからせる" って読むんですよ。Rust の鬼門とされる「所有権」「ライフタイム」などを、ヒープとスタックの違いなどの基礎からちゃんと説明します。
ブラウザ API についての理解が深まる
本書では、document.getElementById()
というブラウザ API を実装するところがあり、実装内容を見てみると再帰処理を使って DOM 要素を探し出しています。
おまけに、それをするまでに HTML を解析して Tree を構築したりなどもしているので、思っている以上に処理コストがかかっていることが実感できます。
これは普段の開発からでも雰囲気で分かるかもしれませんが、いざ実装してみると思っている以上に処理コストが掛かっている事が理解でき、普段書いているコードの印象が少し変わったように思えました。
もちろん、世の中に使われているブラウザはもっと凄いアルゴリズムや最適化を使っているので、そこまで問題になるようなことは無いと思うんですけど、こうしたブラウザ側の視点に立って普段使っている API を見ることによって、パフォーマンス改善のヒントを得ることができるのも本書をやって良かった点かな~と思っています。
あとがき
以上で、レビューを終わりたいと思います。
正直、本のレビューなんてしたこと無いし、ネタバレとか怖いし、下手なこと言うとよく分からん界隈から指摘が来そうで何をかけばいいか凄く悩みまくりましたが、「作って学ぶブラウザのしくみ」という本がいい本であることには変わりないので、この記事読んで少しでも良さそうだな~って思った方が居ましたら、ぜひ購入してブラウザを作ってみるのをオススメします。
あっ、あと著者である @d0iasm さんと @hikalium さんがやっている低レイヤーガールという Youtube チャンネルがあって、そのチャンネルでは今回のブラウザ本の話だったり、ブラウザを動かしている OS の話だったりが聞けるので、もっと深くまで知りたいよ~って方は見てみると面白いかもしれません 👇
低レイヤーガール
ソフトウェアエンジニアである @d0iasm と @hikalium が低レイヤーについてお喋りしながらペアプログラミングをします。
はい、ここまで読んでくれてありがとうございました!
これが誰かの参考になれば幸いです。
それではまた 👋