YAPC::Asia 2009 Tokyo



         C
         ‎ orporate Perl in Recruit,
           OpenSocial and Emoji‎

               ...
Yusuke Kawasaki(川﨑 有亮)




                      http://www.kawa.net/
                   http://twitter.com/kawanet
YAPC::...
CPAN Author

  •   XML::TreePP
  •   XML::FeedPP
  •   Class::Accessor::Children
  •   Lingua::JA::Romanize::Japanese
  • ...
XML::TreePP

 • XML string from/to Perl hash object
     Pure Perl, fast, easy and stable

 • use XML::TreePP;
   my $tpp ...
Emoji


             Picture characters commonly
            used on mobile phones in Japan



YAPC::Asia 2009 Tokyo      ...
Emoji in private code point

 • Mobile phone companys use their own code
   point in PUA (private use area). Ex. “heart”
 ...
Google’s code points

 • Gmail supports “emoticon” characters.




 • They also uses PUA again and has their
   translatio...
Two Perl Modules Released

 • Unicode::Emoji::E4U
   – Emoji mappings based on Google’s
     emoji4unicode project
   – Pu...
Encode::JP::Emoji Detail
 1. 各キャリアの Shift_JIS 絵文字コードと
    UTF-8 絵文字コードを相互変換できます。
 2. emoji4unicode の提供するテーブルにより、
    各キャリア...
Encode::JP::Emoji Usage
 use Encode;
 use Encode::JP::Emoji;

 # from DoCoMo <U+E6E2> to Google <U+FE82E>
 my $keycap1 = "...
Encode::JP::Emoji Internal
 例:KDDI Shift_JIS から KDDI Unicode に変換する内部コード。(概念)
 内部的には、いったん CP932 で decode してから、tr// 等で置換する仕組...
Ex. Emoji for Dung

 •   DoCoMo (don’t have emoji for dung)
 •   KDDI PUA <U+E4F5>
 •   SoftBank PUA <U+E05A>
 •   Google ...
OpenSocial Container
                       By Perl


                    RECRUIT は OpenSocial
                     コンテナを実...
OpenSocial コンテナを開発中




                        http://creyle.jp/

 • リクルートは、『CREYLE』サービスにて
   OpenSocial コンテナを実装しています。
 •...
OpenSocial

 • OpenSocial is a set of APIs for SNS.
 • Many SNSs in the world, including Mixi in
   Japan, support OpenSoc...
Apache Shindig

 • An OpenSocial container implemention
   by Apache incubation project.
 • Consists of four parts:
   – G...
Importing Shindig to Perl

 • We’re importing Shindig’s RPC Data API
   handling servlets to Perl!
 • Apache + FastCGI + H...
osapi(通称:オサピー)supported
 • 従来の OpenSocial JavaScript インターフェースに加えて、
   osapi(通称:オサピー)に対応しています。
 • newIdSpec 不要で簡潔な記述となり、開発の...
CREYLE × OpenSocial
 • ガジェットコンテナ(ガジェットレンダラ)は
   PHP 版 Shindig を採用しています。
 • RESTful、JSON-RPC の API(データサーバ)を
   Perl で独自実装しま...
MA5
              Web Application Contest


                      今年も開催します!
                   http://mashupaward.jp/


YA...
登録は今スグ! http://mashupaward.jp/
                        21
Mashup Awards 5 (通称:MA5)
 ◇主催:Mashup Awards 実行委員会
 ◇参加登録期間 : 2009年9月10日(木)~11月4日(水)
 ◇作品応募期間 : 2009年9月25日(金)~11月4日(水)
 ◇表彰...
MA5 協力企業
 • MA5 は、50社以上の
   協力企業が参加。

 • 各社が提供する API のうち
   1つ以上利用して、
   ウェブサイトを制作し、
   ご応募ください!

 • API 提供企業は追加募集中!
   AP...
MA5 Media Sponsors




YAPC::Asia 2009 Tokyo                 24
MA5 Leading Partners
   MA5 は、下記リーディングパートナーの協賛・協力によって、運営されます。




YAPC::Asia 2009 Tokyo                      25
ChaMap – MA4 Grand Prix

                            Geo location based
                            chat communication
   ...
Get 1,000,000 Yen on MA5!



 最優秀賞は
 賞金100万円!

 参加登録は今スグ!
 mashupaward.jp


YAPC::Asia 2009 Tokyo                 27
まとめ

 • リクルートは昔も今も、Perl を使っています。
   Perl の普及、YAPC・JPA を応援しています。
 • リクルート Web サービスは、mod_perl。
   http://webservice.recruit....
Thank you!
                 (液晶拭きも使ってね)

            川﨑 http://twitter.com/kawanet

            石橋 http://twitter.com/iand...
Upcoming SlideShare
Loading in...5
×

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

2,397

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,397
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 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. 2. Yusuke Kawasaki(川﨑 有亮) http://www.kawa.net/ http://twitter.com/kawanet YAPC::Asia 2009 Tokyo 2
  3. 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. 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. 5. Emoji Picture characters commonly used on mobile phones in Japan YAPC::Asia 2009 Tokyo 5
  6. 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. 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. 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. 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. 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. 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. 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. 13. OpenSocial Container By Perl RECRUIT は OpenSocial コンテナを実装中です YAPC::Asia 2009 Tokyo 13
  14. 14. OpenSocial コンテナを開発中 http://creyle.jp/ • リクルートは、『CREYLE』サービスにて OpenSocial コンテナを実装しています。 • OpenSocial アプリに対応します。 • ディベロッパー向け β リリース: 2009年 10月予定 YAPC::Asia 2009 Tokyo 14
  15. 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. 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. 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. 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. 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. 20. MA5 Web Application Contest 今年も開催します! http://mashupaward.jp/ YAPC::Asia 2009 Tokyo 20
  21. 21. 登録は今スグ! http://mashupaward.jp/ 21
  22. 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. 23. MA5 協力企業 • MA5 は、50社以上の 協力企業が参加。 • 各社が提供する API のうち 1つ以上利用して、 ウェブサイトを制作し、 ご応募ください! • API 提供企業は追加募集中! API 提供企業以外の協力 企業・団体(コミュニティ) も歓迎します。 YAPC::Asia 2009 Tokyo 23
  24. 24. MA5 Media Sponsors YAPC::Asia 2009 Tokyo 24
  25. 25. MA5 Leading Partners MA5 は、下記リーディングパートナーの協賛・協力によって、運営されます。 YAPC::Asia 2009 Tokyo 25
  26. 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. 27. Get 1,000,000 Yen on MA5! 最優秀賞は 賞金100万円! 参加登録は今スグ! mashupaward.jp YAPC::Asia 2009 Tokyo 27
  28. 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. 29. Thank you! (液晶拭きも使ってね) 川﨑 http://twitter.com/kawanet 石橋 http://twitter.com/iandeth YAPC::Asia 2009 Tokyo 29
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×