2007年8月24日金曜日

Twitterクライアント for SL作成の続き

さて、これまで2つほどSecond Lifeから使えるTwitterクライアントを試してみたのですが、どれもアップデートはできるが日本語メッセージを受信すると文字化けしてしまうということで、やっぱ自分で作ってみることにしてみました。

前回作ったステータスアップデートの動作テストや2つほど試したクライアントの動作状況から考えて、lslのみでクライアントを作るのは困難な様子。
ちなみに、lslのみでステータスのアップデートは可能ですが、http_responseのbodyには「Unsupported or unknown Content-Type.」と帰ってきてしまいます。
ということでlslのみはあきらめて、間にPHPを使ったWebアプリをかますことに・・・

なぜPHPなのかは、特に深い意味はないのですが単に「Services_Twitter」というPearライブラリを使ってみたかっただけ(笑)
いや、これが簡単で便利なのですよ。

アップデートについては大体分かっているので、先にtimelineの取得をやります。
・・・できました。
もちろんα版(というよりもまだ検証段階かw)なので、フレンドのTimelineから最新メッセージ1件だけを取ってきてllOwnerSayで返すだけです。

初めはPHPからの返り値をurlencode()で処理してたのですが、これを使うと半角スペースが「+」に変換されちゃうので、lsl側での処理がめんどう。
と言うことで、Base64を使っています。この方がデータ量もちょっと少なくなりますしね。

この調子で、次は複数メッセージの取得を考えてみます。
http_responseのbodyは2048byteしか受け取れないので最大で20件分のメッセージを一気に受け取ると取りこぼれが起きちゃうので、複数回に分けて受け取るようにしようかと・・・
このとき毎回Twitterにアクセスしちゃうと1時間に70リクエストの制限に引っかかっちゃう恐れがあるので、ここも考えないといけません。メッセージをPHP側で一時保存して処理するとか。
う~ん、Services_Twitterにキャッシュ機能があるようだけど、これ使えないかなぁ。


PHPソース

<?php
//ライブラリの準備
$PATH = get_include_path();
set_include_path($PATH . PATH_SEPARATOR . ’classes/’);
require_once ’Services/Twitter.php’;
require_once ’Jsphon.php’;

//変数の準備
$user = ’TwitterのユーザID’;
$pass = ’パスワード’;

//Twitterに接続
$st =& new Services_Twitter($user, $pass);
$st->enableJsonConvert();
$a = $st->getFriendsTimeline();

//SLに値を返してやる
$str = $a[0]["user"]["name"] . "(" . $a[0]["created_at"] . ")\n" . $a[0]["text"];
echo base64_encode($str);
?>



lslソース

//変数の準備
key requestid;

default
{
  state_entry()
  {
    llOwnerSay("Touch me, I will get recent message.");
  }
  touch_start(integer tcnumber)
  {
    state download;
  }
}

state download
{
  state_entry()
  {
    requestid = llHTTPRequest("http://上のPHPにアクセスするURL",[HTTP_METHOD,"GET"],"");
  }
  http_response(key request_id, integer status, list metadata, string body)
  {
    if (request_id == requestid)
    {
      llOwnerSay(0,llBase64ToString(body));
    }
    else
    {
      llOwnerSay(0,(string)status+" error");
    }
    state default;
  }
}

2007年8月21日火曜日

SLTweets HUD v0.78を試す

in-worldで使えるTwitterクライアント2つ目のご紹介。

SLTweets
http://www.sltweets.com/index.php




物は前回にSL Exchangeで手に入れましたので、早速装着!



デフォルトではTopに装着されます。
チャットメッセージに簡単な使い方が出てきますので、まずはID/PWの登録から。

「/30074 setup <username> <password>」でセットアップするらしいので、早速やってみます。



無事セットアップ(Twitterとの接続)が完了すると「Registration Succeddful!!」と表示されます。



Twitterにメッセージをアップデートするときは「/123 post <message>」。
アップデートの時はもちろん日本語OKです。



