2008年10月29日水曜日

スクリプトの話(13)〜「llOwnerSay」の活用

さて、もしプログラムがうまく動かなかったら、
その原因をどうやって調べるか?
一番怪しいのは前回も書きましたように
条件が分岐したりするところです。
条件の設定を誤ったり、
思いもよらない値が来て、その行き先がない場合などですね。

こんな時、ポイントポイントで、
その時の結果がどうなっているかを確認するとよいのです。
例えば、変数の値は自分が期待したものになっているか、
処理が行われた結果がどうなっているか、といったことです。
どうやって確認するか?
ここで、「llOwnerSay」という関数を使います。
ご存知の通り、オーナーにだけ聞こえるようにしゃべってくれる、
アレですね。
変数の値や処理の結果を喋らせて、
その箇所ではOKなのかどうか、確認していくことになります。
OKならその次のどこか
NGならその前のどこかがおかしことになります。
検討がつけばいいのですが、
どうにも検討がつかない時は、
変数を設定したり、計算したりするポイントポイントごとに
llOwnerSay を入れてしゃべらせてあげるといいでしょう。

例を挙げます。

最近 YouTube テレビが流行っていますが、
(私も出していますが。。。^^;)
これは大抵の場合、YouTube そのままは見られないので、
mp4 というQuickTimeで扱える形式に変換してくれるサイトへ
リンクを貼ることで実現します。

しかし、ということは、
QuickTime のメディアを置いている場所であれば
YouTube でなくても見られるわけです。
であれば、YouTube のチャンネルの時だけ変換して、
それ以外の URL は変換しない、という処理ができないでしょうか?

string channelURL // ノートから読み込んだURL

// "youtube" という言葉が含まれているかで判断
if (llSubStringIndex(channelURL, "youtube"){
  channelURL = llInsertString(channelURL,
    llSubStringIndex(channelURL, "youtube")+7, "mp4");
}else{
  channelURL = channelURL;
}

// ここで確認のために入れてみる
llOwnerSay(channelURL);

else は不要かもしれませんが、敢えて比較のために入れてみました。
これで、例えば

「http://www.youtube.com/watch?v=ABCDEFG」

を channelURL に読み込まれるようにすると llOwnerSay は、

「http://www.youtubemp4.com/watch?v=ABCDEFG」

としゃべってくれるでしょう。
これはうまくいくはずです。
ところが、あるURLを読ませるとうまく映像が映りません。
その時 llOwnerSay はこう言っていました。

「http://www.youtubemp4mp4.com/watch?v=TUVWYXYZ」

そうです。もともと変換されたサイトのURLを読んだのですね。
なので余計な文字が入ってしまい、サイトを開けないのです。
これで先の「if文」は
もうちょっと考えないといけないことがわかりました。

このように llOwnerSay を使うと処理の結果が目に見えるので
どこが間違ったか、はっきりして便利です。
是非どんどん使ってみて下さい。
あ、勿論、ミスが修正できたら消してもいいですし、
「//」をつけてコメントにしてもいいですね。

それでは、また。

No response to “スクリプトの話(13)〜「llOwnerSay」の活用”

Leave a Reply