2008年10月31日金曜日

【翻訳】環境SIMについての発表、その後(長文)

環境SIMの価格改訂について、
リンデンのフォーラムではジャックとキャットは
恥を知れだの、早く出て来いだの
ひどい言われようです。
つまりフォーラムでトピックを立てたものの
二人のレスポンスが全然ないではないか、というのです。

そこへ本日ようやく、
ジャック・リンデンの記事が公式ブログで発表されました。
この問題には関心を寄せる方、
正確な情報を知りたいと思っていらっしゃる方も多いと思うので、
とり急ぎ全文の訳を以下に掲げます。
例によって非公式な翻訳であり、
誤訳や文責は全てHiroshi Kumakiにあります。
原文はこちらです。

     *   *   *

環境SIMの価格と運用変更についての前回の記事の後、私共はセカンドライフ・コミュニティの皆さんからそれは多くのご意見を賜りました。主としてそれはフォーラムでの議論を通じてですが、同時にEメールやIMでも頂きました。そこで、これらのご意見に対する私共の返事をここに述べておきたいと思います。

まず私が行いたいのは、これらの意見を寄せて頂くために時間を割いて下さったみなさんに対して感謝申し上げたいということです。私共はこれらのご意見の全てに目を通しました。フォーラムでの投稿も含めてです。[訳注:フォーラムの投稿は10月31日午前0時現在で2,800に達しようとしています。ここに書いても読まれないよね、という意見があったための発言と思われます。]そして、これらのご意見の中で皆さん、建設的に、そして明確にご自身の考えを表明しておられました。セカンドライフの住民の皆さんが、かくも熱心で知的で、そして素晴らしい議論を展開して下さるということに、私共は本当に恵まれていると感じています。そして、皆さんに本当に感謝申し上げたいのです。

次に、これははっきりと申し上げておきたいのですが、私共は皆さんがこの問題に関しておっしゃっていることに、本当に耳を傾けているのです。なので、もし、フォーラムに投稿すべきかどうか迷っていらっしゃるようでしたら、是非投稿して下さい。これらの投稿は全て読まれているのです。たとえ私共がそれらの投稿全てにお返事することができなくても、です。

三番目に、これから述べることについてははっきりとわかって頂きたいと思います。前回の記事で申し上げましたように、環境SIMというのはもともと何もない空間として、海や森などの広い場所を確保するために用意されたものです。是非、ここにあるナレッジベースの記事をご覧下さい。ここで挙げられた基準に照らしますと、今や過半数の環境SIMは本来意図されていたものを遙かに超えたものとなってしまいました。私共はこのこと自体が悪いことであるなどと言うつもりはありません。寧ろ、住民の皆さんが環境SIMの有用性を見いだして頂いたことを大変嬉しくすら思っています。また、私共は環境SIMオーナーの全てが負荷のかかる使用をしていると言っているわけでもありません。私共が言いたいのは、こうした過程の中で、環境SIMの使用法が変わってきたのだということ、そして
住民の皆さんが環境SIMを使ってより創造的な活動をされていく中で、この使用法の変化はこれからも続いていくのだということです。つまり今回の価格改定は、これらの使用法の変化を互いに認識し、その変化によって生じる費用と価値についてのものであるということです。

これからの数日にかけて、私共は皆さんからのご意見について検討し、またできるだけ多くの方々と対話を続けていきたいと思います。もし何かおっしゃりたいことがあれば、フォーラムでご意見を言われるのがベストです。勿論、本来意図された通りに運営されている環境SIMもあります。なので、環境SIMの使用実態について様々なレベルがあることを考慮しなければならないこともわかっています。

またこのブログに記事を書きます。その前にいろいろと検討する時間を少し下さい。皆さんが今回の決定に関し、ひとからならぬ感情をお持ちであることを私共はちゃんと認識しています。どうぞご意見を絶やさず、しかし建設的で、問題の本筋から逸れないようにお願いしたいと思います。間もなく、もっと詳しくご報告させて戴きますので、どうぞよろしくお願いします。

2008年10月29日
ジャック・リンデン


2008年10月30日木曜日

スクリプトの話(14)〜「スコープ」のこと

前回の llOwnerSay を使って変数の値を確認しよう、という文章に対し、
hiromitsu Fall さんからご指摘がありましたので補足しておきます。
つまり、llOwnerSay は string 型のものしか使えませんよね、
ということです。
integer(整数)型の変数の値を知りたい場合には、
これを string 型に変換する必要があります。

例えば、ドアを開け閉めするスクリプトを組んでいて、
開ける時は openDoor()、閉じる時は closeDoor() という
自作関数を使うものとします。
この時、ドアが開いているか閉じているか
判断する手段として isOpen という整数型の変数を用意しました。

integer isOpen

if (isOpen = 0){
  openDoor();
  isOpen = 1;
} else {
  closeDoor();
  isOpen = 0;
}
llOwnerSay((string)isOpen);

結局、今ドアは開いていることになっているのか
閉まったことになっているのか、
最後に llOwnerSay() で確認しています。
ここで、isOpen は整数なので、その前に (string) をつけて
型を変換しているわけです。
これで「1」とか「0」とかしゃべるはずです。^^

     *   *   *

さて、前置きが長くなりましたが、
こうして変数の中身を確認したところで、
その結果が期待していたものと違う場合はどうしましょう?
どう見ても関数の使い方や
計算の仕方は合っていそうなのに。。。。
そんな時疑うべきはその変数の「スコープ」ということです。

「スコープ」とはもともとギリシャ語で、
「見る」という意味の言葉が変化したもので
「狙いをつける」というような意味になります。
実は変数はいつでもどこでも有効、というわけではなく、
「スコープ」=「狙い」=「射程範囲」が決まっています。
その範囲を超えると使えないのです。

いつものスクリプトをちょっとアレンジしてみましょう。

default {
  state_entry(){
    string strMessage = "Hello, Avatar!";
    llSay(0, strMessage);
  }

  touch_start(total_number){
    string strMessage = "Touched.";
    llSay(0, strMessage);
  }
}

llSay(0, strMessage) という全く同じ命令が2度出てきますが、
1回目は「Hello, Avatar!」としゃべり、
2回目は「Touched.」としゃべります。
strMessage の定義はそれぞれ state_entry() と
touch_start() の{}の中でされていますが、
実は、{}の中で定義された変数は
その{}の中だけしか有効ではないのです。
なので、もし、タッチした時も「Hello, Avatar!」と言わせたくて、

default {
  state_entry(){
    string strMessage = "Hello, Avatar!";
    llSay(0, strMessage);
  }

  touch_start(total_number){
    llSay(0, strMessage);
  }
}

としたとすると、すぐに
「Name not defined within scope」
(この名前はスコープの範囲内で定義されていません)
と怒られてしまいます。
このように{}の中だけで有効な変数を
「ローカル変数」と呼んでいます。

では、今のように{}の外でも同じ変数を使いたい場合は
どうすればいいでしょう?
それが、この連載にはじめの頃、一番最初に書くように、と言った
あの変数です。

string strMessage = "Hello, Avatar!";

default {
  state_entry(){
    llSay(0, strMessage);
  }

  touch_start(total_number){
    llSay(0, strMessage);
  }
}

これでどちらの場合も「Hello, Avatar!」としゃべるように
なったはずです。
どんな{}よりも外側にいるので、どんな場所でも有効です。
これを「グローバル変数」と言っています。
世界中どこでも、っていうニュアンスですね。^^

それでは、クイズです。
次の処理で、llSay() はそれぞれ何としゃべるでしょう?

string strMessage = "Hello, Avatar!";

default {
  state_entry(){
    string strMessage = "I love you!";
    llSay(0, strMessage);
  }

  touch_start(total_number){
    llSay(0, strMessage);
  }
}

おわかりになりますか?
state_entry() の方は、「I love you!」としゃべり、
touch_start() の方は、「Hello, Avatar!」としゃべります。
このように、同じ名前の変数が異なる階層にある場合は、
一番内側の{}の中にある定義が優先されます。
従って、state_entry() の{}の中の strMessage の定義は
この中だけで有効です。
一方、touch_start() の{}の中には何も定義がないので、
グローバル変数、一番頭にある strMessage の定義が有効となるのです。

因みに、グローバル変数とローカル変数の使い分けですが、
どうもプロのプログラマーはグローバル変数は使いたがりません。
長いプログラムを書いていて、
もし変数の定義を変更する必要が出た時、
その変数を使っているところを全部チェックしなければなりません。
それよりも、ローカル変数にしておいて
その部分だけ気にしていればいい、という方が楽だからです。
例えば、よくある繰り返しの処理で出てくる
i という変数。。。

integer i = 0;

while(i <= 10){
  llSay(0, "I love you!");
  i = i + 1;
}

これは10回「I love you!」としゃべるスクリプトですが、w
「10回」と数を数えるのに変数 i を使ってますね。
問題はこうした繰り返しの処理がいくつもある場合、
その変数にいちいち i, j, k, l... と違う名前をつけるのも面倒です。
i をそれぞれの処理の{}の中で、つまりローカルで使えば、
他のところでその中身がどうなってるか気にせずに
何度も使い回すことができます。

しかし、逆に、ある関数やステートの中で使った変数を
そのまま他の関数やステートで使いたい場合もあるでしょう。
そんな、変数を持ち回りしたい時はグローバル変数が活躍します。

長くなりましたが、変数の中身がどうもおかしいという時は、
是非この変数の「スコープ」を疑ってみて下さい。
慣れないうちはわけがわからないかもしれませんが、
やがて使い分けができるようになると実は便利なものなのです。

リンデンに一言

昨日発表された環境SIMの値上げについて
フォーラムで一言発言してきました。
ブログではコメントが141しか載ってませんが、
何と僕のコメントは1951番目でした。@@
やはりみんな何か言わずにはいられないのですね。

何十ものSIMを手放すぞ! と息巻く人や、
従来の価格で「openspace」ならぬ
「empty space」を提供します、と言う人もいて、
この人によると、プリム数100、人は1人しか入れないもので、
1台のサーバで100のSIMをまかないます、という、
まぁ、強烈な皮肉ですね。
また、そもそも何故環境SIMが必要か、それは
これこれの場所に行けばわかる、
マイケル・リンデンが環境SIMを重く使っている場所だ、
何故そんなSIMに3,700ものプリム数をそもそも許容するのか、
それはマイケル・リンデンのが自分の海賊船を置くのに必要だからだ、
なんて皮肉も。。。

しかし、嫌みを言ってみたところで、
或いはただ感情的に動いたところで問題の解決にはならないでしょう。
私としては、結局はみんながハッピーになり、
SLが魅力的な場所であり続けることを望んでいるので、
次のようなメッセージを残してきました。
http://forums.secondlife.com/showthread.php?t=289652&page=131&pp=15

     *   *   *

もしジャックが指摘しているように何万にもの人が環境SIMを負荷のかかるような仕方で使用しているのだとしたら、確かに今回の値上げは頷けるものではあります。が、同時に、それほどに多くの人たちが環境SIMを発注したという事実、そして、その多くが負荷のかかる使い方、更には土地や家をレンタルするというような使い方をしているという事実を、リンデンラボにはもっともっと深く考えて頂きたいと思うのです。

これらの事実は、次の事を物語っているように私には思えます。

1. それだけ多くの人が自由にものづくりできるSIMを持ちたいと思っているということ
2. それだけ多くの人がこれまでの環境SIMの価格をリーズナブルなものだと感じているということ、言い換えれば通常のSIMの価格が高すぎると感じているということ

この投稿のはじめに申し上げましたように、私は今回の値上げは理解できるものと感じています。が、同時に、リンデンラボには通常のSIMの価格についても見直しを検討して頂きたいと思うのです。もし通常のSIMの価格が引き下げられるようなこととなれば、今回リンデンラボが取ろうとしている手段は効果的なものとなるでしょう。しかし、環境SIMの値上げだけを実行することとなれば、それは破滅的な結果となることは間違いありません。自由にものづくりをしたいと考える人たちにとってセカンドライフは最早魅力的な場所ではなくなり、皆そこから出て行ってしまうことでしょう。

私は、リンデンラボがこうしたあらゆる可能性を検討して、最終的な判断をされることを期待したいと思います。そして、その判断が現在セカンドライフの住人たち、そして何れ住人となるかもしれない人たちにとって魅力的なものとなることを期待しています。

2008年10月29日水曜日

お詫びと訂正