ただし、読み込みの時は日本語は文字化け・・・
このあたりは以前に試したTwitterBoxと同じですね。

ちなみに、HUDの左右の矢印をクリックするとメッセージの履歴を切り替えられます。
新しいメッセージが届くと羽ばたいている鳥のアイコンが赤く点滅するので、右の矢印をクリックしてメッセージを読みます。

今回のクライアントも残念ながら日本語のメッセージを読むことができませんでした。
前回のTwitterBoxではID/PWの設定をスクリプト内に直接記述する方法でしたが、今回はチャットから指定できます。
非常に簡単ですが、おそらくSLTweetsがアクセスするTwitter用プロキシサーバにID/PWを記録しているのではないかと思いますので、そのあたり気にされる方は使わない方が良いと思いますよ。

スクリプトがno-modなので内容は推測するしか内のですが、このHUDの場合一度ログアウトしたり取り外したりしても設定が保存されています。リログイン後や再送着後も設定を保持するためにはノートカードなりスクリプト内なりに情報を記録しておく必要があるのですが、現在のLSLではそのような記録はできなかったと思います。ということは、サーバに情報を送って、サーバ側で記録しておくしかないなぁと・・・

う〜ん、いよいよ自作しかなくなってきたのか・・・
いや、実は全然制作進んでないんですけどね orz

少なくとも受信に関してはLSLのみでは無理ということは分かってまして、やはり間にプロキシをかまさないと無理みたいです。PHPかRubyでも触ろうかなぁ・・・

送り主不明のプレゼント!

う〜ん、ログインしていないときに、いきなりオブジェクトを送りつけられました。
in-worldして受信メッセージ見ると送り主不明・・・あやしぃ。。。

しかも、送ってきた場所がSandbox・・・危険!きけん!!キケン!!!

というわけで、ネタ的にはちょっとだけRezとかWareしてみようかなと考えなくもないのですが、自分は恐がりなので何もせずに削除と。

ちなみに、オブジェクトの名前は「b.places HUD」
ちょっとググってみるとBrussels Airlineというサイトが見つかりました。
名前からするとここで配っているHUDのようです。

が、送られてきたオブジェクトの説明にはなぜかbluepill GROUPのサイトへのリンクが。
bluepill GROUPはSecondLife内のビジネスコンサルティングをしている会社のようです。

う〜ん、わけわからん。

まっ、送り主不明なので考えるだけ時間の無駄ということで。

2007年8月17日金曜日

MacのテキストエディタでLSLを編集

実は、しばらく前にMacBookのHDDがお逝きになりました。
時間を見つけてはぼちぼちと必要なアプリのインストールや設定をしてきたのですが、テキストエディタにLSL用の色設定モジュールを入れてない事を思い出したので、ついでにメモっておきます。
ということで、今回はMacのお話のみ。
Windowsの方ごめんなさい・・・
ちなみに、使用しているテキストエディタはTextWrangler2です。

まず、設定ファイルですが、TextWrangler用は以下のサイトにおいてあります。
もちろんBBEditでも使えますよ。

LSL Language Module for TextWrangler and BBEdit

このページから「lsl.plist」を落とします。
ページにはインストール方法の説明も書いてますので、途中まで参考にします。
インストールといっても指定のフォルダに落とした設定ファイルを入れるだけです。

[ユーザのホーム]/ライブラリ/Application Support/TextWramgler/ に「Language Modules」というフォルダを作ります。すでにある場合は、作らなくていいでいいですよ。
Application Supportの中にTextWranglerフォルダがない場合は、おそらくTextWranglerをインストールしてから一度も起動したことがないのだと思います。アプリケーションフォルダからTextWranglerを探して起動すれば、自動的に作られます。
「Language Modules」フォルダを作ったらその中に、先ほど落としたlsl.plistをコピー(もしくは移動)します。

