Author Archive

    はてなブックマーク - TwitterAPIの導入について
    このエントリーをはてなブックマークに追加

     まあ、有りますよね、二度目。

     Fusic2年目仁井です。よろしくお願いいたします。

     今回の記事は何にするか悩みました。iPadでゲーム作る記事にするとかダイエットの成功の記事にするとか色々考えたのですが、前回がTwitterでしたので今回も素直にTwitterで行きたいと思います。

     なんだかReturnキーが潰れてきた気がしますがそれは気にせずに。ええ。

    Twitter API

     ツイッターが市民権を得て随分と経ち、それに合わせて様々なツールやアプリケーションが開発されているかと思います。
     そんな開発に必須とも言えるのが、このTwitterAPIなんだよ、ジェシー! そうなのね、マイク!
     そうなんです。
     利用しているものとして想像しやすいのは、Botやクライアントあたりでしょう。
     リプライ、リツイート、フォロー、等々。ツイッターの代表的な機能をこれを使うことで自由に利用できます。
     それではその導入方法について、簡単に説明させていただきます。

    準備編:1

     それでは、TwitterAPIを使う準備を。
     まずクライアント製作者のアカウントでログインした状態でこのページにアクセスしてください。
     作成したクライアントは、この時ログインしているユーザとひもづけられます。
     ここで、アプリケーションの登録を行います。

     まず「新しいアプリケーションを登録する」をクリック。
     必要情報を入力しますが、注意すべきは2点。
    ・「アプリケーションの種類」は「クライアント」
    ・「標準のアクセスタイプ」は「Read&Write」
     をそれぞれ選択してください。間違えてもあとで修正できますので問題ないです。
     特に「標準のアクセスタイプ」を「Read-Only」にすると投稿などができなくなるので注意です。
    Image

    準備編:2

     つづいて、アプリケーション側の準備を。
     今回の環境はPHP5.2です。PHPは5以上で「curl」が使える環境であれば問題ありません。
     PHP環境が準備できたら今度はここの「Download」からファイルをダウンロードしてください。
     ファイルを解凍して、twitteroauthの中の「OAuth.php」と「twitteroauth.php」を取り出してください。この2つのファイルを使用します。

    実装編

     それでは実装について。
     以下のコードを参照してください。

    require_once("./twitteroauth.php");
     
    $to = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
     
    $sendMessage = "さあ、呟いてみませんか";
    $req = $to->OAuthRequest('https://twitter.com/statuses/update.xml', 'POST', array('status' => $sendMessage));
     
    header("Content-Type: application/xml");
    echo $req;

    このスクリプトを実行すると、自分のアカウントに「さあ、呟いてみませんか」というツイートが投稿されます。
    なんとなく、botの姿が見えてきた感がありますね。
    ここで肝になるのが、オブジェクトの生成の時に与えている引数です。

    CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET

    この4つの値は全て、先ほどアプリケーション登録を行ったページから参照することができます。
    もう一度先程のページにアクセスします。
    すると「現在登録されているアプリケーション一覧」の中に、先ほど登録したアプリケーションが並んでいることと思います。
    それをクリックすると、下の方に「Consumer key」と「Consumer secret」の値が。
    さらにページ内の「My Access Token」のリンクの先には「Access Token」「Access Token Secret」があります。
    この値をそれぞれ引数にあたえるだけです。

    これで、Twitter APIを利用したツイートの投稿が可能になりました。

    注意点

     便利なTwitterAPIですが、注意点もございます。
     各機能には、それぞれ制限が設けられています。
     例えば、1時間の間に呟ける回数や、フォロー出来る人数など、それぞれに回数制限が存在しています。
     オーバーしたりするとアカウントを凍結されてしまうおそれも有りますので、使用の際は十分に注意をしてください。
     botを作って、誰彼構わず反応するようにしていると、あっという間に制限数を超えてしまうかも。
     ちなみに前回紹介した検索機能は
    ・1時間に150回
    ・1日に1000回
     の使用制限がIPベースで設けられています。

    最後に

     APIを使用することで、タイムラインの取得も可能です。
     そのなかから、自分に対するリプライや、リツイート等も取得可能です。パラメータの与え方次第で必要な情報をうまいこと集めましょう。
     ここまで出来るようになると、Twitterクライアントの作成も不可能ではありません。いえ、私はやりませんが。
     こちらのドキュメントの日本語訳が分かりやすく、大変お世話になりました。
     いい加減Returnキーの潰れ具合が腹に据えかねて来たので、このへんで筆を置く事と致します。
     それでは。クリスマス爆発しろ。仁井でした。

      はてなブックマーク - Twitterの検索をやってみました
      このエントリーをはてなブックマークに追加

       こんにちは。あるいはこんばんは。もしかして:おはようございます。

       Fusic仁井と申します。
       Fusic Advent Calendarの二番手になりました。二番手と聞くと緑の弟を思い出します。

       さて何を書こうかと思ったのですが時間もないことですし最近やったことについてまとめてみたいと思います。
       タイトルのとおり、Twitterの検索です。

      Twitter の検索

       というかそもそもTwitterの検索とは何ぞ、という方のために説明を。
       search.twitter.com/
       ここです。というだけではやっぱり不親切ですので。
       ページをご覧いただければわかるかとは思いますが、上記ページではTwitterに投稿されたつぶやきの検索ができます。私はコレを使いハッシュタグの検索などしておりました。
       このページ、単純にブラウジングで参照するだけでなく、json形式で検索結果を受け取ることができるのです。
       まあ素敵。
       というわけで、今回はその簡単な使い方と注意点などについて、軽くまとめさせていただきます。

      検索結果をPHPでjsonで受け取る

       というわけで早速始めますが、いきなり終わらせたいと思います。

      search.twitter.com/search.json?q=[検索したい文字列]

       これです。
       これで検索結果をjsonで受け取ることができます。
       PHPであればこのURLを file_get_contents して、 json_decode をすれば、Twitterの検索結果を簡単に扱うことができます。非常に簡単ですね。
       実際のコードは以下の通りです。

      $search = "検索文字列";
      $url = ('http://search.twitter.com/search.json?q='. $search .'&rpp=100');
      $result = file_get_contents($url);
      $data = json_decode($result);
      $results = $data->results;
      foreach($results as $key => $result) {
      // 好きに弄り回しましょう
      }

       このような次第です。

      注意点

       最後に、注意すべきとされている点と、私自身がちょっと引っかかった点について。
       まず、注意すべきとされている点。それは、ハッシュタグの検索です。
       ハッシュタグとは、Twitterにツイートを投稿するときに #mhp3 のように、半角シャープを付た文字列です。詳しい説明については、実際にツイッターのサイト等を参照していただきますよう。
       このハッシュタグを検索する場合、先程のコードで言うと $search に直接値を入れてはいけません。

       # は %23 へ置き換えて下さい。

       これが注意すべき点です。

       それからもう一つ。こちらは私が引っかかった点です。
       検索結果を実際に見ると様々なデータが返ってきています。
       そのなかの一つに時間があります。こちら投稿時間なのですが、時間がずれています。当然ですが基準時が日本のものではないせいです。
       そのため、もし投稿日時などを利用する場合は時間を合わせる必要があります。
       時間にして9時間のズレがあるので、 date で合わせても良いですが、もっと楽に合わせる方法もあります。

      // 時刻を日本に合わせる
      $jpn_time = date('Y-m-d H:i:s', strtotime($result->created_at));

       これで表示時刻が日本時間に修正されます。正確にはサーバのタイムゾーンに合うのでしょうか。そこは調査しきれていませんのでご容赦を。

       ということでTwitterの検索でした。
       検索の際にはオプションも付けられます。例えば、今回サンプルとした検索 URLの最後の『rpp=100』は、検索結果の件数を指定しています。指定しなければ15件、最大100件を指定できます。
       それでは、目的に沿った検索ライフを。

      • eucalyptus
      はてなブックマーク - CentOSでEucalyptusを構築してNagiosとGangliaで監視する(3)
      このエントリーをはてなブックマークに追加

      というわけで三回目。
      初めての人ははじめまして。そうでない人はこんにちは。
      Fusic 仁井の提供でお送りします。

      というわけで連続記事の三回目です。第一回はCentosにEucalyptusの導入、第二回はそれをNagiosで監視、という内容でした。今回は、Gangliaを使っての監視を行ないます。

      Gangliaで監視する

      第一回でも軽く触れましたが、Gangliaはプロセスの監視ツールになります。
      Eucalyptusが正式にサポートをしていますので、Eucalyptusを監視したいときは素直にこちらを使うのが良いのではないか、ということで、今回の導入に至ったわけです。

      gangliaは今回用意したマシン全てに入れますが、手順はすべて同じです。
      なお、最新版を入手するためにはソースからmakeする必要がありますが、今回はYUMを使うことにします。こちらだとバージョンが少し落ちて3.0系が入ります。最新は3.1です。

      # rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
      # yum install rrdtool
      # yum install ganglia
      # yum install ganglia-gmond
      # yum install ganglia-gmetad
      # yum install ganglia-web
       
      # /etc/init.d/gmetad start
      # /etc/init.d/gmond start
       
      # /etc/init.d/httpd restart

      これで動きます。実にシンプルです。とても良いことだと思います。

      ここまでで一度画面を見てみます。https://ホストIPアドレス/ganglia/ にアクセスして、グラフが表示されたらOKです。

      ここまでで普通の情報は見ることができます。
      さらにEucalyptusの情報を見るために、README.Monitoringの記述に従いシェルスクリプトを使用します。README.Monitoringについては第二回をどうぞ。

      # ./ganglia.sh -type nc -d /

      -typeは[nc|warlus|sc]があり、それぞれに応じた情報がGangliaで参照できるようになります。
      今回はノードで使うので -type nc で。


      このように、VM~といったグラフが追加されます。
      あとはcronでシェルを定期的に走らせるようにします。

      # crontab -e
      * * * * /root/ganglia.sh -type nc -d /

      これで監視環境はできました。
      それでは試しに、2つ立ててあるインスタンスのうちのひとつを停止させて変化を見てみます。

      # euca-describe-instances 
      RESERVATION	r-4CCD07DE	admin	default
      INSTANCE	i-4D0D0940	emi-40321247	192.168.24.73	192.168.24.73	running 	mykey 	0 	m1.small 	2010-09-01T08:54:10.856Z 	LOCALCL 	eki-5DF61296 	eri-1B10156F
      RESERVATION	r-46D108E5	admin	default
      INSTANCE	i-403D074E	emi-40321247	192.168.24.89	192.168.24.89	running 	mykey 	0 	m1.small 	2010-09-01T02:27:01.583Z 	LOCALCL 	eki-5DF61296 	eri-1B10156F
      # euca-terminate-instances i-4D0D0940
      INSTANCE	i-4D0D0940# euca-describe-instances 
      RESERVATION	r-4CCD07DE	admin	default
      INSTANCE	i-4D0D0940	emi-40321247	192.168.24.73	192.168.24.73	terminated 	mykey 	0 	m1.small 	2010-09-01T08:54:10.856Z 	LOCALCL 	eki-5DF61296 	eri-1B10156F
      RESERVATION	r-46D108E5	admin	default
      INSTANCE	i-403D074E	emi-40321247	192.168.24.89	192.168.24.89	running 	mykey 	0 	m1.small 	2010-09-01T02:27:01.583Z 	LOCALCL 	eki-5DF61296 	eri-1B10156F

      停止しました。

      実際に画面を見てみると、以下のような感じで。

      というわけで、めでたくEucalyptusの監視環境が整いました。

      まとめ

      ブログに書くと随分と短くて手軽に思えるものですね。
      手順さえ分かればそんなに引っかかる部分もないかと思います。
      Nagiosの設定が一番引っかかりやすいところではあると思いますが、やること自体は多くはありませんので、根性で乗り気れるかと。