[前回記事] [トップ] [次回記事]

2004年8月号掲載 よしだともこのルート訪問記

第94回 著名なソフトウェア誕生の秘密はその文化にあり
〜京大 マイコンクラブ(KMC)を訪問〜

原 悠(はら ゆたか)さん
京都大学 工学部 情報学科 学部生
京大マイコンクラブ部員(ルート担当など)
大林 一平(おおばやし いっぺい)さん
京都大学 理学研究科 院生
京大マイコンクラブ部員(ルート担当など)
和田 泰典(わだ やすのり)さん
京都大学 文学部 学部生
京大マイコンクラブ部員(メーリングリスト設定担当など)
菅野 亮(かんの りょう)さん
京都大学 理学研究科 院生
京大マイコンクラブ部員(Administrator担当など)
鴨 浩靖(かも ひろやす)さん
奈良女子大学 理学部 情報科学科 助手
京大マイコンクラブ OB
※所属部署・肩書は取材当時(2004年6月)のものです。

京大マイコンクラブとは
京大マイコンクラブ(Kyoto university Microcomputer Club、KMC)は、1977年に設立された、京都大学を中心として活動している京都大学旧教養部公認のコンピュータサークル。部員が興味を持ったものは何でも開発対象としている。1980年代にはPLANET、DoGA CGA System、1990年代には386BSD(98)、Linux/98、SKK95、最近ではAnthy、Ruby Refactoring Browserなど著名なソフトウェアを生み出した。
http://www.kmc.gr.jp/

■KMCから誕生した著名な数々のソフトウェア

よしだ(以下、Y):初めまして。京大マイコンクラブ(以下、KMC)は、数々のソフトウェアおよび有名人注1を誕生させたところとして、以前から興味を持っていました。部室が京都大学(以下、京大)に近いアパートの1室だというのも、以前からよく耳にしており、今日はそこにおじゃまできて光栄です。
 さて、KMC発の有名なソフトウェアとしては、PLANET、386BSD(98)注2、Linux/98、SKK95注3などがありますね。386BSD(98)はPC-9801の上で動くBSD、Linux/98はPC-9801の上で動くLinux、SKK95はWindows 95の上で動くSKK注4ですね。最初の、PLANETというのは、何ですか?


鴨さん(以下、鴨):異機種パソコンによるLANです。1980年夏に、PLANETの基本的実験ということで、PenelopeとPC-8001の間で20mA電流ループにより4800bpsのデータ伝送が行われたそうです。

Y:最近では、KMC発のソフトウェアとしては、Anthy注5とRuby Refactoring Browser注6(以下、RRB)が有名ですね。簡単に紹介してください。

和田さん(以下、和田):UNIX上のフリーのかな漢字変換エンジンとして、CannaやFreeWnnがありますが、Anthyは「フリーでセキュアなもの」を目指して開発されました。開発者の田畑さんによると、「メンテナンスされていることが重要」とのことです。
 また、Anthyは、X上での入力システムとして、uimプロジェクトにも発展しています。メモリ節約の点でメリットとして扱われた従来のマルチユーザーのサーバー・クライアント形式は、キー入力を横取りされるという、セキュリティ面のデメリットがあります。そこで、uimではセキュリティ面で問題が起こりにくい共有ライブラリ方式で新しい文字入力ライブラリを実装しています。
 uimは、2003年4月ごろから徳永拓之氏にメンテナを交代し、2003年度のIPA未踏ソフトウェア創造事業に採択されるなどして、開発が続いています。

Y:RRBについても紹介してください。

原さん(以下、原):プロジェクトリーダーの大林さんからどうぞ。

大林さん(以下、大林):RRBは、Rubyスクリプトのリファクタリングを支援するソフトウェアで、Emacs上で動きます。リファクタリングとは、「ソースコードの動作を変えずに、内部構造をより良いものに修正すること」です。2004年の1月末にバージョン0.0.1を公開し、5月31日に最新バージョンとして0.0.3をリリースしています。
 RRBを使えば、メソッド名・変数名の変更や、コードのある部分をメソッドとしてくくり出すなど、手作業では間違えやすい機械的な作業を、対象のメソッド名やクラスを指定するだけで自動的に行ってくれます。

Y:「Rubyで書かれたソースに対して、動作は変えずに、内部構造を自動的に修正してくれるツール」ですか。

