こんにちは。バーチャルハンドメイドブランド「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の回答だけでは決めきれず、公式の一次情報に当たる必要があった、ということです。
参考:
- PlayerHandle(公式Script Reference)
- ClusterScript(公式Script Reference)
- cluster公式note:クリエイター向けプレミアム機能 先行トライアル(2026年4月22日)
6.まだ分かっていないこと
調べて分かったことより、分かっていないことのほうが多いです。
- 「有料ユーザー」が、具体的にどのプランのことか
- 無料プランで requestOpenUrl を呼ぶと、何が起きるか(私が調べた範囲では、記載が見つかっていません)
- 今回動かなかった原因が、有料かどうか
- これまでのスクリプトの失敗(10月26日のポスターのタップ拡大、10月31日の道路を走る車)の原因が、有料かどうか。onInteract 自体には有料限定の記載がないため、別の原因の可能性もあります
分かり次第、この記事に追記します。
7.これからどうするか
URLを開くボタンは、いったん使わない方針にしました。代わりに、本店のQRコードの画像を板に貼る案を考えています(まだ設置していません)。外部サービスへの案内にQRコードを使うことは、10月に営利利用のガイドラインを読んだ時、個人制作のワールドで認められていると確認しています。
ただ、スマホでワールドに来る人が大半だと、私は見ています。同じスマホの画面にあるQRコードは、読み取りにくいはずです。実際にどの端末で来る人が多いかは、未確認です。
まとめ
- AIに作ってもらった「クリックでショップを開く」スクリプトは、動かなかった
- AIの「公式で確認済み」は、実際には確認されていなかった
- 公式を調べ直すと、requestOpenUrl は「有料ユーザー向け」と書かれていた。私は無料プラン
- 動かなかった原因が有料かどうかは、まだ分からない
- 次は、有料の条件と、無料プランでの動きを調べ、QRコードを試す
AIに任せる時ほど、公式の情報を自分でも一度見ておく。今回の一番の学びは、そこでした。
著者プロフィール

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

