xircd yapcasia2008

23
XIRCD で加速する IRC ライフ ふしはらかん ( 株式会社モバイルファクトリー )

Upload: kan

Post on 28-May-2015

2.942 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Xircd Yapcasia2008

XIRCD で加速する IRC ライフ

ふしはらかん ( 株式会社モバイルファクトリー )

Page 2: Xircd Yapcasia2008

自己紹介

● ふしはらかん(伏原幹)● 株式会社モバイルファクトリー所属● はてな ID: mikihoshi● http://d.hatena.ne.jp/mikihoshi/

Page 3: Xircd Yapcasia2008

自己紹介の続き

● id:precuredaisuki

Page 4: Xircd Yapcasia2008

あじぇんだ

● IRC 使ってますか● IRC を便利に使うアプリケーション● XIRCD について

Page 5: Xircd Yapcasia2008

IRC 使ってますか

● IRC の利点● IRC 上の開発コミュニティ

Page 6: Xircd Yapcasia2008

IRC の利点

● 歴史がある● 仕様が枯れてて安定してる● IRC を便利に使うためのツールが充実

Page 7: Xircd Yapcasia2008

IRC 上の開発コミュニティ

● irc.freenode.net● #plagger-ja(plagger), #subtech(?)● Project 単位やテーマ毎にチャンネルが● 気軽に参加するべき● ROM ってるより書き込もう

Page 8: Xircd Yapcasia2008

IRC を便利に使うためのツール

● LimeChat● tiarra● mobirc● etc ...

Page 9: Xircd Yapcasia2008

LimeChat

● Windows, Mac で使える IRC Client● 現在も継続的に開発が進んでいる

Page 10: Xircd Yapcasia2008

tiarra

● IRC Proxy● 複数の IRC Server に接続して、 1 つの IRC

Server で見られる● Tiarra に client が join していない間も接続

を維持してロギング等が可能● いくつもの Plugin がある

Page 11: Xircd Yapcasia2008

mobirc

● web IRC Client– 携帯電話からの閲覧に特化している

● Pluggable な構成● tiarra 等と組み合わせるとより便利に

Page 12: Xircd Yapcasia2008

IRC の可能性

● どこでも IRC を使っている– 自宅– 会社– 移動中 (mobirc)

● PUSH 型の情報の汎用 Client として使える

Page 13: Xircd Yapcasia2008

XIRCD について

● Perl で IRC Server を作る● MooseX::POE● XIRCD で何が出来るの?

Page 14: Xircd Yapcasia2008

Perl で IRC を実装する

● POE を使う● POE::Component::Server::IRC がある● POE の”お約束”に従う必要が● 毎回同じようなコードを書くことに● サーバーがいくつも立つ……

Page 15: Xircd Yapcasia2008

MooseX::POE

● Moose によって POE program の冗長な部分が上手く隠匿されているもの

● DSL 的にイベントハンドラを登録できる

Page 16: Xircd Yapcasia2008

XIRCD

● MooseX::POE ベース● IRC Server に必要な機能をあらかじめ用意● Component には最低限の記述を DSL 風に書

けば動作する● 各 Component は各チャンネルで動作するの

で、サーバは 1 つで済む

Page 17: Xircd Yapcasia2008

POE::Session->create( package_states => [ __PACKAGE__, [qw/_start ircd_daemon_public publish

_message/], ], heap => { ircd => $ircd, config => $config }, );

sub ircd_daemon_public { my ($kernel, $heap, $user, $channel, $text) = @_[KERNEL,

HEAP, ARG0, ARG1, ARG2]; my $encoding = $heap->{config}{client_encoding}; : :

Page 18: Xircd Yapcasia2008

event ircd_daemon_public => sub { my ($user, $channel, $text) = get_args; my $encoding = $self->client_encoding; :

Page 19: Xircd Yapcasia2008

package XIRCD::Component::Time;use MooseX::POE;use XIRCD::Component;

with qw(XIRCD::Role);

use DateTime;

event start => sub { my $date = DateTime->now(time_zone => 'Asia/Tokyo'); publish_message    'time' => $date->strftime("%Y/%m/%d %H:%M:%S"); delay 'start', 10;};

1;

Page 20: Xircd Yapcasia2008

XIRCD に今出来ること

● Twitter IRC Gateway● Wassr IRC Gateway

Page 21: Xircd Yapcasia2008

これから出来るようになること

● iCal を読み込んで指定日時に表示する● RSS Feed を読み込んで表示● TODO を登録・管理できるようにする● etc...

Page 22: Xircd Yapcasia2008

join coderepos

● http://codereos.org/share/● XIRCD も coderepos で開発しています● Component のコミット、本体のコミットも大歓迎

Page 23: Xircd Yapcasia2008

ご清聴ありがとうございました