と、サイトの説明ではここまでですが、このままではまだTextWranglerが設定ファイルを認識してくれないので、もう一手間。
「lsl.plist」を「lsl.bblm」というファイル名に変更します。
実はここに気づくまでかなり迷走しました。
おそらくlsl.plistが作られたころのTextWranglerはそのままでよかったんでしょうね・・・
ファイル名を変更したら作業は終了です。
TextWranglerを立ち上げて、設定が有効になっているか確認します。
ファイル名を変更前にTextWranglerを立ち上げていた人は、一度終了して起動し直してください。

TextWranglerが起動したら、Preferencesウィンドウを開きます。
正しくインストールできていれば「Languages」の項目で、「Installed languages:」のリストに「Linden Scripting Language」があり、「Suffix mappings:」には「.lsl」に「Linden Scripting Language」が割り当てられているはずです。



LSLスクリプトを扱う場合は「.lsl」を拡張子につけてやればOKです。

2007年8月16日木曜日

SL Exchangeを使ってみる #2

前回SL Exchangeに登録するまででした。
無事登録できましたので、今回は入金から買い物までです。

SL Exchangeを使って買い物をするためには、次の2ステップを行います。
  1. まずSL Exchangeにお金を預ける
  2. 商品を選んで購入する。
1.の「SL Exchangeにお金を預ける」ですが、ここで言うお金とはもちろんL$のことです。
したがって、お金を預けるにはin-worldでSL Exchangeのターミナルから操作します。
SL Exchangeのターミナルを右クリックします。

パイメニューの「支払い」をクリック。



メニューが開くのでいくら入金するかを指定します。
1L$、5L$、10L$、20L$のボタンを押すか、左下のフォームに金額を入力して「支払い」をクリック。
これで1.は終了。



念のためWebブラウザでSL Exchangeにログインして、正しくお金が預けられているかを確認してみましょう。
ログインすると左側に表示される「My SLX」の「SLL Barance」が預けたお金の総額になります。
私の場合は元々預けていたお金が0L$でしたので、支払いで入力した101L$がそのまま総額になっています。



ちなみに、「支払い」といっても、SL Exchange用の財布にお金を入れるイメージですので、後で引き出すことも可能です。
引き出し方の説明はまた後ほど・・・

財布にお金が入ったので、早速買い物です!

今回は「SLtweets」というTwitter用クライアントHUDを買うつもりでしたので、SL Exchangeのホームから検索を使って商品を探しました。



買いたい商品が見つかったら、詳細ページを開いて、「Buy now」をクリックしましょう。
クリックする前に金額をよく確かめてくださいね。



なお、クリックするとすぐに商品が転送されます。
in-world上のキャラクター宛に届きますので、Second Lifeにはログインしておいてください。
Second Lifeのウィンドウを最小化していたり、Away状態だったりすると転送エラーになります。

商品の購入と転送が成功すると、こんな画面が表示されます。



それではちゃんと商品が届いたか、in-worldで確認してみましょう。
Second Lifeの画面を見ると、SL Exchangeがオブジェクトを送ってきたというダイアログが表示されていますので、「維持」をクリック。



持ち物を確認すると、無事届いています。



今回は商品の購入までなので、ここまで。
SL Exchangeからお金を引き出したりするのはまた後日説明します。

SL Exchangeを使ってみる

Yuko Wiseさんのブログ「ワクワク Second Life」でSLtweetsというTwitterクライアントを知ったので、早速試してみようと思いました。
が、残念ながらin-worldのベンダーをクリックしても取得できなかったので、まだ試していなかったSL Exchangeから手に入れようと思います。
SL Exchangeを知らない方のために・・・
というか、私もよくわかってませんがw。このサイトにはSecondLifeの様々な商品が登録されていて、Webから購入ができるショッピングサイトです。in-worldであれこれ迷いながら探すのも楽しいのですが、ここなら簡単に検索できますから、今後のためにも利用してみてはいかがでしょうか。もちろん、自分の商品を売ることもできますよ。
ということで、まずは登録。
登録のやりは2つあって、
  1. SL ExchangeのWebサイトから情報を入力して登録 (登録ページ)
  2. in-worldでSL Exchangeのターミナルから登録