原:プログラムを書いていると、中途での設計変更やバグフィックスなどで、プログラムが冗長で汚いものとなっていくことが多いじゃないですか。そうなってしまった場合に、動作は変えずに中身をちょっと整理してすっきりさせるためのものです。そうすれば、その後のメンテナンスもしやすくなります。

大林:動作を変えないことがなぜ重要かというと、それによって新たなバグが生じる可能性を減らせるからです。最近、流行っていますよ。

鴨:Program transformationともいいます。要はSemantics注7を変えずにプログラムを変換しようというものです。

原:ほかにもKMCが作ったものとしては、EndEffectorというWindows上のゲームも、その筋ではけっこう有名でした。難易度の高い3Dシューティングゲームで、普通の人には難しくてクリアできないようなものです。もともと、シューティングゲームがものすごく得意な人たちが集まって、自分たちでもなかなかクリアできないゲームを生み出そうという目的で作ったものなので。これを開発していたメンバーの方々が皆さん卒業されたので、そろそろKMCからは離れています注8
 2003年の京大の学園祭(以下、NF。November Festival)には、RRBも出しましたが、もちろん、NFで注目を集めるのはゲームやCGA(Computer Graphic Anima
tion)です。

■現在のサーバーとクライアント環境

Y:Webサイトで公開されているKMCの歴史によると、1989年にKMCの部室と京大間でUUCP接続注9をスタートさせていますね。

鴨:はい。1989年というと、まだ京大のドメイン名がkyoto-u.junetだった時代ですね。

Y:そして、1995年にはテレホーダイを利用して夜間のみ大学と部室をダイヤルアップ接続。1998年には回線をISDNにし、2000年6月にはケーブルテレビ回線で24時間インターネットに接続するなどを経て、現在は光ファイバーでの接続ですね。

原:2002年9月に光ファイバー回線を導入し、固定IPで接続するようになりました。

Y:現在の各種サーバーを紹介していただけますか。

原:サーバーは3台あります。1台目のOSはDebian GNU/Linuxで、ルーターと外向けDNS(BIND)の役割を受け持つ、外部用Webサーバーです。2台目のOSはNetBSDで、Sendmail注10、INNをインストールして、メールサーバーおよびニュースサーバーとして運用しています。もう10年近く使っているため、近く引退を予定しています。
 3台目のOSはFreeBSDです。NFS、NIS、Samba、内部用DNS、内部用Webサーバーなどそのほかもろもろという感じです。
 現在の構成はけっこう複雑なので、できるだけシンプルなものに作り変えていきたいと思っています。

Y:複雑でも大丈夫というか、複雑なほうが血が騒ぐような管理者が過去にいたのかもしれませんね(笑)。

和田:でも、その辺りの世代は卒業していなくなっているので……。

原:自分たちですべて把握できるシステム、かつ引き継ぎが簡単なものに変更しなければなりません。たとえば、現在はメールサーバーにSendmailをインストールしているのですが、現在の部員ではその設定ファイルを管理できる人がいないという悲しい状態です。引き継ぎがうまくいかなかったので。
 夏に予定している新しいメールサーバーには、自分たちで自由に設定変更できるソフトウェアを入れる予定です。いまのところ、Postfixが最有力候補です。

Y:原さんと大林さんがルート担当ということでしたが、和田さんは何をされているのですか?

和田:メーリングリスト(FML)の設定は僕がやりました。

Y:いろんな種類のメーリングリストがあるのでしょうね。

原:いいえ。OBの方々も含んだメーリングリストが1つあるだけです。現役の部員はIRCやWikiで連絡を取り合いますから。NetNewsは外にはつながっていなくて、完全に内部の連絡用です。長い間、部員のコミュニケーション手段として、内部連絡にはこのNetNewsを使っていましたが、最近ではIRCやWikiに変わってきています。

Y:クライアントは何台ありますか?

原:クライアントは5台で、うち2台がUNIX専用機です。残り3台はWindows機で、デュアルブートでUNIXも使えるようにしています。

■京大付近のアパートの1室が部室

Y:アパートの1室が部室であることや、ネットワーク、各種マシンを維持する必要性から、部費は高かったりするでしょうか?

原:部費は毎月2000円です。アクティブに動いているのが15名程度で、部費を払ってくれる人の数が30名程度です。1年目は半額で、半年分を1度に払うと1000円割引(1年目は500円割引)になるので、半年ごとに払う人がほとんどです。

Y:入部してすぐにここの鍵をもらえるわけではありませんよね。どういう条件で、鍵がもらえるのですか?

