2008年07月23日
LSLツール”スクラッチ”
LSL(リンデンスクリプト)作成ツールとして、視覚的、感覚的に出来るツールScratch。
しかしその前にLSLというよりも、スクリプトってなんだ?について少し書いておきますネ^^。
まあプログラム言語ってなにか?っていうと、いきなり拒否反応示すのも無理はないですね。そもそもが日本語圏で作られたものではないので、日本語に該当しない言葉を無理矢理翻訳した結果、余計に意味が解りにくい表現が多く、また、そもそもプログラム言語に関しては、なんというか「良い教科書」よりも、結局プログラムをよく理解できている方から教わるのが一番・・という部分がありますし。
私はプログラマではありませんが、一通り知識として仕組みにまで突っ込んだ勉強はしてきました。^^
そこでまあ、基本としてスクリプトそのものについてお話ししようと考えたわけです。
スクリプト・・日本語で言うと”構文”です。まあイキナシなんの事やらですが、要するに文章。本来プログラムは言葉の組み立て方なんですが、いかんせん開発者が外人なので、自分たちで判る書式でしか書けないというのが、プログラミングをする上での最大の障害。
まず簡単にいいますけど、文章には出だしと終わりがあるのは当たり前ですよね?
この世にあるプログラミング言語は、それを{ }で囲むことで、1つの文章を完結させています。多分全部そうだと断言して良いでしょう。LSLも全く同じ。
次にプログラム言語は、書いても動きません。何故でしょうか?全てのプログラムは、中間処理という部分を通してでしか、働きません。この中間処理はどこでしているのか?というと、あなたのコンピューターだったり、ネット上にあるサーバーだったりします。この処理を通すと、プログラムは何かの操作をすると反応するようになります。
この中間処理が”コンパイル”と呼ばれています。つまり、人間が読める状態の文章を、コンピューターが読める書き方に自動で処理させることが必要。つまり目には見えない部分です。処理が終わるとプログラムは人間が読める文章ではなく、コンピューターが理解できる文章に変換されています。
これがソフトなら、ウィンドウという操作盤をユーザーに表示させ、ファイル、編集、ツールなどという操作プログラム(インターフェスという)を提供して、操作を受け付けますが、LSLはコントロールパネルは単純なものしか無く、多くはタッチするとか、アバターがぶつかるとか、そうした事でしか操作できない事になっています。
コンパイルはこの世にあるプログラム全てに必要な処理で、WEBでいうJavaScriptは、コンパイルという中間処理をブラウザが行っています。従いブラウザがないとJavaScriptは動作できません。同じようなものにFlashお馴染みのActionScriptがあります。動画やアニメーション(モーション・プログラミング)などで有名ですね。
ではLSLはというと、これはリンデンが提供している仮想空間内で”コンパイル”する事で動作します。要するにリンデンのサーバーが動作環境というわけで、中間処理はサーバー側で行われています。
で、スクリプトというのは、本来中間処理を継続しながら、実行します。
どういう事かというと、本来スクリプトというプログラムは、コンパイルをしながら処理結果を出力しますので、サーバー側の処理能力に偏った動作になります。つまり、あなたがどこかのフリーソフトをダウンロードしてインストールする際、よくEXEファイルをダブルクリックしますよね?あのEXEファイルは、既にコンパイルを終えたプログラムで、コンピューターにインストールすれば、すぐに操作できますが、スクリプトはそうはいかず、必ず実行環境がないと動作しません。つまり、スクリプトは、操作をするたびサーバーが中間処理を行うやり方なので、スクリプト以外のプログラムのように素早い処理結果は得られないのが普通。
私達があまりそれを感じないのは、PCの性能が上がったことと、サーバー側の性能が上がったということなのでしょうね。
ところが、LSLがちょっと変ってるのは、コンパイルした後の動作は、何時でもログインしてインワールドに入っていれば、すぐに動作します。中間処理は一度だけ・・。ほんとはこの”コンパイル”という言葉がチトわかりにくいんですよね。
実はコンパイルという意味がLSLではちょっと違っているそうで、リンデンでの説明によれば、LSLはコンパイルとしたことで、初めてリンデンのサーバー側へ処理環境が移るんだそうです。つまり、ユーザーがLSLを書いて保存すると同時に、そのコードはリンデンサーバーに処理が渡され、エラーチェックをします。難しい言葉を使えばデバッグです。つまり、書かれたコードに”プログラムの約束に沿った書き方”が為されているかチェックしているワケです。
便宜上コンパイルと書いてるだけで、やってることはデバッグだったというわけ。
で、エラーがなければスクリプトは、何らかの操作を待つようになるか、動作を開始します。このとき実際プログラムを動作させているのは、リンデンのサーバーであり、しかも今度は本当にコンパイルしながら、実行処理をしています。
こんな経験をしたことはありませんか?
SIMを移動したら、スクリプト禁止ではないが何故かHUDが動作しない
これは、サーバー側でLSLの処理(コンパイル)を受け付けなくなっている状態・・というのがほとんどの場合です。つまりLSLはサーバー側の処理速度で、動作が決まっているわけで、これが”スクリプト”というプログラム言語の正体です。サーバー・サイドプログラムとも呼びますが、このサーバーサイドとSLビュワーを使ったクライアント環境の2足のわらじがないと、動作しないのがスクリプトというわけ。
とりわけLSLは、サーバーの動作環境に大きく影響されるため、動作が他のスクリプトに比べ遅く、不安定だといわれています。
しかも、LSLはほとんど複雑な処理をファイルごとに分割して、お互いを読み込んだりしてコードを判りやすくするようなマネができず、一目見て非常に汚いコードになりやすいです。^^;;「コレをやったらこれをやって、次はこれこれ・・」といった書き方をするので、ブロックごとに見ていてもダメで、やたらブン長いコード全体を見通してでしか、理解できないという欠点があります。最終的にこうなるという予測が立てにくいので、1つの動作に何通りもの書き方を許してしまっている・・。
それを回避したいがため、関数という単純なプログラムの塊を、いわばユニットのようにコードに繰り返し書くことで補おうとしてますが、これが余計コードが汚くなる原因^^;;
本来ならこうした関数は外部からプログラムへ持ち込んで、関数はブロックごとにまとめて読み込ませれば、読みやすくもなると思うんですが、なにせ手続き型のプログラムなのでしょうがないところです。
Cという古くからあるプログラミング言語がありますが、ちょうどこの書き方によく似ています。手続き型と呼ばれるプログラムの書き方ですね。とにかくバグが見つけにくい書き方をしているということ・・LSL最大の欠点はそこでしょうか。
SLは世界を構成しているものは、空以外すべて何らかのプリム(レンダリングされたオブジェクト)で構成されていますが、LSLはその中でもアバター以外のプリムにしか入れることは出来ません。当たり前ですが、LSLがもしアバター自身に直接作用すると、暴走した場合どうにもならなくなりますよね?アバターを操作するにしても、スクリプトはアバター以外のプリムに仕込む必要があります。
これは全てのスクリプトに言えるのではなく、SLでは”ルール”としてそうしてあるだけです。ですから当然そのルールを破壊する猛者もいるわけで、アバターを直接制御してアカウント操作をしたり、L$を盗み出す制御を使うある種犯罪者も存在するわけです。どこまでリンデンがそうした制御に対する対抗策を講じているかは謎ですが、L$を盗み出す制御以外、禁じている様子も無いような気もします。^^;;
で、前置きが非常に長くなりましたが、Scratchというソフト、本来簡単なゲームを作るために出来たソフトなんですが、プログラムの勉強にもなります^^。
子供にも作れるプログラミング・・こうしたコンセプトで作られたそうで^^。
おもちゃのロボット「PaPeRo」でNECと共同開発してるそうです^^。
関連記事http://www.atmarkit.co.jp/news/200801/17/mit.html
簡単に使い方だけ紹介しましょう^^
まずは以下からScratch LSL版を入手。
http://web.mit.edu/~eric_r/Public/S4SL/
ダウンロード&インストール完了して立ち上げると以下のようなウィンドウになってます。
視覚的にできるといっても、LSLの基本的な構造を理解していないと、結局は使えないんですが・・^^;;
まずは左側のペインから、ユニットを移動。
上図はタッチしたときのイベントを表わしています。
タッチするとテキストを表示するスクリプトということにしました^^。
Copy Linden Scriptでコードがコピーされます。
ビュワー側で、プリムを作って”新しいスクリプト”で、スクリプトを出し、既に書かれたコードを選択して、ペースト。
保存して、編集を閉じて試してみます^^。
このようにコードを直接書かなくて済むというのは、初心者にはハードルが低くなる事かも知れませんね。
あまり複雑なことをやらせようとすると、結構大変かも知れませんが・・^^;。
実際こうやってLSLコードを自動生成さえてから、改めてコードに書かれていることを読み解く方が、ヘタな解説本を読むよりは良いかもしれませんね^^。
まあ道具は使いようということでしょうが^^。
しかしその前にLSLというよりも、スクリプトってなんだ?について少し書いておきますネ^^。
まあプログラム言語ってなにか?っていうと、いきなり拒否反応示すのも無理はないですね。そもそもが日本語圏で作られたものではないので、日本語に該当しない言葉を無理矢理翻訳した結果、余計に意味が解りにくい表現が多く、また、そもそもプログラム言語に関しては、なんというか「良い教科書」よりも、結局プログラムをよく理解できている方から教わるのが一番・・という部分がありますし。
私はプログラマではありませんが、一通り知識として仕組みにまで突っ込んだ勉強はしてきました。^^
そこでまあ、基本としてスクリプトそのものについてお話ししようと考えたわけです。
スクリプト・・日本語で言うと”構文”です。まあイキナシなんの事やらですが、要するに文章。本来プログラムは言葉の組み立て方なんですが、いかんせん開発者が外人なので、自分たちで判る書式でしか書けないというのが、プログラミングをする上での最大の障害。
まず簡単にいいますけど、文章には出だしと終わりがあるのは当たり前ですよね?
この世にあるプログラミング言語は、それを{ }で囲むことで、1つの文章を完結させています。多分全部そうだと断言して良いでしょう。LSLも全く同じ。
次にプログラム言語は、書いても動きません。何故でしょうか?全てのプログラムは、中間処理という部分を通してでしか、働きません。この中間処理はどこでしているのか?というと、あなたのコンピューターだったり、ネット上にあるサーバーだったりします。この処理を通すと、プログラムは何かの操作をすると反応するようになります。
この中間処理が”コンパイル”と呼ばれています。つまり、人間が読める状態の文章を、コンピューターが読める書き方に自動で処理させることが必要。つまり目には見えない部分です。処理が終わるとプログラムは人間が読める文章ではなく、コンピューターが理解できる文章に変換されています。
これがソフトなら、ウィンドウという操作盤をユーザーに表示させ、ファイル、編集、ツールなどという操作プログラム(インターフェスという)を提供して、操作を受け付けますが、LSLはコントロールパネルは単純なものしか無く、多くはタッチするとか、アバターがぶつかるとか、そうした事でしか操作できない事になっています。
コンパイルはこの世にあるプログラム全てに必要な処理で、WEBでいうJavaScriptは、コンパイルという中間処理をブラウザが行っています。従いブラウザがないとJavaScriptは動作できません。同じようなものにFlashお馴染みのActionScriptがあります。動画やアニメーション(モーション・プログラミング)などで有名ですね。
ではLSLはというと、これはリンデンが提供している仮想空間内で”コンパイル”する事で動作します。要するにリンデンのサーバーが動作環境というわけで、中間処理はサーバー側で行われています。
で、スクリプトというのは、本来中間処理を継続しながら、実行します。
どういう事かというと、本来スクリプトというプログラムは、コンパイルをしながら処理結果を出力しますので、サーバー側の処理能力に偏った動作になります。つまり、あなたがどこかのフリーソフトをダウンロードしてインストールする際、よくEXEファイルをダブルクリックしますよね?あのEXEファイルは、既にコンパイルを終えたプログラムで、コンピューターにインストールすれば、すぐに操作できますが、スクリプトはそうはいかず、必ず実行環境がないと動作しません。つまり、スクリプトは、操作をするたびサーバーが中間処理を行うやり方なので、スクリプト以外のプログラムのように素早い処理結果は得られないのが普通。
私達があまりそれを感じないのは、PCの性能が上がったことと、サーバー側の性能が上がったということなのでしょうね。
ところが、LSLがちょっと変ってるのは、コンパイルした後の動作は、何時でもログインしてインワールドに入っていれば、すぐに動作します。中間処理は一度だけ・・。ほんとはこの”コンパイル”という言葉がチトわかりにくいんですよね。
実はコンパイルという意味がLSLではちょっと違っているそうで、リンデンでの説明によれば、LSLはコンパイルとしたことで、初めてリンデンのサーバー側へ処理環境が移るんだそうです。つまり、ユーザーがLSLを書いて保存すると同時に、そのコードはリンデンサーバーに処理が渡され、エラーチェックをします。難しい言葉を使えばデバッグです。つまり、書かれたコードに”プログラムの約束に沿った書き方”が為されているかチェックしているワケです。
便宜上コンパイルと書いてるだけで、やってることはデバッグだったというわけ。
で、エラーがなければスクリプトは、何らかの操作を待つようになるか、動作を開始します。このとき実際プログラムを動作させているのは、リンデンのサーバーであり、しかも今度は本当にコンパイルしながら、実行処理をしています。
こんな経験をしたことはありませんか?
SIMを移動したら、スクリプト禁止ではないが何故かHUDが動作しない
これは、サーバー側でLSLの処理(コンパイル)を受け付けなくなっている状態・・というのがほとんどの場合です。つまりLSLはサーバー側の処理速度で、動作が決まっているわけで、これが”スクリプト”というプログラム言語の正体です。サーバー・サイドプログラムとも呼びますが、このサーバーサイドとSLビュワーを使ったクライアント環境の2足のわらじがないと、動作しないのがスクリプトというわけ。
とりわけLSLは、サーバーの動作環境に大きく影響されるため、動作が他のスクリプトに比べ遅く、不安定だといわれています。
しかも、LSLはほとんど複雑な処理をファイルごとに分割して、お互いを読み込んだりしてコードを判りやすくするようなマネができず、一目見て非常に汚いコードになりやすいです。^^;;「コレをやったらこれをやって、次はこれこれ・・」といった書き方をするので、ブロックごとに見ていてもダメで、やたらブン長いコード全体を見通してでしか、理解できないという欠点があります。最終的にこうなるという予測が立てにくいので、1つの動作に何通りもの書き方を許してしまっている・・。
それを回避したいがため、関数という単純なプログラムの塊を、いわばユニットのようにコードに繰り返し書くことで補おうとしてますが、これが余計コードが汚くなる原因^^;;
本来ならこうした関数は外部からプログラムへ持ち込んで、関数はブロックごとにまとめて読み込ませれば、読みやすくもなると思うんですが、なにせ手続き型のプログラムなのでしょうがないところです。
Cという古くからあるプログラミング言語がありますが、ちょうどこの書き方によく似ています。手続き型と呼ばれるプログラムの書き方ですね。とにかくバグが見つけにくい書き方をしているということ・・LSL最大の欠点はそこでしょうか。
SLは世界を構成しているものは、空以外すべて何らかのプリム(レンダリングされたオブジェクト)で構成されていますが、LSLはその中でもアバター以外のプリムにしか入れることは出来ません。当たり前ですが、LSLがもしアバター自身に直接作用すると、暴走した場合どうにもならなくなりますよね?アバターを操作するにしても、スクリプトはアバター以外のプリムに仕込む必要があります。
これは全てのスクリプトに言えるのではなく、SLでは”ルール”としてそうしてあるだけです。ですから当然そのルールを破壊する猛者もいるわけで、アバターを直接制御してアカウント操作をしたり、L$を盗み出す制御を使うある種犯罪者も存在するわけです。どこまでリンデンがそうした制御に対する対抗策を講じているかは謎ですが、L$を盗み出す制御以外、禁じている様子も無いような気もします。^^;;
で、前置きが非常に長くなりましたが、Scratchというソフト、本来簡単なゲームを作るために出来たソフトなんですが、プログラムの勉強にもなります^^。
子供にも作れるプログラミング・・こうしたコンセプトで作られたそうで^^。
おもちゃのロボット「PaPeRo」でNECと共同開発してるそうです^^。
関連記事http://www.atmarkit.co.jp/news/200801/17/mit.html
簡単に使い方だけ紹介しましょう^^
まずは以下からScratch LSL版を入手。
http://web.mit.edu/~eric_r/Public/S4SL/
ダウンロード&インストール完了して立ち上げると以下のようなウィンドウになってます。
視覚的にできるといっても、LSLの基本的な構造を理解していないと、結局は使えないんですが・・^^;;
まずは左側のペインから、ユニットを移動。
上図はタッチしたときのイベントを表わしています。
タッチするとテキストを表示するスクリプトということにしました^^。
Copy Linden Scriptでコードがコピーされます。
ビュワー側で、プリムを作って”新しいスクリプト”で、スクリプトを出し、既に書かれたコードを選択して、ペースト。
保存して、編集を閉じて試してみます^^。
このようにコードを直接書かなくて済むというのは、初心者にはハードルが低くなる事かも知れませんね。
あまり複雑なことをやらせようとすると、結構大変かも知れませんが・・^^;。
実際こうやってLSLコードを自動生成さえてから、改めてコードに書かれていることを読み解く方が、ヘタな解説本を読むよりは良いかもしれませんね^^。
まあ道具は使いようということでしょうが^^。
リンデンスクリプト第五回。今日は縮小版。
リンデンスクリプトだ!テメ!コラ!第4回
リンデンスクリプトだわな第3回日本語つかいてぇ
LSL リンデンスクリプトだわな。第2回
LSL・・つまりリンデンスクリプトデース!
リンデンスクリプトだ!テメ!コラ!第4回
リンデンスクリプトだわな第3回日本語つかいてぇ
LSL リンデンスクリプトだわな。第2回
LSL・・つまりリンデンスクリプトデース!
Posted by arado at 00:43│Comments(0)
│リンデンスクリプト