- 2009-07-29 (水) 22:10
- プログラミング
<2010/03/01追記>
去年の9月でこのbotを動かしているサーバーの契約切れていたのを忘れてました。
とりあえず、仮サーバーに移動しましたが、動作保証は無しです。すいません。
プログラミング、苦手です。
HTMLとかCSSとかは大好きなんですけどね。
そんな自分にも最近流行のtwitterを使って何か作れないの?みたいな欲求はあるようです。
驚きですね。
そんなわけで、とりあえず既に氾濫している「お天気ボット」を作ってみました。
会津限定で。超単純なヤツ。俺でも作れそうなヤツ。でも、地味に自分が使いたいものを作ったつもり。
最初にどんなんかっていうと、こんなんです。
(実はまだ未完成なんですが、ことプログラミングに関しては恥らうものなど何一つ持っていないぜ!)
作る人のスキル確認
さて、そんなワケでbotを作ってみよう!という自分のスキルですが、マジで大した事無いです。
大学の授業でチマチマ色んな言語を触りましたが、覚えているのはCをチョコッとくらいなもの。
でも、FizzBuzzくらいは大丈夫だよ!2分じゃ無理だけどな!
まぁ、そんな感じです。
使うもの
とりあえず、PHPでやろうと決めましたが、開発環境すら整っていません。
今回はそんな大きなもの作るわけじゃないんで、テストもファイルをその都度サーバーにアップロードしてやります。
そうさ。この程度さ。
…あ、ちなみにサーバーのPHPは5.~です。
バージョンが違うとどう違うの?って細かい話は、ちゃんと分かってる人に聞いてください。
エディタはterapadを使用。まぁ、文字コード周りをいじれれば何でも良いや。よく分からないし。
あぁ、それとbot用のアカウントは先に作っておいてくださいね。
ちなみに、このbotは、こんなんです。
仕様
ホントは色々考えたんですよ?地名をbot宛につぶやいたら、その地の天気を松岡修三風に教えてくれるとか。
仕様と違うつぶやき方をしたら修造がキレるとか。全部修造ネタだけど。
でもまぁ、正直、そんなの自分は欲しくないんですよ。
大抵知りたいのは住んでいる会津の天気だけ。そのためにわざわざbot宛につぶやくのも面倒。
一日一回、明日の天気を教えてくれれば十分。
ということで、「一日一回、会津の天気をつぶやくbot」ということに決定!
すごーい!すごいショボいよー!
…ま、具体的には、どっかのお天気予報サイトのRSSを持ってきて、それをtwitterにPOSTするっていう。
最初だしね。ちょっとずつレベルアップしていこうね、俺。
ということで、制作に入ります。
1.お天気サイトから天気情報を手に入れて表示させよう
まずは、お天気情報を手に入れますよ。
RSSから情報取ってくるには、MagpieRSSって便利なものがあります。
とっても便利です。昔、ブログの更新情報をサイトに表示させる時にお世話になりました。
お天気情報は、goo天気に提供してもらうことに。Yahooは広告がウザすぎたので。
で、とりあえずやることは、MagpieRSSをDL。
したら、解凍して必要なファイル(下記画像参照)ルートに移動します。この時点でのファイル構成は
こんな感じです。
いきなり、twitterに投げさせるのもアレなので、まずは天気情報を1件だけブラウザに表示させるものを作ります。
ということで、ファイル構成はこのようになりました。
新しく2つファイルが誕生しました。display.php は ブラウザに天気情報を表示させる用で、weather_rss.php は もろもろの処理をする用です。それぞれ中身は、
display.php
<html>
<head>
<title>天気予報RSS取得</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
</head>
<body><h1>天気予報RSS取得</h1>
<?php
include “tenki_rss.php”;
?></body>
</html>
weather_rss.php
<?php
// 天気予報RSSのURL
$url = ‘http://weather.goo.ne.jp/area/3630.rdf’;// 出力時の文字コード//*0
$out_enc = “utf-8″;// magpieの基本設定//*1
// キャッシュを残す時間(秒)を設定
define(‘MAGPIE_CACHE_AGE’,’21600′);
// MagpieRSS の出力文字コードを設定
define(‘MAGPIE_OUTPUT_ENCODING’, ‘UTF-8′);
// MagpieRSS の読み込み
require_once ‘rss_fetch.inc’;// RSS周りの処理//*2
// RSS取得
$rss = fetch_rss($url);
// itemの読み込みforeach ($rss->items as $item )
{
// itemタイトル読み込み
$title = mb_convert_encoding($item[title], $out_enc, “auto”);
// item url読み込み
$url = $item[link];
}// 出力用の文章生成//*3
$buf .= “$title”;
$buf .= “$url”;
$buf = mb_ereg_replace(“goo 天気”, “”, $buf);// 表示
print $buf;
?>
*0:作っている時に、一番解決に時間を要したのがやっぱり文字コード絡みでした。とりあえず、ファイルそのものも含めて全部同じにしましょう。
*1:Magpieの設定については自分が語るよりもココ見た方が分かりやすいです。
*2:やってることは*1で紹介したページに書いてるのを、参考にしました。今回はRSSのタイトルに結果(会津の天気)が書いてあるので、それと記事へのリンクだけ取っています。
*3:タイトル($title)とリンク($url)をくっつけています。mb_ereg_replaceで不要な「goo天気」という文言を取っ払いました。…余談ですが、ここの処理中にファイル自体の文字コードが違っていることに気付けず、結構な時間を費やすことになりました。
display.phpにアクセスするとブラウザには、こんな感じで表示されます。
2.んじゃ、結果をtwitterに投げようか
とりあえず、つぶやく言葉は生成できました。
じゃあ、次はこれをtwitterに投げますよ。
…とまぁ、普通ならここで挫折です。だって、丸っきりやり方分からないんだもの。
ただ今の時代は便利なもので、twitterへのポスト方法を解説してくれている神のような人がすぐに見つかります。
ここのサンプルソースを、ほとんどそのまま使えます。ありがたやありがたや。
messageとなっている部分を$bufに変えて、さっきのソースの最後にぶちこめばOK!
…あ、もちろんユーザー名とパスワードはさっき作ったアカウントのものにしといてくださいね。
3.自動で動かすためにはどうしようか
これでサーバーにあげたweather_rss.phpにアクセスすればtwitterに天気情報がつぶやかれます。やったね!
…いや、待て。あれ、これじゃ毎回アクセスしないとつぶやかなくね?
そうなんです。このままじゃ、これはbotとは言えません。
もうちょっとだけ頑張ってbotになってもらいましょう。
ファイルを定期的に実行するためには、サーバー上でcronってものを動かすみたいです。
ただ、安物レンタルサーバーを使っていると、そんな設定は出来ないわけで。
…うーん、個人的な感想だけど、もしかしてtwitterのbotを作るうえで一番障害になってるのがコレなんじゃないかなぁ。
で、困ってたら、良いサービスを発見しました。
cronjobを無料で作ってくれます。ドイツ語がデフォなんで敷居が高いんですが、そんな人には…
これは外国語のウェブサイトのユーザーインターフェイスを日本語化するサービスです。
有志の方がcron-job.orgのページも翻訳してくれていますので、これをインストールするだけで、インターフェスの大半が日本語になります。
一応、2分単位でcronを走らせられるのですが、今回のは1日1回で十分なので、その設定に。
あ、多分これ、ドイツ時間っぽいので気をつけてください。
4.で、今に至る
ということで、ココまでがプログラミング能力最底辺の自分が今現在までやったことです。
必要あるのかどうか分かりませんが、今回作ったものも一応公開しておきます。
まだ、完全に動作保障していないんですが、とりあえず作業が一段落したので記事にしました。
twitterにつぶやきPOST出来たくらいで感動できましたよ(笑
- Newer: みちのくIT会議vol.2について
- Older: カンボジア・ベトナム滞在記⑦「帰ってきましたプノンペン」
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://watalucky.com/2009/07/29/%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e8%83%bd%e5%8a%9b%e6%9c%80%e5%ba%95%e8%be%ba%e3%81%ae%e4%bf%ba%e3%81%8c%e4%bc%9a%e6%b4%a5%e3%81%ae%e3%81%8a%e5%a4%a9%e6%b0%97bot/trackback/
- Listed below are links to weblogs that reference
- プログラミング能力最底辺の俺が会津のお天気botを作ってみた from watalucky.com


