AIにclusterの「クリックでショップを開くボタン」を作らせてみた|動かなかったので公式を調べた話

未分類


こんにちは。バーチャルハンドメイドブランド「irokazari+(イロカザリ)」を運営しているpekopokoです。

cluster(クラスター)というメタバースに、お店の出張店舗を作っています。店の中を見て回った人が、そのまま私のネットショップ(本店)へ行けるように、「クリックしたらサイトを開くボタン」を付けたいと考えました。

プログラムはAIのClaudeに作ってもらいましたが、クリックしても何も起きませんでした。この記事では、次の3点をまとめます。

  • AIに作ってもらったスクリプトと、動かなかった時の状況
  • AIの「確認済み」を、そのまま信じてしまった失敗
  • 公式ドキュメントを調べ直して分かったこと、まだ分かっていないこと

先に結論です。公式ドキュメントでは、外部サイトを開く機能は「有料ユーザー向け」と書かれていました。私のclusterは無料プランです。ただし、これが動かなかった原因かどうかは、まだ確認できていません。

1.出張店舗の今の状態

まず、今回のお店の状態です。

  • 店の周りに、街中を再現した仮想の世界を作った
  • 歩き回れる範囲は、お店の敷地内だけにした(広げるほど作り込みが増えるため、見える範囲を制限している)
  • 見える範囲に、建物を置いた
  • 店内には、3,000円以下の作品のポスターを置いた

安価な作品から置いた理由は、clusterの利用者は若い人が多いと私が見ているからです。入門編にあたる作品から見てもらおうと考えました。

ただ、調べた範囲では、年齢層の情報は見方が分かれています。運営会社のCEOは、10代・20代のユーザーが非常に多いと話しています(日経BOOKPLUS)。一方、2025年にVR機器の利用者を対象にした調査では、clusterは年齢層が比較的高めで、40代・50代も多いとされています(clustimes)。スマホ利用者に絞った最新の公式データは、見つけられていません。そのため「若い人が多い」は、私の見立てとして書いています。

2.AIに頼んだスクリプト

Claudeには、「クリックしたらサイトに飛べるようにするプログラム作って」と頼みました。

clusterでは、ClusterScriptというスクリプトで、アイテムに動きをつけられます。JavaScriptをもとにした言語です。出てきたのは、次の5行でした。

const SHOP_URL = "https://shop.irokazari.com/";

$.onInteract((player) => {
  player.requestOpenUrl(SHOP_URL);
});

意味は次の通りです。

  • onInteract:アイテムがクリック(タップ)された時に動く
  • requestOpenUrl:プレイヤーに、指定したURLを開くよう求める

これをUnityで、ボタンにするオブジェクトに割り当てました。

3.動かなかった時の状況

結果は、次の通りです。

  • Unityで再生してクリックしても、何も起きなかった
  • Console(エラー表示の画面)に、「Curl error 3: URL rejected: Malformed input to a URL function」というエラーが6回出た。ほかに、UIのフォントに関する内部エラーも出た
  • clusterにアップロードして試しても、クリックして何も起きなかった

Curl error 3 が何から出ているのかは、特定できていません。

4.AIの失敗:「公式で確認済み」と言っていたのに、調べていなかった

ここで、2つの失敗が分かりました。

1つ目は、Claudeの「公式ドキュメントで確認済み」という説明です。私が「そもそも調べた?」と聞いたところ、実際は10月の作業メモを引いただけで、今回は公式を見ていませんでした。

2つ目は、切り分けのために渡された確認用スクリプトです。使われていた命令($.setPosition)は、MovableItem(動かせるアイテム)の設定がないと動きません。クリックが届いていても、動かない設定でした。

AIは、自信のある書き方で間違えることがあります。「確認済み」と言われても、公式を自分の目で見るまでは、確認できた事実として扱ってはいけないと、今回改めて思いました。

5.公式ドキュメントを調べ直して分かったこと

公式のScript Referenceを、読み直しました。

  • requestOpenUrl は実在する。ただし説明に「この機能は有料ユーザー向け」と書かれている
  • ほかにも、外部とのストリーミング通信(callExternalStream)などが、有料ユーザー向けと書かれている
  • onInteract は、Collider(当たり判定)が1つ以上付いたアイテムで動く。有料限定の記載はない

10月中旬に、同じ「外部サイトへのリンクボタン」について、GeminiとChatGPTにも聞いていました。当時の私の調査メモでは、Geminiは「外部ブラウザを直接開くAPIはない」、ChatGPTは「不明」という回答でした。実際には、機能は「ある。ただし有料ユーザー向け」でした。AIの回答だけでは決めきれず、公式の一次情報に当たる必要があった、ということです。

参考:

6.まだ分かっていないこと

調べて分かったことより、分かっていないことのほうが多いです。

  • 「有料ユーザー」が、具体的にどのプランのことか
  • 無料プランで requestOpenUrl を呼ぶと、何が起きるか(私が調べた範囲では、記載が見つかっていません)
  • 今回動かなかった原因が、有料かどうか
  • これまでのスクリプトの失敗(10月26日のポスターのタップ拡大、10月31日の道路を走る車)の原因が、有料かどうか。onInteract 自体には有料限定の記載がないため、別の原因の可能性もあります

分かり次第、この記事に追記します。

7.これからどうするか

URLを開くボタンは、いったん使わない方針にしました。代わりに、本店のQRコードの画像を板に貼る案を考えています(まだ設置していません)。外部サービスへの案内にQRコードを使うことは、10月に営利利用のガイドラインを読んだ時、個人制作のワールドで認められていると確認しています。

ただ、スマホでワールドに来る人が大半だと、私は見ています。同じスマホの画面にあるQRコードは、読み取りにくいはずです。実際にどの端末で来る人が多いかは、未確認です。

まとめ

  • AIに作ってもらった「クリックでショップを開く」スクリプトは、動かなかった
  • AIの「公式で確認済み」は、実際には確認されていなかった
  • 公式を調べ直すと、requestOpenUrl は「有料ユーザー向け」と書かれていた。私は無料プラン
  • 動かなかった原因が有料かどうかは、まだ分からない
  • 次は、有料の条件と、無料プランでの動きを調べ、QRコードを試す

AIに任せる時ほど、公式の情報を自分でも一度見ておく。今回の一番の学びは、そこでした。

著者プロフィール

画像

pekopoko(バーチャルハンドメイドショップirokazari+店長)
元アクセサリー雑貨店の店長で、現在は飲食業界の広報・デザインの見習いバイトとして勤務
【スキル】
・ハンドメイド作家
・カラーセラピスト/パーソナルカラーリスト
・リテールマーケティング2級
・プログラミングスクール卒業
実店舗時代には、お店の見栄えを競うディスプレイコンテストで大賞・優秀賞・全国特別賞など3期連続で入賞。
現在は、それらの知識を結集し、メタバース「VketCloud」でバーチャルハンドメイドショップ『irokazari+』を運営。リアルとバーチャルの両視点から、”見せ方”と”心を整える色の力”をテーマに発信中。

バーチャルハンドメイドショップirokazari+ 

タイトルとURLをコピーしました