私とBSD

現在、カーネルハックをしていたり、JDK開発の最前線で活躍されている方も はじめは必ずBSDとの出会いがあり、なんらかの道を通って現在に至っているはずです。

そこで、この連載は本誌の執筆陣がなぜFreeBSDを含むBSDファミリーを使うことになって、 どういう経緯を経て現在になったのかを書いて行こうというものです。

トップバッターとして、僭越ながら私むとうたけしが勤めさせて頂きます。

UNIX前史

私のコンピュータ経験はNECのPC-6001に始まります。 1970年の万博生まれの私 [1]は、当時小学校6年生(12歳)でした。 毎日のように近所のJoshinに通って触ったり、 広告を切りぬいてスクラップする作戦が功をそうして、 この年のXmasに買ってもらえることになりました。 ただし、お金は毎年返却すると言う条件です [2]。 このコンピュータではほとんどプログラミングせず、 PIOなどの当時あった雑誌に載っているプログラムを入力してばかりでした。 日曜などは1日3本入力したりと馬鹿な生活を送っていました。

15歳になり、現職の奈良工業高等専門学校情報工学科に1期生として入学することができました。 当時はパンチ式カードでプログラムを入力するコンピュータが残っていました。 この当時学科で利用していたコンピュータはPC-9801vm21でした。

入学して使っていたOSは当時なら当り前にMS-DOSでした。 が、私はどうもこのOSが好きになれませんでした。 ヒストリの弱さや、config.sysautoexec.batの設定の嫌さが理由だった思います。 ヒストリの弱さは致命的で、

「これならN60 Basicのスクリーンエディタの方がまし」

と本気で考えていました。

このMS-DOSでは、FortranやPascal、Cなどを授業でやりました。 授業外にもMASMを使って下らないプログラム書いたりしてました。 1期生だったので先生方も試行錯誤の部分は多分にあったようです。 既に、2期生ではカリキュラムが変わっており、 彼らはLispもやっていたようでした。

UNIXとの出会い

高専3年で、はじめてSystemVとの出会うことになります。 もちろん、SVR4とかじゃありません。 これも、/bin/shがログインシェルで、 chshが無い世界 [3] でというのが嫌でほとんど使った記憶がありません。

私とBSD

BSDとの出会い

私とBSDでの出会いは、 卒業研究の配属がおこなわれた5年にSunOSを使い始めたことによるものです。 これは、SystemVの時とは違い、またMS-DOSの不細工さとは違い、

「すごいものに出会っている」

という感想を抱けるものでした。 惚れ込んだのはツールキットアプローチだったのだと思います。 また、階層ファイルシステムの綺麗さも魅力的でした。 ここにきて、MS-DOSの変なしくみが分かった様な気がしました。

当時の環境はSun3/50にX端末がたくさんぶら下がっていてと言う いまなら誰も使わないような状況でした [4] 。 しかし、管理者の先生の御努力で、 X Window Systemは常に最新に保たれていましたし、 当時のめぼしいソフトウエアは一通り用意されていました。

私はNetNewsに出会ったのが一番の驚きでした。 本当に多くの時間をNetNewsを読むのに費していました。 fleamarketで本をいただけると言う方とe-mail文通を始めたのも、 面白い経験でした。 とはいえ、当時はUUCP接続なので文通と言っても1日1通程度のものだったですが。

で、卒業研究自体はニューラルネットワークをテーマにしていました。 他にもOS関係の研究室もあったのですが、 そちらには行きませんでした [5]

で、本来のテーマはニューラルネットワークなんですが、 時間の大半をかけてやっていたのはNetNewsを読むことと、 3Dプロットソフトウエアの開発でした。 当時、gnuplotがあったのか良く分からないのですが、 3DデータのプロットのためのプログラムをXlibで作成していました。 この頃は、スクリプト言語はAWKにはまっていました。 結果のデータ処理で大変役に立ちました。

大学での利用

大学に編入学 [6] した私は、教養部が工学部から近かったこともあって、 体育や美術の講義を受ける一方正規の講義も受けなければならなかったので、 3年の1年間は4駒すべて埋まっているという恐ろしい状況でした。 この当時は電子メールやNetNewsからも一切離れている暗黒時代でした。

4年になり研究室配属になりました。 もともと、ニューラルネットワークを研究している研究室なのですが、 当時の助教授はオブジェクト指向データベースの研究者で、 私はこちらをやろうかなと思っていました。 が、諸般の事情で結局ニューラルネットワークの研究になりました。 このときは、自己組織化神経回路網(SOM)というものを使って、 肝臓疾患の診断システムを作成していました。

