狠狠撸

狠狠撸Share a Scribd company logo
搁耻产测/厂颈苍补迟谤补で简単に作る
     Facebookアプリ	
     NTTレゾナント	
 ?
       栗島聡哉
自己紹介	
?? どんな人物か	
 ?
  –? サーチエンジンの開発をずっとしていました	
 ?
  –? ここ最近はあまりコードを書かない仕事が多かったので、
     半分リハビリをかねて開発しています	
 ?
?? 「予定をいれないスケジューラ」とは	
 ?
  –? h5p://yotesuke.jp	
 ?
  –? 予定を入れるのではなくて暇を入れるスケジューラー	
 ?
  –? 暇を入れるとイベント?アクションをおすすめしてくれます	
 ?
  –? NTTレゾナント主催のイベント(Challengers第一回)で発表	
 ?
    ?? ベータサービスとして世に出すことに	
 ?
?? Facebookアプリとして実装しています	
 ?
  –? 初めて作ったので色々とわからないことが多かったです	
 ?
「予定をいれないスケジューラー」	
 ?
   ってどんなサービス?
Facebookアプリってどんなもの?	
?? 基本はWebサービス	
 ?
?? Facebookの情報を利用できる	
 ?
?? Facebookの機能が使える	
 ?

?? APIを叩いて上記機能が使える	
 ?
FacebookAPIを何に使うのか	
?? 最初にこの部分をじっくり考えたほうがいいかも	
 ?
?? ログイン認証だけ使いたい	
 ?
 –? ユーザの特定だけに利用するのであれば、Facebook
    だけじゃなく、twi5er、googleなどのアカウントにも対
    応。逆に固有の機能は使いにくくなる	
 ?
?? Facebookのソーシャル情報の取得やwallに書き
   込みをして広げたい	
 ?
 –? ソーシャル的な機能を使うのであれば必要かも	
 ?
 –? ほんとにそのサービスにとってその機能が必要なの
    かじっくり考える必要があるかなと思います
sinatraとは?	
?? rubyのwebフレームワーク	
 ?
       –? 簡単にwebアプリケーションが作れる	
 ?
  require	
 ?“sinatra”	
 ?
  get	
 ?’/hello'	
 ?do	
 ?
  	
 ?	
 ?“hello”	
 ?
  end	

