横着プログラミング 第5回: QuickML: 超お手軽なメーリングリスト

最終更新日: 2002-07-18 (公開日: 2002-07-18)

Unix Magazine 誌に 2002年1月号から 2003年2月号にかけて連載し ていた記事の元の原稿です。


わたしは、インターフェイスの研究においては、試験と評価という
方法がそれほど役に立つものだとは思っていない。傲慢な考え方か
もしれないが、わたしがそう判断する根拠はこうである。つまり、
注意深く試験しなければ見つからない程度の違いならば、そもそも
そこに大した違いはないということなのだ。
-- Nicholas Negroponte

*1

年がら年中メールを書いている。以前は計算機に向かっているとき だけだったが、最近では携帯電話でメールを打つことも多くなった。 当然ながら、年がら年中メールを読むことになる。1日に受け取る メールのほとんどはメーリングリストからのものである。

「インターネットはメーリングリストに始まり、メーリングリスト に終わる」*2という言葉があるように、メーリングリストは インターネット上でのグループコミュニケーションに欠かせないツー ルである*3

しかし、一般にメーリングリストは作成および管理に何かと手間が かかるため、「来週の宴会の打ち合わせに使おう」といった一時的 な用途には使いづらい。そこで、今回は使い捨て感覚でお手軽にメー リングリストを作って活用できるシステム QuickML を紹介する。

メーリングリスト地獄

まず最初に言いたいのは、メーリングリストは面倒くさい ということである。歴史の長いメーリングリストシステム Majordomo*4の論文 *5では、手動によるメーリングリスト管理の面倒 さをまず最初に指摘している。具体的には

といった次から次へとやってくる要求にいちいち応えるのは時間を 消耗する退屈な作業だという。そして、そういった単調な作業を自 動化するために Majordomo は開発された。

Majordomoを使ったメーリングリストでは、コマンドメールを用い て、メンバーの参加や退会といった処理がプログラムによって自動 的に行われる。コマンドメールとは、Majordomo のシステムが受け 取って解釈するメールである。たとえば、Majordomoで運営されて いるメーリングリスト foo@example.com に参加するには、 Majordomo@example.com に

subscribe foo

というメールを送る。Majordomo と同様のシステムとしてはfml *6 や Mailman *7 が存在する。

しかし、これらのシステムを導入するには、メールサーバにソフト ウェアをインストールする権限が必要だったり、メールサーバ管理 者としてのノウハウが必要だったりするため、一般のユーザには敷 居が高い。管理者に頼めばメーリングリストを作ってもらえること もあるが、「宴会の打ち合わせをするからメーリングリストを作っ て欲しい」とはなかなか気軽には頼みづらい。

また、メーリングリストを作るためには、専用のコマンドを実行し たり設定ファイルを編集したりといった面倒な作業が必要である。 メーリングリストを作った後も、配送不能アドレスを自動削除する 機能のないシステムでは、頻繁に届くエラーメールをチェックして 配送不能アドレスを手作業で削除するという面倒が待っている。

一方、メーリングリストの一般参加者からしてみても、参加や退会 のために専用のコマンドメールを覚えないといけないのは面倒であ る。退会のためのコマンドメールを間違ってメーリングリスト本体 に送って顰蹙を買うという失敗はよく見受けられる。

qmail*8 を利用したメールサーバ では ~/.qmail-foo*9というファイルにメールアドレスを 1行にひとつづつ並べるだけで、「ユーザ名-foo@ドメイン名」とい うメーリングリストが作れる。たとえば satoru@example.com とい うメールアドレスを持っている場合、上のファイルを作ると satoru-foo@example.com というメーリングリストを作れる。管理 者の権限が不要な点は優れているが、いちいちファイルを作るのは 面倒である。

FreeML*10 や eGroups*11 といった Web上のサー ビスは、システム管理のノウハウのない普通のユーザでも簡単にメー リングリストを作ることができるため、近年広く利用されている。 しかし、メーリングリストの作成やアカウントの登録をするために Web 上のフォームにあれこれと入力する必要があるため、これまた 面倒くさい。