昨晩アップしました環境SIM値上げの翻訳について、
値上げ後の維持費がUS$125.00とあるべきところ、
US4125.00となっておりました。
現在既に修正済みですが、
ご覧になった方には驚かれたかたもいらっしゃるかもしれません。
値上げ後の価格という大事なところでの間違い、
お詫び申し上げますと共に、
ここに訂正させて戴きます。


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

それでは、また。

【翻訳】環境SIMの価格と方針の変更について(長文)

既にいくつかの日記などでも書かれていますように、
環境SIMについて、開設費用、毎月の維持費、
そして環境SIMの提供に対する方針の変更が、
本日のリンデンのブログで発表されました。
不安に思われる方もいらっしゃると思いますので、
ここで全文を訳しておくことにします。
あくまでも非公式な自由訳であり、
誤訳等の文責は全てHiroshi Kumakiにあります。
原文はこちらです。

     *   *   *

この3月に、当社は環境SIM(英語は "openspace")と呼んでいる、あまり負担をかけずに使うことのできる土地の使用について、より良いサービスを提供することを発表しました。発表後間もなく、新しいランド・ストアをオープンし、不動産オーナーが簡単に環境SIMを購入し、それもすぐにその土地をお届けできるように致しました。これにより、サポート・チケットを使って土地を発注するという従来の方法に比べ、格段の改善がなされました。その結果、当社はとてつもない数の環境SIMの注文を受けることとなりました。実際、今現在、何万という注文が入ってきているのです。当社としましては、みなさんの多くの方が、ご自分の不動産に併せて環境SIMを設置されることの素晴らしさを知って頂いたものと嬉しい限りでございます。

ご存知ない方のために改めて申し上げますと、環境SIMというのは、田舎風な風景や海の広がる景観のために、あくまでも負担のかからない使用を目的とした個人所有の島のことです。もしメインランドの所有者であるリンデン社が海や緑あふれる土地を持てるのであれば、個人の不動産オーナーも当然同様の権利が与えられなければなりません。しかし、環境SIMはには普通のSIMと大きく異なる点が一つあるのです。それは、通常のSIMがサーバーのCPU1つをまるまる有効に使うことができるのに対し、環境SIMでは1つのCPUで4つまでの環境SIM(従って、4つのCPUからなるサーバーでは1台で16の環境SIM )が動くことになります。このようにリソースを分け合って使うので、「あまり負担のかからない使用」をすることとなるのです。

しかし、この環境SIMを海などのように殆ど何もない、人通りも少ない場所として使用するよりも、大多数の方が住む場所を探ししている人にレンタルするのに使っているというのが実情です。環境SIMはこうした目的に耐えうるようにはできておりませんので、こうした使用法は現に問題を引き起こしています。パフォーマンスが不安定なため、とても素晴らしい経験をしているとは言えない方々も多いのです。また、環境SIMをあまりに負荷をかけて使用することは、ネットワークとデータベースのインフラの一部に余計な負荷をかけることとなり、これに対応するためには現行の費用を遙かに超えるものとなります。サーバーとの間であまりに多くのトラフィックが発生する結果、そして資産管理サーバにあまりに多くの要求が投げられる結果、その影響をログインしている住民全てが、何を行うにしても受けてしまうことになるのです。

そこで、当社としましては、パフォーマンスの改善と、価格に応じたレベルの使用法を徹底して頂くための手段を講じることと致しました。これはセカンドライフに参加される全ての方に最高のパフォーマンスを約束するための措置です。結果として、価格変更と方針の変更を実施することとなりました。価格変更は1月1日から、そして方針の変更は今これより直ちに実施いたします。

2009年1月1日より実施

毎月の維持費をUS$75.00よりUS$125.00に値上げします。この値上げは1月1日現在環境SIMのオーナーである全ての方と、この日以降新たに環境SIMを購入される方に適用されます。この新しい環境SIMの維持費について、適用除外の措置はありません。

また、クラス4の環境SIMをお持ちの方は、これらのSIMは1月末までにクラス5にアップグレードされます。これはこうした環境SIMでよりよい経験をして頂くための改善措置です。

更に、新しい環境SIMを開設するに当たっての初期費用もUS$250.00からUS$375.00に値上げされます。

本日より実施

当社は、環境SIMのオーナーが、支払いをしている人とは別の住民に変わることを禁止します。当初は、既に支払いをしている人とオーナーが異なる場合のこの変更を強要はしませんが、何れ、それが許容されるのはオーナーが支払い人に対して全額を支払っている場合に限りたいと思っています。この措置は土地(parcel)レベルのレンタルについて適用されるものではありません。環境SIM全体(region)のレンタルにのみ適用されます。

また、教育者向け、非営利団体向けの環境SIMのディスカウント・オファーも今後はしないこととします。先にも述べましたように、これは現在環境SIMが使われているような状況で増大しているリソース要求に応えるための措置です。既に環境SIMをお持ちの教育者の方々が何名かいらっしゃいますが、この方々には今回の変更について直接ご説明させて頂き、検討を重ねたいと思います。

次に、ビューワーにも変更を加え、住民が自分たちがいる土地やSIMがどのようなタイプのものか、正確に把握できるように致します。これは、不動産市場を適正かつ公正で、わかりやすいものにしたいからです。自分が今いることころがリンデンのメインランドなのか、プライベートSIMなのか、或いは通常のSIMなのか環境SIMなのか、そしてそれがどういう意味を持っているのかということがすぐにわかるようになりますので、期待していて下さい。これによって、ビューワーは大きく変わることになります。例えば「検索」や「土地について」、「土地を購入」といった画面が変わります。土地についてわかりやすくすることは誰にとっても利益になると考えます。特に、初めて土地を持とうとする初心者の方々にとってはそうでしょう。

最後に、当社は負荷の大きい環境SIMについて、そのオーナーの方々と積極的に話し合っていく所存です。これが大事なのは、リソースの誤った使い方、あまりに重い環境SIMの使用は同じサーバーを、規定をきちんと守って運営している他のオーナーに対して不公平であることは明らかだからです。この件に関して、そのような負荷の大きい使い方をされるオーナーの方々の意見を聞いて参りました。そして、当社が環境SIMのユーザーに対してできうる限り高いパフォーマンスを提供できるよう、改善していかなければならないということに対してはその通りだと思います。また、一体どういうことが「負荷の大きな使用」となるのか、それを避けるにはどのようにすればいいのかといったガイドラインも策定する予定です。

繰り返しになりますが、要点をまとめると、次の通りです。

1. 1月1日を以て環境SIMの価格と費用を改定します。適用除外はありません。
2. クラス4の環境SIMは1月中にクラス5となります。
3. 教育者のための環境SIMの割引はなくなりました。
4. 支払い人に対し全額を払っている住民以外へのオーナー権の委譲は認めない。
5. 環境SIMの不公平な使用を避けるためのサポートスタッフによる積極的な教育活動。

皆さんの中にはこの発表に関して質問や懸念をお持ちの方が多数いらっしゃると思います。以前そうしましたように、今回もこれらの変更について話し合うフォーラムを近く創設する予定です。ご連絡を希望される方はどうぞこちらにお進み下さい。また、本件に関し、個人的にお話をされたいという方は通常のサポートから連絡をお願いします。

2008年10月27日
ジャック・リンデン


2008年10月28日火曜日

スクリプトの話(12)〜開発の現場から

久しぶりに連載の再開です。
ここでちょっとリンデン・スクリプトそのものから離れて、
実際のソフトやシステムの開発現場での話をしたいと思います。

プロの開発現場では、当然それは商品として出されるものですから
お客さんに迷惑をかけるわけにはいきません。
そこで、徹底したテストを何度も繰り返します。
テストというのは普通は合格して喜ぶものですが、
プログラムの開発では、寧ろバグが出ることを喜びます。w
バグというのは大抵の場合、
プログラマーが気づかない所、想定外のところで起こりますが、
これに早く気づけば、あとでお客さんに迷惑をかけなくて済む
というものです。

従って、テストはあらゆる可能性を試します。
プログラマーがこんなのあり得ないだろう、と思って
敢えて手を抜いたようなところもちゃんとテストします。
なので、大抵の場合、テストを考える人、テストを実行する人と
プログラマーは別の人、というのが基本ですね。

実は、プログラムが途中で止まったり、異常終了したりするのは、
この「想定外」という部分で起こります。
それはつまり、途中で「if文」などで分岐したのだけれど、
if や else if のどの条件にも合ってなくて、
プログラムが行き先を失ってしまう、ということです。
それからもう一つは、ループの条件に
やはり予期していない値が来てしまい、
条件を満たせないで、いつまでも繰り返しの終わらない
いわゆる無限ループに入ってしまう場合ですね。

これらのバグ出しをするためのテストを行えれば
最初から順序よくプログラムを流すので
どこで停まってしまうかはわかりますが、
さすがに一人で作るリンデン・スクリプトで
そこまで大がかりなテストをしていたのでは
たまったものではありません。
そこで、スクリプトがうまく動かず、
どうも途中で停まってしまっているような場合
どのようにして原因を調べるか、
次回はその方法について書いていきたいと思います。
お楽しみに。

2008年10月27日月曜日

1周年記念チャリティコンサートありがとうございました!

2日間にわたって行いましたデビュー1周年記念ライブ
たくさんの方々に来て頂き、ありがとうございました。
なつかしい博多の頃の仲間にも来て頂いて
嬉しい限りのヒロシでありました。

081026b
081026c


コンサートの最後はお決まりのダンスミュージックとなりましたが、
何故かみんなハロウィン仕様=カボチャ頭になって踊ります。w
なかなか不思議な光景のエンディングとなりました。w

また、チャリティの募金もこの2日間でL$18,888集まりました!
敢えてお名前は控えさせて頂きますが、
ご協力頂いた皆さん、ありがとうございました。
この募金はリアルの団体NPO高麗に寄附させて戴き、
世界平和のための活動に役立てさせて戴きます。

さて、コンサート終了後、
pira Noel さんや akinori Paine さん、miyaomiyao Noel さんと
再建なったCosmic Tree Cafeでまったり。
何だか懐かしいようなほっとするようなひとときでした。

というわけで、ホントに素晴らしい水族館&カフェです。
是非是非遊びに来て下さいね。
これからもどうぞよろしくお願いします。

2008年10月26日日曜日

いやぁ、参った参った!w

デビュー1周年記念のチャリティコンサート1日目、
無事終了しましたぁ。。。

いや、本当に無事だったのか?w

実は今日は昼からトラブル続きで、
何と、ちょっと席を外している間に、
飲み干したはずのジュースの缶がわざわざPCのキーボードの上に倒れ、
わずかに残っていたらしい水滴がご丁寧にキーボードの中に。。。
あっ、と戻って来て気づいた時は既に遅く、
入力しているうちにどんどん字が出なくなり
あっという間に全てのキーが死んでしまいました。チーン。
慌てて渋谷までキーボードを買いに行ったのは言うまでもありません。;;

これに始まり。。。

ライブでは、自分は気持ちよく弾いていたのだが、
何とお客さんは聞こえないとのこと。
うん? 声は聞こえている。おかしい。。。
そう、声は聞こえている。。。
マイクを切っているはずなのに、ぶつぶつ言ってる声が聞こえてる。
何と!
ミキサーのUSBが抜けて、
自動的にボイチャ用のヘッドセットに入力が切り替わっていたのでした。
ということは。。。
あれ? とか、 おかしい、 とか独り言言ってたの
ネットで流れたのですねー。わー恥ずかしい!><

そんなこんなありましたが、
外国からまで来て頂いたお客さんには
皆さん喜んで頂いて、
大変いいコンサートになったのではないかと思います。
いらして頂いた皆さん、ありがとうございます。

そしてまた、明日も同じ21:00から、
今度は pira Noel さんの水族館に舞台を移して行います。
どんなコンサートになるのか、
まだ僕自身わかっていません。w
どうぞお楽しみに!

■Hiroshi Kumaki デビュー1周年記念チャリティーコンサート
 〜パート2「生命・永遠」
・日 時:2008年10月26日(日)21:00〜22:00
・会 場:Aquarium Cosmic Tree
     http://slurl.com/secondlife/Exhara/31/198/478
・入場料:無料
・主 催:Lifebound Records
・協 力:pira Noel(Aquarium Cosmic Tree)

2008年10月25日土曜日

【緊急告知!】2Days〜デビュー1周年チャリティコンサート

ヒロシです。

