ものを作ってハッカーはゆく――まつもとゆきひろハッカー養成塾(1/2 ページ)

オープンソースマガジンに掲載されるやいなや、オープンソースコミュニティーに大反響を巻き起こした人気連載「ハッカー養成塾!」がITmedia上で装いも新たに登場! 名だたるハッカーたちがバトン形式で講師として参加する世にもまれな塾へようこそ。

» 2007年03月29日 07時30分 公開
[ITmedia]

 国内だけでなく、海外からも高い評価を受けているプログラミング言語「Ruby」。その開発者が本稿の講師まつもとゆきひろ氏だ。氏がWeb上で公開されている日記では、オープンソースエンジニアやソフトウェアのありかたにも言及し、日夜熱い議論が繰り広げられ、ソフトウェア業界を刺激し続けている。本講義では、氏がこれまで作ったものを中心に、その足跡を振り返ってもらう。

講師履歴書

名前:まつもと ゆきひろ

所属:ネットワーク応用通信研究所 特別研究員

アクセス:http://www.rubyist.net/~matz/

プロフィール:

1965年大阪生まれ、鳥取県育ち。大学卒業以来ずっとぐうたら職業プログラマーをやっています。いまの職場に来るまでは、職業プログラマーとして、社内OAシステムや造船設計システムを開発してきたことになっています。が、その実体はシステム内部で使われるツールやライブラリを好き勝手に開発してきました。


これまでに作ったもの

 ハッカーは、「作ったもの」によって評価されるのだと思います。最近では「Rubyのまつもと」として知られるようになってしまったわたしですが、そのほかにも以下のようなものを作ってきました*。いままで作ってきたものは、「ハッカーとしてのわたし」を表現しているような気がします。

Emacs Lispによるメールリーダー「cmail」

 cmailは、もともと山梨大学(当時)の林さんが開発されたメールリーダーです。学生時代のわたしは、自分が使いやすいようにcmailをいろいろ改造して使っていたのですが、あるとき「フリーソフトウェアなんだし、せっかくなので改造を本家に還元しよう」と思い立ちました。林さんにメールを書いたら、「わたしはもう使っていませんからご自由にどうぞ」というお返事をいただき、わたしが引き取ることになったのです。わたしにとって最初のフリーソフトウェアということになります。その後cmailは、コミュニティーの協力を得てさまざまな新しい機能が追加されました。MIME*対応、GPG*対応、3ペイン表示、IMAP*対応などなどが追加され、発展を続けたのです。わたしは数年前にメンテナを引退しましたが、昨年新しいメールリーダーmorq(後述)に移行するまでは、実に14年もの間cmailを使い続けていたことになります。

日本語が使えるXView風GUIライブラリ

 また、XView*に似たGUIライブラリを作ったこともあります。これは、以前勤めていた会社(独立系ソフトハウス)で社内OAシステムを作っていたときのことです。「日本語が使えるGUIツールキットのソースコードが手に入らない」という口実のもと開発しました。日本語が使えないなんて、GUIライブラリの国際化が進んだいまでは信じられないですが、もう14〜5年も前のことですから。当時はまだMotif*とOpenLook*の対立が盛んなころでした。OpenLookの方が優れていると感じたわたしは、OpenLookのツールキットであるXViewを参考にAPIをデザインしたのです。

 ただし、作ったのは単なるGUIライブラリではありませんでした。まずObjective-C*風のメッセージ呼び出しの仕組みとクラスライブラリ(OrderedCollectionとか)を作って、その上にGUIツールキットを構築しました。ウインドウやボタンのような部品も、そのオブジェクト指向ライブラリのクラスとして実装したのです。あのころ、わたしは若かったなあ。実は、このライブラリのごく一部はRubyに流用されています*

オブジェクト指向データベースクラスターの分散ガベージコレクション

 これは10年くらい前の仕事です。ObjectStoreという、C++のオブジェクト指向データベースを使ったシステムを開発していたのですが、メモリ管理を自動化したいという要求に応えるため、

  • 同一データベース内ではマーク&スイープ方式
  • データベースを超えた参照(external reference)はリファレンスカウントを使う方式

という分散ガベージコレクタを実装しました。ネットワーク上に分散したデータベースの位置を管理するため、小さな中央サーバを用意したのですが、この部分はRubyを利用しました。ソケットプログラミングが非常に楽で重宝した覚えがあります。

検索ベースメールリーダー「morq」

 2004年から2005年にかけて久しぶりに開発したアプリケーションが、メールリーダーmorq*です。

 morqはGmailの影響を受けて開発されました。大量のメールが届く昨今では、メールを分類するという行為は遠からず破たんします。これからはGmailのような全文検索ベースのメール管理法が有効だと考えました。しかし、Gmailには「ネットワーク接続がないと使えない」、「1Gバイトの容量制限(当時)は将来的に不安」という欠点があります。しかし、ふと見ると手元のPCにはまだ数Gバイトの空きがあるではありませんか。ハッカーたるもの、なければ自作すれば良いのです。そういうわけで作ったのがmorqです。バックエンドがRuby+全文検索エンジン「Rast」。フロントエンドがEmacs Lispでできています。

 わたしはもうかなり長い間、morqをメインのメールリーダーとして使っていますが、なかなか快調です。「確か先月ごろ、こんなフレーズを含むメールがあったよな」というおぼろげな記憶からメールを見つけ出し、そのメールを含むスレッドを一度に読むことができます。人間が幾らこまめに分類しても、数万から数十万通のメールからこの速度で目的のメールを見つけ出すことはできません。

 morqはRastのパッケージに同梱されています。こちらのサイトからRastの最新版を入手してください。2007年3月28日現在では、Rast 0.3.1が最新版です。

このページで出てきた専門用語

以下のようなものを作ってきました

このほかパッチなどは数知れず。

MIME

Multipurpose Internet Mail Extensionの略。メールを介して画像や音声、非アスキー文字のようなバイナリデータを送受信するための規格。RFC2045などで規定されている。

GPG

GNU Privacy Guardの略で、主にメールの送受信用などに使われる暗号ソフトウェア。PGP(Pretty Good Privacy)が、米国の暗号輸出規制に抵触するということで、その代替としてGNUが開発した。

IMAP

Internet Message Access Protocolの略。メールをサーバから受信して読むための規格の1つ。同様の規格としてよく使われているPOP3とは異なり、メールをサーバ上に保存して一元管理する。モバイル用途などで利用価値が高い。

XView

サン・マイクロシステムズが開発した画像処理ライブラリ。Xlibの上位レイヤーに位置づけられるもので、シンプルで利用しやすいのでよく使われていた。

Motif

UNIXで利用できるGUIツールキットの1つ。UNIXの標準化を進める業界団体OSF(Open Software Foundationの略。現在はThe Open Groupの研究部門)が開発し、各社にライセンスしていた。

OpenLook

サン・マイクロシステムズが開発・配布していたGUIツールキット。XViewを使って実装されている。

Objective-C

C言語に対して上位互換性を持つよう設計されたオブジェクト指向プログラミング言語。Smalltalkに似たクラスとメッセージ機構を備えている。

一部はRudyに流用されています

st.cとメソッドキャッシュの部分。

morq

本当はMail ORGanizerで「morg」という名前にしたかったが、同名のソフトがすでに存在していたので、Mail ORganizer using Qdbm(QDBMを使ったメールオーガナイザー)という意味でmorqという名前にした。もーくと発音する。


       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