このように、メーリングリストというものは何かと面倒が多く、あ る程度の覚悟がないとこれまでは運営できないものであった。ソフ トウェア開発の情報交換や議論などのように、はっきりした目的が あって長続きするメーリングリストであれば、面倒な設定を行って 運営する価値があるが、宴会の打ち合わせをするといった一時的な 用途のためにそんな面倒なことをする気には到底なれない。

QuickMLとは?

そこで、前述のような面倒さを一気に解決するために QuickML と いうシステムを作って <http://QuickML.com> で運用を始めた。

QuickML.com
QuickML.com

QuickMLは

といった面倒さを解決し、いつでも、どこでも、誰でもお手軽にメー リングリストを活用できるシステムである。

QuickMLの使い方

QuickML では、メーリングリストを作るために専用のコマンドを実 行したり、Webブラウザを立ち上げたりする必要はなく、普通にメー ルを送る感覚でメーリングリストを作って活用することができる。

メーリングリストの作成

○○○@quickml.com のような任意のアドレスにいきなりメー ルを送るだけで、新しいメーリングリストを作成できる。たとえば 宴会のメーリングリストを作るには enkai@quickml.com にメール を送ればいい。このとき、 From: と Cc: のアドレスがメーリング リストに登録される。

Subject: 宴会メーリングリスト
To: enkai@quickml.com                ← 作りたいMLのアドレス
From: satoru@namazu.org              ← 自分のアドレス
Cc: masui@pitecan.com                ← 参加者リスト

突然ですが、宴会好きのメーリング     ← 本文
リストを作ってみました。 

同名のメーリングリストがすでに存在したときは、「あなたは○○ ○メーリングリストのメンバーではありません」というエラーメッ セージが返される。その場合は、違う名前をつけて作り直す必要が ある。QuickMLではenkai@gotanda.quickml.com のようにア ドレスに任意のサブドメインが入ったメーリングリストを作ること ができるため、名前の衝突は容易に回避できる。

メーリングリストへ投稿

メーリングリストへ投稿するには、メーリングリストのアドレスに 普通にメールを送ればいい。

Subject: 今晩どうすか?
To: enkai@quickml.com                ← MLのアドレス
From: satoru@namazu.org              ← 自分のアドレス

さっそくですが今晩はどうでしょうか。 ← 本文

メーリングリストにはメンバーだけが投稿できる。メンバー以外か らの投稿には、「あなたは○○○メーリングリストのメンバーではあ りません」というエラーメッセージが返される。

新しいメンバーの追加

すでに参加しているメンバーは新しいメンバーを Cc: で追加でき る。

Subject: 小松君を追加
To: enkai@quickml.com                  ← MLのアドレス
From: satoru@namazu.org                ← 自分のアドレス
Cc: komatsu@example.ac.jp              ← 新メンバーのアドレス

小松君を新しいメンバーとして           ← 本文
呼んできました。

Cc: でメンバーを勧誘するというこの仕組みは、友達に声をかけて 仲間に誘うという行為をモデルとしている。

メンバーが追加された際には、メールの本文の先頭に

ML: enkai@quickml.com
新メンバー: komatsu@example.ac.jp

のような情報が付加される。また、メールの末尾には次のように、 メンバーリストが付加される。

<enkai@quickml.com> のメンバー:
satoru@n...
masui@p...
komatsu@e...

不特定多数のメンバーが参加するメーリングリストでは、アドレス の流出が問題になることがあるため、メンバーリストのアドレスは @マークの2文字目以降を伏せる形で載せている。

メーリングリストへの参加

すでに参加しているメンバーを Cc: で指定してメールを投稿する と、メーリングリストに参加できる。参加のために送ったメールは メーリングリストに流れるため、簡単な自己紹介などを書いておく といい。

Subject: 参加します
To: enkai@quickml.com                ← MLのアドレス
From: tsuka@example.jp               ← 自分のアドレス
Cc: masui@pitecan.com                ← 参加メンバーのアドレス

塚田です。                           ← 本文
宴会に参加したいのでよろしく。       