この研究室のボスは、「わしは分からんし、使えんが」とおっしゃるのですが、 希望したコンピュータや最新のワークステーションをどんどん購入してくださいました。 ちなみに、Sony NEWSの大学に配ったもの [7] のシリアル2をうちの研究室で所有してました。 Omron Lunaなどもありましたし、最後の方にはSiriconGraphicsのO2なども入っていました。

2つ上にはNeXT狂いの先輩がおり、 あの時転んでいたらまた人生変わっていたのかなぁと思います。 しかし、大学在学時代はずっとSunOSを使い続けていました。 やっぱり、あの当時はSunOSはフリーソフトウエアのコンパイルが容易にできたのが 非常に助かったように思います。

この当時の関西にはたくさんの コンピュータのユーザグループがありました。 次の年に発足したものも含めると、 jusの行っているjus関西研究会や NeXTのユーザグループであったNeXus, Macユーザグループのマカダミアなど、 いろいろ出没していたような気がします。 とりわけ、梅田でこれらのユーザグループの会合が行われていたため [8]、 通学経路途中に梅田があった身には非常に嬉しかったです。

特に、jus関西で齋藤先生がNet2の話などをされていたのを うっとりと聞いていたのを覚えています。 熊谷さんの「sed,awkして船山登る」のお言葉から 芸人魂を擦り込まれたように思います。

修士1年になり、研究テーマはニューラルネットワークの中でも 一番良く使われるバックプロパゲーションを使って 原子炉の燃料配置計算をやりました。 当時有名であったPlanetと呼ばれるシミュレータを使って、 計算を走らせては逃亡することを繰り返していました。 結果が1週間後にでたり、シェルスクリプトで逐次実行して時間を稼いだりだったのですが、 大抵途中でなんらかの問題で終っており、泣いていた覚えがあります。

この年の春には今は無きDECが修士対象に無料で講座をやってくれており、 そこに参加させて頂いたこともあります。 DECの講座の教科書は非常に優れており、 今手に入らないのは残念だと思います。

また、同じくこの春に「新規発表者を増やそう」という目論見のもと、 jus関西(第49回)でUNIX探偵団というシリーズが始まりました。 その栄えある第一回の探偵の一人として、私が選ばれました。 発表したのは 「i386マシンでおうちでUNIXを20万以下で作成しなさい」 というミッションでした [9] 。 ちょうど台湾旅行から帰って来た先輩からチラシを見せてもらったりしながら まとめ発表しましたが、結構受けたので関西人として嬉しかったです。 このシリーズは現在でもjus関西研究会の4月の定番テーマになっています。

修士2年では、人工生命や複雑系と呼ばれる分野の研究が中心でした。 最終的なテーマは、ライフゲームで有名なセルオートマトンで 自律分散搬送システムを作ると言うのでまとまりました。 相変わらずXlib+Athena Widgetでプログラムを組んでいました。 が、この年の修論提出少し前にあの阪神大震災がおこり、 ばたばたの中とりあえず修了した次第です。

就職をしてから

就職したはいいですが、やはり予算はそれほど多くありません。 自分用の計算機を買おうと思うとIBM互換機になってしまいます。 そこで、FreeBSDを使い始めることになりました。 当時は、2.1.5R?だったと思います。 手元のオフィシャルCD-ROMは2.1.5Rからになっています。

しかし、私はPC-6001以来パソコンを買ったことがありませんでした。 いろいろ悩んだ結果、今は亡きGatewayのP5-90を購入しました。 このマシンは、いまだに現役で遊んでいます。

しかし、大学時代は管理をほとんど逃げていたので、 トラブル続出です。 また、インターネットへの外部接続も貧弱だったので、 帰る前にインストールを仕掛けて朝来てダメで愕然とするというパターンを 繰り返していたような気がします。

実はperlを覚えたのは就職してからです。 その後は、一時期CGIを作る猿と化し、 Webでいろいろ遊びとも仕事ともつかないことをやっていました。

現在の(本当の)研究テーマはInteractive Evolutionary Computationと呼ばれる分野で、 画像処理をインタラクティブに行うことなどをやっています [10]おかもちくんは授業で必要なので、 2番目のテーマです。 研究になってないとか、いろいろ御批判は受けているのですが…

