普段何気なく使っているOSやブラウザ。その
その発売記念イベントである

自己紹介
まずは、2人の自己紹介から。
hikaliumさんがOSに興味を持ったのは小学生のころととても早く、
一方、土井麻未さんは、コンピュータ自体に興味を持ったのも大学生のころと、hikaliumさんとは対照的です。服飾などデザインの勉強をしていて、たまたまWebサイトの作成に興味を持ったことがきっかけでした。そのあとにフロントエンドやバックエンド、インフラなどを学んだそうです。インターンでコンピュータの基礎を学び、低レイヤーへの興味が深まったといいます。そうしてブラウザへの興味も生まれ、現在はGoogleでブラウザ開発に従事しています。
二人の出会いと現在の活動
本イベントの最後のQ&Aで、二人の出会いについて質問がありました。二人は前述のインターンで知り合ったそうです。
土井麻未さんから見たhikaliumさんの第一印象は
一方、hikaliumさんは土井麻未さんの学ぶ意欲に感銘を受け、上述した
こうして出会った二人は、現在YouTubeチャンネル

書籍の他己紹介
2つの書籍のコンセプトは共通しています。日常的に触れているOSもブラウザもリッチすぎるため、理解するのが難しい。そこで、必要最低限の機能にしぼり、実装してみることでしくみを学ぶというのがこの
書籍のなかでは、実装を機能ごとなど段階的に行うことで、追加するコードがどのような意味を持っているのかについて理解しやすくしています。また、追加するコードは太字で表記してわかりやすくしています。

それぞれの書籍の特徴については、相手が執筆した書籍をお互いに紹介し合う
『[作って学ぶ]ブラウザのしくみ』
まずはhikaliumさんから、土井麻未さんが執筆した
本書では、ブラウザを少しずつ実装していきます。それが
フレームワークやAPIなど表面の知識は学びやすく見栄えが良いものの、進化が早くすぐに使えなくなります。一方、本書で扱うツリー構築やレンダリングなどの裏側の知識はそう簡単には変化しないため、いつまでも使える知識です。これらの知識は、Webアプリケーションのパフォーマンス改善や複雑なバグの原因特定の際に、あらゆる開発者がいずれ直面する課題を解決する大きな助けになると伝えています。
『[作って学ぶ]OSのしくみⅠ』
次は土井麻未さんから、hikaliumさんが執筆した
OSを自作する書籍は他にもかなりあるものの、おそらくRustで実装している唯一の本が本書です。コードにhikaliumさんらしさが反映されているのも面白く、リファクタリングの過程も掲載されているため参考になるといいます。また、口語で書かれているのも話しかけてくれている感じで良いとのことでした。
また、2進法などPCの基礎的な部分についても書かれている一方、応用的な部分までしっかり解説されています。マルチタスクの実装方法としてasync/
ハードウェア制御の部分では、各種ハードウェアに対応する大変さが垣間見えたそうです。これについてhikaliumさんは
hikaliumさんからはⅡ巻の内容についても言及がありました。Ⅰ巻では実装できなかった
Q&A
本イベントの最後には、来場者からの質問に回答する時間が設けられました。
- Q. 自分でもカーネルの実装などを行い学習しているが、行き当たりばったりの実装になってしまって時間を浪費している感じがする。どのようにしているか。
-
hikaliumさんは
「これは難しい課題である」 と述べました。自分も最初は行き当たりばったりで書いて、概要などが理解できたら前のコードは捨てて書き直すことが多いそうです。捨てるのは勇気がいりますが、書き直したらもっと良くなるので、この方法を取っていると語りました。土井麻未さんも、RISC-Vのエミュレータは2回書いたと話しています。 - Q. ブラウザにどのタグ、どの機能を実装するかの選別はどのよう考えたか。
-
土井麻未さんは
「この部分はすごく考えた」 と述べ、 「ブラウザとは何か」 を真剣に考えたといいます。今イメージするブラウザに必須の機能としてHTML、CSS、JavaScriptが解釈できることが必要と考え、それに合うタグを実装しました。最初は http://
が表示できる程度を目指し、あとからCSSやJavaScriptも実装できそうだったので追加した、という流れだったそうです。example. com/ - Q. OSもブラウザもC言語やC++を使って実装されることが多いが、Rustで実装して良かったことと大変だったことを教えてほしい。
-
この質問に対してまずは土井麻未さんが回答しました。ライフタイムなどを考える必要があったりして、ブラウザをRustで実装するのは大変なことが多かったと振り返ります。コードがきれいに書けてバグが出にくいかもしれないけど、その分コードを書くのは大変だったそうです。
hikaliumさんも、OSを動くところまで持っていくのはRustでの実装例がないので大変だったそうです。しかし
「Rustに慣れると、もうCでOSを書きたくなくなるくらい」 とのこと。コンパイル時のチェックが厳しいものの、コンパイルできて動けばバグが発生することはほぼないというのは大きなメリットで、コンパイルエラーもわかりやすく出してくれると語りました。
最後に
OSやブラウザをゼロから開発するのはとても大変な作業です。hikaliumさんも土井麻未さんも、数々の試行錯誤のうえで実装しました。