僕が pira Noel さんの軽井沢水中水族館で初めてのコンサートをやってから
はや1年が過ぎました。
というわけで、この1年間僕を支えて下さった皆さんに感謝して
明日10月25日(土)と26日(日)の2日間にわたって
チャリティコンサートを行います。
会場は25日が kenmi Lomu さんのSL StationがあるDubai Japan、
そして26日がメインランドExharaの上空450mに復活した、
そう、
ぴらさんのAquarium Cosmic Treeでのライブとなります!
詳しくは以下の通りです。
是非是非お誘い合わせの上、みんなで遊びに来て下さいね。w

■Hiroshi Kumaki デビュー1周年記念チャリティーコンサート
 〜パート1「愛・平和」
・日 時:2008年10月25日(土)21:00〜22:00
・会 場:Dubai Japan中央ステージ
     http://slurl.com/secondlife/Dubai%20Japan/38/242/21
・入場料:無料
・主 催:ヴォステラ社
・協 力:kenmi Lomu(Niseko SL Station)

081024d


■Hiroshi Kumaki デビュー1周年記念チャリティーコンサート
 〜パート2「生命・永遠」
・日 時:2008年10月26日(日)21:00〜22:00
・会 場:Aquarium Cosmic Tree
     http://slurl.com/secondlife/Exhara/31/198/478
・入場料:無料
・主 催:Lifebound Records
・協 力:pira Noel(Aquarium Cosmic Tree)

081024c


尚、このコンサートでご協力頂きました募金は全て、世界平和の為に活動をしているリアルの団体NPO高麗に寄附されます。

■NPO高麗の概要についてはこちら
http://www.idaki.co.jp/aboutus/aboutus.html

皆様のお越しをお待ちしております。
週末のひとときを癒しの音響空間でお過ごし下さい。

【緊急速報】pira Noel さんの水族館が復活!

pira Noel さんの水族館やカフェが閉店してから
はや1ヶ月が過ぎようとしています。
この間淋しい思いをされている方も結構いらっしゃるのでは?
僕も今お付き合い頂いている方々の殆どは
博多にあったぴらさんのカフェで知り合ったくらい。
本当にぴらさんのお店は人と人との出会いの場なのでした。

そこで何と何と!
そのぴらさんの水族館がメインランドのExharaの海の上空
450mのところに復活したのです!
Exharaはタイガーカフェや僕のLifebound Cafeがある
Fanghammerのお隣、海続きのSIMなのです。
この海のオーナーでもあるあきのりさんと
水族館コンサートから1年を迎える僕からお願いして
ようやく復活を実現することができました!
いやぁ、めでたいめでたい。

081024a


水族館は2階構成になっていて、
着地点は2階の入口になります。
ここは広いイベントスペースになっていますが、
何とその片隅に、あの、なつかしい、博多のカウンターが!
そして、例によって(?)すとんと1階に落ちると、
そこにはあの懐かしいイルカ君やクジラ君、
長〜いリュウグウノツカイなどが迎えてくれます。w

081024b


というわけで、
皆さん、是非是非遊びに来て下さいね。
ホントに癒される空間ですよー。
そして魚だけでなく、人とも会話したくなったら(?)
そのままタイガーカフェへ直行して下さいね。w
Fanghammerの海もますます賑やかになりそうです。w

■Sky Aquarium Cosmic Tree
http://slurl.com/secondlife/Exhara/31/198/478

P.S. この後の緊急速報第2弾もお楽しみに!

2008年10月24日金曜日

お待ち兼ねのバージョンアップ!

何と、日本に戻って来たら、
ビューワーの新しいバージョンがリリースされていましたね。
今回はまた久しぶりにてんこ盛りの変更内容。
中でも大注目なのが、いよいよMonoが使えるようになったという事!

これはね、随分前から待っていたのですよ。
で、先日のバーニングライフでのリンデン側が仕組んだスクリプトは
実はMonoで動いていたので、リリースそろそろかな、
と、期待していたのでした。

何がスゴイかって、
これまで作ったスクリプトも、Monoでコンパイルし直せば、
断然処理が早くなり、従ってSIMに対する負担も軽くなります。
それだけでなく、ファイルサイズ16Kbという制限もなくなり、
より複雑なスクリプトもサイズを気にせずに作ることができます。
そして何と何と!
今回のリリースではリコンパイルの話しか出ていませんが、
Monoに移行することによって、
C言語やJAVA、Visual Basic、PHPといった
おなじみの言語でスクリプト作成ができるようになります。
こうなってくると、もう、
自分の得意な言語で書いてコンパイルすればいいので、
LSLの様々な制限やクセに悩まされることもなくなりますね。

というわけで、まだバージョンアップされてない方
是非是非今回はバージョンアップして
これまで作ったスクリプトをMonoでリコンパイルして
遊んでみて下さい。
Monoに関する今後の動きから目が離せません!

遊んだ遊んだ。w

アルメニアから帰って来てからも
殆どインできていないヒロシです。
今日もRLの仕事終わるの遅かったー。><

にも拘わらず、、、
家に帰って来てから延々と楽器を弾いておりました。
前にも書きましたが、仮住まいから戻って来て、
スタジオの環境を整備し直したのはいいのですが、
何と今日まで実際に音を出せていなかったのです。
そこで今日は思う存分!

というのも、実は僕が水族館コンサートでデビューして
ちょうど1年ということで、
今週末10月25日(土)と26日(日)辺りで
コンサートが予定されているからでもあります。
アルメニアでの経験を元にした新曲は間に合いそうもありませんが、
逆にこれらのライブ会場にて、その場で演奏する可能性も出てきました。
今日はその練習というか実験も兼ねて
数台のシンセを切り替えながら延々と即興で弾いていたのです。

というわけで、今週末、楽しみにしていて下さい。
詳細決まりましたら(もう金曜なのにまだ決まってない!?)
またこの日記でお知らせしますね。

それでは、また!

2008年10月22日水曜日

ノアの方舟を見た!?

帰って来てからのいろいろな整理で
なかなかバタバタしているヒロシです。
旅行のみやげ話も少しずつ書いていきますね。

前の日記でノアの方舟が漂着したという
アララト山の写真を載せましたが、
そのノアの方舟の破片なるものが
このアルメニアにはあるのです。

081021a


アルメニアはローマに先立って
世界で初めてキリスト教を国教としたことで知られ、
アルメニア教会という独自の宗派を持ち、
その総本山がここアルメニアのエチミアジンというところにあります。
上の写真は世界遺産ともなっているその大聖堂。
その大聖堂の博物館にある宝物のひとつが次の写真。
普通の十字架の飾りのようですが、
その背景にある黒いものが化石化したノアの方舟の破片。
(と言われています。w)

081021b


因みにこの破片、左下が欠けていますが、
これはロシアのエカテリーナ2世がこの破片を欲しがって、
割ってロシアに持ち帰り、別な装飾品に作り替えたからだとか。w
因みに本物の方舟はエチオピアにあることになっていて、
そこでは年に一度、マリアのお祭の時に
そのレプリカを山車として担ぎ出して祝います。w
インディ・ジョーンズの映画のテーマにもなりましたが、
この方舟に対するキリスト教徒の方々の思いは格別なようですね。

それでは今日はこの辺で。

2008年10月20日月曜日

帰国しました!

というわけで、今成田エクスプレスで東京に向かっているヒロシです。
無事帰国しましたのでご心配なく。^^

この間もいろいろとコメント頂き、ありがとうございます。
お返事はまた改めて書き込みますね。
とりあえずお礼を兼ねて、おみやげの写真第1弾、
ノアの方舟が漂着したという山の写真です。



詳しくはまた。
ではでは〜。

2008年10月16日木曜日

行ってきます!

というわけで、前にお知らせした
アルメニアに向けて出発する日となりました。
何でもこの辺りは日本人にとって一番遠い
一番知られてないところらしいです。
そこで一体どんな風景や人に出会い
どんな経験をするのか、
そしてまた、そこでどんな音楽と出会い
どんな音楽が僕の中から生まれて来るのか、
大変楽しみな旅です。
しばらくSLをお留守にしますが、
帰って来たらいろんな写真やみやげ話など
みなさんと楽しめればと思っています。

それでは、
行ってきます!

2008年10月15日水曜日

スクリプトの話(11)〜最後はコメント!

さて、リンデン・スクリプトは基本的に自分しか見ないものだけれど、
時間が経てば自分も他人になってしまい、
何でこんなものを書いたかすらわからなくなることもある、
だからこそ、見やすくわかりやすいスクリプトを書こう、
そんな趣旨でここ何回か書いてきました。
しかし、字下げや名前の付け方だけではカバーできないところもあります。
そもそも何故そんな変数や関数を作ったのか、
後から見ると忘れてしまってることもあります。
そんなややこしいことをする時は、
コメントを入れておくといいですね。
この変数は何故必要なのか、
この関数はどういうはたらきをするのか
簡単に書いておくといいのです。

コメントというのは文字通り説明ですが、
コンピュータがプログラムの部分とは見なさい文のことです。
リンデン・スクリプトでは、スラッシュを2つ入れると、
その後、行の最後までに書いてあるものは無視されます。

関数の時はその関数のすぐ前に
こんな風に書いておくといいでしょう。

// 現在の自分の位置を取得する関数
getNowPos()

// ドアを開ける処理
openDoor()

こんな感じです。

変数の場合は、変数はズラズラとスクリプトの冒頭に並ぶこともあり、
いちいち上下にコメントが入ったのでは
何がなんだかわからなくなります。
そこで、その変数の後に書くことをお勧めします。

list colorList // ボタンに表示する色のリスト
string colorName // ボタンで選択した色の名前
vector colorValue // 選択した色のベクトル値

といった具合です。

コメント「//」の始まる縦の位置を揃えておくと
もっと見やすくなりますね。

僕はかなり長い「if文」や
「touch_start」と「Listen」と「dataserver」
それぞれの間が長い処理、
一旦外の関数に出てまた戻ってくる処理など
結構長丁場のスクリプトを書くことがあります。
そうすると、その長いスクリプトから
目的の場所を見つけるのに結構時間がかかったりします。
そんな時も、このオレンジ色で表示された日本語のコメントは
ぱっと目に入ってきて助かります。
是非是非自分のために
コメントをつけることをお勧めします。

     *   *   *

ここ数回は、コーディング・スタイルという、
殆どスクリプトの形を整えることを中心に書いてきました。
これらは別にスクリプトの動きに直接影響するわけではありません。
なので、面倒でもあり、手を抜きたい部分でもあります。
が、逆にこの形の部分を最初にしっかりとしておけば
間違いも減り、仮に間違えてもすぐ気づくので
より早くスクリプトを完成させることもできるのです。

そして!
実はここまで長々と書いてきたことは全て
うまく動かないスクリプトの原因を知るための前提なのです。
原因の調べ方については、いよいよ次回から書いていきます。
大変お待たせしましたが、是非楽しみにしていて下さい。

それでは、また。

スクリプトの話(10)〜変数、関数の名前

見やすいスクリプトを書く方法として、
前3回にわたって字下げや改行について書いてきました。
この他にわかりやすくする方法に
変数や関数の名前の付け方というのがあります。

変数や関数は自分で自由に作れるところですので、
自分さえわかっていればいいのですが、
前に書きましたように、しばらく経つと
その自分が他人になってしまうことがあるのも事実です。
そこで、やはり決め事をしておいた方がいいのですが、
ここまで来るともう、いろんな人がいろんな事を言ってますので、
実はこの項は書こうかどうしようかと
今まだ迷っている位なのです。
が、こうしたことも初心者の方にとって
何かの参考になるかもしれず、と思い、
やはり書かせて戴くことにします。
さらっと読んで頂いて、
自分に合った名前の付け方をされることを願っています。

まずは関数から行きましょう。
自分で作った関数の名前は
その関数のはたらき、処理内容がすぐわかるように
「動詞」+「目的語」という形で、単語をくっつけて
最初の単語は小文字、続く単語は始まりの文字を大文字、
というようにつけるといいと思います。
例えば、「今いる位置を取得する」という関数の場合、

getNowPosition

または Position を更に略して

getNowPos

といった具合です。
それから、ドアを開ける関数なら

openDoor

ノートカードからその内容(文字列)を読み込む関数なら

getStringFromNote
或いは、
loadStringFromNote

といった具合です。

因みに、この、最初だけ小文字で初めて
途中の頭文字を大文字にする書き方はキャメル型と呼ばれています。
キャメル(camel)とは英語で「ラクダ」のこと。
頭が小さくて背中がボコボコしてるのがラクダみたいだからとか。w

