Archive for the ‘API’ Category

CakePHP で PEAR (Services_Twitter) を使う方法

Pear は PHP で利用できる便利なライブラリです。今回は Services_Twitter というものを CakePHP で利用しようとしたところで、ちょぴーり躓いたので、メモしておきます。

今回は簡単に Twitter API を操作できる PEAR パッケージ Services_Twitter を導入することを仮定して話を進めていきます。

Services_Twitter をダウンロードする

こちらから Services_Twitter をダウンロードできます。

Windows でダウンロードすると Services_Twitter-0.4.0.tgz.tar というアーカイブファイルになってしまいまして、解凍しても中身空で、なんか解凍できなかったので Linux を起動してそこから作業をするという荒業に出ました。

PAER を配置する

/app/vendors にファイルを置きます。今回の場合ですと Services ディレクトリをそのままここにコピーしてこれば良いですね。

inclide_path.php を作成する

/app/vendors に inclide_path.php を作成します。内容は以下になります。定数に PEAR_PATH と入っていますが、他の名称に変更してもらって構いませんです。

1
2
3
<?php
define('PEAR_PATH', dirname(__FILE__));
set_include_path(PEAR_PATH . "/");

dirname(__FILE__)) ですが、dirname() は親ディレクトリを求め、__FILE__ は現在のファイルのフルパスを表す定数文字列が入ります。以下が参考になりました。
tips – 汎用インクルード用ファイルでの include, require では dirname(__FILE__) を使う

この inclide_path.php は“vendorsにpear::soapを組み込んでSOAPを使いたい” フォーラム – CakePHP Users in Japan を参考に作りました。

PEAR を読み込む

先ほどの include_path.php がここで役に立ちます。
ファイルが一つなら直接 path を指定しても良かったのかもしれませんが、複数ファイルがあるなら断然 include_path を設定した方が楽ですねー。

2行目は適宜変更してください。第2引数と第3引数注目です。

1
2
App::import('Vendor', 'include_path');
App::import('Vendor', 'Services', array('file'=>'Twitter.php'));

Twitter でつぶやく

以下のようにコントローラー内に書けば動きます。
Services_Twitter のページに詳しい使い方がのっていますので、一度目を通したいところですね。

1
2
3
4
$user = 'twitterのユーザ名';
$pass = 'twitterのパスワード';
$st =& new Services_Twitter($user, $pass);
$st->setUpdate('テスト投稿');

string(xx) “HTTP/1.1 302 Found” で投稿できない

完璧なプログラムなのに、このエラーで投稿できない場合は、Twitter.php の 501行 の var_dump をコメントアウトすれば上手く動きます。
PHP::Services_Twitter のTwitter.phpでvar_dumpの消し忘れ? | 生涯一馬鹿で行こう!

bot を作るのに参考になるサイト

私自身 Web サービスを使うのに向いてなくて、どうせなら提供する側に回りたい今日この頃。bot を作ろうと思っていますので、参考になりそうなサイトを探して、以下が秀逸でした。
キャラクタ系Twitterbotをつくってみた初心者向けまとめ そのいち – ものおき@はてな

しりとり API を制作しました

しりとり API を公開しました。XML 形式です。

http://siritori.net/api/v1/1234567890abcdefg/normal/%82%D4%82%C1%82%B5%82%E3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?xml version='1.0' encoding='UTF-8'?>
<siritori key="1234567890abcdefg" num="9" date="2009-11-14" time="03:33:13">
	<item>
		<id>725</id>
		<word>ざんげ</word>
		<url>http://siritori.net/words/%E3%81%96%E3%82%93%E3%81%92</url>
		<type>safe</type>
	</item>
 
	<item>
		<id>1176</id>
		<word>ざやく</word>
		<url>http://siritori.net/words/%E3%81%96%E3%82%84%E3%81%8F</url>
		<type>safe</type>
	</item>
	<item>
 
		<id>1287</id>
		<word>ざる</word>
		<url>http://siritori.net/words/%E3%81%96%E3%82%8B</url>
		<type>safe</type>
	</item>
	<item>
		<id>1400</id>
 
		<word>ざこう</word>
		<url>http://siritori.net/words/%E3%81%96%E3%81%93%E3%81%86</url>
		<type>safe</type>
	</item>
	<item>
		<id>1631</id>
		<word>ざんぱい</word>
 
		<url>http://siritori.net/words/%E3%81%96%E3%82%93%E3%81%B1%E3%81%84</url>
		<type>safe</type>
	</item>
	<item>
		<id>1977</id>
		<word>ざーさい</word>
		<url>http://siritori.net/words/%E3%81%96%E3%83%BC%E3%81%95%E3%81%84</url>
 
		<type>safe</type>
	</item>
	<item>
		<id>2014</id>
		<word>ざんねんしょう</word>
		<url>http://siritori.net/words/%E3%81%96%E3%82%93%E3%81%AD%E3%82%93%E3%81%97%E3%82%87%E3%81%86</url>
		<type>safe</type>
 
	</item>
	<item>
		<id>2742</id>
		<word>ざんむ</word>
		<url>http://siritori.net/words/%E3%81%96%E3%82%93%E3%82%80</url>
		<type>safe</type>
	</item>
 
</siritori>

まぁ仕様や API キーの取得の説明などは「しりとり」に全部あるので、ここでは API についての考えとかそんなん喋っていきたいと思います。

ちょっと初めての取り組みで API ってこんなので良いのか分かりませんが、v1 ということで、今後バージョンアップしていく予定です。といっても利用者がまったくいないのにバージョンアップなんてするつもりはないので、ぜひ皆さん利用していただけると幸いです。

しりとりサイトって、実際に作っていただけると分かるかもしれませんが、地味に複雑で面倒くさいんです。様々な文字列を投げかけられるので、それに対応していく必要があるんですねー。

しりとり API は、どんな文字列を投げかけられても確実に答えを返したりエラー文を返したりと、しっかりとしているので、これを利用すれば制作者は基盤に関して考える必要なく、どう処理していくか、どんなコンテンツを作るかを考えるだけで良いんですね。

しりとり API でサイトを作るメリット・デメリット

メリット

  • 禁止ワードの管理などを自分でする必要がない。
  • 初期段階において予めデータを準備する必要がない。
  • データベースを自分で構築する必要がない。
  • ひとつのデータベースを使うことでより多くのキーワードを収集できる。
  • 制作にかかる時間を飛躍的に短縮できる。

デメリット

  • 本家データベースが停止すると自分のサイトが機能しなくなる。

メリットもたくさんあるけど、デメリットはでかいですね。
どっちもどっちって感じかもしれませんが、まぁ一応データベースは毎日自動的にバックアップとってるので滅亡するとかないし、サーバーも結構高スペックのものを使ってるので平気かもですね。むしろ、アクセスが多すぎて専用サーバーに行かないと!!ってなってみたいですね。

今回 API 作って思ったんですが、楽しいですね…。
このようなサイトを作って生活できたら、どんなに嬉しいか。しりとりサイトが希望を運んできてくれることを願って、日々耐え抜きます。今日と明日で、ひらがなを感じに変換する API を利用して、しりとりサイトを彩りたいと思います。

12時間くらいずっとカタカタやって疲れました。文章とか大丈夫かな…。とりあえず寝ます。