SlideShare ist ein Scribd-Unternehmen logo
1 von 32
3ヶ月でリア充大学生がFBアプリをリリースするまで
          @macrocro
横浜国立大学 電子情報工学科3年

趣味 スキューバ・ダイビング
これ
これ
これ
これ
こんな感じで
キャンパスライフを満喫しています


     さて本題
本日、FBアプリをリリースしました
http://app.grow.pe/misscon
Facebook上の全ての女の子の中から、ミスFacebookを
決める

女の子は当然、自薦でエントリー可能

ユーザーは、気に入った女の子をFacebook上の全ての
女の子から探して推していく!


                      http://app.grow.pe/misscon
こっそりいいね!




 女の子の推薦をしたい時には、こっそりいいね!

友達のみならず、知らない女の子にも押すことができる。


                  http://app.grow.pe/misscon
こっそりニュースフィード



      こっそりいいね!を押すことで、

     自分の「こっそりニュースフィード」に

     その女の子のフィードが流れてくる




            http://app.grow.pe/misscon
URLで推薦

        女の子のFacebookユーザーの

           URLを入力することで、

              友達ではない女の子

         でも推薦することが可能!!

 ex. http://www.facebook.com/kotomi.hattanda
               のようなURL

                    http://app.grow.pe/misscon
URLで推薦
例えばこの偽物ユーザー




明らかに綾瀬はるか…

              http://app.grow.pe/misscon
URLで推薦
  入力して…




 送信!!!!!


           http://app.grow.pe/misscon
URLで推薦



                 これ




確認画面がでてきます。
              http://app.grow.pe/misscon
URLで推薦



     綾瀬はるかだ!!!w




         http://app.grow.pe/misscon
Google Image Search Hack!
<form action ="http://www.google.co.jp/searchbyimage" method="hidden" enctype="multipart/form-data" target="_blank">
<input type = "hidden" name = "image_url" value = "画像のURL">

<input type = "hidden" name = "image_content" value ="">
<input type = "hidden" name = "filename" value ="">
<input type = "hidden" name = "num" value = "10">
<input type = "hidden" name = "hl" value ="ja">
<input type = "hidden" name = "bih" value ="385">
<input type = "hidden" name = "biw" value ="1280">
<input type = "Submit" name = "Search" value = "偽装アカウントかチェック!" >

</form>




                                                                                http://app.grow.pe/misscon
FB Misscon 構成

Ubuntu 11.10
PHP + Symfony
Apache + MySQL
jQuery + Twitter Bootstrap

                             http://app.grow.pe/misscon
開発メンバー


自分 (プログラム・デザイン)

八方くん (ロゴデザイン)



           http://app.grow.pe/misscon
3ヶ月前の自分

アプリ作成経験なし!!

フレームワークの「フ」の字も知らない!!

生SQL文書いてた!!

CSS知らない!!


                http://app.grow.pe/misscon
簡単にFBアプリを作れる環境が整っている




             http://app.grow.pe/misscon
参考にしたサイト
Symfony
symfony入門:symfonyで始めるPHPフレームワーク
http://codezine.jp/article/detail/704

Twitter Bootstrap
本家サイト
http://twitter.github.com/bootstrap/

jQuery
これからjQueryを覚える為の3つの参考資料
http://www.finefinefine.jp/web/kiji1988/
                                           http://app.grow.pe/misscon
Faceboo PHP SDK
Facebook が提供している公式のSDK(PHP)は

          イケてない!!!


     $facdbook->api(“うんたら”);



    何をしてるのかよくわからない。

関数名でやりたいことが分かるのがベスト!

                           http://app.grow.pe/misscon
FacebookUtil.class.php
class FacebookUtil {
 var $app_id;
 var $app_secret;
 var $redirect_url = REDIRECT_URL;
 var $access_token;
 var $me;