原:「来たときに誰もいなかった」ということが何度かあると、上のほうの人が「じゃあ、鍵を渡そうか」ということになります。

Y:京大内に部室はもらえないのですか?

鴨:学内の部室は、戦前からあるクラブにすでに占領されています。できて30年未満のクラブというのは、京大では新しいんですよ。

Y:火事にならないように気を付けないといけませんね。

大林:火事には十分気を付けていますから大丈夫ですが、停電に対しては注意が必要です。

原:京都市内は雷がすごく多い地区なので、瞬停が多いんですよ。瞬停でサーバーが落ちて困ったということが重なり、UPSを付けました。

鴨:UPSの寿命は案外短いので、注意が必要ですよ。電池を新しくすれば引き続き使えますから、UPSは大手メーカーのものを買ったほうがいいといわれているのは、その理由からなんですよ。電池を交換しようとしたらメーカーがなくなっていたというのでは困りますから。

■ユーザーよりもルートのほうが強い

Y:先輩から後輩への引き継ぎはうまくいっていますか? 最近の学部生は、就職活動が早く、卒業前から就職先の研修に駆り出されたりして忙しそうですよね。

和田:明確な「引き継ぎ」というのはしませんね。学部卒業後、院に進む人がほとんどなので、そういう問題もありません。

原:ただ、ここ数年、積極的にサーバーをいじろうという人が減ってしまいました。

大林:積極的なのは、原君だけ(笑)。

原:クラブでサーバーを立てるようなことをしなくても、たとえばHTTPサーバーなら個人で独自ドメインを取って用意できますよね。そのほうが失敗したときの被害は少ないからか、自宅レベルでやるのが部員の中でも流行しています。
 いまの世代は、最初に触ったのがWindowsで、しかもネットワークにつながっていたりするので、コンソール画面でサーバーを立てるということに、馴染みがないようです。

和田:ほとんどの部員が家のマシンをADSLや光ファイバーの回線に接続することが普通になっているので、「テレホーダイの時間に部室に来てメールチェックやネットサーフィン」というのは、過去の出来事になりました。家にいたままでも、IRCなどで連絡が取れるので、部室に頻繁に出入りする人は少なくなりました。また、さまざまな情報を雑誌や書籍など紙媒体からではなくWeb上で入手したり、ネット上での友達を作ったりする人もいます。
 ある先輩は、「ブロードバンド、ギガヘルツCPU、大容量記憶装置」をデフォルトにしているイマドキの部員のことを「ニュータイプ」と呼んで、自分たち「オールドタイプ」との考え方の違いを話していたことがあるのですが、僕もそのとおりだと思います。たとえばニュータイプに、「CPUが200MHzのころがあった」と話すと、「そんなんだったらWindowsが動かないじゃないですか」と返ってきます。

Y:ハードディスクのないパソコンがあったと話しても、信じてもらえないでしょうね。

和田:「ハードディスクが2MBで、十分に大きかった」というと、「そんなんやったら、動画が入らないじゃないですか」と(笑)。

Y:マイコンクラブに入る学生は、中学、高校時代からパソコンに馴染んでいる人が多いのでしょうか?

鴨:私のころは多かったのですが、いまはそうではない学生もいますね。

原:私は中学生のころに科学部というのに入っていたのですが、それがコンピュータのクラブでしたね。中3のときにちょうど、中学のコンピュータ室のマシンがDOSからWindowsに変わりました。

大林:私は高校時代にもクラブに入っていて、Free BSD(98)が最初に触ったUNIX系OSでした(詳しくは、「私のUNIX」参照)。

和田:私はポケットコンピュータのBASICを遊んだ後、FM-TOWNSのTownsOSや、MS-DOSからパソコンを使うようになり、中学から高校卒業までの数年間のブランクを経てKMCに入り、UNIX上でCを覚えました。UNIX系OSを使ったのはここに来てからでしたね。好きになったのは、素直に動いてくれたから。

原:そろそろ「一家に1台パソコンがあって普通」という世代が大学に入学しています。

Y:ということは、パソコン=Windowsという人が、ますます増えるというわけですよね。そういう世代はCUIに馴染みがないわけで、サーバー管理の後継者が出てこないと困りますよね。

和田:2回生にはサーバー構築に積極的な学生がけっこういて、いままでWindowsを使っていたのが、突然サーバーを立ち上げて、いまはまだ苦労しているようですが、それでも楽しさを見いだす奇特な人も現れています。