Cc: で知り合いのメンバーを指定するというこの仕組みは、友達に 声をかけて仲間に入れてもらうという行為をモデルとしている。こ のように、QuickMLのメンバー登録は日常のグループコミュニケー ションを元にして設計されている。

メーリングリストから退会

メーリングリストに空メールを送ると、メーリングリストか ら退会できる。

Subject: 退会します
To: enkai@quickml.com                ← MLのアドレス
From: satoru@namazu.org              ← 自分のアドレス

                                     ← 空の本文

空メールを送るという操作は一種のコマンドメールと言えるが、# bye や unsubscribe enkai@quickml.com といったコマンドを覚え るよりは簡単である。

メーリングリストへの復帰

退会したメーリングリストに再びメールを送ると、メーリングリス トに復帰できる。

Subject: 復帰しました
To: enkai@quickml.com                ← MLのアドレス
From: satoru@namazu.org              ← 自分のアドレス

仕事が一段落しました。またよろしく。 ← 本文

メーリングリストに復帰する場合は、メーリングリストに新規に参 加する場合と違って Cc: に知り合いのメンバーを指定する必要は ない。

メンバーの削除

間違ったアドレスを登録してしまったなどの理由でメンバーのアド レスを削除したい場合は、 Cc: に削除したいアドレスを指定して メーリングリストに空メールを送ればいい。

Subject: 削除します
To: enkai@quickml.com                ← MLのアドレス
From: satoru@namazu.org              ← 自分のアドレス
Cc: masui@fugo.pitecan.com           ← 削除するアドレス

                                     ← 空の本文

嫌いなメンバーを勝手に削除するといった悪用も考えられるが、削 除されたメンバーには削除された旨のメールが届くため、知らない うちに削除されていた、というトラブルは防げる。

メーリングリストの自動管理

QuickML の大きな特長のひとつに、メーリングリスト管理者という 概念が存在しないという点がある。QuickML には、メンバーの自動 削除とメーリングリストの自動消滅の仕組みが備わっているため、 メーリングリスト管理の作業は一切要らない。そのため、特別な権 限を持った管理者は QuickML には存在せず、すべてのメンバーが 対等の立場でメーリングリストに参加する。

メンバーの自動削除

QuickML では、エラーメールが 5回返ってきたアドレスはメーリン グリストから自動的に削除される。このとき、メンバーを削除した 旨のメッセージがメーリングリストのメンバー全員に通知される。

配送不能アドレスを自動的に削除する機能のないメーリングリスト システムでは、エラーメールをチェックして配送不能アドレスを削 除するという作業を管理者が行う必要がある。一方、QuickML では その必要は一切ない。

メーリングリストの自動消滅

すべてのメンバーが退会したメーリングリストは最後のメンバーが いなくなった時点で自動的に消滅する。QuickMLにはメーリングリ スト管理者という概念が存在しないため、メーリングリストの作成 者が退会しても、メーリングリストはそのまま存続する。

投稿が途絶えてから 1か月経過したメーリングリストも自動的に消 滅する。自動消滅する前日に 「Subject: [○○○] メーリングリ ストもうじき消滅」 というお知らせのメールがメーリングリスト のメンバー全員に届けられる。その後 24時間以内に投稿がない場 合はメーリングリストが消滅する。

放置しておけばメーリングリストが自動的に消滅するというこの仕組 みは、お手軽にメーリングリストを作って活用するための重要な要 素である。投稿の途絶えたメーリングリストが永遠に残っても実害 はないかもしれないが、気持ちが悪い。

QuickMLの活用法

QuickML は使い捨て感覚でお手軽にメーリングリストを作れるため、 これまでメーリングリストを作ろうとは思わなかった用途にも活用 できる。ここでは、QuickMLの効果的な活用法をいくつか紹介する。

少人数のグループの連絡

友達、家族、サークル、ゼミ、趣味の仲間、宴会参加者、旅行参加 者といった少人数のグループでメーリングリストを作って連絡をと ると便利である。

