SlideShare a Scribd company logo
1 of 25
Download to read offline
oEmbed と Text::Hatena
        2012/3/17
         id:onishi
     株式会社はてな 大西康裕
自己紹介
• id:onishi / 大西康裕
• 株式会社はてな
 • チーフエンジニア
 • はてなダイアリー/ブログ ディレクター
 • Devel::KYTProf
 • Text::Hatena
• 正規表現だけで何とかしようとしすぎる
動画埋め込み
埋め込みタグ
はてな記法
[http://www.youtube.com/watch?v=XDB9-­‐TUrzc0:movie]
その実装

• 動画サービス毎に個別対応
• 正規表現もりだくさん
• サイトの変更に追従するのたいへん
• :movie :image :sound ...
oEmbed

• URL 埋め込み仕様
• 写真や動画コンテンツをサードパー
 ティに埋め込むためのAPI

• http://oembed.com/
oEmbed - spec

• URL scheme:
  http://www.flickr.com/photos/*


• API endpoint:
  http://www.flickr.com/services/oembed/
oEmbed - request

• url
• maxwidth (optional)
• maxheight (optional)
• format (optional) JSON or XML
oEmbed - response
{
	
  	
  	
  	
  "version":	
  "1.0",
	
  	
  	
  	
  "type":	
  "photo",
	
  	
  	
  	
  "width":	
  240,
	
  	
  	
  	
  "height":	
  160,
	
  	
  	
  	
  "title":	
  "ZB8T0193",
	
  	
  	
  	
  "url":	
  "http://farm4.static.flickr.com/3123/2341623661_7c99f48bbf_m.jpg",
	
  	
  	
  	
  "author_name":	
  "Bees",
	
  	
  	
  	
  "author_url":	
  "http://www.flickr.com/photos/bees/",
	
  	
  	
  	
  "provider_name":	
  "Flickr",
	
  	
  	
  	
  "provider_url":	
  "http://www.flickr.com/"
}
Web::oEmbed
 https://metacpan.org/module/Web::oEmbed

use	
  Web::oEmbed;

my	
  $consumer	
  =	
  Web::oEmbed-­‐>new({
	
  	
  	
  	
  format	
  =>	
  'json'
});
$consumer-­‐>register_provider({
	
  	
  	
  	
  url	
  	
  =>	
  'http://*.flickr.com/*',
	
  	
  	
  	
  api	
  	
  =>	
  'http://www.flickr.com/services/oembed/',
});

my	
  $response	
  =	
  $consumer-­‐>embed("http://
www.flickr.com/...");

print	
  $response-­‐>render;	
  #=>	
  <img	
  />
oEmbed - provider
oEmbed - discovery

<link	
  rel="alternate"	
  type="application/json+oembed"
	
  	
  href="http://flickr.com/services/oembed?url=...&format=json"
	
  	
  	
  	
  title="..."	
  />

<link	
  rel="alternate"	
  type="text/xml+oembed"
	
  	
  href="http://flickr.com/services/oembed?url=...&format=xml"
	
  	
  	
  	
  title="..."	
  />
Text::Hatena::Embed
[http://www.youtube.com/watch?v=XDB9-­‐TUrzc0:embed]
Text::Hatena::Embed
• Web::oEmbedにプロバイダをプリセット
• endpoint Auto-Discover
遅い
リクエストしたくない

<script	
  src="https://gist.github.com/$GIST_ID.js"></script>




<iframe	
  width="420"	
  height="315"
	
  	
  src="http://www.youtube.com/embed/$VIDEO_ID"></iframe>
Text::Hatena::Embed
• 定義済の変換を正規表現で行う
• Web::oEmbedにプロバイダをプリセット
• endpoint Auto-Discover
instagram貼れへんの?
oEmbed非対応サイト

• 写真共有サイトでもoEmbed対応サイ
 トは少ない

• oEmbedには対応していなくてもアレ
 に対応している!!
Text::Hatena::Embed
• 定義済の変換を正規表現で行う
• Web::oEmbedにプロバイダをプリセット
• endpoint Auto-Discover
• og:image を取得して画像タグを出力
Text::Hatena::Embed
 https://github.com/onishi/Text-Hatena-Embed

my	
  $embed	
  =	
  Text::Hatena::Embed-­‐>new;
print	
  $embed-­‐>render($url);
まとめ
• oEmbed べんり
• べんりモジュール公開しましたー
• Embed も含んだ Text::Hatena フルセット
 最新版を今春リリース予定

• ついでにはてなブログも正式化
ご清聴ありがとうございました

More Related Content

What's hot

オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践Shumpei Shiraishi
 
Word bench長崎01「オリジナルテーマで学ぶwordpressの基本」
Word bench長崎01「オリジナルテーマで学ぶwordpressの基本」Word bench長崎01「オリジナルテーマで学ぶwordpressの基本」
Word bench長崎01「オリジナルテーマで学ぶwordpressの基本」タカシ キタジマ
 
WP-CLI (WordBench Sendai 20140628)
WP-CLI (WordBench Sendai 20140628)WP-CLI (WordBench Sendai 20140628)
WP-CLI (WordBench Sendai 20140628)Kazue Igarashi
 
ソフトウェア開発が好きだ
ソフトウェア開発が好きだソフトウェア開発が好きだ
ソフトウェア開発が好きだKoichi Ota
 
ノンプログラマーのためのWordPressプラグイン開発超入門v1.0
ノンプログラマーのためのWordPressプラグイン開発超入門v1.0ノンプログラマーのためのWordPressプラグイン開発超入門v1.0
ノンプログラマーのためのWordPressプラグイン開発超入門v1.0Yuki Okamoto
 
第3回WordPress Cafe プラグイン紹介
第3回WordPress Cafe プラグイン紹介第3回WordPress Cafe プラグイン紹介
第3回WordPress Cafe プラグイン紹介foom_in
 
SaCSS vol.56 こんなに素敵なBrackets!
SaCSS vol.56 こんなに素敵なBrackets!SaCSS vol.56 こんなに素敵なBrackets!
SaCSS vol.56 こんなに素敵なBrackets!Atsushi Handa
 
Blazor WebAssembly と Windows Forms でのロジック共有例
Blazor WebAssembly と Windows Forms でのロジック共有例Blazor WebAssembly と Windows Forms でのロジック共有例
Blazor WebAssembly と Windows Forms でのロジック共有例Koichi Ota
 
え?まだMAMPで消耗してんの?
え?まだMAMPで消耗してんの?え?まだMAMPで消耗してんの?
え?まだMAMPで消耗してんの?Takayuki Miyauchi
 
Hands on PhotoBlog App with WordPress REST API and App Inventor
Hands on PhotoBlog App with WordPress REST API and App InventorHands on PhotoBlog App with WordPress REST API and App Inventor
Hands on PhotoBlog App with WordPress REST API and App InventorHong Chen
 
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解する
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解するWordPress初心者からの脱出! カスタムなんとかをちゃんと理解する
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解するTakashi Uemura
 
続・Twitter bootstrap入門 #html5j
続・Twitter bootstrap入門 #html5j続・Twitter bootstrap入門 #html5j
続・Twitter bootstrap入門 #html5jToshiaki Maki
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方Yusuke Wada
 
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like databaseオフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like databaseyoshikawa_t
 
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソースクローズドソースから始めるオープンソース
クローズドソースから始めるオープンソースTakafumi ONAKA
 
Launch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPressLaunch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPressKite Koga
 
WP REST API の活用事例と今後
WP REST API の活用事例と今後WP REST API の活用事例と今後
WP REST API の活用事例と今後Yuusuke Yoshida
 
WordPress JSON REST API 〜さらばPHP、さらばWordPressテーマ
WordPress JSON REST API 〜さらばPHP、さらばWordPressテーマWordPress JSON REST API 〜さらばPHP、さらばWordPressテーマ
WordPress JSON REST API 〜さらばPHP、さらばWordPressテーマKazue Igarashi
 

What's hot (20)

オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践
 
Word bench長崎01「オリジナルテーマで学ぶwordpressの基本」
Word bench長崎01「オリジナルテーマで学ぶwordpressの基本」Word bench長崎01「オリジナルテーマで学ぶwordpressの基本」
Word bench長崎01「オリジナルテーマで学ぶwordpressの基本」
 
WP-CLI (WordBench Sendai 20140628)
WP-CLI (WordBench Sendai 20140628)WP-CLI (WordBench Sendai 20140628)
WP-CLI (WordBench Sendai 20140628)
 
ソフトウェア開発が好きだ
ソフトウェア開発が好きだソフトウェア開発が好きだ
ソフトウェア開発が好きだ
 
ノンプログラマーのためのWordPressプラグイン開発超入門v1.0
ノンプログラマーのためのWordPressプラグイン開発超入門v1.0ノンプログラマーのためのWordPressプラグイン開発超入門v1.0
ノンプログラマーのためのWordPressプラグイン開発超入門v1.0
 
第3回WordPress Cafe プラグイン紹介
第3回WordPress Cafe プラグイン紹介第3回WordPress Cafe プラグイン紹介
第3回WordPress Cafe プラグイン紹介
 
SaCSS vol.56 こんなに素敵なBrackets!
SaCSS vol.56 こんなに素敵なBrackets!SaCSS vol.56 こんなに素敵なBrackets!
SaCSS vol.56 こんなに素敵なBrackets!
 
Blazor WebAssembly と Windows Forms でのロジック共有例
Blazor WebAssembly と Windows Forms でのロジック共有例Blazor WebAssembly と Windows Forms でのロジック共有例
Blazor WebAssembly と Windows Forms でのロジック共有例
 
え?まだMAMPで消耗してんの?
え?まだMAMPで消耗してんの?え?まだMAMPで消耗してんの?
え?まだMAMPで消耗してんの?
 
Hands on PhotoBlog App with WordPress REST API and App Inventor
Hands on PhotoBlog App with WordPress REST API and App InventorHands on PhotoBlog App with WordPress REST API and App Inventor
Hands on PhotoBlog App with WordPress REST API and App Inventor
 
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解する
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解するWordPress初心者からの脱出! カスタムなんとかをちゃんと理解する
WordPress初心者からの脱出! カスタムなんとかをちゃんと理解する
 
gulp芸
gulp芸gulp芸
gulp芸
 
続・Twitter bootstrap入門 #html5j
続・Twitter bootstrap入門 #html5j続・Twitter bootstrap入門 #html5j
続・Twitter bootstrap入門 #html5j
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
 
Application Bootstrap
Application BootstrapApplication Bootstrap
Application Bootstrap
 
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like databaseオフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
 
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソースクローズドソースから始めるオープンソース
クローズドソースから始めるオープンソース
 
Launch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPressLaunch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPress
 
WP REST API の活用事例と今後
WP REST API の活用事例と今後WP REST API の活用事例と今後
WP REST API の活用事例と今後
 
WordPress JSON REST API 〜さらばPHP、さらばWordPressテーマ
WordPress JSON REST API 〜さらばPHP、さらばWordPressテーマWordPress JSON REST API 〜さらばPHP、さらばWordPressテーマ
WordPress JSON REST API 〜さらばPHP、さらばWordPressテーマ
 

Similar to oEmbed と Text::Hatena

明日から使えるコーディングツール
明日から使えるコーディングツール明日から使えるコーディングツール
明日から使えるコーディングツールTomokazu Kiyohara
 
WordPress初心者テーマ作成勉強会
WordPress初心者テーマ作成勉強会WordPress初心者テーマ作成勉強会
WordPress初心者テーマ作成勉強会Tsuyoshi.
 
Firefox5+HTML5×5
Firefox5+HTML5×5Firefox5+HTML5×5
Firefox5+HTML5×5dynamis
 
Polymerやってみた
PolymerやってみたPolymerやってみた
PolymerやってみたYosuke Onoue
 
WordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリWordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリアシアル株式会社
 
沖縄Web+db勉強会 20121026
沖縄Web+db勉強会 20121026沖縄Web+db勉強会 20121026
沖縄Web+db勉強会 20121026Shusaku Fukumine
 
Docker registry入門 第五回コンテナ型仮想化の情報交換会
Docker registry入門 第五回コンテナ型仮想化の情報交換会Docker registry入門 第五回コンテナ型仮想化の情報交換会
Docker registry入門 第五回コンテナ型仮想化の情報交換会Kengo Okitsu
 
URL短縮サービスを利用した文字列情報圧縮の新たな試み
URL短縮サービスを利用した文字列情報圧縮の新たな試みURL短縮サービスを利用した文字列情報圧縮の新たな試み
URL短縮サービスを利用した文字列情報圧縮の新たな試みAkira Niiyama
 
アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門Hori Tasuku
 
Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話Masayuki Morita
 
nameless ある沼にDeepDiveした人のポートフォリオ
nameless ある沼にDeepDiveした人のポートフォリオnameless ある沼にDeepDiveした人のポートフォリオ
nameless ある沼にDeepDiveした人のポートフォリオc-mitsuba
 
oFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer WorkoutoFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer WorkoutTsuubito Ishii
 
Rails and twitter #twtr_hack
Rails and twitter #twtr_hackRails and twitter #twtr_hack
Rails and twitter #twtr_hacki7a
 
3分でわかる(気になれる) AWS OpsWorks
3分でわかる(気になれる) AWS OpsWorks3分でわかる(気になれる) AWS OpsWorks
3分でわかる(気になれる) AWS OpsWorksYuuki Namikawa
 
第9回 OpenStack 勉強会(Glance)
第9回 OpenStack 勉強会(Glance)第9回 OpenStack 勉強会(Glance)
第9回 OpenStack 勉強会(Glance)Hiroki Ishikawa
 
RESTとRailsスタイル
RESTとRailsスタイルRESTとRailsスタイル
RESTとRailsスタイルToru Kawamura
 

Similar to oEmbed と Text::Hatena (20)

明日から使えるコーディングツール
明日から使えるコーディングツール明日から使えるコーディングツール
明日から使えるコーディングツール
 
WordPress初心者テーマ作成勉強会
WordPress初心者テーマ作成勉強会WordPress初心者テーマ作成勉強会
WordPress初心者テーマ作成勉強会
 
Firefox5+HTML5×5
Firefox5+HTML5×5Firefox5+HTML5×5
Firefox5+HTML5×5
 
Polymerやってみた
PolymerやってみたPolymerやってみた
Polymerやってみた
 
WordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリWordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリ
 
沖縄Web+db勉強会 20121026
沖縄Web+db勉強会 20121026沖縄Web+db勉強会 20121026
沖縄Web+db勉強会 20121026
 
APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimuraAPIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
 
Docker registry入門 第五回コンテナ型仮想化の情報交換会
Docker registry入門 第五回コンテナ型仮想化の情報交換会Docker registry入門 第五回コンテナ型仮想化の情報交換会
Docker registry入門 第五回コンテナ型仮想化の情報交換会
 
URL短縮サービスを利用した文字列情報圧縮の新たな試み
URL短縮サービスを利用した文字列情報圧縮の新たな試みURL短縮サービスを利用した文字列情報圧縮の新たな試み
URL短縮サービスを利用した文字列情報圧縮の新たな試み
 
アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門
 
Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話
 
Chatterを使ったカスタムソーシャル
Chatterを使ったカスタムソーシャルChatterを使ったカスタムソーシャル
Chatterを使ったカスタムソーシャル
 
nameless ある沼にDeepDiveした人のポートフォリオ
nameless ある沼にDeepDiveした人のポートフォリオnameless ある沼にDeepDiveした人のポートフォリオ
nameless ある沼にDeepDiveした人のポートフォリオ
 
WordPressって何
WordPressって何WordPressって何
WordPressって何
 
oFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer WorkoutoFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer Workout
 
Wp html5
Wp html5Wp html5
Wp html5
 
Rails and twitter #twtr_hack
Rails and twitter #twtr_hackRails and twitter #twtr_hack
Rails and twitter #twtr_hack
 
3分でわかる(気になれる) AWS OpsWorks
3分でわかる(気になれる) AWS OpsWorks3分でわかる(気になれる) AWS OpsWorks
3分でわかる(気になれる) AWS OpsWorks
 
第9回 OpenStack 勉強会(Glance)
第9回 OpenStack 勉強会(Glance)第9回 OpenStack 勉強会(Glance)
第9回 OpenStack 勉強会(Glance)
 
RESTとRailsスタイル
RESTとRailsスタイルRESTとRailsスタイル
RESTとRailsスタイル
 

More from Yasuhiro Onishi

Redmine::ChanでIRCからプロジェクト管理
Redmine::ChanでIRCからプロジェクト管理Redmine::ChanでIRCからプロジェクト管理
Redmine::ChanでIRCからプロジェクト管理Yasuhiro Onishi
 
新はてなダイアリーの裏側
新はてなダイアリーの裏側新はてなダイアリーの裏側
新はてなダイアリーの裏側Yasuhiro Onishi
 
ウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニングウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニングYasuhiro Onishi
 

More from Yasuhiro Onishi (6)

開発合宿!!!!
開発合宿!!!!開発合宿!!!!
開発合宿!!!!
 
wget.pl
wget.plwget.pl
wget.pl
 
Redmine::ChanでIRCからプロジェクト管理
Redmine::ChanでIRCからプロジェクト管理Redmine::ChanでIRCからプロジェクト管理
Redmine::ChanでIRCからプロジェクト管理
 
The new Text::Hatena
The new Text::HatenaThe new Text::Hatena
The new Text::Hatena
 
新はてなダイアリーの裏側
新はてなダイアリーの裏側新はてなダイアリーの裏側
新はてなダイアリーの裏側
 
ウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニングウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニング
 

oEmbed と Text::Hatena