マイクロカーネル本輪読会に参加してみた

この記事はBBSakura Networksアドベントカレンダー2024の17日目の記事です。

こんにちは。BBSakura Networksでモバイルコアのソフトウェア開発を行っている楽野です。今回はBBSakuraの任意のメンバーで活動している勉強会について書いてみようと思います。

輪読会やる?

以前からBBSakuraでは自社の事業領域であるネットワークやモバイル通信に関連する勉強会が不定期に開催されています。 そんな中、同じチームの早坂さん(@takemioIO | @gtpv2)、金井さん(@masu-mi | @masu-mi.bsky.social)がマイクロカーネルOS勉強会を輪読形式で始めると聞きました。

私も昔からOSのカーネルなど、低レイヤに興味を持って一人で技術書を読んだりはしていたのですが、強いエンジニアのお二方の楽しい勉強会のお邪魔になるといけないと思い参加を躊躇しました。輪読会というものに参加したことがなく、得体の知れない怖さを感じていたのもあります。

でも結局、思い切って参加してみることにしました。折角のこんな機会逃してはいけないと思ったのです。

輪読会でやったこと

今回の輪読会では「自作OSで学ぶマイクロカーネルの設計と実装」という書籍を持ち回りで読み進めることになりました。

使用したテキスト

基礎知識、カーネル、ユーザランド、発展的話題の4部で構成されており今回の輪読会では基礎知識とカーネルの部分に取り組みました。

  • 基礎知識

    • マイクロカーネル入門
    • 教育用マイクロカーネルOS「HinaOS」
    • RISC-V入門
  • カーネル

    • プロセス・スレッド
    • メモリ管理
    • 割り込み例外
    • メッセージパッシング
    • システムコール

この書籍は教育用に開発されたシンプルなマイクロカーネルOS「HinaOS」をベースにカーネルの各機能が解説されているのでかなり読み進めやすかったです。 その他、教育用のHinaOSに加えて実用されているマイクロカーネルOS「MINIX3」「seL4」「Mach」も題材として取り上げられています。

輪読会の進め方

各章を前半と後半に分け、担当者が事前に準備した資料をベースに勉強会当日に読み合わせを行う形で実施しました。 社内での初めての輪読会(3GPP輪読会をやろうとして頓挫した過去あり・・・)だったので、なるべく継続できるゆるい勉強会を目指しました。

例えば、勉強会当日までに資料が間に合わなければその場で全員で読み進める、週一で実施するが月に一週はバッファとして置いておく、勉強会の日が都合が悪ければ なるべく同じ週内でリスケする、などが会の継続に関して意識した点です。

こちらは任意だったのですが1000行で作るOSを実際に手を動かしながら読み進めることも推奨されました。HinaOSのソースコード読む際の手がかりにもなって取り組んでみて良かったと思います。

輪読会はどうだった

当初想像していたよりずっと楽しめた、というのが第一の感想です。資料を準備して、どのように話せば伝わりやすいかを考えることで理解がより深まりました。また読み合わせを行う中で脱線も交えながら色々と会話することで自分一人では気づけなかった面も知ることもできて、モチベーション向上に繋がったと思います。あと実際に題材のOSを動かしてみたり、ビルドに苦労してみたり、勝手なシステムコールを足す改造をしてみたりとそういった詳細に没頭する時間を持てたのはとても有り難かったです。

それなりに準備は大変でしたが想像して恐れていたより理解出来たし、それを自分なりに噛み砕いて話すこともできたと感じています。今後も他の題材でも輪読会をやりたいと感じています。(3GPP輪読会リベンジも)

おわりに

今後はBBSakuraの低レイヤ系勉強会活動として、CPUに関する勉強会を行おうといった話も出てきています。どのような勉強会をやっていけるのか今から楽しみです。

このような勉強会活動は業務の遂行へダイレクトに影響する部分でもありませんが、自分が普段生息しているレイヤの上下でどのような営みが行われているのか意識することは間接的に見える世界を広げることになり、技術的な選択肢を増やしてくれるのではと考えています。

あれこれ書きましたが、単純に技術について色々話せる仲間がいることが嬉しいというのが一番大きいです。今後も積極的に社内外の勉強会に参加していこうと思います。