Subject: 北海道スキーツアー
To: ski@hokkaido.quickml.com
From: satoru@namazu.org
Cc: komatsu@example.ac.jp, tsuka@example.jp

北海道スキーツアーのメーリングリストを作りました。

私の周りでは宴会やミーティング、旅行などの打ち合わせに QuickML が大活躍している。

一部の人しか興味のない話題

大きなメーリングリストに参加しているときに、一部でしか興味の なさそうな話題を続けるのに躊躇することがある。QuickML では小 さいメーリングリストをすぐに作れるので、 大多数の人達に迷惑 をかけることなく一部のメンバで議論を続けることができる。

Subject: vim踊り
To: vim-dance@quickml.com
From: satoru@namazu.org
Cc: komatsu@example.ac.jp, hidai@example.net

vim踊りの話の続きはこちらでやりましょう。
他の人は興味ないみたいなので。

話題ごとのメーリングリスト

ちょっとした話題を仲間内で議論するときに、興味のある人を集め てメーリングリストを作ると便利である。

Subject: iPod買ってきました
To: ipod@materialists.quickml.com
From: masui@pitecan.com
Cc: satoru@namazu.org

iPod買ってきました。
明日、持ってきて自慢します。

私の経験では、すぐにネタ切れになって消滅するメーリングリスト がほとんどだが、まれに議論が盛り上がって長続きするときもある。

用途ごとにアドレスをたくさん作って使う

QuickML では好きなアドレスのメーリングリストをたくさん作れる ので、用途ごとに異なるアドレスを作って活用できる。たとえば、 思いついたアイディアを携帯電話からメールで idea@satoru.quickml.com に送ったり、買い物メモを buy@satoru.quickml.com に送ったりすると便利である。

Subject: いやなケータイ
To: idea@satoru.quickml.com
From: satoru@namazu.org

ケータイなのになぜかお父さんが電話にでる
というアイディアはどうだろうか?

用途ごとにアドレスごとを分けておくと、メールソフトの自動振り 分け機能を用いて、後から簡単に情報を整理できる。

メーリングリスト参加者の募集

QuickMLのメーリングリストにメンバーを募集するときは、メール や Web などで次のように宣伝をするといい。

QuickMLユーザのメーリングリストを作りました。
参加したい人は Cc: に satoru@namazu.org を入れて、
quickml-users@quickml.com
にメールをください。本文に簡単な自己紹介をお願いします。

上のメーリングリストは実在するので興味のある方は参加していた だきたい。

QuickMLの弱点

QuickML はお手軽にメーリングリストを作って活用できる反面、い くつかの弱点を持っている。

大規模なメーリングリスト

QuickMLは小さなメーリングリストを運営するには適しているが、

といった性質を持つため、たくさんのメンバーが参加するメーリン グリストの運営には向いていない。その点、 Majordomo や fml な どのシステムは、メーリングリストに参加メッセージを流さずにメ ンバーを追加できるため、大規模なメーリングリストを運営するの に向いている。

セキュリティ

Majordomo や fml などのシステムは、メーリングリストに参加す る際に、アドレス登録の確認を行う機能を持っている。悪意のある ユーザが他人のアドレスを勝手にメーリングリストに登録するのを 防ぐためである。この仕組みは、セキュリティを高める一方で、メー リングリストへの参加が面倒になるという欠点を持つ。

一方、QuickML は、手軽さを優先し、アドレス登録の確認を行う仕 組みは持たない。セキュリティの点で不安は残るものの、現在のと ころ悪用のトラブルは起きていない。

Webの内容を誰でも書き換えられるサービス Wiki Wiki Web *12 が特に問題を起こさずに運営されているのと同様に、誰 でもメーリングリストを作れるサービス QuickML の運営も平和に 行っていきたいと考えている。しかし、利用者が増えたときにセキュ リティに対する方針を改める必要があるかもしれない。

i-modeと相性が悪い

QuickML は普通にメールを送るだけでメーリングリストを作って活 用できるため、携帯電話から利用すると特に便利である。しかし、 国内で最も普及している携帯電話である i-mode の端末は Cc: を つけてメールを送ることができないため、QuickMLとの相性がたい へん悪い。メンバーの追加が行えないのである。