 public function FacebookUtil() {
  // config/custom.ymlからアプリキー取得

  $this->custom = Spyc::YAMLLoad(CUSTOM_YAML);
  $this->app_id = $this->custom['core']['facebook_key']['app_id'];
  $this->app_secret = $this->custom['core']['facebook_key']['app_secret'];


  $this->crawler = new CrawlerTool();
  $this->crawler->no_sleep = true;
  $this->crawler->no_cache = true;
  $this->crawler->silent = true;


  $this->scope = array(
    'email',
    'read_stream',
    'user_birthday',
    'user_work_history',
    'user_location',

                                                                             http://app.grow.pe/misscon
FacebookUtil.class.php
      public function getOauthUrl() {
          $oauth_url = 'http://www.facebook.com/dialog/oauth?client_id='
              . $this->app_id . '&redirect_uri=' . urlencode($this->redirect_url)
              . '&scope='. implode(',', $this->scope);


          return $oauth_url;
      }


      public function getAccessToken($code='') {
          if (empty($code)) {
              $this->access_token = sfContext::getInstance()->getUser()->get('user')->getFacebookToken();
          }
	

          $token_url = 'https://graph.facebook.com/oauth/access_token?client_id='
              . $this->app_id . '&client_secret=' . $this->app_secret
              . '&redirect_uri=' . urlencode($this->redirect_url) . '&code=' . $code;
          $response = $this->crawler->curlCached($token_url, array('no_cache' => true));
          $arr = explode('=', $response);
          if (!empty($arr[1])) {
              $this->access_token = $arr[1];
          }
      }



                                                                                                            http://app.grow.pe/misscon
FacebookUtil.class.php
public function getMe() {
    if (empty($this->access_token)) $this->getAccessToken();


    $graph_url = 'https://graph.facebook.com/me?access_token=' . $this->access_token . '&locale=ja_JP';
    $this->me = json_decode($this->crawler->curlCached($graph_url));
}




public function getFriends($uid = '', $sub_query='') {
    if (empty($this->me)) $this->getMe();
    if (empty($uid)) $uid = $this->me->id;


    $fql = 'SELECT uid, name FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=' . $uid.')' . $sub_query;


    $graph_url = 'https://api.facebook.com/method/fql.query?query='
     . rawurlencode($fql) . '&access_token=' . $this->access_token.'&format=json';
    $friend_arr = json_decode($this->crawler->curlCached($graph_url));


    return $friend_arr;
}




                                                                                                    http://app.grow.pe/misscon
いかに上手く手に入れたい情報に対して
     FQLを投げるか




                http://app.grow.pe/misscon
例えば、ユーザーの友達の情報をとってくる


$fql =
SELECT
uid, name,gender,locale,birthday,education,などなど...

FROM user WHERE uid = 友達のID;


 このFQLをforeachで友達の人数分、投げる
   友達が1000人いたら1000回投げていた。
  →当然、重い。
                                    http://app.grow.pe/misscon
例えば、ユーザーの友達の情報をとってくる



 $fql = SELECT
uid, name,gender,locale,birthday,education,などなど...

FROM user WHERE uid
IN (SELECT uid2 FROM friend WHERE uid1=自分のID);


           FQLを投げる回数が1回で済む。


                                       http://app.grow.pe/misscon
ずぶの素人でも頑張ればFBアプリが作れる




              http://app.grow.pe/misscon
THANK YOU FOR
       LISTENING!

Twitterのお友達が少ないので、ぜひお友達になってください…

             @macrocro


                         http://app.grow.pe/misscon

Weitere ähnliche Inhalte

Ähnlich wie 3ヶ月でリア充大学生がFBアプリをリリースするまで @macrocro

モバイル開発@symfony
モバイル開発@symfonyモバイル開発@symfony
モバイル開発@symfony
Daichi Kamemoto
 
SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2
Nobuhiro Nakajima
 
Array facebook2
Array facebook2Array facebook2
Array facebook2
Jun Chiba
 
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
Kite Koga
 
facebookアプリ開発あれこれ
facebookアプリ開発あれこれfacebookアプリ開発あれこれ
facebookアプリ開発あれこれ
pinmarch_t Tada
 
MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013
純生 野田
 

Ähnlich wie 3ヶ月でリア充大学生がFBアプリをリリースするまで @macrocro (20)

モバイル開発@symfony
モバイル開発@symfonyモバイル開発@symfony
モバイル開発@symfony
 
behatで始めるBDD
behatで始めるBDDbehatで始めるBDD
behatで始めるBDD
 
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
 
SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2
 
Using Dancer
Using DancerUsing Dancer
Using Dancer
 
WordPressと外部APIとの連携
WordPressと外部APIとの連携WordPressと外部APIとの連携
WordPressと外部APIとの連携
 
Array facebook2
Array facebook2Array facebook2
Array facebook2
 
test
testtest
test
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
 
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道20123時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
 
リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)
 
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
 
Silex入門
Silex入門Silex入門
Silex入門
 
facebookアプリ開発あれこれ
facebookアプリ開発あれこれfacebookアプリ開発あれこれ
facebookアプリ開発あれこれ
 
MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013
 
GoCon2016 spring 自作Webフレームワーク uconを作った話
GoCon2016 spring 自作Webフレームワーク uconを作った話GoCon2016 spring 自作Webフレームワーク uconを作った話
GoCon2016 spring 自作Webフレームワーク uconを作った話
 
シルバーウィークにfacebookアプリを作成した
シルバーウィークにfacebookアプリを作成したシルバーウィークにfacebookアプリを作成した
シルバーウィークにfacebookアプリを作成した
 
Meetup11 contacts api読んでみた
Meetup11 contacts api読んでみたMeetup11 contacts api読んでみた
Meetup11 contacts api読んでみた
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
 

Kürzlich hochgeladen

Kürzlich hochgeladen (10)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

3ヶ月でリア充大学生がFBアプリをリリースするまで @macrocro

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n