書き置き。

ほぼ勉強の記録みたいなもんです。

第1回北海道開発オフ部

ニセコSIM住人つながりで誘っていただいた、北海道開発オフ部の第1回。

 

twitterなんて登録したのも登場してからずいぶんたってからだったし、

@ってなにさ? っていうくらいの初心者だったけど

約1週間、参加者の方々とやり取りをさせていただいてようやく慣れてきた感じで。

お題

twitter API を使ったbotを作成しよう

目標

twitter最新の投稿をLSLでSL内のオブジェクトの上に表示する

作業内容

環境構築

 

などなど。しかし結局は持参したMacbookで作業してた。

なんだかんだと午前中は環境構築で時間が過ぎてしまったのが残念といえば残念。

 

開発

 

Service_twitter

pearコマンドで簡単にインストールできる、、、、らしいんだけども、

いつもroot権限でなんでもかんでもやっちゃってたので

自分のホームディレクトリ以下にインストール、ってのがわからず苦戦。

tarを解凍して設置した。

 

アカウントとパスワードを引数に渡してインスタンス作成まではわかったんだけども

その後の処理がどうも期待通りではない。

データは取得できてるようなんだけども

どうもphpのシリアライズとかjson系のエンコードがかかっている感じで、

なかなかphpの配列に変換できなくて挫折した。

 

lastRSS

 

今回の目的は投稿されたものを読めれば良いのでAPI経由はステにして

RSSをパースして再利用することにした。

 

lastRSSというphpのライブラリを使用。

紹介されているサイトのサンプルを見てコピペして変数名の調整くらいで、

簡単にデータ取得成功(と思い込んでいただけのことだったことが後に判明)。

 

それをbase64_encode()かけてechoすればphp側の処理は終わり。

あとはLSLで受信して表示するだけ・・・のはずだったんだが。

 

LSL HTTPRequest

httpで外部鯖からテキストを読み込んで表示ってのは

前にテストでやったことがあったので大丈夫、と思っていたのが甘かった。

 

スクリプト上で $str = "てすとです";とか書いて(エンコードなりの処理をして)

LSLでデコード&表示すると、あまり見たこと無い感じの文字化け。

何をやってもうまくいかなくてへこんだ。

 

LSL llGetNextEmail

 

オブジェクト宛に送ったメールを受信する関数があるのでそれを使ってみた

表示したい文字を本文に入れてローカルのメーラーから送信する

 

タイムラグのタイミングがいまいちつかめなくて、

だめだったのか、まだ読み込まれていないのか・・・というジレンマ

 

最終的にはHTTPRequestのときと同じような文字化け?に行き着いた

 

LSL HTTPRequest(再

 

どっちでも一緒ならよりデバッグしやすいほうで、ということで戻り。

結局オフ会終了まで悩んだまま。

 

オフ会その後

家でその続きをば。

base64_encode()前の(読めるはずのデータを)echoしたものをブラウザで見ると

普通に見れるが、実際にはブラウザで文字置換されて見えている、ということが判明。

twitterのRSS自体がそうなっていた。

 

LSLではそんな難しいことできないだろうということでPHPでコンバートする方法を検索

文字数値参照の記事を文字に変換するConveyorプラグイン

http://d.riaf.org/22

 

この方もtwitter用に、と作られていたようで、

実際にコンバートしている部分を参考にphpのbase64_encode()前にこれを入れてみた。

 

$str = mb_decode_numericentity($str, array(0, 0xffff, 0, 0xffff), 'utf-8');

 

で、ようやく日本語があたりまえに表示されるようになりました、とさ。

 

今後の課題

 

環境構築(開発着手まで)が時間かかりすぎた。

MyMacbook持参するならそれにある程度用意していって、

すぐ開発に取り掛かれるようにしないと時間がもったいない

 

”なにをやるか(作るか)”

自分自身の目標設定という意味と、ほかの人が何やってるのか気になるので

朝イチで自己紹介+目標宣言、してみるのもいいかな。

成果品

 

HTTPRequest版のほう。これをオブジェクトを小さくするなり透明にするなりして

"着る"もしくは頭かどっかに添付すれば、

メッセンジャーやskypeのムードメッセージ的につかえるのではないかと。

 

次はぜひとも商品化までもっていきたい。