i-mode 用にメンバー追加を行う Webインターフェイスを作って対 応することも考えたが、自分が i-mode を使っていないため、実現 には至っていない。

また、i-mode の端末はへッダの Reply-To: を無視するため、普通 に返信を行うと送信者にメールを送ってしまうという問題も抱えて いる。QuickML はメールの末尾に

--
ML: enkai@quickml.com
使い方: http://QuickML.com/

というフッタを挿入するので、ML: の右側のアドレスをカーソルで 選択すれば、メーリングリストに返信が行える。au や H" の端末 では Cc: も Reply-To: も問題なく扱えるようである。

メールの振り分け問題

QuickML はメールのへッダに、メーリングリストであることを示す 次のようなフィールドを付加する。

X-Mail-Count: 123
X-ML-Address: enkai@quickml.com
X-ML-Name: enkai
X-QuickML: true

この情報を利用すれば、メーラーの振り分け機能でメーリングリス トのメールをフォルダごとに分類できる。しかし、QuickMLでは、 あまりにも手軽にメーリングリストを作れるため、参加しているメー リングリストが増えすぎて振り分けの規則をいちいち書くのが面倒 という問題が起きる。

メーラーの機能に QuickML のメーリングリストを自動分類する機 能が組み込まれれば、この問題は解決するが、そのためには、まず QuickML が広く普及する必要がある。

エージェントとの連携

QuickML は極めてシンプルなシステムとして実現されているため、 大抵のメーリングリストシステムが持っている、投稿されたメール をファイルとして保存する機能すら備えていない。

システムに手を入れれば、メールをファイルとして保存するくらい の機能は簡単に追加できる。しかし、そういった改良を加えていく と、システムが肥大化して収拾がつかなくなるという事態に陥りや すい。

そこで、QuickML では本体をシンプルに保ち、追加機能はエージェ ントとして実現するという方針を採用した。ここでいうエージェン トとはメールアドレスを持つプログラムのことである。メーリング リストのメンバーとしてエージェントを登録すると、そのエージェ ントの持つ機能を利用できる。

手始めに、メールをファイルとして保存するアーカイバ・エージェ ントを作成した。アーカイバ・エージェントは、メーリングリスト に投稿されたメールをファイルに保存し、メールを Webブラウザか ら閲覧するための Webページを作成する。

メール一覧
メール一覧
検索結果
検索結果
メール内容
メール内容

上の画面は quickml-users@quickml.com に登録したアーカイバ・ エージェントが作成した Webページである *13。 議論の流れをスレッド表示する機能は持たないが、簡単な検索機能 は備えている。スレッド表示の機能を追加するにはエージェントの プログラムを修正するだけでよく、QuickML本体に手を入れる必要 は一切ない。

他にも、グループウェアと連携して予定の時刻になるとメーリング リストにスケジュールを知らせてくれるリマインダ・エージェント や、情報家電と連携してテレビ番組のビデオ録画を開始したことを 知らせてくれるビデオ録画エージェントなどがあれば便利だと考え ている。

追加機能をエージェントして実現するこの仕組みは、個々のシンプルな コマンドを組み合わせて大きな仕事を行うというUnix のツールボッ クスアプローチを見習っている。

QuickMLの誕生

QuickML のアイディアは本紙連載でおなじみの増井俊之氏との「ど うしてメーリングリストはこんなに面倒くさいのだろうか。けしか らん」という雑談から生まれた。氏はすぐさまプロトタイプを Perl で実装し、運用の実験を始めた。現在、QuickML.com で運用 を行っているシステムは私が Rubyで書き直したものである。

QuickML.com は昨年の11月にサービスの実験を開始し、今年の 1月 に一般への公開を行った。その後 2か月の間に約 800 のメーリン グリストが作成され、現時点でそのうち約 500が残っている。300 のメーリングリストは短期間のうちに消滅したことになる。一方、 現在のユーザ数は重複なしのアドレスで数えて約 3,000人である。

