> ## Documentation Index
> Fetch the complete documentation index at: https://developers.hubspot.jp/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# アプリオブジェクトを使ってみる（ベータ版）

> 新しい概念実証の統合アプリ（ベータ版）を作成する方法について説明します。

<Info>
  この機能を使用するには、HubSpotからの承認が必要です。アプリオブジェクトへのアクセスの申請に関心がある場合、または機能について詳しく知りたい場合は、[こちらのフォーム](https://developers.hubspot.com/app-objects-interest)をお送りください。
</Info>

概念実証アプリを作成する方法を説明します。この方法では、開発者テストアカウントでテストおよび使用できるアプリオブジェクトを設定します。

<Steps>
  <Step title="HubSpot CLIの最新バージョンをインストールする">
    統合アプリを作成するには、[HubSpot CLI](/developer-tooling/local-development/hubspot-cli/reference)の最新ベータ版が必要です。ターミナルウィンドウで次のコマンドを実行します。

    ```shell theme={null}
    npm install -g @hubspot/cli@next
    ```

    CLIのバージョンは`7.4.4-beta.0`以降である必要があります。`hs --version`を実行すると、CLIのバージョンを確認できます。
  </Step>

  <Step title="開発者アカウントを認証する">
    次のコマンドを実行して開発者アカウントを認証する必要があります。

    ```shell theme={null}
    hs auth
    ```

    * 画面の指示に従ってアカウントでパーソナル アクセス キーを生成し、このキーをコピーしてターミナルに貼り付け、設定を保存します。
    * このベータ期間中は、このアカウントをCLIの既定にすることが推奨されます。これにより、ベータに登録したアカウントのアクセスで発生する可能性があるエラーを回避できます。
  </Step>

  <Step title="新しいボイラープレートプロジェクトを作成する">
    ターミナルで以下のコマンドを実行し、現在互換性のある機能またはアプリオブジェクト参照スキーマを使用して新しいプロジェクトアプリおよびマーケットプレイスアプリを作成します。

    ```shell theme={null}
    hs project create --templateSource robrown-hubspot/hubspot-project-components-ua-app-objects-beta
    ```
  </Step>

  <Step title="新しく作成したプロジェクトを設定し、開発者アカウントにアップロードする">
    プロジェクトフレームワークは、UIまたはAPIで以前に設定されたアプリ機能を、ソース コード ファイル（通常は`<file-name>-hsmeta.json`設定ファイルとして定義されるファイル）に移動します。

    アプリ機能は、必要に応じて、メインの`/src/app`ディレクトリーのサブフォルダーと他の設定ファイルの組み合わせを使用して作成されます。プロジェクトを設定するには、次のようにします。

    * ローカル（または別の非本番）OAuthサーバー設定に基づいて、1つ以上の有効なリダイレクトURLを`app-hsmeta.json`ファイルに追加します。

    <Tip>
      ### 注：

      最初に、[OAuth Node.jsのサンプル](http://github.com/hubspot/oauth-quickstart-nodejs)を使用してローカルで実行できます。これは、前のステップで実行した`hs project create`コマンドのボイラープレート サンプル コードで設定されたリダイレクトURLとして、`https://localhost:3000/oauth-callback`で機能するようにすでにセットアップされています。
    </Tip>

    * `app-hsmeta.json`ファイル内のアプリの`uid`プロパティーと、プロジェクト内の他の`*-hsmeta.json`設定ファイルを変更します。

    <Warning>
      UIDは、プロジェクトの全てのコンポーネントと機能の固有IDとして使用されます。機能とUIDの作成後に、後続のデプロイでUIDが変更または修正されると、プラットフォームは変更後のUIDを以前の機能と異なるものとして認識しますが、これは想定外である可能性があります。
    </Warning>

    * 統合アプリにアプリオブジェクトを使用する場合、オブジェクトのリクエストに基づいて許可されるのは、承認済みの「name」プロパティーの定義のみです。この非公開ベータの一環として、アプリの承認済みの「name」を別途確認している必要があります。これは`*-object-hsmeta.json`設定で使用されます。参考までに、アプリオブジェクトの完全修飾名（FQN）は`a<appId>_<name>`です。例えば、`appId`が`16858319`で`name`プロパティーが`CARS`であった場合、FQNは`a16858319_cars`になります。
    * 変更を保存したら、CLIコマンド`hs project upload`を実行してプロジェクトをHubSpot開発者プラットフォームにアップロードし、自動的に新しいビルドをトリガーします。
    * ブラウザーウィンドウで`https://app.hubspot.com/developer_projects/<accountId>`に移動してプロジェクトUIにアクセスし、アプリとプロジェクトが正しく作成、ビルド、デプロイされていることを確認します。
  </Step>

  <Step title="アプリのクライアントIDとクライアントシークレットをアプリに追加する">
    * プロジェクトをアップロードしたら、OAuth設定にコピーするアプリの認証の詳細を取得する必要があります。

      * ［開発］ナビゲーションメニューの［プロジェクト］をクリックします\*\*。\*\*\_\_
      * 新しいプロジェクトの**名前**をクリックします。
      * アプリの**UID**をクリックし、［認証］タブをクリックします\*\*。\*\*
      * 新しいアプリから「クライアントID」\_\_と「クライアントシークレット」\_\_をコピーし、ローカルOAuthサーバーの設定内の対応する場所に貼り付けてから、OAuthサーバーを再起動します。
  </Step>

  <Step title="アプリのオブジェクトスキーマ設定を構成する">
    次に、アプリ オブジェクト スキーマを設定します。

    * `/src/app`ディレクトリー内にディレクトリーを作成し、`app-objects`という名前を付けて、新しいアプリオブジェクトを追加します。新しいディレクトリーのパスは`/src/app/app-objects`です。
    * オブジェクトのスキーマを表す新しい設定ファイルを作成します。このファイル名のプレフィックスとして、プレビュープロセス中にアプリに付与されたオブジェクト名を使用し、その後に`-object-hsmeta.json`と続ける必要があります。例えばリファレンス プロジェクト テンプレートでは、アプリオブジェクト名は「CAR」であるため、作成される設定ファイルの名前は`car-object-hsmeta.json`になります。
    * [アプリ オブジェクト コンポーネント定義](/apps/developer-platform/add-features/app-objects/reference#app-schema)の参照ファイルを参照し、フィールドをカスタマイズして、アプリオブジェクトの該当する値にします。
      * 定義の`config`オブジェクト内にある`name`フィールドは、レビュープロセス中にアプリに付与された名前（`UPPER_SNAKE_CASE`形式）と一致している必要があります。
      * 次のステップでプロパティーとフィールドがアプリ オブジェクト スキーマに追加され、プロジェクトにアップロードされた後は、これらのプロパティーとフィールドを削除<u>できません</u>。

    <Tip>
      ### 注：

      テスト中に、開発ライフサイクルをサポートするために複数のアプリで同じアプリオブジェクト名を使用できます。この概念実証アプリから始めて、移行が実行可能になったら、開発アプリ、ステージングアプリ、本番アプリで同じ名前とスキーマ定義を使用できます。これらの各インスタンスのUIDは一意である必要があります。
    </Tip>

    * アプリ オブジェクト スキーマ定義の編集が完了し、これらの変更をコミットする準備ができたら、次のコマンドを実行して変更を保存します。

    ```shell theme={null}
    hs project upload
    hs project deploy
    ```

    * ブラウザーウィンドウで`https://app.hubspot.com/developer_projects/<hubId>`に移動してプロジェクトUIにアクセスし、アプリとプロジェクトが正しく作成、ビルド、デプロイされていることを確認します。
  </Step>

  <Step title="アプリを更新する">
    アプリ オブジェクト スキーマがアップロードされたので、次は`app-hsmeta.json`ファイルで定義されたスコープを更新して、前のステップで作成したスコープを反映する必要があります。これらのスコープは、`hs project upload`の実行後にCLIログに表示されます。

    * `app-hsmeta.json`ファイルを編集し、`auth`定義内の`requiredScopes`の配列に新しいスコープを追加します。例えば`appId`が`a12345`だった場合、`auth`定義を次のように編集します。

    ```json theme={null}
    "auth": {
      "type" : "oauth",
      "redirectUrls": ["http://localhost:3000/oauth-callback"],
      "requiredScopes": [
        "crm.objects.contacts.read",
        "crm.objects.contacts.write",
        "crm.app.objects.a12345_my_app_object.view",
        "crm.app.objects.a12345_my_app_object.create",
        "crm.app.objects.a12345_my_app_object.edit",
        "crm.app.schemas.a12345_my_app_object.read",
        "crm.app.objects.a12345_my_app_object.merge",
        "crm.app.objects.a12345_my_app_object.delete",
        "crm.app.schemas.a12345_my_app_object.properties.write"
      ],
      "optionalScopes": [],
      "conditionallyRequiredScopes": []
    },
    ```

    <Warning>
      ### 注：

      <ul>
        <li>
          顧客がアプリオブジェクトを表示できるのは、`schemas.read`
          スコープがアプリ設定に含まれており、
          インストール/再認証のOAuthフローでリクエストされた場合だけです。設定に全てのアプリ オブジェクト スコープを
          含めることを強くおすすめしますが、`schemas.read`は
          顧客がアクセスできるようにするために必須です。例えば`appId`が`12345`の場合、
          `crm.app.schemas.a12345_MY_APP_OBJECT.read`を必須スコープとして
          含めます。
        </li>

        <li>
          テストに使用するアプリ（プロトタイプ、開発、ステージング、
          本番）に応じて、スコープ定義を追加する場所に
          注意する必要があります。非公開ベータのこの段階では、本番アプリのデプロイはまだサポートされていませんが
          本番環境の準備ができたら、これらのスコープを
          `conditionallyRequiredScopes`として含めるのが一般に最も安全です。
          これらのスコープタイプの詳細については[公開アプリの
          ドキュメント](/apps/legacy-apps/public-apps/overview#scope-types)をご確認ください。
        </li>
      </ul>
    </Warning>

    * これらのスコープの追加が完了し、変更を保存したら、次のコマンドを実行して変更をプラットフォームにコミットします。

    ```shell theme={null}
    hs project upload
    hs project deploy
    ```

    デプロイが完了すると、アプリとそれに対応するアプリオブジェクトは、インストール済みアカウントでテストできる状態になります。
  </Step>

  <Step title="開発者テストアカウント（任意）を作成してアプリをインストールする">
    [テストアカウント](/getting-started/account-types#developer-test-accounts)をまだお持ちでない場合は、HubSpotで作成できます。

    * ［開発］\_\_ナビゲーションメニューの［テストアカウント］\*\*\*\*に移動し、［開発者テストアカウントを作成］\*\*\*\*をクリックします。画面の指示に従って、新しいテストアカウントを作成します。
    * 左側のサイドバーメニューで［プロジェクト］\*\*\*\*に移動し、新しいプロジェクトの**名前**をクリックして、コンポーネントリストでアプリの**UID**をクリックします。
    * ［認証］\_\_タブで、アプリのインストールリンクをコピーします。
    * このリンクを使用して、開発者テストアカウントにアプリをインストールします。
    * テストアカウントを開き、［接続されたアプリ］\_\_ページに移動すると、インストール済みのアプリがリストに表示されます。
    * テストアカウントで［**CRM**］＞［コンタクト］\*\*\*\*に移動し、CRMオブジェクトのドロップダウンメニューをクリックして、アプリオブジェクトが使用可能であることを確認します。
    * その後、アプリオブジェクトの新しいレコードを作成して、スキーマ定義が設定ファイルに準拠していることを確認できます。

    <Frame>
      <img src="https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/test-app-object-in-developer-test-account-1.png" alt="app-object-available-in-crm" />
    </Frame>
  </Step>

  <Step title="HubSpotオブジェクトAPIを使用したプログラムによるデータアクセス">
    アプリオブジェクトを作成し、開発者テストアカウントでテストしたので、次にインストールしたテストアカウントに関連付けられているOAuthアクセストークンを使用して、オブジェクトAPIでアカウント内のデータを更新するリクエストを直接実行できます。

    APIの詳細については[オブジェクトAPI](/guides/crm/using-object-apis)をご確認ください。ただし、アプリオブジェクトに固有のリクエストは、HubSpotの他の標準オブジェクトと同じ規則に従います。アプリオブジェクトの`objectTypeId`または`fullyQualifiedName`をリクエストの`objectType`パスパラメーターとして使用する必要があります。

    例えば次のコードブロックは、アプリオブジェクトの新しいレコードを作成するためのcURLリクエストを送信する方法を示しています。

    ```shell theme={null}
    curl --request POST \
      --url https://api.hubapi.com/crm/v3/objects/<fullyQualifiedName> \
      --header 'authorization: Bearer YOUR_ACCESS_TOKEN' \
      --header 'content-type: application/json' \
      --data '{
      "properties": {
        "additionalProp1": "string",
        "additionalProp2": "string",
        "additionalProp3": "string"
      }
    }'
    ```

    レコード インデックス ページに移動すると、アプリオブジェクトの`objectTypeId`を確認できます。

    * アプリをインストールした開発者テストアカウントで［**CRM**］＞［コンタクト］\*\*\*\*に移動します。
    * ページ上部の**ドロップダウン**メニューをクリックして、**アプリオブジェクト**を選択します。
    * `objectTypeId`は、URLの`/objects/<objectTypeId>/views`部分に表示されます。
  </Step>
</Steps>

## 次のステップ

開発者プラットフォームのさまざまな機能でアプリオブジェクトを使用する方法を[参照ドキュメント](/apps/developer-platform/add-features/app-objects/reference)でご確認ください。

* [アプリカードを設定する](/apps/developer-platform/add-features/app-objects/reference#app-card-schema)
* [Webhook配信登録を設定する](/apps/developer-platform/add-features/app-objects/reference#webhooks-component-definition)
* [他のCRMオブジェクトタイプとの関連付けを有効にする](/apps/developer-platform/add-features/app-objects/reference#app-object-associations)
