---
title: こんにちは、ZEPETOScript
slug: world-sdk-guide-ja/zepetoscript
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

## ZEPETOScriptとは何ですか？

- ZEPETOScriptは、ZEPETO Worldを作成するために使用されるスクリプト言語です。
- TypeScriptプログラミング言語をサポートしています。
- ZEPETOScriptは、ZEPETO World内の動作や機能を定義するために設計されています。具体的には、以下を含みます：
  - オブジェクトの動き、物理、相互作用。
  - ユーザー入力を含むイベントの処理。
- ZepetoScriptBehaviourクラスから継承され、UnityのMonoBehaviourインターフェースと互換性があるように設計されています。
- 実行のためにシーン内のアクティブなGameObjectにアタッチできます。

:::hint{type="danger"}
**❗️ 注意**

- ZEPETO Worldの開発時には、C#スクリプトはパッケージビルドに含まれません。
- ZEPETOScriptを使用してのみ実装することを確認してください。
:::



## Hello Worldチュートリアル

### ステップ1：ZEPETOScriptの作成

新しいZEPETOScriptファイルを作成するには、

\[プロジェクト]をクリックし、パネルの左上隅にある\[+]アイコンを選択するか、Assets → Create → ZEPETO → TypeScriptをクリックします。

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-W7_oSAQJMVKn1HXIKkcZn-20240904-102418.png)



新しいZEPETOScriptが作成されたことが下に示されています。

::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-jWaWZgzsGBAfZGeKXQIMv-20240904-102418.png" size="70" width="592" height="432" position="center" showCaption="false"}



### ステップ 2 : ZEPETOScriptをGameObjectに追加する

先に作成したZEPETOScriptをGameObjectにComponentとして追加するには、当該GameObjectのInspectorウィンドウにAdd Componentボタンをクリックしてください。

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/kt-hSmMqXIK8wXfK09n6P_image.png)



Add Componentウィンドウで、Zepeto Script Componentを選択してください。

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/2x7IOeRiQzr6Vkxe74kwt_image.png)



Zepeto Script ComponentのAttach Zepeto Scriptボタンをクリックしてください。

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/7fV1BDKL4rDv-gbq0dJLX_image.png)



Attach Zepeto Scriptウィンドウで先に作成したHello World ZEPETOScriptファイルを選択してください。

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/QZ8N-e1qp5BHUJyhZGJ9Z_image.png)



下の画面のように、HelloWorld ZEPETOScriptファイルをGameObjectにComponentとして追加することができます。

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/-xe1rspwelXIyUeM3abbD_image.png)



### ステップ 3 : テストコードを追加するか、ログを出力する

新しく生成されたZEPETOScriptは以下の通りです。Unityの開発ツールを使用してスクリプトを編集できます。

:::CodeblockTabs
NewTypescript

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';

export default class NewTypescript extends ZepetoScriptBehaviour {

    Start() {    

    }

}
```
:::



Start関数内にログコードを追加して、ZEPETOScriptが動作するかどうかをテストしてみてください。

:::CodeblockTabs
HelloWorld

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';

export default class HelloWorld extends ZepetoScriptBehaviour {

    Start() {
        console.log(`log : Hello World`);
        console.warn(`warn : Hello World`);
        console.error(`error : Hello World`);
    }

}
```
:::



以下のテストコード出力画面を確認してください。

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-5To_fp4pJMCsmAIhSpK-5-20240904-102418.png)



ZEPETOScriptチュートリアルの完了おめでとうございます！

以前にUnityでC#を使用して開発したことがある方や、ZEPETO World開発に新しい方のために、ZEPETOScriptの基本に飛び込んでみましょう。



## ZEPETOScriptでの変数の宣言

- ZEPETOScriptはTypeScriptの構文に従います。
- したがって、変数を宣言する際には型を宣言することが重要です。
- 変数宣言の例：

:::CodeblockTabs
TypeScript

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
 
export default class HelloZepetoScript extends ZepetoScriptBehaviour {
 
    // グローバル変数
    private number: number = 10;
    private floatNumber: number = 10.5;
    private word: string = "ZEPETO!";
    private isTrue: boolean = true;
    private list : number[] = [1,2,3];
    private listGeneric : Array<number> = [4,5,6];
 
    Start() {
        console.log(this.number);
        console.log(this.floatNumber);
        console.log(`こんにちは、${this.word}`);
        console.log(this.isTrue);
        console.log(this.list);
        console.log(this.listGeneric);
         
        // ローカル変数
        let a = 30;
        const b = 40;
        console.log(a);
        console.log(b);
    }
}
```
:::



## マップデータ型の使用

- C#の辞書データ型の代わりに、TypeScriptのマップデータ型を使用してキーと値のペアを保存および管理します。
- このデータ型は、マルチプレイヤーの世界を実装する際にプレイヤーデータを管理するのに特に便利です。
- マップの簡単な使用例：

:::CodeblockTabs
TypeScript

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
 
export default class HelloZepetoScript extends ZepetoScriptBehaviour {
 
    private myMap = new Map<string, string>();
     
    Start() {
        this.myMap.set("Player1", "Ze");
        this.myMap.set("Player2", "pe");
        this.myMap.set("Player3", "to");
         
        this.myMap.forEach((value, key) => {
            console.log(key, value);
        });
 
        if(this.myMap.has("Player2")) {
            let value: string | undefined = this.myMap.get("Player2");
            console.log(value);
        }
 
        this.myMap.delete("Player2");
 
        console.log(this.myMap.has("Player2"));
    }
}
```
:::



## JSONの活用

JSON形式のデータを扱うときは、TypeScriptの組み込み関数を使用できます。

- JSON文字列をオブジェクトに変換する
  - を使用します。`JSON.parse()`メソッド。
- オブジェクトをJSON文字列に変換する
  - を使用します。`JSON.stringify()`メソッド。
- JSONを利用する例：

:::CodeblockTabs
TypeScript

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
 
export default class HelloZepetoScript extends ZepetoScriptBehaviour {
     
    Start() {
        let jsonData = '{"id":"USER1234", "name":"zepeto", "age":15}';
 
        // JSON文字列をオブジェクトに変換する
        let userObject : User = JSON.parse(jsonData);
        console.log(userObject.id);
        console.log(userObject.name);
        console.log(userObject.age);
         
        userObject.age = 16;
 
        // オブジェクトをJSON文字列に変換する
        let newJsonData = JSON.stringify(userObject);
        console.log(newJsonData);
    }
}
 
class User {
    constructor(public id: string, public name: string, public age: number) {}
}
```
:::



:::hint{type="info"}
- 詳細な構文については、TypeScriptのドキュメントを参照してください。
  - [https://www.typescriptlang.org/docs/](https://www.typescriptlang.org/docs/)
:::

