Upload
yusuke-kawasaki
View
108
Download
0
Embed Size (px)
DESCRIPTION
YAPC::Asia 2009(1日目)発表の後半パート。前半パート(リクルートWebサービス)は、別途、石橋より公開します!
Citation preview
1
Corporate Perl in Recruit, OpenSocial and Emoji
2009.09.10
Yusuke Kawasaki (kawanet)
Recruit Media Technology Labs
http://mtl.recruit.co.jp/
YAPC::Asia 2009 Tokyo
YAPC::Asia 2009 Tokyo
2
Yusuke Kawasaki(川﨑 有亮)
http://www.kawa.net/
http://twitter.com/kawanet
YAPC::Asia 2009 Tokyo
CPAN Author
• XML::TreePP
• XML::FeedPP
• Class::Accessor::Children
• Lingua::JA::Romanize::Japanese
• Lingua::KO::Romanize::Hangul
• Lingua::ZH::Romanize::Pinyin
• Encode::JP::Emoji
• Unicode::Emoji::Base
http://search.cpan.org/~kawasaki/3YAPC::Asia 2009 Tokyo
XML::TreePP
• XML string from/to Perl hash objectPure Perl, fast, easy and stable
• use XML::TreePP;my $tpp = XML::TreePP->new();my $hash = {elem=>"value"};print $tpp->write($hash); # XML string
• my $xml = "<elem>value</elem>";my $tree = $tpp->parse($xml);print Dumper($tree); # Perl hash object
4YAPC::Asia 2009 Tokyo
Emoji
Picture characters commonly used on mobile phones in Japan
5YAPC::Asia 2009 Tokyo
Emoji in private code point
• Mobile phone companys use their own code point in PUA (private use area). Ex. “heart”
• DoCoMo KDDI SoftBankU+E6EC U+E595 U+E022SJIS-F991 SJIS-F7B2 SJIS-F962
• We need translation maps for each pair of Emoji sets.
6YAPC::Asia 2009 Tokyo
Google’s code points
• Gmail supports “emoticon” characters.
• They also uses PUA again and has their translation map from/to Japanese Emojis.
• Then, Google’s “emoji4unicode” project has proposed unified code points of Japanese Emojis to Unicode standard. Thanks!
• http://emoji4unicode.googlecode.com/
7YAPC::Asia 2009 Tokyo
Two Perl Modules Released
• Unicode::Emoji::E4U
–Emoji mappings based on Google’s emoji4unicode project
–Pure Perl OO interface for their table
• Encode::JP::Emoji
–Emoji encodings and cross-mapping tables in pure Perl
–Pure Perl encodings for Encode.pm
–XS (UCM) version of this was canceled.
8YAPC::Asia 2009 Tokyo
Encode::JP::Emoji Detail
1. 各キャリアの Shift_JIS 絵文字コードとUTF-8 絵文字コードを相互変換できます。
2. emoji4unicode の提供するテーブルにより、各キャリアの絵文字を相互変換できます。
3. 絵文字が存在しない場合は、fallback によりテキストまたは IMG タグに変換できます。
4. 日本の 3 キャリアに加えて、Google が内部で利用している絵文字コードにも変換できます。
5. emoji4unicode が提案中の PUA を利用しないUnicode との相互変換に対応します。
6. pure Perl 実装のため、レンタルサーバ等でもFTP アップロードのみで利用できます。
7. pure Perl 実装にもかかわらず、実用的な変換処理速度を確保しています。(Encode::JP::Mobile 比)
9YAPC::Asia 2009 Tokyo
Encode::JP::Emoji Usage
use Encode;
use Encode::JP::Emoji;
# from DoCoMo <U+E6E2> to Google <U+FE82E>
my $keycap1 = "¥xEE¥x9B¥xA2";
Encode::from_to($keycap1, 'x-utf8-e4u-docomo', 'utf8');
# from KDDI <SJIS+F7F5> to SoftBank <SJIS+F747>
my $scream = "¥xF7¥xF5";
Encode::from_to($scream, 'x-sjis-e4u-kddiapp',
'x-sjis-e4u-softbank3g');
Encode::JP::Mobile is an alternative module to do above.
10YAPC::Asia 2009 Tokyo
Encode::JP::Emoji Internal
例:KDDI Shift_JIS から KDDI Unicode に変換する内部コード。(概念)
内部的には、いったん CP932 で decode してから、tr// 等で置換する仕組み。
sub decode {
my ($self, $octets, $check) = @_;
$self->before_decode($octets, $check);
my $string = $self->byte_encoding->decode($octets, $check);
$self->after_decode($string, $check);
$string;
}
sub after_decode {
$_[1] =~ tr
[¥x{E234}-¥x{E342}¥x{E5B5}-¥x{E5DF}]
[¥x{E5CD}-¥x{E5DF}¥x{EA80}-¥x{EAFA}¥x{EB0E}-¥x{EB8E}
¥x{EAFB}-¥x{EB0D}¥x{E5B5}-¥x{E5CC}];
}
11YAPC::Asia 2009 Tokyo
Ex. Emoji for Dung
• DoCoMo (don’t have emoji for dung)
• KDDI PUA <U+E4F5>
• SoftBank PUA <U+E05A>
• Google PUA <U+FE4F4>
• Unicode Standard proposed <U+1F410>
• 4バイトUTF-8 なので、MySQL 5 は非対応
12YAPC::Asia 2009 Tokyo
OpenSocial ContainerBy Perl
RECRUIT は OpenSocialコンテナを実装中です
13YAPC::Asia 2009 Tokyo
OpenSocial コンテナを開発中
http://creyle.jp/
• リクルートは、『CREYLE』サービスにてOpenSocial コンテナを実装しています。
• OpenSocial アプリに対応します。
• ディベロッパー向け β リリース:2009年 10月予定
14YAPC::Asia 2009 Tokyo
OpenSocial
• OpenSocial is a set of APIs for SNS.
• Many SNSs in the world, including Mixi in Japan, support OpenSocial apps.
• Two way to access to social network ■
–JavaScript library interface ■
–RESTful XML / JSON-RPC protocols ■15YAPC::Asia 2009 Tokyo
Apache Shindig
• An OpenSocial container implementionby Apache incubation project.
• Consists of four parts:
–Gadget Container JavaScript
–Gadget Rendering Server
–OpenSocial Container JavaScript
–OpenSocial Data Server
• Java and PHP version of it released.
• No Perl version yet.16YAPC::Asia 2009 Tokyo
Importing Shindig to Perl
• We’re importing Shindig’s RPC Data API handling servlets to Perl!
• Apache + FastCGI + HTTP::Engine
17
ApiServlet.pm
AppDataHandler.pm
AppDataService.pm
CollectionOptions.pm
DataRequestHandler.pm
DataServiceServlet.pm
JsonRpcServlet.pm
PersonHandler.pm
PersonService.pm
RequestItem.pm
ResponseItem.pm
RestRequestItem.pm
RpcRequestItem.pm
:
Apache
FastCGI / Perl PHP
GadgetRenderServlet
DataRPC APIServlet
SNSWebsite
Core
Database Layer
YAPC::Asia 2009 Tokyo
osapi(通称:オサピー)supported
• 従来の OpenSocial JavaScript インターフェースに加えて、
osapi(通称:オサピー)に対応しています。
• newIdSpec 不要で簡潔な記述となり、開発の敷居を下げます。
• バッチリクエストにより、多数の API 呼び出しを束ねて高速化。
18YAPC::Asia 2009 Tokyo
XML:
<Require feature="osapi" />
JavaScript:
var batch = new osapi.newBatch();
batch.add('members', osapi.people.get({
userId: '@self',
fields: ['id','displayName','thumbnailUrl']
}));
batch.execute(callback);
CREYLE × OpenSocial
• ガジェットコンテナ(ガジェットレンダラ)はPHP 版 Shindig を採用しています。
• RESTful、JSON-RPC の API(データサーバ)をPerl で独自実装しました。(Shindig の一部クラスを Perl に移植)
• OpenSocial 0.8.1 準拠で Mixi アプリ互換!?一部、0.9 仕様を先取り採用しています。アルバム、メディア、メッセージに対応。osapi(通称:オサピー)で開発も快適です。
• 2009年10月ディベロッパー向けβ公開予定。
• ご興味・ご関心のある方、ぜひお知らせ下さい。
19YAPC::Asia 2009 Tokyo
MA5Web Application Contest
今年も開催します!
http://mashupaward.jp/
20YAPC::Asia 2009 Tokyo
登録は今スグ! http://mashupaward.jp/21
Mashup Awards 5 (通称:MA5)
◇主催:Mashup Awards 実行委員会
◇参加登録期間 : 2009年9月10日(木)~11月4日(水)
◇作品応募期間 : 2009年9月25日(金)~11月4日(水)
◇表彰式 : 2009年11月29日(日)※予定
◇ウェブサイト : http://mashupaward.jp/
◇公式ハッシュタグ : #MA5
◇最優秀賞賞金 : 100万円
◇作品応募条件:
参加協力企業・団体が提供する API から少なくとも1つ利用して、作品を制作すること。応募時点でのインターネット公開済・未公開は問わない。詳細・応募方法は、公式ウェブサイト http://mashupaward.jp/ を参照。
22YAPC::Asia 2009 Tokyo
MA5 協力企業
• MA5 は、50社以上の協力企業が参加。
• 各社が提供する API のうち1つ以上利用して、ウェブサイトを制作し、ご応募ください!
• API 提供企業は追加募集中!API 提供企業以外の協力企業・団体(コミュニティ)も歓迎します。
23YAPC::Asia 2009 Tokyo
MA5 Media Sponsors
24YAPC::Asia 2009 Tokyo
MA5 Leading Partners
MA5 は、下記リーディングパートナーの協賛・協力によって、運営されます。
25YAPC::Asia 2009 Tokyo
26
ChaMap – MA4 Grand Prix
http://www.chamap.net/
Geo location based
chat communication
platform service
using Google Maps,
Language API and
some other APIs.
Real time translation
and read out in English.
YAPC::Asia 2009 Tokyo
Get 1,000,000 Yen on MA5!
最優秀賞は
賞金100万円!
参加登録は今スグ!
mashupaward.jp
27YAPC::Asia 2009 Tokyo
まとめ
• リクルートは昔も今も、Perl を使っています。Perl の普及、YAPC・JPA を応援しています。
• リクルート Web サービスは、mod_perl。http://webservice.recruit.co.jp/
• CREYLE は、FastCGI + HTTP::Engine。OpenSocial コンテナを2009年10月公開予定!http://creyle.jp/
• MA5 開発コンテストを開催中。賞金100万円!http://mashupaward.jp/
28YAPC::Asia 2009 Tokyo
29
Thank you!(液晶拭きも使ってね)
川﨑 http://twitter.com/kawanet
石橋 http://twitter.com/iandeth
YAPC::Asia 2009 Tokyo