変数も同じような感じで名前をつければいいと思います。
もっとも、今度は動詞は不要ですね。
できれば、どういう型のものかもわかるようなものがいいですね。
例えば、前に出した例で、色に絡む変数を考える時、
これをキャメル型で書くとしたら、

色名を入れておくリスト型 colorList
色そのものの名前=文字列型 colorName
色を指定するベクトル型 colorValue
色の順番を表す整数型 colorNumber

といった感じですかね。
前に話しました、型を表す頭文字を使うとすると、それぞれ、

lstColorList
strColorName
vecColorValue
intColorNumber

といったところでしょうか。
因みに、この書き方にも呼び方があって、
こちらは「ハンガリアン」と呼ばれています。
何故ハンガリーなのか、興味ある方は調べてみて下さい。w

まぁ、最初に書きましたように、
ここは自由な部分ですのでこの程度で止めておきます。
何れにしても、自分すら他人になる可能性もあるので、
誰が見てもわかりやすい名前にしておく
というのが大事です。

それでは、今日はこの辺で。

2008年10月14日火曜日

セカフェス無事終了! ありがとうございます。

というわけで、3日間にわたって繰り広げられた
「2008年秋の音楽祭ーセカフェスー」は無事終了しました。

081013d


3日目はまず「魂のバラード」umanosuke Runo さんが登場。
しっとりと心にしみる大人の音楽を聴かせて下さいました。
続いてはがらりと雰囲気変わってテクノタッチのRMO登場。
昨晩出演されたZEROの masa Homewood さん、mellchan Criss さんに加えて
なんと kaito Paulse さんもギターで出演。
いやー、この人が演奏しないなんて話はないよなぁ
なんて思ってただけに嬉しい驚きでした。w
そして最後は、naturalway Flow さんの花火で美しく、、、
なのですが、最後の最後は会場中が火の海に!w
文字通り、熱い、華々しいお祭のエンディングとなりました。

081013e
081013f


いやホントに今回のお祭は
いろんなタイプのミュージシャンが登場しておもしろかったですねー。
大変刺激されるところもあり、
考えさせられることもありの3日間でした。
何れにしても、セカンドライフというのは
音楽を通じて人と人とが出会い、心を通わせる
真にライブな場だなぁ、と改めて思いました。
だって、アーチストと観客がそれぞれどこにいようが
この場に集まって一つになれるんですからね。
ある意味RLのライブ以上かもしれません。
SIMの50人という制限も
逆に、アーチストと観客がより親密に
通じ合える環境なのではないかと。。。
お互いがよく見えますからね。w

まぁ、そんなこんなのセカフェスでしたが、
たくさんの人に来て頂いて
SLライブの魅力をお伝えできたんではないかなと思います。
いらして下さったみなさん、本当にありがとう。
そして主催の jabara Jannings さん、演出のかいとさんはじめ
スタッフの皆さん、そしてミュージシャンの皆さん
お疲れ様でした。
またどこかでご一緒できたら嬉しいですね。

それでは、また!
ありがとうございました。

セカフェス3日目、間もなく!

というわけで、土曜日から始まったセカフェスも
いよいよ最終日を迎えました。
この後21:00から
馬之助さん、RMOさん、れーこさんの出演です。
そしてそして!
あのナチュさんもフィナーレに参戦!
見逃せない3時間です。
どうぞよろしくお願いします。

■「2008年秋の音楽祭ーセカフェスー」メインステージ
http://slurl.com/secondlife/Jabara%20Land%20Atlantis/41/222/106/

2008年10月13日月曜日

スクリプトの話(9)〜長い時は改行しよう

081013b


上の写真は前に書いた、自分の土地に置いておいて
タッチすると自分のものでないプリムの数を教えてくれるスクリプト。
その実際のエディターの画面です。
せっかく見やすいように字下げをしてみたものの、
5行目の関数のところが長くて次の行にまではみだしてしまい、
またまた見にくくなってしまってます。
これではエラーが出た時の行数も数えにくい。。。

こんな時は思い切って、関数の途中でも改行してしまいましょう。
ええー、そんなことしていいの? と思われる方もあるでしょうが、
思い出して下さい。
コンピュータは「;」が出てきて初めて命令の文の最後と判断します。
それで「;」を付け忘れるとシンタックスエラーだよ、
と怒られたのですが、
これを逆手に取れば、
「;」が出てくるまでは途中に改行があろうが何があろうが、
コンピュータは途中で切れてるなんて思わないわけです。

そこで、適当な単語やコンマの位置などで改行してしまいます。
勿論、キーワードや単語の途中で切ってはダメです。
ここでは「myPos,」のところで切ってみましょう。
更に、処理の頭と間違えないように、ここでも字下げしましょう。

default {
  touch_start(integer total_number) {
    integer numPrims;     // 自分のものではないプリム数
    vector myPos = llGetPos(); // オブジェクトのある場所
    numPrims = llGetParcelPrimCount(myPos,
      PARCEL_COUNT_OTHER,FALSE);
    llSay(0, (string)numPrims + " are not mine!");
  }
}

さっきより見やすくなりました。
これを保存した結果が次の写真です。
無事コンパイルされて保存されました。

081013c


というわけで、長くなったらどんどん改行しちゃいましょう。
その方が見やすくなって
自分自身わかりやすくなりますから。

それでは、今回はこの辺で。

スクリプトの話(8)〜「if」の場合

前回は字下げがスクリプトを見やすくするということを書きました。
ここでやっかいなのが「if」の処理の場合です。
何故かというと、「if」の場合はその後単純に「}」で終わることよりも、
「else if...else if...」つまりそうでない場合、というのが
いくつも続く場合があるからです。
だからこそ使い勝手のいい道具であるわけですが。。。

例えば、タッチすると色が変わるスクリプトを作っていて、
ダイアログで色名を選んだ後の処理をしているところを想定して、
前回の【例1】に忠実に書いていってみましょう。

【例1】
if (message == "yellow")
{
  llSetColor(<1.0, 1.0, 0.0>, ALL_SIDES);
}
else if (message == "red")
{
  llSetColor(<1.0, 0.0, 0.0>, ALL_SIDES);
}
else if (message == "blue")
{
  llSetColor(<0.0, 0.0, 1.0>, ALL_SIDES);
}

う〜ん、何とも間延びしたのと、
結局このif文、どこまで続いているのか
わかりにくくなってますね。
分岐もいくつあるのか。。。

そこで、ここでは【例2】の方法をとりながら、
その変形でいくのをお勧めします。
つまり、

if (message == "yellow") {
  llSetColor(<1.0, 1.0, 0.0>, ALL_SIDES);
} else if (message == "red") {
  llSetColor(<1.0, 0.0, 0.0>, ALL_SIDES);
} else if (message == "blue") {
  llSetColor(<0.0, 0.0, 1.0>, ALL_SIDES);
}

何と、「else if(elseの場合も同じ)」のキーワードを
前の条件の終わりの「}」の後に書くのです。
こうすると大元の「if」と条件の終わりの「}」が並び、
しかも、「}」の数をぱっと見ただけで
条件がいくつに分岐してるかわかるというものです。

私個人は一番間違えやすいのはこの「if」の分岐のところです。
複雑なものになってくるとすぐにたくさん分岐してしまい、
その途中で何かを書き漏らすということはしばしばです。
それを防ぐためにも上の書き方は有効です。
なので、個人的には結果として、【例2】の方法を
お勧めしたいところです。

さて、これに関連してもう一つ。
「do〜while文」の書き方についても説明しておきます。

繰り返しの処理をするのに「while文」というのと
「do〜while文」というのがあります。
似てますが、使い方も処理の結果も全然違うので
注意が必要です。

「while文」は簡単で、

while (繰り返し条件){
  繰り返す内容
}

という形で、繰り返し条件に当てはまれば
「{」〜「}」の処理を繰り返すことになります。
言い換えると、条件に当てはまらなければ
「while文」の処理は一度も実行されません。

対する「do〜while文」は、

do {
  繰り返す内容
} while (繰り返し条件)

という形をしていて、必ず一回処理をして、
処理が終わったら繰り返し条件を確認して、
当てはまったら繰り返し、
当てはまらなかったらこの文を抜けて次の処理へと進みます。

ここでも、【例1】の方法で、

do
{
  繰り返す内容
}
while (繰り返し条件)

と書いてもいいのですが、
そうすると「do」の終わりの「}」が「while」の前にあって、
あたかも「while」は別物、「while文」のはじまりのように
見えてしまします。

今見たように「while文」と「do〜while」文は
処理の内容が全然違うので、
この違いを際だたせるためにも、「do〜while文」の場合は
先に示したように、

do {
  繰り返す内容
} while (繰り返し条件)

とするのがよいのです。
これで「while」は「do」で始まる処理の
終わりの部分なんだよ、というのがはっきりしました。
「else if」の場合と似てますね。

それでは長くなりましたので、今回はこの辺で。

スクリプトの話(7)〜間違いを減らすために……

さて、これまでスクリプトについて6回にわたって書いてきましたが、
殆どはそんなのは知ってる、という内容だったと思います。
実は本題は今回から。
ひとつには、どうやったら間違いを減らせるのか、
もう一つはどうみても間違ってなさそうなのに何故動かないか
その原因追求、トラブルシューティングの方法について
考えていってみたいと思います。

今回はまずその前半。
どうやったら間違いを減らせるか、です。
それはズバリ、スクリプトを見やすく書く、です。
では見やすいスクリプトとはどういうものでしょう。

実際のプログラムやアプリケーションの開発現場では、
一人でプログラムを全部書くということはありません。
大抵は部分部分分担してプログラムを作っていくことになります。
それから、実はよくあることですが、
あるプログラムを担当していた人が
急に別なプロジェクトに引き抜かれて
逆に別なプロジェクトにいた人がその人を引き継ぐ
なんてこともあります。
そうなると、一人一人が好きにプログラムを書いていたのでは
何が何だかわからなくなり、収集がつかなくなります。
少なくともプロジェクト内部の人間が見れば
誰でもすぐにわかるプログラムを書いておく必要があります。
そこで、大抵の場合、コーディング規約というものが作られます。
こういう時はこう書くんだよ、というルールですね。

この規約は、勿論、プロジェクトの数だけあると言っていいのですが、
大まかなところは大体世界的に共通していて、
リンデンが推奨しているスクリプトの書き方もほぼそれに準じてます。
スクリプトの場合は自分一人で書くわけですから、
自分の好きなように書いていいように思えますが、
実際は、何日もかけて書いているスクリプトだと
過去の自分も他人みたいなものです。
僕も動かなくてほったらかしにしてたスクリプトを
何ヶ月か後で見た時に
我ながらややこしいスクリプトだなぁ、と難儀した覚えがあります。w
こんなわけで、リンデンの推奨を参考に
自分なりの規約、スタイルを作っておくといいでしょうね。

このコーディング・スタイルということでは
これだけで本が1冊できるくらいのものですので、
ここでは簡単に要領だけ述べていきたいと思います。
その第一は、インデント、行の始まりを下げていく書き方です。

間違いで一番多いのが文法の誤りシンタックス・エラー
その中でも多いのがかっこが対になってないもの、
と前に書きましたが、これを防ぐ目的と。
それからその処理がどこからどこまで続いているか
一目でわかりやすくするために、
処理のまとまりを示す「[」「}」の単位で
行の始まりをどんどん右にずらしていく書き方です。
いつもの例で見ていきましょう。

【例1】
default
{
  state_entry()
  {
    llSay(0, "Hello, Avatar!");
  }

  touch_start(integer total_number)
  {
    llSay(0, "Touched.");
  }
}

【例2】
default {
  state_entry() {
    llSay(0, "Hello, Avatar!");
  }

  touch_start(integer total_number) {
    llSay(0, "Touched.");
  }
}

