Anzeige
Anzeige

Más contenido relacionado

Anzeige

Último(20)

PostgreSQL JSON型と Facebook APIを使って webアプリ開発をした話

  1. PostgreSQL JSON型と Facebook APIを使って webアプリ開発をした話 2014年9月6日 石井愛弓 PostgreSQLアンカンファレンス2014@東京
  2. 目次 • 自己紹介 • webアプリデモ • Facebook APIとは? • JSON型とは? • JSON型を使うとどう変わる? • PostgreSQL9.4新機能:JSONB型 • まとめ
  3. 作成したwebアプリ:写真クイズ 自分のFacebook上の友達のプロフィール写真を表示し、 名前をあてるクイズ
  4. WEBアプリデモ
  5. 開発情報と利用した技術 ○ミドルウェア - Apache 2.2.25 - PHP 5.3.27 - PostgreSQL 9.3.4 ○フレームワーク - CakePHP 2.4.10 ○フロントエンド - HTML5 & CSS3 • Facebook API • PostgreSQL JSON型 技術トピック
  6. Facebook APIとは? Facebook Graph API • Facebookの様々なオブジェクトへアクセス可能 • ユーザ情報(名前、誕生日など)、写真、友達、投稿… 例えばブラウザでhttps://graph.facebook.com/4へアクセスすると… { "id": "4", "first_name": "Mark", "gender": "male", "last_name": "Zuckerberg", "link": "https://www.facebook.com/zuck", "locale": "en_US", "name": "Mark Zuckerberg", "username": "zuck" } Mark Zuckerbergのユーザ情報がJSONで返ってくる(HTTPの場合) ※ただし、アクセストークンなしで取得できるのは公開情報のみ
  7. Facebook APIとは? • 2014/4/30に2.0にバージョンアップ • 友達に対するアクセス権限など変更箇所多数 • 様々なSDKが用意されている (PHP,JavaScript,iOS,Android) • アクセストークンの発行などがラク • 今回使用したのはPHP SDK
  8. Facebook APIとは? ☆使用例 ※CakePHPのVendorフォルダにsdkを入れておく //読み込み App::import('Vendor', 'facebook/src/facebook'); //アプリの情報を設定 $this->facebook = new Facebook( array( ‘appId’ => ‘ここにid’, 'secret' => ‘ここにsecret’ )); //スコープ(ほしいパーミッション)を指定してログインURLを取得 $login_url = $this->facebook->getLoginUrl(array('scope' => 'user_friends')); //リダイレクト $this->redirect($login_url); //自分の情報を取得 $me = $this->facebook->api('/me'); //友達の情報を取得 $friend_list = $this->facebook->api('/me/taggable_friends'); ※アプリのidやsecretはhttp://developers.facebook.com/にて設定
  9. JSON型とは? • JSON(JavaScript Object Notation)は軽量データ交換フォーマット Ex) {"name": “Ayumi Ishii", "age": 20} < PostgreSQL9.3のJSONサポート> ○JSON型 ※エンコードはUTF-8にする ・列にJSON型を指定できる(text型に値のチェックがついている) ○JSON演算子 ・SELECT ‘{“a”:1,“b”:2}’::json->‘b’ ; ⇒ 2を取得 ・SELECT ‘{“a”:[1,2,3],“b”:[4,5,6]}’::json#>‘{a,2}’; ⇒3を取 得 ○JSONサポート関数 ・SELECT json_array_length('[1,2,3,{"f1":1,"f2":[5,6]},4]'); 一番外側の要素の数⇒ 5を取得その他は公式ドキュメントにて
  10. JSON型を使うとどう変わる? JSON型を使わなくても、同じアプリを作ることは可能だが… • JSONレスポンスをそのままDBに保存できる • ただし、PHP SDKでは配列で返ってきた • JSON演算子、関数が使える ・今回のアプリでは… アプリのユーザ1人に対し友達が何人いても、友達リストが1タプル に収まる 自分友達 1 Aさん 1 Bさん 1 Cさん 1 … 自分友達 1 ["Aさん","Bさん","Cさん"…]
  11. PostgreSQL9.4新機能:JSONB型 • PostgreSQL9.4では、新しくJSONBデータ型が追加され た JSON型とJSONB型の比較 JSON型JSONB型 PostgreSQLバージョン9.2以降9.4以降 データテキストバイナリ リパースの必要ありなし インデックスサポートなしあり 要素へのアクセス遅い速い 重複キーの保持重複して保持重複して保持しない キーの順番保持保持しない キーの順序を保持したい場合など特別な場合はJSON型にする必要がある (JSONには元々順序の概念はないが) ほとんどのアプリはJSONB型の方が便利
  12. まとめ • PostgreSQL JSON型とFacebook APIを使って webアプリ開発 • JSON型の出番は多そう • Ajaxで利用されている • APIの戻り値がJSONのケースをよく見かける • JSONBに期待が高まる
Anzeige