原:サーバー構築に興味を持っている学生は多いですよ。

Y:それなら後継者について心配しなくてもいいですね。皆さんは、今後もクラブや部員の快適さのためにサーバー管理をなさるわけですから、頑張ってくださいね。

原:人の快適さのためというより、使いにくい部分を自分たちで使いやすく変えていこうとしているだけですね。たとえば、「これこれのソフトが入っていない」といわれたら、「そしたら、お前、入れろや」とルート権限を与えるという感じですから。

大林:ここは、ユーザーよりもルートのほうが強いですよ。文句があるなら、自分でやれと。

Y:ここはそれが大きな特徴なんですね。

和田:自分1人ではやりたいことができなさそうなときは、ほかの人を誘っていっしょにやります。上級生から「お前やれ」といわれた下級生が1人ではできなかったら、そこで上の人が出てきて教えます。
 プログラムができあがって「できた、えっへん」という感じで満足気に画面を見ていたら、隣でゲームをしているはずの先輩から、突然「そことそこ、違うで」といわれて、驚いた経験もあります。

鴨:徒弟制度の中で技術が伝わっていくというのは、そういうことなんですよ。

■自分がやりたいことをやって、全体としておもしろいものを発表

Y:最後に、皆さんから、クラブや自分の活動に関するコメントをいただけますか?

原:クラブとしては、みんなが好きなことをするというスタンスを続けたいですね。Windows中心に使っていて、Windows上でゲームを作っている人がいたり、サーバーに興味を持ってルートの仕事をしている人がいたりで良いと思います。

和田:今後も、各部員それぞれが自分のやりたいことをやっていて、全体としておもしろいものが発表できるといいですね。

Y:菅野さんは、WindowsのAdministratorということで、その辺りに関するコメントをお願いします。

菅野さん:主にWindowsを使いつつ、Linuxも使う者としては、クロスプラットホームが、いろいろやることがあって楽しいという点を挙げます。あるOSに存在するものが、もう一方のOSにはないといったことは、両方使ってみるとよく分かります。そうすると、存在しないほうのOS環境に必要なものを、自分で構築できるようになります。

和田:新入生にできるだけUNIXを使ってほしいなぁと思います。「授業で必要そうだから、将来役立ちそうだから」という動機をときどき聞きますが、そういう真面目なものでなく「おもしろそうだから、カッコよさそうだから」で十分なので、とにかく使ってみてほしいですね。

大林:ここの環境を使っている人はどうせ顔見知りなので、ちょっとぐらい環境をつぶしてもかまわないや、と思えるようになれば、ルートは楽になります。こういうセリフは、上回生にならないといえないわけで、4年ぐらいいると、やっといえるようになります。

原:3回生という、そろそろ頑張らないといけない年代になったっぽいので、クライアントにも再インストールして、あやしいものを入れたいと思っています。

Y:最後にOBの鴨さんからのコメントで締めましょうか。

鴨:部員の考え方が、15年ぐらい前の、私がKMCの部員だったころと変わっていないことと、古典的なハッカーが育つ環境としての部室が現在も存在していることに、安心しています。
 学校教育では、確かに優秀なプログラマは育ちますが、優れた古典的なハッカーは、こういった環境でしか育たないと思います。

Y:本当に、こういう場所は大切ですよね。今日は貴重な場所を見せていただき、貴重なお話を聞かせていただき、ありがとうございました。


マイコンと言う言葉をよく知らない現役部員たち
注1 KMC出身の有名人
KMC出身の有名人としては、本文中で紹介した方々のほかにも、GNU GRUBオフィシャルメンテナ奥地秀則氏、アスキーのUNIX MAGAZINEに「ワークステーションのおと」を連載中の坂下秀氏などがいる。

注2 386BSD(98)
386BSD 0.0、0.1をNECのPC-98アーキテクチャに移植したもの。当時KMCメンバーだった鵜飼文敏氏(日本Linux協会の現会長)などが移植を行った。以下の文書は、UNIX USER 1993年8月号 「特集 PC UNIX選択の時代へ」の一部として鵜飼文敏氏が執筆したもの。
http://ukai.jp/Articles/1993/uu-386bsd98.txt

注3 SKK95
SKK95は、Windows 95/98/NT上でSKKライクなかな漢字入力を実現する日本語入力環境である。現在、プロジェクトは休止中。
http://www.kmc.gr.jp/proj/skk95/