平成9年の予算で 情報工学科実習室の コンピュータのリプレイスが行われました [11] 。 ここでは、Windows95とFreeBSDとのデュアルブート環境にすることができたので、 小規模学習用環境の構築と言う面白い経験をさせてもらいました。 しかし、トラブル続出で一人で面倒を見ていたこともあり非常に大変でした。

最近では、portsを作成してみんなで楽をしようと言う方向に動いてきています。 これまで、10年お世話になって来たBSDになんらかのお返しをする時期なのかなと思っていますが、 なかなか十分なお返しはできていないと思います。 でも、やはりできる所からできる範囲でぼちぼちやって行くつもりです。

本誌執筆のきっかけ

本誌執筆のきっかけはとあるメーリングリストに投稿した記事が桐山先生の 目に止まり、一緒にお仕事をするようになったことから、 紹介していただきました。 皆さんの素晴らしい記事の中で、本当に面白い記事を書けているか不安ですが、 FreeBSDを教育に使っていく方法はこれからも模索して行きたいと考えています。

なぜFreeBSDなの?

私はなぜFreeBSDを使っているのでしょうか? まず最初には「豊富なportsコレクション」をあげることができます。 管理者が少ない現状では、いちいち環境構築に手をかけることは不可能です。 portsコレクションはその手間を軽減してくれます。

かといえ、NetBSDやOpenBSDも使っていないわけではありません。 前者は豊富なアーキテクチャが魅力的ですし、 後者はsecureで普通の運用に必要だと思われるものは全てdistributionに入っているのが魅力的です。

どうやって勉強してきたのか?

私は環境に恵まれていたせいもあり、 学校などでは先輩や先生方のアドバイス、 ユーザグループでの講演、 本を読むことで勉強してきました。

やはり、気楽に質問できる近い距離は重要だと思うので、 近くに良い指導者がいる環境は理想的だと思います。 しかし、そうでない場合はユーザグループの活動に参加してみるのは どうでしょうか? メーリングリストの記事だけでも有用な情報は多く、 BSDコミュニティには優しい人が多いと感じています。

しかし、自分での情報収集の努力は忘れてはいけません。 特に、問題を自分なりに分析して質問する能力は、 あらゆる場面で必要とされることなので、 質問する前に10分でもいいから何が問題か考えてみるといいでしょう。

あと、いろいろ試してみることは重要です。 本に書いてあることは試してみましょう。 自分で管理してるコンピュータなら、失敗しても泣くのは自分だけです。 失敗を恐れていては何も本質的な理解は得られないでしょう。

私の推薦する本

私の推薦する本ですが、UNIXは単なるOSではなく文化だと思います。 まず、その文化を知ることが重要だと思いますので、 「Life with UNIX」(ISBN:4-7561-0783-4)や、 「UNIXという考え方;その設計思想と哲学」(ISBN:4274064069) はいかがでしょうか? 一見使いにくそうにみえるコマンドラインユーザフェースも、 ツールキットアプローチのためのものだということが実感できるでしょう。

おわりに

結局、私はFreeBSD使いと行ってもアプリケーションユーザに終止しています。 カーネル開発にも興味を持っているのですが、 まだまだ修行不足です。 また、UNIXが生まれた当時に生まれたということで、この世界ではひよっこに過ぎません。

というわけで、次号の私とBSDはカーネル開発者はいかにして作られるかを知るために…さんにお願いします。

注意

[1]

このおかげで母に「あなたのおかげで万博に行けなかった」と言われます(;-;)

[2]

ある程度返しましたが、途中で返すのうやむやにして止めました。

[3]

今考えれば、.profileの最後でcsh動かしちゃえばいいだけですよね…

[4]

ロードアベレージが20ぐらいに上がってswapしまくって大変になったりしてました。

[5]

しかし、いまの学生研究室はそのOSの研究をやっていた研究室です。

[6]

短大や高専から大学3年生に入学できる制度のこと。

[7]

詳細は、渡邊克宏@SRAさんによる http://www.sra.co.jp/people/katsu/doc/comphist/ を御参照ください。

[8]

現在、jus関西は千里中央で行われています。

[9]

その他のテーマは、… jusで活躍されている法林浩之さんによる「」と UNIX Magazineの宮下健輔さんによる「」、 神余浩夫さんによる「」 でした。

[10]

興味があれば英語ですがhttp://imagebreeder.info.nara-k.ac.jp/を 参照してください。

[11]

それまでは、私が使っていたPC-9801vm21を使ってました。 ものもちの良い学校でしょ?