最新版オープンソースメールソフト
Sylpheed 3.0 徹底解説
～マルチスレッド対応とプラグイン機能によるSylpheed の未来～

OpenSource Conference 2010 Tokyo/Spring
SRA OSS, Inc. 日本支社 山本博之
Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

Sylpheedとは オープンソースのメールソフト
 ライセンスはGPL+LGPL 高速・軽量
 高機能
 高い操作性
 高い信頼性 導入が容易 マルチプラットフォーム
 Windows, Linux, etc.

 多言語対応(約30ヶ国語)
Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

Sylpheedの歴史
 1999年9月頃

開発開始

 実は仮の名前は「mailer」でした 2000年1月1日
 2004年12月
 2005年7月

バージョン0.1初公開バージョン1.0リリース
バージョン2.0リリース

 2010年2月

バージョン3.0リリース

 5年ぶりのメジャーバージョンアップ 初公開から10年
Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

Sylpheed 3.0の改良点
 マルチスレッド化
 プラグイン機能 アドレス帳の改良
 新規セットアップダイアログの刷新
 フォルダ読み込みの高速化

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

(1) マルチスレッド化
Sylpheed
メインスレッド

これまではすべての処理がメインスレッド内で行われていた

ユーザインタフェース(イベントループ)
ネットワーク通信

クエリ検索

サーバとの接続やIMAPフォルダへのアクセスのたびに操作できなくなる!

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

(1) マルチスレッド化
Sylpheed
メインスレッド

ネットワーク通信
スレッド

ユーザインタフェース(イベントループ)

外部コマンド実行スレッド

クエリ検索実行スレッド

接続時やIMAP4サーバへのアクセスなどの場合でも操作が妨げられない

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

それぞれ別スレッド上で動作

(1) マルチスレッド化
 以下の部分をマルチスレッド化
 ネットワーク通信(サーバとの接続、IMAP4の通信)
 クエリ検索 外部コマンド実行(bsfilterの実行など)

 GLibが提供しているGThread APIを利用

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

(1) マルチスレッド化 - 苦労したこと
 資料が少ない!
 GTK+のリファレンスマニュアルだけでは情報不足
 昔一度実装を試みて挫折(0.xの頃)
 ぐぐったら非常に参考になる記事が1件あった

 ロックのかけ忘れによるフリーズ多発 一部のコールバック関数からGTK+のAPIを呼ぶときはロックをかける必要があるが、よく忘れる 3.0リリース直前にも1箇所発見

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

(2) プラグイン機能

Sylpheed

プラグインDLL
プラグインDLLlibsylph

libsylpheed-plugin

GTK+

Sylpheedに後から機能を追加できる

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

(2) プラグイン機能
 Sylpheed本体に手を加えずに機能拡張が可能
 本体が肥大化しない メインの開発者以外でも気軽に機能を追加できる プラグインは通常のDLLとして実装
 ライブラリとして提供されるプラグインAPIとGTK+を使用
 libsylph, libsylpheed-plugin
 Sylpheedと同じメモリ空間で動作 Sylpheed内部のデータを直接いじったりはできない(安全性のため)Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

(2) プラグイン機能
プラグインで現在可能なこと
 LibSylphで提供されている機能を呼び出す メールデータ、フォルダ、設定ファイルの操作など

 メールの受信、移動、コピー、削除等のイベントの捕捉
 受信したメールを解析してDBに取り込むなど

 ウィンドウなどインタフェースの操作 ダイアログの表示、ウィンドウの作成、インタフェースの追加など
Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

(2) プラグイン機能
作り方・使い方 プラグインAPIを使用してプラグインDLLを作成
 Linuxのほうが開発は楽 plugins フォルダにプラグインDLLを置く
 Sylpheedを起動すると plugins フォルダに置いたDLLを自動的にロード 詳細は同梱のPLUGIN.ja.txtとサンプルプラグイン(plugin/test)を参照
 開発者向けWikiページなど準備予定
Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