おわかりになりますか?
【例1】は、「[」を独立した行に書く書き方で、
これだと同じ階層に「[」と「}」がいるので、
対応関係は見やすいですね。
但し、難点もあって、
やたら縦に長く間延びすること。
スクリプトエディタの画面は小さいので
あまり長いと追うのが大変になってきます。

【例2】は、「[」をそのまとまりを示すキーワードの後に書くもので、
これだと随分とすっきりまとまって見えます。
慣れないうちはわかりにくいと思うかもしれませんが、
考えてみれば、終わりの「}」を忘れることはあっても、
始まりの「{」を忘れることはなく、
寧ろキーワードと終わりの「}」が対になっていることがはっきりして、
そのキーワードの処理がどこで終わってるか、
わかりやすいとも言えます。

どのくらい字を下げるか、ですが、
C言語のスタイルブックなどを見てみると
4文字下げがいいという人、
いや、2文字下げがいいという人様々ですが、
ここでは素直にタブキーを使って送ることにしましょう。
スクリプトエディターではタブを使うと
自動的に4文字下げるようです。

というわけで、まだやっていなければ、
【例1】でも【例2】でも
自分に合っている、わかりやすいと思う方法で
うまく字下げをして書いてみて下さい。
きっと見やすくなるはずですよ。

長くなりましたので、今日はこの辺で。
それでは、また!

3連休!

いやぁ、今更ですけど、この3連休、
久しぶりにゆっくりとさせて頂いて助かってます。
普段は日曜日にネット音楽雑誌の発行なんかやってるもんだから
あっという間に日曜の夜中になってしまい、
休むどころではないのです。
やっぱり1日多いというのはいい。w

で、9月末に仮住まいから戻って来ての
部屋の整理や不要なものをゴミにして処分したりと
ようやく片付けを始められるようになりました。
それと、やっぱりミュージシャンとして大事なのが
楽器のセッティング。。。

この1年の仮住まいではさすがに
5台のシンセサイザー群と3台のパソコンを持ち込むわけにもいかず、
小型の楽器を買い足して、
何とかPC1台でライブやれるような環境を作ってましたから
今度はそれと従来からある大きなシステムとの合体作業です。
本当はセカフェス前にはやりたかったのですが、
なかなか十分な時間が取れず
環境の変更でうまくいかなくなるのを嫌って
今まで来てしまいました。
これからはもっとパワーアップしたステージを
お見せできればと思ってます。

081013a

それから。。。
実は今度の木曜日、10月16日から20日まで
日本を離れ、アルメニアという国に行って参ります。
ご存知の方はあまりいらっしゃらないかもしれないので、
地図をつけておきますが、
西がトルコ、南にイラン、東にアゼルバイジャン、
そして北がグルジアで更にその北がロシアという位置関係です。
そうそう、吹奏楽をやっていらした方には
アルフレッド・リードの曲でおなじみかもしれませんね。
ノアの箱船が流れ着いた
アララト山のある美しい所と聞いています。
次回のライブは10月25日(土)ですが、
このアルメニア行きで何か新しいものが生まれればと思ってます。

で、その準備もしているこの連休。
また今晩もセカフェスがあるし、
久しぶりにRLでのんびりしてるヒロシであります。w

セカフェス2日目終了!

081012d


いやー、見てきましたよ、
セカフェス2日目。
21時からはRiZさん、GA-GOさん、ZEROさんのステージ。
何れもすごい盛り上がりでしたが、
特にGA-GOさんのステージはライブ感がよかったですね。
使ってるアニメーションの数もハンパではないですね、あれは。
よく動く動く。w


081012e


あと、ZEROさんのステージは
音楽もさることながら、
メンバーの会話がおかしかった。w
僕は普段一人でやってるのでね、
いいですね、ああいう感じでお互いつっこみながら
ステージ進めていくのも。
何れはバンドもやってみたいものですが、
お互いの時間がどうにもねぇ。^^;

081012f


というわけで2日目も大変な盛り上がりのうちに終了。
いやぁ、これだけまとめて人の音楽聴くのは久しぶりでした。w
十分堪能させて頂きました。
ありがとございます。

そしていよいよ明日は最終日!
魂のバラード、馬之助さんや
RMOさん、れーこさんの登場。
これまた楽しみです。
ではまた明日!

セカフェス2日目!

昨晩は無事セカフェスでのライブを終えることができました。
いらして頂いた皆様、ありがとうございます。
この場をお借りしてお礼申し上げます。
続いての naturalway Flow さんの
ミュージック・スターマインも素晴らしかったですねー。
ナチュさんは最終日のフィナーレにも出演されるとのこと。
これまた必見です。

さて、2日目の今日は18:00に
横浜マーチングバンドのパレードで始まりました。
ちょうど今日RLでは横浜ジャズプロムナードというのをやっていて
知人の関根敏行さん(アバター名 Mugigi Toshi さん)も
出演していることもあって
何とも不思議な偶然を感じないではいられないのでした。
SLのバンドにはタイガーカフェのNada Drykeさんや
taiji Lorefieldさん、Ami Nicholls さんといったこれまた知人が参加してます。w

081012a


パレードは Jabara Land の通りを出発し、
そのうちSIM境を越えて海上へ!
海上をパレードできるのもSLならではですね。w
その海上ではパレードに連動してナチュさんの花火が!
実に素晴らしい演出でした。

その後舞台を空中にあるアトランティスホールに移しての演奏会、
「威風堂々」や「軍艦マーチ」など
吹奏楽の名曲を素晴らしい演奏で聴くことができました。
途中時々音が途切れたのは残念!
でもホント難しいいんですよ、SLで音楽やるの。

081012b
081012c


というわけで、いよいよこの後21:00から
メインステージでのライブが始まります。
今晩の出演はRiZさん、GA-GOさん、ZEROさんの3組。
是非お見逃しなく!

■「2008年秋の音楽祭ーセカフェスー」メイン会場
http://slurl.com/secondlife/Jabara%20Land%20Atlantis/41/222/106/

2008年10月11日土曜日

今晩22:00! セカフェスに出演!

さて、かねてより告知されておりました
「2008年秋の音楽祭—セカフェス—」が
今晩22:00より3日間の日程でスタートします。

081011d


そして、何と何と、
この僕がそのトップ・バッターとして出演することになりました!
いやぁ、そんな大役が果たせるのかどうか
そもそもこんな所に出ていいのか、未だに疑問ではありますが、
泣いても笑っても10月11日(土)当日になってしまいましたぁ。^^;
皆さんにお祭を楽しんで頂けるよう
一所懸命頑張りますので、
是非是非いらして下さいね。

●Hiroshi Kumaki @ Second Life Autum Music Festival
日時:10月11日(土)22:00〜23:00
会場:Jabara Land Atlantis(メイン会場)
http://slurl.com/secondlife/Jabara%20Land%20Atlantis/41/222/106/

また、このすぐ後、会場を変えて、
naturalway Flow さんのミュージック・スターマインが行われます。
こちらは海に浮かぶ豪華客船の上から花火を見るという
なかなかロマンティックなものであります。
こちらも是非お見逃しなく!

●Natulax Music StarMine
日時:10月11日(土)23:00〜24:00
会場:Jabara Land Atlantis(豪華客船「ゆみ丸-GT」)
http://slurl.com/secondlife/Jabara%20Land%20Atlantis/159/130/24

それからそれから!
明日の12日には Yokohama Marching Band のパレード
及び演奏会があります。
これも必見です!
SL内でマーチング・バンドのパレードなんて、ねぇ!

●Yokohama Marching Band パレード
日時:10月12日(日)18:00〜18:30
会場:Jabara Land Atlantis(次のSLURL地点からスタート)
http://slurl.com/secondlife/Jabara%20Land/130/226/28/

●Yokohama Marching Band 演奏会
日時:10月12日(日)18:30〜19:00
会場:Jabara Land Atlantis(アトランティスホール)
http://slurl.com/secondlife/Jabara%20Land%20Atlantis/122/112/81/

この他にも、勿論、有名なミュージシャンの方々が続々出演されます。
詳しくはこちらのサイトをチェックして下さいね!

■「2008年秋の音楽祭—セカフェス—」公式サイト
http://secofes.slmame.com/

スクリプトの話(6)〜実はよくある入力ミス!

さて、前の2回で、文法的な間違いのシンタックス・エラーと
型の違いからおこるタイプ・ミスマッチについて触れました。
これらはいかにもプログラム的な、決まり事の世界で、
初心者には難しい感じのする部分ですが、
実は意外によくあるのがもっと単純な入力ミス、
スペルミスによる間違いです。

リンデン・スクリプトはC言語の仕様によく似ているのですが、
C言語同様、アルファベットの大文字と小文字を区別します。
つまり、大文字と小文字を間違えただけでもう動きません。
llSay() は誰でもよく知っている有名な関数ですが、これを

llsay()

と書いただけで、もう別物とみなしてしまい、恐らくは、

「Name not defined within scope」
(決められた範囲内でこの名前は定義されていません)

と言われてしまうことでしょう。
逆に言うと、ちゃんと定義しているはずなのにこれが出てくるのは
スペルミスの可能性が高いということになります。

前にも書きましたが、スクリプトのエディタはよくできていて、

ステートとリンデンで用意されている関数は赤い文字、
イベントは水色の文字、
型を表すキーワードと文字列は緑色の文字
リンデンで用意されている定数は紫色の文字
コメントはオレンジの文字

に色が変わります。
llsay と書いて色が赤くならなかったら、スペルミスということです。
llsay を llSay に変えた途端に赤くなるでしょう?
この色を頼りに入力ミスによるエラーを減らせます。

ただ、自分で定義した変数や関数は色が黑のままです。
なので、この場合は、定義したところから
コピー&ペーストして使うことをお勧めします。
以前、Lifebound Records にある最新ブログ情報ボードを作った時に、
どうも期待通りに動かないのでよくよく調べてみると、
親スクリプトで「getRss」というメッセージを送っていて、
子スクリプトでは「getrss」を待っていた、ということがありました。
いつまで待っても小文字の「getrss」が送られてこないので、
スクリプトも実行されないのでした。
コピーしていれば防げたミスでした。

この関連で触れておきたいのが、
変数名を変更しなければならなくなった場合です。
複雑なスクリプトを書いているうちに
どうしても似たような変数が必要になってきた、
そこで、最初に定義した変数の名前も変更することにした、
というような場合ですね。
この時、普通に定義からコピー&ペーストしたのでは
今度はペースト漏れが生じて、
またまたそこでエラーが発生する可能性が出てきます。
こんな時は「置換」の機能を使います。

081011a


スクリプト・エディターの「Edit」メニューを開くと
一番下に「検索/置換」というのがあります。
これを選んで開く画面の
「検索」の入力ボックスに変更前の変数名をコピー&ペースト、
「置換」の入力ボックスに新しい変数名を入力します。
そして「検索」というボタンをクリックすると
「検索」のボックスに入れたのと同じ文字を探して強調してくれます。
変更してよければ「置換」ボタンをクリック、
すると「置換」のボックスに入れた変数名に変更して、
次に変更前の文字がある場所に飛んで行ってくれます。

081011b
081011c


「すべて置換」というボタンもありますが、
もしかして変えてはいけないところもあるかもしれないので、
「置換」ボタンで1つずつ確認しながら変更するのをお勧めします。
もし変えたくない文字のところに来たら、
「検索」をクリックすると、置換せずに次の場所を探します。
こうして画面から強調される文字がなくなったら
変数名の変更は全て終わったことになります。

今回は意外とよくある入力ミス、スペルミスを減らすための
コピー&ペーストと
検索/置換の機能について書いてみました。
もしまだやったことがなければ
是非試してみて下さいね。
それでは、今回はこの辺で。

スクリプトの話(5)〜次によくある間違い

前回は一番多く見るエラーとして、

「ERROR : Syntax error」

を取り上げましたが、
今回は次によく見るものとして

「ERROR : Type mismatch」

を見ていきましょう。

まず例です。
次のスクリプトは、自分の土地に置いて、
タッチすると自分のもの以外のプリムがあるか、
その数はいくつかを教えてくれるものを作ろうとしています。

default
{
  touch_start(integer total_number)
  {
    integer numPrims;     // 自分のものではないプリム数
    vector myPos = llGetPos(); // オブジェクトのある場所
    numPrims = llGetParcelPrimCount(myPos,PARCEL_COUNT_OTHER,FALSE);
    llSay(0, numPrims + " prims are not mine!");
  }
}

これを実行しようとすると、

「(7, 43) : ERROR : Type mismatch」

と言われてしまいました。
8行目の「llSay...」のところに何か問題がある。。。
そうです。
「Type mismatch」とは、一緒に処理しようとしている
変数の「型」が合っていないことを言います。
ここでは「integer」=整数である「numPrims」と文字列を
足そうとしたので怒られてしまったわけです。
今回のようにどうしても異なる型を足したい時は、
型を変換する必要があります。
今回の場合は、llSay が要求しているのが文字列ですから
整数の numPrims を文字列に変換する必要があるのです。
こんな時は変換先の型名をかっこでくくって
その変数の前につけてあげるといいですね。
上記の例の場合、

llSay(0, (string)numPrims + " prims are not mine!");

としてあげればスクリプトは無事コンパイルできて実行できます。

上の例の場合は簡単なので、まず間違えることはありませんが、
複雑なスクリプトになってくると
同じような名前の変数名が増えてきます。
例えば、オブジェクトの色を変えるスクリプトを作る時に、
選択できる色の種類を入れておくリスト型の colorlist、
リストから取得した色名を処理する文字列の colorname、
実際に色を設定する時に使うベクトル型の colorといった
3つの変数を用意する場合などです。
長いスクリプトを書いているうちに、
あれ? 色の名前は color だっけ、colorname だっけ?
なんて自分でもわからなくなることはよくあることです。w
そんな時に、この型間違い、
「ERROR : Type mismatch」
に出会しますね。

自分で定義した変数で間違っちゃうというのは
何ともトホホな話ですが、
それでも発生する以上は回避しなければなりません。
そんな時お勧めなのが、変数の前に型を表す文字をつけておくことです。
さっきの色の例で言うと、

リスト型のものは lstColor
文字列型のものは strColorName
ベクトル型のものは vecColor
もし整数型のものもあったら intColorNum

なんていう風にしておくと、例えば

llSay(0, "Now color is " + vecColor);

なんて書いた瞬間に、あれ、これは型が違う、と気づきやすくなります。
この方法は最近のプログラミングの世界では
あまり流行らなくなってきてるようですが、
初心者のうちは型を強く意識する上で有効だと思いますので
是非試してみて下さい。

それでは、長くなりましたので、
今回はこの辺で。

スクリプトの話(4)〜一番多い間違い

さて、いよいよ今回からエラーの原因を調べて
スクリプトを動かしていくためのコツについて
書いていきたいと思います。

まず、最初に、スクリプトを書いていて
一番多く出会うエラーは何と言ってもこれでしょう。

ERROR : Syntax error

「syntax(シンタックス)」というのはもともと言語学の言葉で
「統語論」と訳されていますが、
意味の通じる文になるための単語の順番などの決まり……
要するに「文法」ということですね。
シンタックス・エラーというのはコンピュータが、
「これって何か抜けてない? 文になってないよ?
意味わかんないよ〜」
と言っているようなものです。

例えばいつものサンプルスクリプトをいじってみました。

default
{
  state_entry()
  {
    llSay(0, "Hello, Avatar!")
  }

  touch_start(integer total_number)
  {
    llSay(0, "Touched.")
  }
}

これを保存しようとすると、
「(5,4) : ERROR : Syntax error」
と出ました。
最初のかっこの中は行数と文字位置を示しています。
但し0から数えますので、
この例では6行目の5文字目、、、
とすると「}」になります。
何故この「}」がおかしいのでしょう?
本当は、この「}」はおかしくはないのです。
が、コンピュータは、この場所にもっと別のものが来るのを
期待していたわけです。
となるとその前がアヤシイ。。。。
そうです。
llSay(0, "Hello, Avatar!")の後に、
文の終わりを表す「;」が抜けていました。
コンピュータへの命令を表す文の終わりには必ず「;」をつけます。
先ほどの例では「;」がなく、文が終わっていないのに
「}」が出てきたので、コンピュータは、
「まだ文が終わってないのにおかしくない?」と言ったわけです。