公開当初は、管理者の権限が欲しい、細かくカスタマイズしたい、 といった要望が多く寄せられたが、次第に QuickMLのコンセプトが 理解されていき、そういった要望はほとんど届かなくなった。

おわりに

メールというと最近では携帯電話のメールを指すことが多いようだ が、Unixでメールに慣れ親しんだ私としては、メールといえば Unix という印象が強い。FreeBSD のマニュアルによると、mailコ マンドは Unix の最初のバージョンから含まれていたそうだ。Unix Version 1 といえば 1971年の話である。man mail を実行すると次 の記述が見つかる。

HISTORY
     A mail command appeared in Version 1 AT&T UNIX. 

その後、John Postel氏が SMTP*14 の仕様を RFC にまとめた のが 1982年である。30年前のコマンドと20年前のプロトコルが現 在でもほとんど同じ形で使われているというところに、基本設計の よさがうかがえる。共通するのはどちらもシンプルということであ る。

最近ではインスタント・メッセージをはじめとするリアルタイム・ コミュニケーション*15 の手段を利用する機会が増えてきたが、メールという時間差のコミュ ニケーション手段が廃れることはなく、メールがある限りメーリン グリストは使われ続けるものと思われる。

実際に数ヵ月間、利用した印象では、QuickML はグループコミュニ ケーションのツールとして、かなりいい線をいっていると実感して いる。みなさんもぜひ活用していただきたい。

余談: 「普通の人」とのメール

1日に受け取るメールのほとんどはメーリングリストからのもので ある、と冒頭で述べたが、私はメールを使い始めて間もない頃から、 Unix関連のメーリングリストでの情報交換や議論に積極的に参加し ている。それと同時に、NetNews の fj *16 でも 同様に議論を行ってきた。

これらの活動は、技術的な内容のメールを簡潔に書くためのいい訓 練になった。冗長で不明瞭なメールは古株の参加者から辛辣に叩か れる傾向があるため、無駄なく正確に書く癖がついたのである。し かし、思わぬ副作用が後になって現れた。Unix とは関係ない友人 からのメールにもいつもと同じ調子で答えてしまい、「冷たい奴だ」 とあきれられてしまったのである。

携帯電話のメールでは特にそうだが、口語の気楽なメールに対して、

> ごめん。今起きた。
> いったん学校行って晩飯食えそうだったら連絡するよ

「晩飯食えそうだったら連絡する」では具体的にいつ頃になるの
かわかりません。もっと状況を正確に伝えてもらえませんか。
そもそも、今ごろ起床するとは堕落した生活ではないでしょうか。

などと堅苦しい返事をすれば嫌われるに決まっている。最近では気 楽なメールには気楽な返事をするように心がけている。みなさんも 同じ失敗をしないように気をつけていただきたい。

参考文献


Satoru Takabayashi

*1Nicholas Negroponte 『being digital』 (アスキー) 1995
*2古瀬幸広・廣瀬克哉 『インターネットが変える世界』 (岩波新書) 1996
*3メーリングリストについては本誌2002年2月号の「特集 ネットワークの基礎知識(4)」に詳しい。
*4<http://www.greatcircle.com/majordomo/>
*5末に参考文献
*6<http://www.fml.org/>
*7<http://www.list.org/>
*8<http://www.jp.qmail.org/>
*9~/.qmail-foo は自分のホームディレクトリ の下の .qmail-foo ファイルである。私の場合は /home/satoru/.qmail-foo。
*10<http://www.freeml.com/>
*11<http://www.egroups.co.jp/>
*12<http://c2.com/cgi/wiki>。Wikiには他にもさまざまな実装が ある。
*13<http://0xcc.net/archives/quickml-users/>
*14 RFC 821 Simple Mail Transfer Protocol。インターネットでメールを転送するプロトコル。2001年 に RFC 2821 によって更新された。
*15インスタント・メッセージについては本誌 2002年3月号の「特集 ネットワークの基礎知識(5)」に詳しい。
*16NetNewsのニュースグルー プのひとつ。本誌連載の「NetNews 便り」を参照のこと。