(2) プラグイン機能
プラグイン機能の今後
 プラグインのアイデアを募集中
 プラグインの開発者を募集中
 集まったプラグインをユーザ向けWebページで公開
 プラグインAPIの拡充
 現在本体に含まれる機能を切り出してプラグイン化
 プラットフォームとして利用できるレベルにしたい
Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

(3) アドレス帳
 アドレス帳を新APIで再実装し、操作性を改良
 送信先アドレスの自動登録 振り分けの条件に「アドレス帳にある(ない)」を追加
 差出人のアドレスがアドレス帳に登録されている場合spam判定をしない、といった使い方が可能 名前、アドレス、備考によるソート
 絞り込み検索
Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

(4) 新規セットアップダイアログ
 新規アカウント作成ダイアログ
 ウィザード風画面、必要最低限の項目でお手軽設定
 Gmail (POP3, IMAP)も名前とアドレスを入れるだけ メールボックス作成
ダイアログ
 以前の古いダイアログは不親切だったのでかなり分かりやすくした

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

(5) 高速化
 キャッシュ処理の最適化によるフォルダ読み込みの高速化
 大量に新着メールがあるフォルダのオープンが高速に 2倍から場合によっては数10倍高速になることも 今まで：フォルダを開くときに改めてキャッシュを作成→しばらく開いていなかったフォルダを開くと遅い
 3.0：メールの受信や移動の際に同時にキャッシュを作成→フォルダを開くときにキャッシュを作らない分高速

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

今後の予定 プラグインAPIの拡充
 内蔵spamフィルタの実装
 bsfilterを毎回呼び出すのは重いので内部で処理したい どうせなら既存のもの以上の精度にしたい メッセージサマリや本文表示のタブ化
 マルチスレッド化をさらに進める
 IMAP4の改良(マルチセッション、IDLE対応など)
 さらなる高速化
Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

Sylpheed Pro
 Sylpheedに高速な全文検索機能を追加した商用版
 本文と添付ファイルの中身を高速に検索可能
 Windows XP/Vista/7対応
 試用版をダウンロードで提供 14日間試用可能
 ライセンスキーの購入(3,150円)で製品版にアップグレード
可能
Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

Sylpheed Pro の構造
フロントエンド

バックエンドSylpheed Pro

プロセス間通信

メール取り込みプロセス

dbimport
プラグインDLL
メールの取得・解析

メールデータSylpheed Pro
MeCabLibSylph
DB登録・検索

PostgreSQL

本文わかち書き

全文検索
インデックス作成

tsearch2

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

検索速度比較 36861件のメール(MLなど)
 キーワードを入力して結果が表示されるまでの時間を測定
 Thunderbirdは最大400件を10件ずつ表示(+本文の一部)
 Sylpheedは全件表示
 Thunderbirdでは引用部分と添付の内容は検索されない

 マシンスペック
 Windows XP SP3
 Core Solo U1300 @1.06GHz
 1GB RAMCopyright © 2010 SRA OSS, Inc. Japan All rights reserved.

検索速度比較
Sylpheed Pro 1.2

Thunderbird 3.0

インデックス構築時間

25:13 (24.4 msg/sec)

27:07 (22.7 msg/sec)(キーワード) 「sylpheed」

1.0sec 0.9sec (8992hits)

5.9sec 5.8sec (398hits)「sylpheed リリース」「バグ」

0.2sec 0.03sec (110hits)

1.1sec 0.9sec (85hits)

0.7sec 0.1sec (734hits)

6.5sec 1.8sec (389hits)「リリース」

0.7sec 0.2sec (1622hits)

6.7sec 3.3sec (397hits)「thunderbird」

0.2sec 0.03sec (225hits)

1.6sec 1.2sec (165hits)

 Sylpheed Proはほぼ1秒以内に検索可能
 ヒット数が少ないときはほぼ一瞬 インデックス構築時間はSylpheed Proの方がやや速い
Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

Webページ Sylpheed
http://sylpheed.sraoss.jp/
 Sylpheed Pro
http://www.sraoss.co.jp/sylpheed-pro/ SRA OSS, Inc. 日本支社
http://www.sraoss.co.jp/
 Twitter ID: hiro_sylpheed
Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.