大体こんな感じで行番号と文字位置を参考にしながら
エラーの原因を探していきますが、
一番多いのは次のような理由による
「シンタックス・エラー」でしょう。

(1) 文の終わりに「;」が抜けている。
(2) 関数の中で使われているかっこの「(」と「)」の数が合っていない。
(3) 処理のまとまりを表す「{」と「}」の数が合っていない。
(4) 文字列の始まりを表す「"」が終わりの「"」で閉じられてない。

もっとも、最後のものはすぐに気づきます。
何故なら、リンデン・スクリプトのエディターはよくできていて、
ステートと関数は赤い字で、
イベントは水色の文字で表されますが、
文字列がちゃんと「"」で閉じられていないと
最初の「"」以下全ての字が文字列を表す緑色になるからです。
一瞬にして色が変わるので、
すぐに気づきますよ。w

というわけで、「ERROR : Syntax error」と出たら、
まずは上の4つを疑ってみて下さい。
わかってはいても、案外やるもんなんですよね。w

それでは、長くなりましたので
今夏はこの辺で。

2008年10月10日金曜日

スクリプトの話(3)〜イベントについて

「イベントについて」というタイトルを書いてすぐに、
僕が書くと音楽イベントか何かの記事のようだと
自分で笑ってしましましたが、
ここはリンデン・スクリプトで言う「イベント」、
つまりコンピュータへの命令が実行される「きっかけ」の話です。

前回のおさらいをしておくと、スクリプトには

① 登場人物としての変数と関数の定義
② 場面としてのステート、特に第一幕としてのdefaultステート
③ その場面におけるセリフや動作である命令
④ 命令が実行されるためのきっかけであるイベント

が書かれてなければなりません。
これがスクリプトが動くための最低条件というわけです。

が、実際にスクリプトが動くためには
何度も繰り返しているようにきっかけ=イベントが必要です。
イベントによって動くプログラムのことを
専門用語で「イベント・ドリブン」と呼んでいます。
「event-driven」という英語から来ていますが、
「driven」は「drive」=「ぐいぐい前に動かす」の変化形ですから、
「イベントがぐいぐい動かすプログラム」というわけですね。
リンデン・スクリプトは正にそういう
イベント・ドリブン型のプログラムというわけです。

それでは、プログラムが動くためにはどんなイベントがあるか、
ちょっと見ておきましょう。

On_rez(オブジェクトが出現した時)
touch_start(オブジェクトがクリックされた時)
Changed(オブジェクトに変化があった時)
Attach(オブジェクトが装着された時)
Money(オブジェクトに対して支払いがされた時)
Listen(llListenから発言内容を聴くよう命令された時)
Sensor(llSensorやllSensorRepeatから検知するよう命令された時)
timer(llSetTimerEventで指定された時間でイベント内の命令を繰り返す)
Link_message(親プリムのllMessageLinkedからメッセージを受け取った時)

まだまだ他にもありますが、何れもオブジェクトに対して
何らかの変化が加えられた時、というのがわかるでしょう。
でも待てよ、そうすると、
別に何もきっかけがなくても、変化がなくても実行したい場合は?
そんな命令は実行できないのでしょうか?

その為に用意されているのがおなじみ「state_entry」のイベントです。
「state_entry」とは「そのステートに入った時」という意味。
何にもないところから始まる「第一幕」が
「default」=「何にもない」というステートでしたが、
幕が開いてすぐ、まだ何にもきっかけがない状態こそ、
「幕が開いたよ!」に当たるこの「state_entry」なわけです。

新しいスクリプトを作ると必ずサンプルスクリプトが書いてあって、

default
{
 state_entry()
 {
  llSay(0, "Hello, Avatar!");
 }
...(中略)...
}

となってますね。
defaultステートの、state_entryというところに書いてあるので、
何にも変化が起きなくても、
このスクリプトが作られたらすぐに
「Hello, Avatar!」と喋るのですね。
どういうイベントにしたらいいかわからない時は
まずはこの state_entry を使ってみるといいと思います。

     *   *   *

今回までスクリプト全体についてのやや抽象的な話をしてきましたが、
いよいよ次回は「一番多い間違い」について
より具体的に書いていきたいと思います。
どうぞよろしくお願いします。

スクリプトの話(2)〜スクリプトの条件

さて、前回は「スクリプトは台本だ」と言い切ってしまいました。
そこで、今回はドラマや演劇の台本をイメージしながら
スクリプトについて考えていくことにしましょう。

ドラマや演劇の台本で、
一番最初に何が書いてあるかご存知ですか?
そうです。
登場人物のリストです。
このドラマにどんな人たちが出てくるのか、
一番最初にまとめて書いてあります。
リンデン・スクリプトも同じで、
そのスクリプトで使う変数や関数を
基本的には最初にまとめて書いておきます。
これを変数や関数を定義すると言います。
スクリプトではここに書いていない変数や関数を
物語の途中で突然登場させたりすると、
怒られちゃいます。w
大抵こういう時は次の英語が表示されます。

・Name not defined within scope.
「決められた範囲の中でこの名前は定義されていません。」

さて、登場人物を書き並べたところで
いよいよドラマが始まります。
ドラマは短いものだと1場面で終わりますが、
長いものはいくつにも場面が分かれますね。
この場面に当たるのが「ステート」と呼ばれるものです。
英語の「state」は「状態」という意味ですが、
詳しい説明はあとでしますので、
ここは、ドラマの場面に当たるのが「ステート」だ、
くらいに捉えておいて下さい。

どんなドラマにも始まりの1場面があります。
それに当たるステートが「default」と呼ばれるステートです。
この「default」はどんなスクリプトにも必ず必要で、
しかも一番最初になければならないステートです。
この言葉は既に「デフォルト」という日本語にもなっていますが、
もともとは「何にもない」という意味で、
物語(スクリプト)が始まったばかり、
まだ何にもない状態、
幕が開いてすぐの状態を表しているわけです。

さて、台本では、この最初の場面の中に
主人公たちが喋るセリフや動きを書いていくわけで、
このセリフや動きに当たるのがスクリプトの様々な命令ですが、
役者が勝手に喋ったり動いたりしていいわけはありませんね。
もしそんなことになったら、セリフや動きが
ちぐはぐになってしまいます。
そこで、台本ではセリフや動きのきっかけが記してあります。
このきっかけのことをスクリプトでは「イベント」と言っています。
スクリプトのどんな命令も
必ず何かのイベントの中に書かなければ、
簡単に言うと、必ずきっかけがないと実行されないということを
覚えておいて下さい。

     *   *   *

何だか長々と一気に書いたので、
わけがわからなくなったかもしれませんので
最後にスクリプトという台本の流れをまとめておきますね。

変数の定義(登場人物紹介)
関数の定義(登場人物紹介)

default ステート(第1幕)
   イベント発生(きっかけ)
      コンピュータへの命令(セリフ、動作)

その他のステート(第2幕、第3幕。。。)
   イベント発生(きっかけ)
      コンピュータへの命令(セリフ、動作)

もしうまくコンパイルできなかったりする場合は、
この流れになっているか、確認してみて下さいね。
それでは、今日はこの辺で!

スクリプトの話(1)〜そもそもスクリプトって?

さて、この日記でもその都度触れてきましたが、
バーニング・ライフの僕のキャンプでは
いろんなところでスクリプトが使われていました。
限られた時間の中で結構複雑なものを書いたりしていましたので、
当然あちこちにミスがあり、思い通りに動かないこともありました。w
自分で自分のミスを発見しながら、
ああ、そうそう、こういうところ間違いやすいんだよね〜、
なんて思いながら、
いつかその間違いやすいポイントというか
間違いを減らすコツというか、
そういうものをスクリプトに取り組んでみようと思う方々に向けて
書いてみようと思っておりました。

あることを実現するのに
サンプルとなるスクリプトはたくさん公開されていますが、
いざ自分のものに取り込もうとするとうまく行かなかったり、
コンパイルはちゃんと成功して保存もできるのに
実際には動かなくてどこがおかしいのかわからない、
或いは、エラーが表示されてるけど
どこがおかしいのかわからない、
といったことが間々あると思います。
ここではそうならないためのスクリプトの書き方や
困った時の解決の仕方について綴っていきたいと思います。
不定期更新になるでしょうが、
のんびりお付き合い下さい。w

     *   *   *

で、1回目の今日は、
そもそもスクリプトって何? というところから考えてみましょう。
英語の「script」は、もともとラテン語で
「書かれたもの」という意味です。
書かれたものなら何でもスクリプトです。
もともとは手書きの文字のことを表していました。
そしてその文字で書かれた碑文などを意味していました。
が、英語で「script」というと最も一般的には
「放送や演劇、映画などの原稿、台本」ということになります。

原稿や台本には番組の段取りや出演者の発言内容、
或いは役者の仕草やセリフが書いてあります。
出演者や役者は原稿や台本の流れに沿って演じているわけですね。

セカンドライフのリンデン・スクリプトも同じです。
プログラムなんて考えると難しそうですが、
自分で作ったオブジェクトを動かす原稿、台本と思って下さい。
そのオブジェクトを主人公にしてどんなドラマを演じさせるのか、
それを時間に沿って書いていくのだと考えれば、
何だかワクワクしてきませんか?

というところで、長くなってしまいましたので、
この続きはまた次回ということに致しましょう。

