YLUG カーネル読書会
というわけで、本日はカーネル読書会でした。もちろん宴会つき。
発表者は id:wakatono さんです。どうもお疲れさまでした。非常に勉強になりました。ありがとうございます。
コードを読む力というのはもちろん重要なんだけど、ソフトウェアプロジェクトにおいてのコード管理システムについてのリテラシーというのも非常に重要だ。
オープンソースというかバザールモデルのおかげでソフトウェア開発のプロセスが白日の元にさらされはじめて、各社の秘密の壁の中にあったいろいろなプロセス上のノウハウが公開され共有されるようになった。
オープンソースソフトウェアの世界で最もよく利用されているコード管理システムはおそらくCVSであろう。ソースコードのチェックアウト、チェックインを行う。
ここでわたしは未定義にチェックアウト、チェックインと言う言葉を使ったが、CVSを始めとするコード管理システムはそのような共通な概念をサポートしている。ソフトウェア開発における共有すべき語彙をあたえていると言ってもいい。そのような共有すべき語彙を理解していることをリテラシーと呼ぶことにすると、CVSをはじめとするオープンソースでよく利用されるツールについての理解を深めることはソフトウェア開発におけるリテラシーを獲得することに役立つと言える。
そのようなリテラシーとして、わたしはデイリービルドとか、リグレッションテストとかもあげたいのであるが、今回はふれない。
大規模ソフトウェアの場合(一人でちまちま趣味でプログラムを書いているのと違って)複数のプログラマが同時に複数のソースファイルを変更するので、同時実行制御というか、変更を無矛盾に適用する仕組みと言うかが必要になったり、版の管理が必要になったりする。
そのような基本的な要件に対して必要な機能を提供するのがコード管理システムである。
Linux Kernel開発においてはBitKeeperというツールがdebianのパッケージの管理においては今回発表があったSubversionというツールが使われていたりする。
商用のツールもいろいろありclearcaseというのを前の会社では利用していた。
SubversionはCVSの実装上の欠点をいろいろ改良したツールという位置づけで、詳細については(コマンド名とか使いかたとか)マニュアルを見てほしい。
小ネタということで三浦さん(id:miurahr)の diff の話もとってもよかったです。
diffというUnixの世界では誰でも知っているツールの話なんだけど、ちょっとした歴史(誰が最初に作ったか、あなたは知っているか?)からはじまって patch の話とかredhatの人達が作った patchutils の話とか、自分の知らなかった話が満載だったので、誰かに伝えたくなるようなウンチク(へ〜)だらけであった。