コマンドを叩いてシステムを操作するところまでは多くのエンジニアが経験していることですが、これがC言語を使って新しいコマンドを作るということになると一気に経験者が減ります。さらにカーネルを変更したり、カーネルモジュールを開発するといった段階になると、その数は本当に少ないものになります。
いろいろ理由はあると思いますが、C言語そのものを苦手とする方が多いこと、カーネルは大きすぎてどこから手をつけてよいかわからないこと、わかりやすい解説書が存在しないこと、こうしたことが背景にあるように思います。そしてよくわからないから「怖い」、そこは「触ってはいけないところ」といった先入観が生まれ、さらにカーネルには手を出さないような状況になっているように思います。
教育機関で学ぶC言語が実際の開発現場のコードとかけ離れているため、C言語を使って実用的なソフトウェアを開発するという発想そのものが浮かんでこないことが多いようです。実際には「新しく書く」よりも「既存のソースコードを読む」方が開発現場を反映しています。
本勉強会では、カーネル開発やC言語での開発といったものに対する苦手意識を取り除き、カーネルプログラミングやC言語による開発がそれほど難しいものではないことを示すために「カーネルモジュール開発」を解説します。FreeBSDカーネルはデフォルトでさまざまな機能を内包していますが、実はほとんどの機能はカーネルモジュールとして取り出しが可能になっていて、最小限の機能だけ持ったカーネルを構築して、そこにカーネルモジュールを読み込む形で使用することもできます。
カーネルモジュールを開発するのはそれほど難しくありません。みずからの手でカーネルモジュールを開発するというのは、それだけで胸が踊る体験です。C言語の経験が教育期間で習った程度でもわかるように説明していきます。
※1 領収書の発行は行いません。ご了承ください。