2008年10月8日水曜日

【新商品】CD「シルクロード」発売!

新商品の第2弾、久しぶりのCD発売です。
考えてみたら24時間の時の「Make the Miracle Happen」と
Sena Pinklady さんの限定版「Shining Rain」以来じゃないかな。

081007a


というわけで、次の2枚同時リリースです。

・「Hiroshi Kumaki/シルクロード」
・「Hiroshi Kumaki/バーザールの人々」

何れもシルクロード関係の曲で、
特に「シルクロード」は、
SilkRoad SIM1周年を記念して作曲されたもの。
価格は何れもL$200で
Lifebound Records 本店で扱っています。
どうぞよろしくお願いします。

■Lifebound Records
http://slurl.com/secondlife/Fanghammer/81/94/21/

【技術情報】またまたアップデート!〜重大な事実が判明!

ちょうど昨日1.20.16のアップデートについて書いたばかりでしたが、
さっきインしてみたら黄色のアラートではなく
赤い警告マークでアップデートのお知らせが。。。

確認してみましたところ、今回1.20.17の内容は次の1点。

「ファイル転送の機能は、ユーザが意図して明示的に選択したファイルであり、かつ、セカンドライフ・ビューワーがファイル転送のために使用しているディレクトリにあるファイルのみに制限される。」

どういうことか?

昨日、コンピュータ同士が確認を行わないデータ転送方式の話をしました。
どうもセカンドライフ・ビューワーがこれを許しているのをいいことに、
セカンドライフ・ビューワーをターゲットにしてデータを送り、
ビューワーを通してそのユーザのパソコン自体にアクセス、
再びビューワーを使ってそのパソコンからファイルを持ち出す、
ということが可能であるようなのです。

リンデンの説明によると、
これは技術的には極めて難しいものの
悪意をもってやろうと思えばできるものであり、
今回のアップデートは、セカンドライフビューワーを使用中に、
ユーザがそれと気づかずにファイルを転送してしまうことがないよう
修正を加えたものであり、
自分のパソコンを守るために
絶対に行ってほしいアップデートであるとのことです。

尚、リンデンでは以前のビューワー1.19.1(4)も配布していますが、
このバージョンは既にサポート対象外であり、
従ってこのアップデートもなされていないので、
ユーザーは1.20.17にアップデートしてほしいとのことです。

以上、まずはご報告まで。

■1.20.17のダウンロードはこちら
http://secondlife.com/support/downloads.php

■今回のアップデートの背景となっている事象についてはこちら
http://status.secondlifegrid.net/2008/10/06/post275/

2008年10月7日火曜日

そうそう、後始末と言えば!

YouTubeにアップしたバーニング・ライフ用のビデオ、
暫定版、New Edition併せて2,100回以上視聴して頂きました。
どうも最後のライブにいらして頂いた海外の方は
このビデオをご覧になられていらしたご様子でした。
ホントありがとうございます。

なんですが、、、

そうです。
全ては、あれは夢だったのだろうか、
と跡形もなく消さなければなりません。
というわけで、ご好評頂いているのに申し訳ないですが、
10月7日一杯、
つまり8日の午前0時をもってこのビデオをYouTubeから削除します。
もとはと言えば、会場にいらしたお客さんに
イメージを摑んでもらうために創ったもので、
YouTubeのサーバだけ借りていたようなものですので、
やはり消すのがいいと思うのです。

というわけで、、、

もしまだご覧になられていない方いらっしゃいましたら
今のうちに見ておいて下さいね。

■Time of Sharing (New Edition)
http://jp.youtube.com/watch?v=Y0jq5Y1TG1M

【新商品】世界時計HUD発売!

バーニング・ライフ参加で
いろんなことがほったらかしになってたヒロシです。w
というわけで、久々の新商品発表です。

081006c


まずその第一弾。「世界時計HUD」です。
もうモノ自体は随分前に発表しましたので
新鮮味は全くないですが、
今回改めて一般向けに販売を開始しました。

装着すると画面右上にSL時間と日本時間を含む
主要(?)8都市の現在の時刻が表示されます。
SL時間の下にあるバーにタッチするとダイアログが出て
文字色を変更できたり、
ある都市で何時の時に別の都市では何時? なんて計算ができます。




今回のバーニングライフのように
日本時間とSL時間の両方で会話したりする時はホント便利です。
海外のフレンドの皆さんには大変喜んで頂きました。w

価格はL$200、
Fanghammer の Lifebound Records 本店で販売しています。
どうぞよろしくお願いします。

■Lifebound Records
http://slurl.com/secondlife/Fanghammer/81/94/21/

祭のあと。。。

はーい。
というわけで、SL時間でも10月5日は終わってしまいました。
バーニング・テンプルについては結局ホームページは勿論、
グループチャットですら正式なアナウンスはされずじまいでしたね。
チャットでは午後6時(日本時間今朝の10時)
という噂は流れていましたが。。。
何となく今回は最初から最後までバタバタだったような。。。

さて、僕も自分のキャンプを解体しました。
もう昨晩燃やした(?)ので、
骨組みだけのこんな感じになっていましたが。w
あれだけ燃えても真ん中の木と
楽器やDJ機材だけは無事という不思議な燃え方であります。w



準備するのには1週間以上、いや、2週間近くかかったこの会場も
解体するのはわずか10分でした。w
最後にターミナルでプリム数が「0」になるのを確認、
これで僕のここでの仕事は終わりです。

バーニングライフの趣旨は、
リアルのバーニングマンと同じように
何にもない砂漠の真ん中に飛行場すらある都市を造り、
そこにみんなで集まり、1週間お祭をやって
それはディープな経験をするんだけれども
会期が明けると、本当にそこにそれがあったのかどうか
あれは夢だったのかと思えるほど
何一つそのあとを残さずに元の砂漠に戻すというもの。



本当にな〜んにもなくなってしまいました。w

【技術情報】ビューワーの新バージョン

先月末からビューワーの初期画面に
最新バージョン1.20.16の案内が出ています。
バーニング・ライフのイベント中なので環境変えたくないということもあり、
ずっとほったらかしにしておきましたが、
漸くバージョン・アップの内容を確認しました。
前回のバージョン・アップの時のように
画期的で、動きが軽くなるようだと変えた方がいいですからね。

ところが、今回の変更内容は次の1点

「信頼すべきでないUDP経由で送られたメッセージを破棄する。」

画期的どころか、
一般のユーザの方には何のことかさっぱりわかりませんね。

UDPというのはネットの通信方式の一種と思って頂ければと思います。
同じ仲間としてTCPというのがあり、こちらはお聞きになったことがあるでしょう。
TCPはコンピュータ同士がデータ送ったよー、受け取ったよー、と
確認しながら通信する方式で、
当然データの信頼性は向上するのですが、
行き来するデータ量が増えるために、転送速度が遅いという欠点があります。

UDPはあまり信頼性に重要度を置かず、
むしろ速い転送速度が要求される場合に利用されます。
相手のコンピュータの確認を待たずにどんどん送ります。
一番有名なのがストリーミングでの使用ですね。
多少データが落ちようが何しようが、どんどん音楽や映像が送られてくれば
私たちもあまり気にならなかったりします。
あとは、リアルタイムで正確な時刻を配信するNTPサーバなどですね。
これも転送に時間がかかったのでは正確な時刻を伝えられません。

セカンドライフをやっていて、どこでUDPが使われているのか
ストリーミング以外には知りようもないですが、
もしかすると、信頼性の低いUDP経由のデータが
何か悪さすることがあったのかもしれません。
これだけ普通のユーザにはあまりピンと来ない更新を
敢えてこれだけ単独でリリースするということは
恐らく重大なセキュリティ関連の何かではないかと想像します。

そういう意味では、私たちに見えるところで機能がアップするような
目立ったバージョン・アップではありませんが、
アラートとして毎回初期画面に表示される今回のバージョンアップは
早めに手当てしておいた方がよさそうですね。

2008年10月6日月曜日

【技術情報】Google Chrome 使ってみました!

さて、このところはもうバーニング・ライフ一色の日記となりましたが、
RLではというと、9月一杯で某所のプロジェクトを終了し、
次の参加プロジェクトが決まるまで本社で割りとのんびりしております。
(SLの方が忙しかった。^^;)

そこで!
会社のWindows PCに入れて使ってみましたよ、Google Chrome。
これは前にSNS管理人の ZATO Okey さんがレビューされていて、
akinori Paine さんも軽くていい! とおっしゃっていたのと、
何よりグーグルの動向はいつも気になっているのですが、
何せ自分はMacユーザーなもので、まだ試せていないのでした。

あ、念のため言っておきますと、
Google Chrome というのは、グーグルがリリースした
Webブラウザで、Internet ExplorerとかFireFox、Opera、Safari といった
インターネットを見るためのアプリケーションですね。
もう殆ど定番のブラウザが決まってしまってるこの分野に
いきなりグーグルが参入して来たわけですね。

結論から言うと、これはホントに使いやすいです。
あまりにシンプルが画面で、最初は、え、と思うかもしれませんが、
本当に高度な機能がよく整理されていて、
これを使ったあとでは、何で今までこうでなかったんだろう、
と思うくらいですね。

一番便利なのが、ボックス機能で、
入力できるボックスは1つしかありません。
普通だとここは「http://www...」というURLを入れる場所で、
大抵のブラウザだとグーグルやヤフーなどの検索エンジンに移動して、
検索ボックスにキーワードを入力して、、、となるのですが、
Google Chrome の場合、いきなりここにキーワードを入れてOKなんです。
さすがグーグル!
検索だろうとURLだろうとこのボックスに入力していいので、
初心者でも簡単に扱えると思いますし、
立ち上げてから目的のサイトに辿り着く時間が早い!

それからタブによるブラウジングも画期的です。
タブはSafariやFireFoxで慣れてしまってからもう手放せない機能ですが、
それがここでは更に進化しています。
新しいタブを開くと、最近開いたサイトがサムネール入りで表示されます。
つまりは履歴ということなのですが、絵でぱっと表示されるので、
これもぱっとその絵をクリックすれば、すぐにそのサイトに辿り着けます。
大体訪問するサイトなんて決まってますからね、
これは、実はお気に入りなんかから選ぶよりずっと早いんです。

僕の場合、カスタマイズされたiGoogleのページをホームにしていて、
ここにGメールや、グーグル・ドキュメントの情報が反映されるようにしてるので、
Google Chromeを使うと、もう、これは、統合的な仕事環境ができてしまいます。
これはホントに快適ですよ~。
まだまだバグとかもあるみたいですけど、
とりあえず今のところはぶつかってません。
是非一度お試しになってみてはいかがでしょう?

■Google Chrome ホーム
http://www.google.com/chrome/

終わったぁ!

というわけでバーニングライフでのイベント、
全て終了致しました。
naturalway Flow さんが案内して下さったこともあって
最後のライブには結構たくさんの人にいらして頂き、
またメッセージも頂きました。
これらのメッセージは、僕の英語版ソラマメにありますので
よろしかったら覗いて下さいね。w

そして、ライブ終了後、テントに火を放ちました。
火と言えば、そうです、ここでもナチュさんにご協力頂き、
ものすごい火を燃やしてもらいました。
で、ダンス会場はこの通り。
もう辺り一面火の海で、誰が誰やら
何が何やらわからない中で、クレイジーに踊りまくりました。


炎の中お皿を回すDJ MAOさんと踊り狂うヒロシ


やがて、天井が落ち、壁が落ち、
それでも炎とみんなの勢いは衰えを見せずに、
2時半過ぎまでパーティーは続いたのでした。


屋根も壁も落ちても音は鳴り続け人は踊り続ける!


1週間にわたるイベントも無事終了。
これでまた普通の生活に戻りますが、
この間イベントに来て頂き、盛り上げて下さった方々、
そしてDJのまおさん、何かと助けて下さったナチュさん、
みなさんにこの場をお借りしてお礼を申し上げたいと思います。
ありがとうございました。

【緊急告知】バーニング・ライフ・ファイナル・イベント!

いやぁ、本日の午後のイベントも盛り上がりました。
僕のライブにはいつもより外人さんが来て下さって
メッセージを書いて下さったりしてあっという間の
充実した90分となりました。

そして続く MAO Lisle さんのパーティーでも
たくさんの外人さんに来て頂き、
皆さんに喜んで頂けました。
先週は外人さんがなかなか定着しないというのが課題だっただけに
日本の方と外国の方みんなで交流できたのは成功だったと思っています。
昨晩と同じく1時間延長の17時までみんなで踊り狂いました。W