のどちらかを行います。
1.の方は、色々なWebサイトのサービスを利用する場合の登録とかわりません。なので、ここは2.の方法で登録してみます。
SL Exchangeも「in-worldから簡単登録!」とうたってますしねw

まずは、SL Exchangeのターミナルを見つけます。SL Exchangeのサイトにターミナル設置場所のリスト&リンクページを用意してくれてますので、適当な場所へテレポートしちゃいましょう。
パラパラ見てるとKanazawaSLing (119, 112, 22)とあったので、ここにしました。



早速ターミナルにTouch!すると、ノートカードをもらいますので、読んでみます。

Say "signup " near a SL Exchange terminal with your email address (example: signup joe@hotmail.com).

なるほど、SL Exchangeターミナルのそばで「signup <メールアドレス>」とチャットすればよいのですね。
では早速・・・
[21:41] You: signup ほげほげ@太郎.com
[21:41] SLX Terminal 2.2.0 st: Contacting server. Please wait.
[21:41] SLX Terminal 2.2.0 st: Sign-up succeeded! An email has been sent to the email address provided with instructions to complete your registration.
う〜ん、端末のそばで独り言をつぶやくってのも、ちょっと危ないですねw
「チャットでつぶやいたメールアドレスにメールを送ったよ」という事で、届いたメールには登録を完了するためのURLリンクがかかれてます。
このリンクをクリックすると、登録完了。



確かに簡単だ。
登録が完了したらログインです。
サイトの左上にあるログインフォームにSLでの名前を入力。パスワードは、SLのパスワードではなく、さっきチャットでつぶやいたときに送信されたメールの一番下にパスワードが書かれてますので、こちらを入力。
初めてログインしたときだけ、利用規定が表示されるので、一読して問題なければAccept。

これでSL Exchangeを利用する事ができるようになりました!

L$の入金と商品の購入の仕方は#2へ・・・

2007年8月10日金曜日

ブログにカレンダーを表示しました

といっても、ブログ記事用のナビゲーション用カレンダーではありません。
Google Calendarです。

右側のサイドバーの一番下に表示している「SLカレンダー」です。

イベントとかをin-worldで探すのが苦手なので、いつも見ている色々な方のブログからイベントを見つけてましたが、どこかにメモしておきたいなぁと・・・記憶力が悪いので。
ということで、よく使っているGoogle Calendarに記録していたのですが、せっかくなので、公開してみました。

基本的に自分のメモ用なのですが、公開するからにはそれなりに量も増やしたい・・・
in-worldでイベント開催している方、よろしければAmber HermansまでIMください。

iTunesでイベント放送を聞きながら買い物

自宅の回線は遅いので、普段は仕事部屋(隠れ家w)からin-worldしてます。

昨日はちょっと買い物というかウィンドウショッピングをしたくなったので、久しぶりに自宅からin。


Digital Doragon Designsをうろうろしていたら、CLUB ASKAからイベント放送開始のIMが来ました。


放送用のURLは土地のメディア設定に登録すると聞けるようになるので、いったん自宅に戻るかASUKAへテレポートするか考えましたが、もう少しDigital Doragon Designsをうろうろしたかったので、試しに「iTunesのストリームを開く」でURLを入力してみたところ、ちゃんと聞ける!


詳しく調べてないので、もしかしたら放送する側の設定によっては聞けない場合もあるかもしれませんが、手軽に放送を聞きたい場合は試してみる価値ありです。



  1. まずiTunesのメニューから[詳細]-[ストリームを開く...]をクリック。


  2. 「ストリームを開く」ウィンドウにURLを入力(IMからコピー&ペースト)



画面はMac版ですがWindowsでも同じです。


ということで、IMと放送による実況中継(?)を楽しみながら歩いていたのですが、実は会社にMac Bookの電源アダプターを忘れて帰っていたので、あえなくバッテリー切れ・・・orz


液晶ディスプレイの光度は最低限にしていたのですが、SecondLife中は常にFANの回転数が8,000回転以上なので、FANとCPUの電力消費に撃沈しました。