Advertisement
Advertisement

More Related Content

More from Yusuke Kawasaki(19)

Advertisement

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

  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
Advertisement