さて、今晩、いよいよ1週間にわたってお届けしてきたイベントも
最後を迎えることになります。
深夜0時からは僕のライブ。
そして1時頃、太鼓を叩きながらテントに火を放ちます。
テント中に火が燃えさかる中、
何と再びまおさんの登場です!
そこから約1時間、ノリノリの曲をバシバシかけて下さるはずです。
年に1度のお祭りですので、
これまでいらした方も
いらっしゃれなかった方も
是非是非この機会に集まって下さいね。
お待ちしていまーす。w

■Hiroshi Kumaki Burning Live & MAO Lisle's Party
 〜BURNING DOWN THE CAMP!
・日時:2008年10月5日(日)24:00〜26:00
・会場:Love & Message Camp @ Burning Life 2008
http://slurl.com/secondlife/Burning%20Life%20(Zone)/224/25/24

2008年10月5日日曜日

バーニング・マン!

行って来ましたよ、バーニング・マン。
昨年の経験があるので、早めに9:30にイン。
僕のキャンプから近いこともあって、
テレポートはせずに、歩いて現地に向かいました。
ところがこれが歩きにくい。
既にSIM全体が重いのです。
それもそのはず、
現地に着いてわかりましたが、
あっと言う間に会場の4つのSIMで202人を数えておりました。
ここは落ちないようにしなければなりません。w
一度落ちたら戻って来れるかどうかわかりませんからね。



というわけで、最初に花火が上がった後、
日本時間で10:20頃から The Man と呼ばれる人形に火が点されます。
最初に人形が乗っているタワーが火に包まれ、
やがて火が上へ上へと上昇し、人形を包み込みます。
辺り一面火の海になりながら、
結構時間をかけて人形もタワーも燃え落ちました。





いやー、このイベントは何度見てもすごいですね。
そして何と言っても人の盛り上がりよう!
この後ダンスになだれ込むのですが、
もう次のステージの準備をしなければならないので
戻って参りました。
まずは皆さんにご報告です。

この他、バーニング・テンプルという
巨大な寺院を燃やすイベントもあるはずなのですが、
現在まだTBA(追ってお知らせします)というステータスです。
こちらもわかり次第この日記でお伝えしますね。

さて、僕は今からライブです。
お時間ある方、是非いらして下さいね。w

■Hiroshi Kumaki メッセージ・ライブ
・日時:2008年10月5日(日)12:00〜13:30
・会場:Love & Peace Message Camp
http://slurl.com/secondlife/Burning%20Life%20(Zone)/224/25/24

ダンス! ダンス! ダンス!

昨晩はバーニングライフまで残すところ2日となり、
深夜0時から僕のライブ、
そして2時から MAO Lisle さんのダンスパーティーが行われました。

まおさん、最近はちっちゃい姿で登場ですが、
今回もかわいい系を狙って(?)登場、
特設DJブースでガンガン曲をかけていきます。



最初はSIM自体に人があんまりいなくて
例によってフレンドの方々だけで踊っておりましたが、
やがて1人2人と海外の方も参加してくれまして、
予定の4時を回っても異様なほどの盛り上がりを見せ、
結局は5時近くまでみんなで踊っておりました。w
まおさん、参加されたみなさん、ありがとう&お疲れ様でした。

もともと通りすがっただけの海外の方も
おお、ここは本物のパーティーをやってるね!
と喜んで下さったり、
まおさんがかける「宇宙刑事シリーズ」に
あ、これ知ってる、友だちが日本のアニメ音楽をよく演るんだ、
とおっしゃって下さったり、
意外と日本の曲も受けれて下さったのが嬉しかったですね。
海外の方からもまおさんサイコー! クール! の声。
まおさん、やったぁ!



さて、そのまおさんのバーニング・ライフ最後のパーティーも
この後日本時間14:00から行われます。
現地は土曜の22:00ですので、また海外の方々との出会いがあるかも!
みなさん是非是非いらして下さいね。w

■MAO Lisle ダンスパーティー Final
・日時:10月5日(日)14:00〜16:00
・会場:Love & Peace Message Camp @ Burning Life 2008
http://slurl.com/secondlife/Burning%20Life%20(Zone)/224/25/24

2008年10月4日土曜日

バーニング・ライフ大詰め!〜今日明日のスケジュール

1週間にわたるバーニング・ライフのイベントも
いよいよ今日、明日の2日間を残すのみとなりました。
この土日は夜も昼もやっていますので、
どこかで来て頂き、盛り上げて頂けると嬉しいです。
それからこのお祭りの目玉、バーニング・マンの日時も決まりました!
何れもお見逃しなく!
(時間は何れも日本時間です。)

<10月4日(土)>

●12:00〜13:30 Hiroshi Kumaki メッセージ・ライブ
・会場:Love & Peace Message Camp
http://slurl.com/secondlife/Burning%20Life%20(Zone)/224/25/24
・コメント:愛と平和をテーマにその瞬間瞬間を即興演奏で表現します。

●14:00〜14:45 naturalway Flow Music StarMine
・会場:Natulax
http://slurl.com/secondlife/Burning%20Life%20%28Black%20Sun%29/10/174/24/
・コメント:ご存じナチュさんの花火と音楽のショーです。美しく、素晴らしい癒しのひとときをお過ごし下さい。

●19:30〜 バーニング・マン!(1回目)
・会場:The Man
http://slurl.com/secondlife/Burning%20Life%20%28BIOS%29/14/235/24
・コメント:巨大な人形を燃やし尽くす、バーニング・ライフのメインイベントです。上記のSLURLを中心に Bios、Hyper、Reality、Radar の4SIMにまたがって行われます。混雑が予想されますので、上記SLURLからテレポートできない場合は、周辺のSIMからお入り下さい。

●22:00〜 naturalway Flow Music StarMine
      スペシャルゲスト&ダンスショー
・会場:Natulax
http://slurl.com/secondlife/Burning%20Life%20%28Black%20Sun%29/10/174/24
・コメント:スペシャルゲストに oborotuki さんを迎えて、音楽とダンスで盛り上がりますl。

●24:00〜25:30 Hiroshi Kumaki メッセージ・ライブ
・会場:Love & Peace Message Camp
http://slurl.com/secondlife/Burning%20Life%20(Zone)/224/25/24
・コメント:愛と平和をテーマにその瞬間瞬間を即興演奏で表現します。

●26:00〜28:00 MAO Lisle ダンスパーティー vol. 3
・会場:Love & Peace Message Camp
http://slurl.com/secondlife/Burning%20Life%20(Zone)/224/25/24
・コメント:ご存じまおさんのノリノリな音楽とダンスをお楽しみ下さい。


<10月5日(日)>

●10:00〜 バーニング・マン!(2回目)
・会場:The Man
http://slurl.com/secondlife/Burning%20Life%20%28BIOS%29/14/235/24
・コメント:巨大な人形を燃やし尽くす、バーニング・ライフのメインイベントです。上記のSLURLを中心に Bios、Hyper、Reality、Radar の4SIMにまたがって行われます。混雑が予想されますので、上記SLURLからテレポートできない場合は、周辺のSIMからお入り下さい。

●12:00〜13:30 Hiroshi Kumaki メッセージ・ライブ
・会場:Love & Peace Message Camp
http://slurl.com/secondlife/Burning%20Life%20(Zone)/224/25/24
・コメント:愛と平和をテーマにその瞬間瞬間を即興演奏で表現します。

●14:00〜14:45 naturalway Flow Music StarMine
・会場:Natulax
http://slurl.com/secondlife/Burning%20Life%20%28Black%20Sun%29/10/174/24/
・コメント:ご存じナチュさんの花火と音楽のショーです。美しく、素晴らしい癒しのひとときをお過ごし下さい。

●14:00〜16:00 MAO Lisle ダンスパーティー Final
・会場:Love & Peace Message Camp
http://slurl.com/secondlife/Burning%20Life%20(Zone)/224/25/24
・コメント:いよいよバーニング・ライフでのまおさんのパーティーもこれが最後! 現地では土曜夜の22:00、海外のみなさんとも交流しながらクレイジーに踊りまくりましょう!

●22:00〜22:45 naturalway Flow Music StarMine
         クローズイベント
・会場:Natulax
http://slurl.com/secondlife/Burning%20Life%20%28Black%20Sun%29/10/174/24
・コメント:バーニング・ライフでのナチュさんのショーもこれが最後になります。イベント終了後は会場を燃やして解体するとのこと! 必見です。

●24:00〜25:30 Hiroshi Kumaki バーニング・ライブ!
・会場:Love & Peace Message Camp
http://slurl.com/secondlife/Burning%20Life%20(Zone)/224/25/24
・コメント:バーニング・ライフでの僕の最後のライブになります。最後は会場を燃やしながら、ダンサブルな曲で盛り上がっていきたいと思います。

     *   *   *

この他に、公式イベント「バーニング・テンプル」という、寺院を燃やし尽くすイベントも現地5日に予定されています。まだ正確な時間が発表されていませんが、発表次第、ここで案内しますのでお見逃しなく!

バージョン・アップ!

例のYouTubeのビデオ、
予想通り1,000を越えました。
これは同じくYouTubeにアップしている
イランのビデオクリップに匹敵する早さですね。

ところで、このビデオ、
更に丁寧に編集したニュー・エディションを
同じくYouTubeに公開しました。
こちらの方が映像が明るいのと
音楽と映像との同期がきれいです。
バーニング・ライフ会場の映像は
既にこちらに差し替えられています。
是非こちらも見てみて下さいね。

http://jp.youtube.com/watch?v=Y0jq5Y1TG1M

尚、今晩も0時よりバーニング・ライフ会場でのライブを行います。
どうぞよろしくお願いします。

■Love & Peace Message Camp @ Burning Life 2008
http://slurl.com/secondlife/Burning%20Life%20(Zone)/224/25/24

2008年10月2日木曜日

何と!

バーニング・ライフ用に制作してYouTubeにアップした
僕のビデオ「Time of Sharing」の視聴回数が
あっという間に905になってました。
もう1,000に届く勢いですね。

きっと何かのキーワードで間違って検索されて
そのまま見てもらえたんだろうけど。w
夜中にふにゃふにゃになりながら
頑張った作った甲斐があるというものです。

でもね、このビデオ、実はバーニングの終了と共に
YouTubeからも削除する予定なのです。
なので、もしまだ見てないとおっしゃる方いらしたら
是非是非会場か、下のリンクで見て下さいね。w

http://jp.youtube.com/watch?v=cRLD0iIUh7M

2008年10月1日水曜日

日曜、月曜、そして今晩!

いやー、メチャクチャな週末がやっと終わりました。
日曜の昼に日記を書いて以来、
皆さんの日記は電車の中などでチェックしても、
自分の日記を書く時間も、
そもそもパソコンに触れる時間が殆どな〜い!><
何とかイベントの時間にSLにはログインして
終わるとすぐにログオフというのが続いたのでした。
富士山の見える某所での仕事もようやく今日開放され、
久しぶりに人間的な(?)時間を過ごしております。w

そこで、日曜から今晩までの日記をまとめて書いちゃいます。
日曜の昼は、MAO Lisle さんのダンスパーティーには、
多くの方々に来て頂き、
中でも、前日、、、というかその日の朝まで踊って下さった面々が
再び登場!
本当にありがとうございました。

最初はそんな日本人の方ばかりだったものの、
まおさんの必死の呼びかけにやがて外人の方々も。w
何人かずっと踊って楽しんで下さいました。
この時まおさん偉いなーと思ったのは、
常に名前を呼びかけ、外人さんに話しかけてるんですよ。
ただでさえ勝ってのわかりにくいSLの
勝手のわかりにくいバーニングライフ。
話しかけてくれる人がいると助かるよね。

その日の夜のコンサートには naturalway Flow さんと hiromitsu Fall さんが
駆けつけて下さいました。
ナチュさん、ひろみつさんありがとう!

そしてそして!
昨晩はイベントぎりぎりに帰宅してインしたら
pira Noel さんのお店休業のお知らせ。;;
何とか彼女に挨拶だけしてライブに向かいました。
いやー、会えてよかったー。
ライブは、そんなにお客もいないこともあってやりたい放題。w
「The Cosmic Tree」というテーマで行いました。
ぴらさん、ホントにいろいろありがとう。
RL頑張って下さいねー。

というわけで、今晩です。
今晩も0時からライブを行います。
お時間ある方、是非いらして下さいね。

それでは、また。
ありがとうございます。