Facebook4J で近づくJavaとFacebook Graph API山下 竜司 @roundrop#ccc_r56
自己紹介● 山下 竜司 @roundrop● http://blog.roundrop.jp● (株)アットウェア● Java, PHP, Javascript, …● Facebook4J ... http://facebook4j.org●...
アジェンダ●Facebook4J について●はじめてのオープンソースを開発・リリースにあたってやったこと・考えたことなど
Facebook Graph APIたたいたことありますか?
Facebook Graph APIJava でたたいたことありますか?
Facebook Graph APIApplication Graph API FacebookResponse: JSON{"id": "100003403570846","name": "安倍晋三","first_name": "晋三","...
Facebook Graph API がたたけるJava ライブラリ●facebook4j (Google Code)●https://code.google.com/p/facebook4j/
_人人人人人_> 空っぽ < ̄Y^Y^Y^Y ̄
Facebook Graph API がたたけるJava ライブラリ●facebook-java-api●https://code.google.com/p/facebook-java-api/
_人人人人人人人_>  しんでる  < ̄Y^Y^Y^Y^Y^ ̄
Facebook Graph API がたたけるJava ライブラリ●RestFB●http://restfb.com/
ようやくまともな感じ!でも・・・
(おまえら) JavaプログラマはTwitter4Jに慣れすぎている→ RestFB、OAuth サポートないの?→ RestFB、使い勝手がしっくりこないんだけど?→ RestFB、なんか違う
https://twitter.com/vvakame/status/240294658473852928
https://twitter.com/yusuke/status/240730650955628545
Facebook4J リリース●ソースコード●https://github.com/roundrop/facebook4j●公式サイト●http://facebook4j.org
Facebook4J の特徴
Twitter4J ライクな使い勝手●Facebookインターフェイス→ メソッド呼び出し のシンプル構造Facebook facebook = new FacebookFactory().getInstance();facebook.post...
Twitter4J ライクな使い勝手●APIの1つ1つをすべてメソッドで提供●タイプセーフ●例) 自身のユーザー情報を取得User user = facebook.getMe();RestFB の場合User user = facebookCl...
Twitter4J ライクな使い勝手●例) ポストした投稿を3件取得ResponseList<Post> posts= facebook.getFeed(new Reading().limit(3));RestFB の場合Connection<...
OAuth サポートFacebook facebook = new FacebookFactory().getInstance();response.sendRedirect(facebook.getOAuthAuthorizationURL(...
OAuth サポート●サンプルコードhttps://github.com/roundrop/facebook4j-oauth-example
多くのサポートAPI●Account●Activity●Album●Checkin●Comment●Domain●Event●Family●Favoriteサポート●Friend●Game●Group●Insight●Like●Link●Loc...
メッセージ投稿facebook.postStatusMessage("hoge");
シェアするPostUpdate post= new PostUpdate(new URL("http://facebook4j.org")).picture(new URL("http://~/image.png")).name("Facebo...
ニュースフィードを取得するResponseList<Post> feed= facebook.getHome();
いいね!●Facebook.like****() **** = Post, Photo, Video...facebook.likePost(postId);●Facebook.unlike****() **** = Post, Photo, ...
コメントする●Facebook.comment****() **** = Post, Photo, Video...facebook.commentPhoto(photoId,"Nice photo!");
検索する●Facebook.search****() **** = Posts, Users, Events...ResponseList<Post> posts= facebook.searchPosts("facebook");Respon...
FQLJSONArray results= facebook.executeFQL("SELECT ...");Map<String, String> queries = new ...queries.put("query1", "SELECT...
絞り込みなど●特定の項目のみ取得する// ユーザーのメールアドレスのみ取得User user = facebook.getUser(userId,new Reading().fields("email"));●limit/offset// 11...
多くのサポートAPI●Account●Activity●Album●Checkin●Comment●Domain●Event●Family●Favoriteサポート●Friend●Game●Group●Insight●Like●Link●Loc...
その他●最適化はしていないが●Android●Google App Engineでも動作するらしい
Facebook4JGetting Started
1. Facebook上でAppをつくる●https://developers.facebook.com/apps●適当にAppをつくりApp IDとApp Secretを取得
2. Facebook4J の jar を配置●Maven プロジェクト●pom.xml に以下を記述<dependency><groupId>org.facebook4j</groupId><artifactId>facebook4j-cor...
3. facebook4j.properties を配置●facebook4j.properties●以下のように記述debug=trueoauth.appId=****************oauth.appSecret=*********...
4. Facebook4J を使う●使ってみる●適当にclassをつくり以下のように実装public class F4JGettingStarted {public static void main(String... args) {Faceb...
Facebook4J の今後
採用実績●株なび●https://kabu-navi.jp●ドイツで使われてる?●イタリアのSNSで使われる予定らしい
facebook4j.org アクセス状況●日本、インド、アメリカ・・・●直近1ヶ月だと日本よりインドからが多い●ヨーロッパからのフィードバックが多いもっと日本で使われてほしい!
ロードマップ●現在 ver 1.1.5●バクフィックス中心●ver 1.2.0●ブランチで開発中●主にFacebook Page系API追加●Android最適化はやくやりたい●jarの軽量化●シングルサインオン
はじめてのオープンソースを開発・リリースにあたってやったこと・考えたことなど
開発の動機●仕事でFacebook連携する機会があった●何かこれつくってますってのがほしかった●○○4J●お手本があったのでできる気がした●Twitter4J とか●Twitter4J とか
自分でもオープンソースがつくれるか?●全く新しいものを創造●なかなかむつかしい●難しくないがメンドウなもの●Facebook4J はこっち●あまり高スキルでなくてもこれならできる!
ソースコードの流用ってやっていいの?●ライセンス的にOKなの?●Apache License 2.0 なら、まるっとコピーしてpackage変えるだけな使用方法もOK(※当然著作権表示等は残したままで)●ちょこっと変えて使いたい●コピーライトは...
Javadocは日本語?英語?●世界を狙うなら英語●そうじゃないなら日本語
コミットログは日本語?英語?●世界を狙うなら英語●そうじゃないなら日本語
英語力ないんだけど?●辞書・翻訳サイトを使えば、なんとかなる●辞書・翻訳サイトを使えば、文字でのコミュニケーションもなんとかいける
Mavenセントラルへの登録どうやってやるの?●http://samuraism.jp/diary/2012/05/03/1336047480000.html
活用したツール●BitBucket のプライベートリポジトリ●無料●リリースまではBitBucketでソース管理●初回リリース時にGitHubへ移した●Dropbox●.gitignoreしているファイル●IDEの設定ファイル→どこでも同じ環境...
公式サイトづくり●GitHub Pages●GitHubの静的ファイルホスティング●公式サイト facebook4j.org をホスティング●Jekyll (https://github.com/mojombo/jekyll)でダイナミックなサ...
さあ、帰ったらFacebook4J使おう!
Facebook4Jいつ使うの?
ありがとうございましたfacebook4j.org
Facebook4Jで近づくJavaとFacebook Graph API #ccc_r56 #jjug_ccc JJUG CCC 2013 Spring
Upcoming SlideShare
Loading in …5
×

Facebook4Jで近づくJavaとFacebook Graph API #ccc_r56 #jjug_ccc JJUG CCC 2013 Spring

5,058 views

Published on

0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,058
On SlideShare
0
From Embeds
0
Number of Embeds
439
Actions
Shares
0
Downloads
15
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

Facebook4Jで近づくJavaとFacebook Graph API #ccc_r56 #jjug_ccc JJUG CCC 2013 Spring

  1. 1. Facebook4J で近づくJavaとFacebook Graph API山下 竜司 @roundrop#ccc_r56
  2. 2. 自己紹介● 山下 竜司 @roundrop● http://blog.roundrop.jp● (株)アットウェア● Java, PHP, Javascript, …● Facebook4J ... http://facebook4j.org● textrans ... http://textrans.roundrop.jp
  3. 3. アジェンダ●Facebook4J について●はじめてのオープンソースを開発・リリースにあたってやったこと・考えたことなど
  4. 4. Facebook Graph APIたたいたことありますか?
  5. 5. Facebook Graph APIJava でたたいたことありますか?
  6. 6. Facebook Graph APIApplication Graph API FacebookResponse: JSON{"id": "100003403570846","name": "安倍晋三","first_name": "晋三","last_name": "安倍","link":"https://www.facebook.com/abeshinzo","username": "abeshinzo",:ラッパーライブラリhttps://graph.facebook.com/abeshinzo
  7. 7. Facebook Graph API がたたけるJava ライブラリ●facebook4j (Google Code)●https://code.google.com/p/facebook4j/
  8. 8. _人人人人人_> 空っぽ < ̄Y^Y^Y^Y ̄
  9. 9. Facebook Graph API がたたけるJava ライブラリ●facebook-java-api●https://code.google.com/p/facebook-java-api/
  10. 10. _人人人人人人人_>  しんでる  < ̄Y^Y^Y^Y^Y^ ̄
  11. 11. Facebook Graph API がたたけるJava ライブラリ●RestFB●http://restfb.com/
  12. 12. ようやくまともな感じ!でも・・・
  13. 13. (おまえら) JavaプログラマはTwitter4Jに慣れすぎている→ RestFB、OAuth サポートないの?→ RestFB、使い勝手がしっくりこないんだけど?→ RestFB、なんか違う
  14. 14. https://twitter.com/vvakame/status/240294658473852928
  15. 15. https://twitter.com/yusuke/status/240730650955628545
  16. 16. Facebook4J リリース●ソースコード●https://github.com/roundrop/facebook4j●公式サイト●http://facebook4j.org
  17. 17. Facebook4J の特徴
  18. 18. Twitter4J ライクな使い勝手●Facebookインターフェイス→ メソッド呼び出し のシンプル構造Facebook facebook = new FacebookFactory().getInstance();facebook.postStatusMessage("Hello World from Facebook4J.");ちなみにTwitter4JだとTwitter twitter = new TwitterFactory().getInstance();twitter.updateStatus("Hello World from Twitter4J.");
  19. 19. Twitter4J ライクな使い勝手●APIの1つ1つをすべてメソッドで提供●タイプセーフ●例) 自身のユーザー情報を取得User user = facebook.getMe();RestFB の場合User user = facebookClient.fetchObject("me", User.class);文字列! 自分で指定!
  20. 20. Twitter4J ライクな使い勝手●例) ポストした投稿を3件取得ResponseList<Post> posts= facebook.getFeed(new Reading().limit(3));RestFB の場合Connection<Post> posts =facebookClient.fetchConnection("me/feed", Post.class,Parameter.with("limit", 3));! !!!!!
  21. 21. OAuth サポートFacebook facebook = new FacebookFactory().getInstance();response.sendRedirect(facebook.getOAuthAuthorizationURL(callbackURL));String oauthCode = request.getParameter("code");AccessToken accessToken =facebook.getOAuthAccessToken(oauthCode);
  22. 22. OAuth サポート●サンプルコードhttps://github.com/roundrop/facebook4j-oauth-example
  23. 23. 多くのサポートAPI●Account●Activity●Album●Checkin●Comment●Domain●Event●Family●Favoriteサポート●Friend●Game●Group●Insight●Like●Link●Location●Message●Note●Notification●Permission●Photo●Poke●Post●Question●Subscribe●User●Video●TestUser●FQL●Search未サポート●Page (1.2対応予定)●Application●Ads API●Real-time Updates●Field Expansion●Open Graph API
  24. 24. メッセージ投稿facebook.postStatusMessage("hoge");
  25. 25. シェアするPostUpdate post= new PostUpdate(new URL("http://facebook4j.org")).picture(new URL("http://~/image.png")).name("Facebook4J").caption("facebook4j.org").description("Facebook4J is ...");facebook.postFeed(post);
  26. 26. ニュースフィードを取得するResponseList<Post> feed= facebook.getHome();
  27. 27. いいね!●Facebook.like****() **** = Post, Photo, Video...facebook.likePost(postId);●Facebook.unlike****() **** = Post, Photo, Video...facebook.unlikePost(postId);
  28. 28. コメントする●Facebook.comment****() **** = Post, Photo, Video...facebook.commentPhoto(photoId,"Nice photo!");
  29. 29. 検索する●Facebook.search****() **** = Posts, Users, Events...ResponseList<Post> posts= facebook.searchPosts("facebook");ResponseList<User> users= facebook.searchUsers("john");:
  30. 30. FQLJSONArray results= facebook.executeFQL("SELECT ...");Map<String, String> queries = new ...queries.put("query1", "SELECT ...");queries.put("query2", "SELECT ...");Map<String, JSONArray> result= facebook.executeMultiFQL(queries);
  31. 31. 絞り込みなど●特定の項目のみ取得する// ユーザーのメールアドレスのみ取得User user = facebook.getUser(userId,new Reading().fields("email"));●limit/offset// 11件目~20件目を取得ResponseList<Post> results= facebook.searchPosts("facebook",new Reading().limit(10).offset(10));
  32. 32. 多くのサポートAPI●Account●Activity●Album●Checkin●Comment●Domain●Event●Family●Favoriteサポート●Friend●Game●Group●Insight●Like●Link●Location●Message●Note●Notification●Permission●Photo●Poke●Post●Question●Subscribe●User●Video●TestUser●FQL●Search未サポート●Page (1.2対応予定)●Application●Ads API●Real-time Updates●Field Expansion●Open Graph API
  33. 33. その他●最適化はしていないが●Android●Google App Engineでも動作するらしい
  34. 34. Facebook4JGetting Started
  35. 35. 1. Facebook上でAppをつくる●https://developers.facebook.com/apps●適当にAppをつくりApp IDとApp Secretを取得
  36. 36. 2. Facebook4J の jar を配置●Maven プロジェクト●pom.xml に以下を記述<dependency><groupId>org.facebook4j</groupId><artifactId>facebook4j-core</artifactId><version>1.1.5</version></dependency>●非Maven プロジェクト●http://facebook4j.org/download/facebook4j-core-1.1.5.jar
  37. 37. 3. facebook4j.properties を配置●facebook4j.properties●以下のように記述debug=trueoauth.appId=****************oauth.appSecret=*************************oauth.accessToken=***************************※アクセストークンはhttps://developers.facebook.com/tools/explorerから取得するのがラク パーミッションには全部チェックをつける感じで●クラスパスに配置
  38. 38. 4. Facebook4J を使う●使ってみる●適当にclassをつくり以下のように実装public class F4JGettingStarted {public static void main(String... args) {Facebook facebook = new FacebookFactory().getInstance();User me = facebook.getMe();System.out.println(me);}}
  39. 39. Facebook4J の今後
  40. 40. 採用実績●株なび●https://kabu-navi.jp●ドイツで使われてる?●イタリアのSNSで使われる予定らしい
  41. 41. facebook4j.org アクセス状況●日本、インド、アメリカ・・・●直近1ヶ月だと日本よりインドからが多い●ヨーロッパからのフィードバックが多いもっと日本で使われてほしい!
  42. 42. ロードマップ●現在 ver 1.1.5●バクフィックス中心●ver 1.2.0●ブランチで開発中●主にFacebook Page系API追加●Android最適化はやくやりたい●jarの軽量化●シングルサインオン
  43. 43. はじめてのオープンソースを開発・リリースにあたってやったこと・考えたことなど
  44. 44. 開発の動機●仕事でFacebook連携する機会があった●何かこれつくってますってのがほしかった●○○4J●お手本があったのでできる気がした●Twitter4J とか●Twitter4J とか
  45. 45. 自分でもオープンソースがつくれるか?●全く新しいものを創造●なかなかむつかしい●難しくないがメンドウなもの●Facebook4J はこっち●あまり高スキルでなくてもこれならできる!
  46. 46. ソースコードの流用ってやっていいの?●ライセンス的にOKなの?●Apache License 2.0 なら、まるっとコピーしてpackage変えるだけな使用方法もOK(※当然著作権表示等は残したままで)●ちょこっと変えて使いたい●コピーライトはそのままに、Javadocに変更点を書く
  47. 47. Javadocは日本語?英語?●世界を狙うなら英語●そうじゃないなら日本語
  48. 48. コミットログは日本語?英語?●世界を狙うなら英語●そうじゃないなら日本語
  49. 49. 英語力ないんだけど?●辞書・翻訳サイトを使えば、なんとかなる●辞書・翻訳サイトを使えば、文字でのコミュニケーションもなんとかいける
  50. 50. Mavenセントラルへの登録どうやってやるの?●http://samuraism.jp/diary/2012/05/03/1336047480000.html
  51. 51. 活用したツール●BitBucket のプライベートリポジトリ●無料●リリースまではBitBucketでソース管理●初回リリース時にGitHubへ移した●Dropbox●.gitignoreしているファイル●IDEの設定ファイル→どこでも同じ環境で作業できるように
  52. 52. 公式サイトづくり●GitHub Pages●GitHubの静的ファイルホスティング●公式サイト facebook4j.org をホスティング●Jekyll (https://github.com/mojombo/jekyll)でダイナミックなサイトも構築可能●レイアウト●条件分岐 等●https://github.com/roundrop/facebook4j.org
  53. 53. さあ、帰ったらFacebook4J使おう!
  54. 54. Facebook4Jいつ使うの?
  55. 55. ありがとうございましたfacebook4j.org

×