注4 SKK(Simple Kana to Kanji conversion program)
佐藤雅彦氏(現京都大学教授)によって、1987年に設計・開発されたEmacs用日本語入力プログラム。SKK Openlabによって、GPLをベースとした拡張が進行している。
http://openlab.ring.gr.jp/skk/index-j.html

注5 Anthy
2000年、田畑悠介氏を中心としたKMC有志によって開発がスタートした、UNIX全般で動くかな漢字変換エンジン。2001年にはIPAの未踏ソフトウェア創造事業に採択されるなどして、開発が続いている。
http://anthy.sourceforge.jp/

注6 Ruby Refactoring Browser
Rubyスクリプトのリファクタリングを支援するソフトウェア。リファクタリングとは、ソースコードの動作を変えずに、内部構造をより良いものに修正することを指す。
http://www.kmc.gr.jp/proj/rrb/

注7 Semantics
シンタックス(データの形式や構造)に対応する概念で、データの意味内容を指す。

注8 KMCからは離れている
これまでは、「京大マイコンクラブ」としてコミックマーケットに参加してきたが、プロジェクトメンバーが就職・進学などで京大を離れ、すでにほとんどのメンバーが関東地方に移住した。そのため、サークル名を「不思議キッチン」と変えてコミックマーケットに参加していくそうだ。
http://www.wankichi.net/

注9 UUCP接続
UUCPは、UNIX to UNIX CoPyの略称。データを送受信する場合にのみ、電話回線を介してネットワークへの接続を行う。

注10 Sendmail
1982年にEric Allman氏によって開発された、メール配送エージェント(MTA、Mail Transfer Agent)。ちなみに、sendmail.cfを容易に作成するためのソフトウェアCFを開発した中村素典さんも、KMCのOB。
http://www.sendmail.org/jp/

私のUNIX #20 〜大林一平さんのUNIX〜

●OS環境:Debian GNU/Linux、FreeBSD

 クライアントとして普段使っている環境はDebian GNU/Linux(以下、Debian)です。この環境で、メール、Web閲覧、IRC、プログラミングなどほぼすべてのことを行っています。FreeBSDは主にサーバーとして使っていますが、気が向いたときはクライアントとして使ったりもします。
 UNIX系OSを触り始めたのは1997年くらいで、そのときはFreeBSD(98)でした。その後KMCに入部して本格的にUNIX系OSを使い始めました。管理の中心となっていた人がDebian好きで、その影響で私もDebianが中心になりました。
 Windowsは自作のソフトウェアの動作確認やバイナリ生成のときくらいにしか使用しません。

●ウィンドウマネージャ:ion、screen

 キーボード使いに優しいウィンドウマネージャ、ionを使っています。twm(KMC旧標準)→Window Maker(KMC現標準)→ionと移ってきました。ほとんどマウスに触れない生活を送っています。キーバインドはM-{h,j,k,l}でフレームの移動、M-Tabでタブの移動、M-qがprefixと変更してあります。あと、リモートで作業するときはscreenも使います。

●シェル:zsh

 かつてはKMC標準のtcshを利用していましたが、現在はzshです。

●シェルの設定

 ヒストリをプロセス間で共有するようにしてあるほかは、ほぼ標準のままのはずです。

●エディタ:Emacs21

 文章書き、プログラミングなどほぼすべてをEmacs上で行っています。設定はデフォルトからそんなに変えていません。設定ファイルの編集などはvi、ngなどを適当に使っています。

●日本語入力:SKK

 KMCに入部すると、真っ先にEmacsとSKKの使い方を教えられます。そこでSKKにはまって、そのままずっと使っています。たまにWindowsを使うとEmacs+SKKでのキー入力をしてしまいますね。Emacs以外ではskkinputを使っているのですが、最近はuimを試してみたりもしています。

●そのほかのこだわり

 MUAにmutt、Web閲覧にw3m、IRCはEmacsおよびirchat-pj|lieceと、ターミナル+αだけで暮らしています。w3mで読めないページはMozillaで見るのですが、w3mにm17nがマージされたため現在ではほぼ不要となっています。あと、w3mやEmacsではmigemoがとても便利です。
 Xはほとんど解像度増大と画面を縦分割するためだけに使っているようなものです。

[前回記事] [トップ] [次回記事]

Last modified: Mon May 21 13:25:22 JST 2007 by Tomoko Yoshida