Corporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 Tokyo
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Corporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 Tokyo

  • 3,554 views
Uploaded on

YAPC::Asia 2009(1日目)発表の後半パート。...

YAPC::Asia 2009(1日目)発表の後半パート。
前半パート(リクルートWebサービス)は、別途、石橋より公開します!

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
3,554
On Slideshare
3,544
From Embeds
10
Number of Embeds
3

Actions

Shares
Downloads
6
Comments
0
Likes
0

Embeds 10

http://www.slideshare.net 5
http://coderwall.com 3
http://www.slideee.com 2

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. YAPC::Asia 2009 Tokyo C ‎ orporate 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 1
  • 2. Yusuke Kawasaki(川﨑 有亮) http://www.kawa.net/ http://twitter.com/kawanet YAPC::Asia 2009 Tokyo 2
  • 3. 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/ YAPC::Asia 2009 Tokyo 3
  • 4. XML::TreePP • XML string from/to Perl hash object Pure 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 YAPC::Asia 2009 Tokyo 4
  • 5. Emoji Picture characters commonly used on mobile phones in Japan YAPC::Asia 2009 Tokyo 5
  • 6. Emoji in private code point • Mobile phone companys use their own code point in PUA (private use area). Ex. “heart” • DoCoMo KDDI SoftBank U+E6EC U+E595 U+E022 SJIS-F991 SJIS-F7B2 SJIS-F962 • We need translation maps for each pair of Emoji sets. YAPC::Asia 2009 Tokyo 6
  • 7. 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/ YAPC::Asia 2009 Tokyo 7
  • 8. 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. YAPC::Asia 2009 Tokyo 8
  • 9. 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 比) YAPC::Asia 2009 Tokyo 9
  • 10. 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. YAPC::Asia 2009 Tokyo 10
  • 11. 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}]; } YAPC::Asia 2009 Tokyo 11
  • 12. 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 は非対応 YAPC::Asia 2009 Tokyo 12
  • 13. OpenSocial Container By Perl RECRUIT は OpenSocial コンテナを実装中です YAPC::Asia 2009 Tokyo 13
  • 14. OpenSocial コンテナを開発中 http://creyle.jp/ • リクルートは、『CREYLE』サービスにて OpenSocial コンテナを実装しています。 • OpenSocial アプリに対応します。 • ディベロッパー向け β リリース: 2009年 10月予定 YAPC::Asia 2009 Tokyo 14
  • 15. 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 ■ YAPC::Asia 2009 Tokyo 15
  • 16. Apache Shindig • An OpenSocial container implemention by 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. YAPC::Asia 2009 Tokyo 16
  • 17. Importing Shindig to Perl • We’re importing Shindig’s RPC Data API handling servlets to Perl! • Apache + FastCGI + HTTP::Engine ApiServlet.pm Database Layer AppDataHandler.pm AppDataService.pm CollectionOptions.pm SNS Data Gadget DataRequestHandler.pm Website RPC API Render DataServiceServlet.pm Core Servlet Servlet JsonRpcServlet.pm PersonHandler.pm PersonService.pm FastCGI / Perl PHP RequestItem.pm ResponseItem.pm Apache RestRequestItem.pm RpcRequestItem.pm : YAPC::Asia 2009 Tokyo 17
  • 18. osapi(通称:オサピー)supported • 従来の OpenSocial JavaScript インターフェースに加えて、 osapi(通称:オサピー)に対応しています。 • newIdSpec 不要で簡潔な記述となり、開発の敷居を下げます。 • バッチリクエストにより、多数の API 呼び出しを束ねて高速化。 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); YAPC::Asia 2009 Tokyo 18
  • 19. CREYLE × OpenSocial • ガジェットコンテナ(ガジェットレンダラ)は PHP 版 Shindig を採用しています。 • RESTful、JSON-RPC の API(データサーバ)を Perl で独自実装しました。 (Shindig の一部クラスを Perl に移植) • OpenSocial 0.8.1 準拠で Mixi アプリ互換!? 一部、0.9 仕様を先取り採用しています。 アルバム、メディア、メッセージに対応。 osapi(通称:オサピー)で開発も快適です。 • 2009年10月ディベロッパー向けβ公開予定。 • ご興味・ご関心のある方、ぜひお知らせ下さい。 YAPC::Asia 2009 Tokyo 19
  • 20. MA5 Web Application Contest 今年も開催します! http://mashupaward.jp/ YAPC::Asia 2009 Tokyo 20
  • 21. 登録は今スグ! http://mashupaward.jp/ 21
  • 22. 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/ を参照。 YAPC::Asia 2009 Tokyo 22
  • 23. MA5 協力企業 • MA5 は、50社以上の 協力企業が参加。 • 各社が提供する API のうち 1つ以上利用して、 ウェブサイトを制作し、 ご応募ください! • API 提供企業は追加募集中! API 提供企業以外の協力 企業・団体(コミュニティ) も歓迎します。 YAPC::Asia 2009 Tokyo 23
  • 24. MA5 Media Sponsors YAPC::Asia 2009 Tokyo 24
  • 25. MA5 Leading Partners MA5 は、下記リーディングパートナーの協賛・協力によって、運営されます。 YAPC::Asia 2009 Tokyo 25
  • 26. ChaMap – MA4 Grand Prix Geo location based chat communication platform service using Google Maps, Language API and some other APIs. Real time translation and read out in English. http://www.chamap.net/ YAPC::Asia 2009 Tokyo 26
  • 27. Get 1,000,000 Yen on MA5! 最優秀賞は 賞金100万円! 参加登録は今スグ! mashupaward.jp YAPC::Asia 2009 Tokyo 27
  • 28. まとめ • リクルートは昔も今も、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/ YAPC::Asia 2009 Tokyo 28
  • 29. Thank you! (液晶拭きも使ってね) 川﨑 http://twitter.com/kawanet 石橋 http://twitter.com/iandeth YAPC::Asia 2009 Tokyo 29