?? 起動確認	
 ?
	
 ? ruby	
 ?hello.rb	
 ?19:27:09]	
 ?INFO	
 ?	
 ?WEBrick	
 ?1.3.1	
 ?
     [2012-?‐07-?‐10	
 ?
     [2012-?‐07-?‐10	
 ?19:27:09]	
 ?INFO	
 ?	
 ?ruby	
 ?1.9.3	
 ?(2012-?‐04-?‐20)	
 ?[x86_64-?‐darwin11.3.0]	
 ?
	
==	
 ?Sinatra/1.3.2	
 ?has	
 ?taken	
 ?the	
 ?stage	
 ?on	
 ?4567	
 ?for	
 ?development	
 ?with	
 ?backup	
 ?from	
 ?WEBrick	
 ?
  [2012-?‐07-?‐10	
 ?19:27:09]	
 ?INFO	
 ?	
 ?WEBrick::HTTPServer#start:	
 ?pid=16952	
 ?port=4567	
 ?
システム構成	
?? 開発環境	
 ?
     –? 初期段階ではVaioZ上で仮
        想環境構築	
 ?
     –? 現状はMBAのVB上で動か
        しています	
 ?
?? AWS	
 ?
     –? 本番環境 smallインスタン
        ス * 2	
 ?
     –? ステージング環境 microイ
        ンスタンス	
 ?
システム環境について	
??   AWS	
 ?
      –? 実行環境としてはAWSを選択	
 ?
      –? Smallインスタンスの2ノードを使用	
 ?
      –? OSはUbuntu10.04	
 ?serverを選択。12.04はまだ出ていなかったので	
 ?
??   Nginx	
 ?
      –? とりあえず最近流行りなので	
 ?
??   Ruby	
 ?
      –? 1.9.3を選択。今までは1.8系を使っていたが最新のものも使ってみようかと。RVMで環境構築	
 ?
??   Unicorn	
 ?
      –? 流行っているようなので	
 ?
??   Sinatra	
 ?
      –? RoRはあまり慣れていないので、使い慣れているSinatraを選択	
 ?
??   FacebookAPI	
 ?
      –? Oauthはomniauth	
 ?
      –? APIへの接続はkoala	
 ?
??   Co?eeScript	
 ?
      –? JSを書くのは苦手なので、rubyっぽい書き方が出来るCo?eeScriptを使っています	
 ?
??   Twi5er	
 ?bootstrap	
 ?
      –? デザインを作るのは苦手なので。Cssも苦手なのでSassを使っています(ほとんど書いてない
         ですが)	
 ?
Facebookアプリを作る	
?? developers.facebook.comにてアプリの登録	
 ?
  –? まずは普段のfacebookアカウントから、携帯電話、ク
     レジットカードなどの認証処理を行う	
 ?
  –? 詳細はWebで探せばすぐに見つかると思います	
 ?
?? AppIDとシークレットキーを取得	
 ?
  –? developersページから取得します	
 ?
Facebookのログイン認証	
?? ログイン認証をなぜ使うのか	
 ?
  –? アカウント管理はめんどくさい	
 ?
         ?? アカウントを登録して、管理して、設定して、削除して、云々する機能は作りたくない	
 ?
         ?? ID/PWの情報はなるべく持ちたくない	
 ?
         ?? けどユーザは特定したい	
 ?
?? omniauthを利用したアカウント認証	
 ?
  –? ライブラリをrequireすると下記pathを追記	
 ?
  –? /auth/facebook	
 ?
         ?? 上記pathへアクセスすると認証ページへredirectしてcallback	
 ?
         ?? callbackのpathで認証処理を行う。下記の例では認証情報をsessionに保存しています	
 ?
  require	
 ?"omniauth"	
 ?
  require	
 ?"omniauth-?‐facebook”	
 ?
  get	
 ?'/auth/:name/callback'	
 ?do	
 ?
  	
 ?	
 ?auth	
 ?=	
 ?request.env['omniauth.auth’]	
 ?
  	
 ?	
 ?session[“provider”]	
 ?=	
 ?auth["provider”]	
 ?
  	
 ?	
 ?session[“userid”]	
 ?=	
 ?auth["uid”]	
 ?
  	
 ?	
 ?session["token"]	
 ?=	
 ?auth["credenkals"]["token"]	
 ?
  	
 ?	
 ?session["expires_at"]	
 ?=	
 ?auth["credenkals"]["expires_at"]	
 ?
  	
 ?	
 ?redirect	
 ?'/'	
 ?
  end
Facebookから/それ以外のアクセス	
?? Facebookアプリと普通のWebページ	
 ?
 –? FacebookアプリはFacebook上からはcanvas?
    iframeを通して見えます。	
 ?
 –? その場合は認証情報をparseすることで
    access_tokenが取得できます	
 ?
?? 普通のページからだと、OAuth後にtokenが取
   得できます	
 ?
 –? sessionなどの保存しておきますが、2時間程度で
    使えなくなります
FacebookAPIを使ったデータ取得	
?? 公開されていない情報にアクセスする場合はaccess_tokenが必要	
 ?
?? access_tokenの取得方法	
 ?
  –? Facebookページからのアクセス	
 ?
          ?? signed_requestをparseすれば取得可	
 ?
  –? OAuthによる認証の場合	
 ?
          ?? ログイン後に取得できるのでsessionで保存しておく	
 ?
?? koalaモジュールを使った友達一覧の取得方法	
 ?
  –? tokenがあればすぐにできます	
 ?
  –? 下記FacebooAPIのgraphAPIを叩いてデータを取得しています	
 ?
  –? h5ps://graph.facebook.com/me/friends?access_token=hoge	
 ?
  require	
 ?"koala”	
 ?
  	
 ?
  get	
 ?‘get_friendlist’	
 ?
  	
 ?	
 ?token	
 ?=	
 ?	
 ?session["token"]	
 ?	
 ?
  	
 ?	
 ?graph	
 ?=	
 ?Koala::Facebook::API.new(token)	
 ?
  	
 ?	
 ?friend_list	
 ?=	
 ?graph.get_conneckons("me","friends",{:locale	
 ?=>	
 ?"ja_JP",:limit	
 ?=>	
 ?5000})	
 ?
  end	
 ?
  	
 ?
FacebookAPIを使わない/使えない	
 ?
          機能について	
?? APIで使える機能使えない機能がある	
 ?
  –? Wallへの書き込みや、データの取得などはAPIで取得可
     能	
 ?
  –? アプリからのメッセージ送信はそのままでは出来ない	
 ?
  –? あまり使い慣れていないので正直どこまで出来るのか、
     出来ないのかは調査不足です	
 ?
?? アプリからのメッセージ送信	
 ?
  –? 	
 ?下記URLへのリンク、redirectを行う	
 ?
  –? h5p://www.facebook.com/dialog/apprequests?
     app_id=#{app_id}&#{opt}	
 ?
  –? オプション仕様はこちら	
 ?
     ?? h5ps://developers.facebook.com/docs/reference/dialogs/
        requests/	
 ?
Facebookアプリでのデバッグ	
?? テスト用にアカウントを作ると怒られる	
 ?
?? テスト用アカウント作成APIよりアカウント作成	




 test_users	
 ?=	
 ?Koala::Facebook::TestUsers.new(:app_id	
 ?=>	
 ?appid,	
 ?:secret	
 ?=>	
 ?secret)	
 ?
 test_users.create(true,	
 ?“publish_stream”,	
 ?{:name	
 ?=>	
 ?“tes5est”})	
 ?
 	
 ?
チームの課題	
?? 3人よれば文殊の知恵	
 ?
 –? チームは偶数より奇数の方がいい	
 ?
 –? 二人だと決定まで時間がかかる?	
 ?
?? リソースが足りない	
 ?
 –? 人、時間が足りないのは基本	
 ?
?? 申し訳程度の募集	
 ?
 –? いまよてスケチームでは一緒に開発してくれる人
    を募集しております	
 ?
 –? 興味が有る方がいれば @kuribone までご連絡を	
 ?

More Related Content

谤耻产测、蝉颈苍补迟谤补で作る蹿补肠别产辞辞办アプリ

  • 1. 搁耻产测/厂颈苍补迟谤补で简単に作る Facebookアプリ NTTレゾナント ? 栗島聡哉
  • 2. 自己紹介 ?? どんな人物か ? –? サーチエンジンの開発をずっとしていました ? –? ここ最近はあまりコードを書かない仕事が多かったので、 半分リハビリをかねて開発しています ? ?? 「予定をいれないスケジューラ」とは ? –? h5p://yotesuke.jp ? –? 予定を入れるのではなくて暇を入れるスケジューラー ? –? 暇を入れるとイベント?アクションをおすすめしてくれます ? –? NTTレゾナント主催のイベント(Challengers第一回)で発表 ? ?? ベータサービスとして世に出すことに ? ?? Facebookアプリとして実装しています ? –? 初めて作ったので色々とわからないことが多かったです ?
  • 3. 「予定をいれないスケジューラー」 ? ってどんなサービス?
  • 4. Facebookアプリってどんなもの? ?? 基本はWebサービス ? ?? Facebookの情報を利用できる ? ?? Facebookの機能が使える ? ?? APIを叩いて上記機能が使える ?
  • 5. FacebookAPIを何に使うのか ?? 最初にこの部分をじっくり考えたほうがいいかも ? ?? ログイン認証だけ使いたい ? –? ユーザの特定だけに利用するのであれば、Facebook だけじゃなく、twi5er、googleなどのアカウントにも対 応。逆に固有の機能は使いにくくなる ? ?? Facebookのソーシャル情報の取得やwallに書き 込みをして広げたい ? –? ソーシャル的な機能を使うのであれば必要かも ? –? ほんとにそのサービスにとってその機能が必要なの かじっくり考える必要があるかなと思います
  • 6. sinatraとは? ?? rubyのwebフレームワーク ? –? 簡単にwebアプリケーションが作れる ? require ?“sinatra” ? get ?’/hello' ?do ? ? ?“hello” ? end ?? 起動確認 ? ? ruby ?hello.rb ?19:27:09] ?INFO ? ?WEBrick ?1.3.1 ? [2012-?‐07-?‐10 ? [2012-?‐07-?‐10 ?19:27:09] ?INFO ? ?ruby ?1.9.3 ?(2012-?‐04-?‐20) ?[x86_64-?‐darwin11.3.0] ? == ?Sinatra/1.3.2 ?has ?taken ?the ?stage ?on ?4567 ?for ?development ?with ?backup ?from ?WEBrick ? [2012-?‐07-?‐10 ?19:27:09] ?INFO ? ?WEBrick::HTTPServer#start: ?pid=16952 ?port=4567 ?
  • 7. システム構成 ?? 開発環境 ? –? 初期段階ではVaioZ上で仮 想環境構築 ? –? 現状はMBAのVB上で動か しています ? ?? AWS ? –? 本番環境 smallインスタン ス * 2 ? –? ステージング環境 microイ ンスタンス ?
  • 8. システム環境について ?? AWS ? –? 実行環境としてはAWSを選択 ? –? Smallインスタンスの2ノードを使用 ? –? OSはUbuntu10.04 ?serverを選択。12.04はまだ出ていなかったので ? ?? Nginx ? –? とりあえず最近流行りなので ? ?? Ruby ? –? 1.9.3を選択。今までは1.8系を使っていたが最新のものも使ってみようかと。RVMで環境構築 ? ?? Unicorn ? –? 流行っているようなので ? ?? Sinatra ? –? RoRはあまり慣れていないので、使い慣れているSinatraを選択 ? ?? FacebookAPI ? –? Oauthはomniauth ? –? APIへの接続はkoala ? ?? Co?eeScript ? –? JSを書くのは苦手なので、rubyっぽい書き方が出来るCo?eeScriptを使っています ? ?? Twi5er ?bootstrap ? –? デザインを作るのは苦手なので。Cssも苦手なのでSassを使っています(ほとんど書いてない ですが) ?
  • 9. Facebookアプリを作る ?? developers.facebook.comにてアプリの登録 ? –? まずは普段のfacebookアカウントから、携帯電話、ク レジットカードなどの認証処理を行う ? –? 詳細はWebで探せばすぐに見つかると思います ? ?? AppIDとシークレットキーを取得 ? –? developersページから取得します ?
  • 10. Facebookのログイン認証 ?? ログイン認証をなぜ使うのか ? –? アカウント管理はめんどくさい ? ?? アカウントを登録して、管理して、設定して、削除して、云々する機能は作りたくない ? ?? ID/PWの情報はなるべく持ちたくない ? ?? けどユーザは特定したい ? ?? omniauthを利用したアカウント認証 ? –? ライブラリをrequireすると下記pathを追記 ? –? /auth/facebook ? ?? 上記pathへアクセスすると認証ページへredirectしてcallback ? ?? callbackのpathで認証処理を行う。下記の例では認証情報をsessionに保存しています ? require ?"omniauth" ? require ?"omniauth-?‐facebook” ? get ?'/auth/:name/callback' ?do ? ? ?auth ?= ?request.env['omniauth.auth’] ? ? ?session[“provider”] ?= ?auth["provider”] ? ? ?session[“userid”] ?= ?auth["uid”] ? ? ?session["token"] ?= ?auth["credenkals"]["token"] ? ? ?session["expires_at"] ?= ?auth["credenkals"]["expires_at"] ? ? ?redirect ?'/' ? end
  • 11. Facebookから/それ以外のアクセス ?? Facebookアプリと普通のWebページ ? –? FacebookアプリはFacebook上からはcanvas? iframeを通して見えます。 ? –? その場合は認証情報をparseすることで access_tokenが取得できます ? ?? 普通のページからだと、OAuth後にtokenが取 得できます ? –? sessionなどの保存しておきますが、2時間程度で 使えなくなります
  • 12. FacebookAPIを使ったデータ取得 ?? 公開されていない情報にアクセスする場合はaccess_tokenが必要 ? ?? access_tokenの取得方法 ? –? Facebookページからのアクセス ? ?? signed_requestをparseすれば取得可 ? –? OAuthによる認証の場合 ? ?? ログイン後に取得できるのでsessionで保存しておく ? ?? koalaモジュールを使った友達一覧の取得方法 ? –? tokenがあればすぐにできます ? –? 下記FacebooAPIのgraphAPIを叩いてデータを取得しています ? –? h5ps://graph.facebook.com/me/friends?access_token=hoge ? require ?"koala” ? ? get ?‘get_friendlist’ ? ? ?token ?= ? ?session["token"] ? ? ? ?graph ?= ?Koala::Facebook::API.new(token) ? ? ?friend_list ?= ?graph.get_conneckons("me","friends",{:locale ?=> ?"ja_JP",:limit ?=> ?5000}) ? end ? ?
  • 13. FacebookAPIを使わない/使えない ? 機能について ?? APIで使える機能使えない機能がある ? –? Wallへの書き込みや、データの取得などはAPIで取得可 能 ? –? アプリからのメッセージ送信はそのままでは出来ない ? –? あまり使い慣れていないので正直どこまで出来るのか、 出来ないのかは調査不足です ? ?? アプリからのメッセージ送信 ? –? ?下記URLへのリンク、redirectを行う ? –? h5p://www.facebook.com/dialog/apprequests? app_id=#{app_id}&#{opt} ? –? オプション仕様はこちら ? ?? h5ps://developers.facebook.com/docs/reference/dialogs/ requests/ ?
  • 14. Facebookアプリでのデバッグ ?? テスト用にアカウントを作ると怒られる ? ?? テスト用アカウント作成APIよりアカウント作成 test_users ?= ?Koala::Facebook::TestUsers.new(:app_id ?=> ?appid, ?:secret ?=> ?secret) ? test_users.create(true, ?“publish_stream”, ?{:name ?=> ?“tes5est”}) ? ?
  • 15. チームの課題 ?? 3人よれば文殊の知恵 ? –? チームは偶数より奇数の方がいい ? –? 二人だと決定まで時間がかかる? ? ?? リソースが足りない ? –? 人、時間が足りないのは基本 ? ?? 申し訳程度の募集 ? –? いまよてスケチームでは一緒に開発してくれる人 を募集しております ? –? 興味が有る方がいれば @kuribone までご連絡を ?