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

# HTMLでアプリ内メッセージをデザインする

> 最大限の柔軟性、レスポンシブ性、ブランディングのために、OneSignalのHTMLエディターを使用してアプリ内メッセージをデザインおよびカスタマイズします。

## 概要

OneSignalは2つのアプリ内メッセージエディターを提供しています：

* 非技術的なクリエーター向けの[Drag & Drop](./design-your-in-app-message) GUI
* レイアウト、動作、レスポンシブ性をピクセル単位で完全に制御したい開発者向けのHTMLエディター

<Frame caption="レンダリングされたアプリ内の横にアプリ内コードを示す画像">
  <img src="https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/f33b4e3-iam-html-2.png?fit=max&auto=format&n=Xl2NHJvxakrK4JbL&q=85&s=0a0527678d2d094109186fea726918be" width="1700" height="1000" data-path="images/docs/f33b4e3-iam-html-2.png" />
</Frame>

**HTMLエディターでできること：**

* **レイアウト：** 複雑なレスポンシブレイアウトを構築します（例：並列CTA）。
* **フォーム：** インラインで入力を収集します（メール、フィードバック、アンケート）。
* **フォントとブランド：** カスタムWebフォントとCSS変数を使用します。
* **JSアクション：** クリックのトラッキング、ユーザーのタグ付け、アウトカムの送信などを行います。

### 要件

* **iOS:** 3.9.0+
* **Android:** 4.6.3+
  * アプリが古いSDKを使用している場合、アプリ内メッセージは代わりにCenter Modalレイアウトでレンダリングされます。

***

## HTMLアプリ内の作成とプレビュー

**Messages > New In-App**に移動して、アプリ内メッセージを作成、編集、テスト、一時停止、複製、または削除します。

<Columns cols={2}>
  <Card title="HTMLテンプレート" href="./in-app-html-templates" arrow={true}>
    事前構築済みのテンプレートですばやく開始できます。
  </Card>

  <Card title="アプリ内JavaScriptライブラリ" href="./in-app-message-api" arrow={true}>
    JavaScriptライブラリを使用して、インタラクションをトラッキングし、アプリ内の動作をトリガーします。
  </Card>
</Columns>

左側にHTMLコードを入力して、ライブでプレビューします。**Send Test In-App**を使用して、レスポンシブ性とデザインをテストします。

<Frame caption="プレビューの横にHTMLエディターを示す画像">
  <img src="https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/04df3a9-Screenshot_2023-04-15_at_11.54.11_AM.png?fit=max&auto=format&n=6v_cVPknFpo5qSVB&q=85&s=db3ac070e794e0c594850a61b2f95927" width="1770" height="1198" data-path="images/docs/04df3a9-Screenshot_2023-04-15_at_11.54.11_AM.png" />
</Frame>

### トラッキング可能なラベルを追加

インタラクティブな要素に`data-onesignal-unique-label`を追加して、クリックがトラッキングされ、アクション可能になるようにします。

```html theme={null}
<button class="tag-user" data-onesignal-unique-label="my-tag-user-button">Tag User</button>
```

### JavaScriptでクリックアクションをバインド

```js theme={null}
// Tag the user when they click a button
document.querySelector(".tag-user").onclick = (e) => {
  OneSignalIamApi.tagUser(e, { fiz: "baz" });
};
```

<Note>
  詳細については、[In-App JS Library documentation](./in-app-message-api)を参照してください。
</Note>

### アセットサポート

アセットは、提供されたURLからレンダリング時に読み込まれます。

```html theme={null}
<img src="https://media.onesignal.com/iam/default_image_20200320.png" alt="Promo" />
```

### パーソナライゼーション

[Liquid構文を使用](./using-liquid-syntax)してユーザーデータ値を動的に挿入します：

```html theme={null}
<div>Hi there {{ name | default: 'you' }}!</div>
```

**サポートされているコンテキスト：**

* `div`、`p`、`li`などの要素内のテキスト
* `<style>`ブロック内
* `href`、`src`、`action`、`data`属性内

**サポートされていないもの：**

* `<script>`タグ内
* 解析があいまいになる複雑なネストされたコンテンツ全体、例：

```html theme={null}
<div>
  Hi {{name}}
  <span>Here's your coupon!</span>
</div>
```

***

## アクセシビリティとレスポンシブデザイン

CSSメディアクエリとプラットフォームタイポグラフィを使用して、デバイスサイズとOSテキスト設定に適応します。

```css theme={null}
@media only screen and (max-width: 620px) {
  .btn-primary { width: 100% !important; }
}
/* Respect dynamic text sizes on iOS */
:root { font: -apple-system-body; }
```

### セーフエリア（ノッチ、ホームバー）

最新のデバイスにはセーフエリア（ノッチやホームバーなど）があります。`safe-area-inset-*`変数を使用してレイアウトをパディングします：

```css theme={null}
body {
  padding-top: var(--safe-area-inset-top);
  padding-right: var(--safe-area-inset-right);
  padding-bottom: calc(var(--safe-area-inset-bottom) + 20px);
  padding-left: var(--safe-area-inset-left);
  margin: 0;
}
```

### 動画の埋め込み

`<iframe>`を使用して、アプリ内メッセージに動画（YouTube、Vimeoなど）を直接埋め込むことができます。
これは、デモ、プロモーション、またはオンボーディングフローに役立ちます。

ほとんどのブラウザは**動画がミュートで開始される場合にのみ自動再生を許可**するため、常に埋め込みURLに`&mute=1`を含めてください。

<Note>
  自動再生動画はパフォーマンスに影響を与える可能性があります。動画を短くし、1つのアプリ内で複数の自動再生埋め込みを避けてください。
</Note>

#### 例：自動再生YouTube埋め込み

以下のスニペットは、固定サイズ（560×315）でアプリ内の中央にYouTube動画を配置する方法を示しています：

```html theme={null}
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <style>
      body {
        margin: 0;
        height: 100vh;
        display: flex;
        justify-content: center; /* center horizontally */
        align-items: center;     /* center vertically */
        background: #f0f0f0;     /* optional background */
      }
      .video-box {
        width: 560px;  /* fixed width */
        height: 315px; /* fixed height (16:9 ratio) */
        box-shadow: 0 4px 12px rgba(0,0,0,0.2);
        border-radius: 8px;
        overflow: hidden;
        background: #000;
      }
      .video-box iframe {
        width: 100%;
        height: 100%;
        border: none;
      }
    </style>
  </head>
  <body>
    <div class="video-box">
      <iframe src="https://www.youtube.com/embed/bH60T1PZg1c?autoplay=1&mute=1"
        allow="autoplay; encrypted-media"
        allowfullscreen>
      </iframe>
    </div>
  </body>
</html>
```

#### 自動再生動作の理解

* 埋め込みURL（/embed/VIDEO\_ID）は自動再生に必要です — 通常のwatch?v=リンクは機能しません。

* ?autoplay=1\&mute=1を追加すると、動画が自動的に再生され、ブラウザの自動再生ルールに準拠します。

* allow="autoplay; encrypted-media"属性は、自動再生の許可を付与します。

* .video-boxは固定の560×315pxサイズ（YouTubeのデフォルトの16:9）を使用するため、動画はフルスクリーンに引き伸ばされる代わりに収容されて表示されます。

* bodyはjustify-content: centerとalign-items: centerを備えたflexコンテナとして設定され、ビデオボックスを画面の正確な中央に配置します。

***

## パフォーマンスのヒント

* クリティカルなCSSをインライン化し、重いスクリプトを延期します。
* 画像を最適化します（`object-fit`を使用したサイズ指定の`<img>`）、可能な場合は最新のフォーマットを使用します。
* HTMLペイロードを簡潔に保ち、大きなbase64 blobを避けます。
* システムフォントを使用するか、`font-display: swap`でパフォーマンスの高いWebフォントをホストします。
* ファイルサイズを削減し、適切な解像度を使用します：
  * [Appleの画像ガイドライン](https://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/image-size-and-resolution/)
  * [Androidの画像概要](https://developer.android.com/guide/topics/graphics)
  * OneSignalは[imagekit.io](https://imagekit.io/)と提携関係はありませんが、最適化に役立つツールです。

### デバイス間でテスト

デバイスタイプ間で動作とレイアウトを確認するために、テストメッセージを頻繁に送信します。[Find & set Test Users](./test-users)を参照してください。

***

## FAQ

### バナースタイルのアプリ内から灰色の背景やドロップシャドウを削除できますか？

はい。上部/下部のバナーについては、SDKを更新して次のように設定します：

**iOS 5.1.5+**

```xml theme={null}
<key>OneSignal_in_app_message_hide_drop_shadow</key>
<true/>
<key>OneSignal_in_app_message_hide_gray_overlay</key>
<true/>
```

**Android 5.1.9+**

```xml theme={null}
<meta-data android:name="com.onesignal.inAppMessageHideGrayOverlay" android:value="true"/>
<meta-data android:name="com.onesignal.inAppMessageHideDropShadow" android:value="true"/>
```

### 他のプロバイダーのアプリ内テンプレートを再利用できますか？

はい。HTMLをエディターに貼り付けて、分析/アクションをOneSignal In-App JSメソッドに置き換えます。

### テンプレートがありません。どのように開始すればよいですか？

提供されたスターターテンプレートを使用するか、[利用可能なテンプレートを参照](./in-app-html-templates)してください。HTML/CSSの経験がいくらかあることをお勧めします。

### 必要なSDKバージョンは何ですか？

* **iOS:** 3.9.0+
* **Android:** 4.6.3+

古いSDKは、Center Modalレンダリングにフォールバックします。

### アプリ内メッセージはオフラインで機能しますか？

いいえ。メッセージは、コンテンツを取得してレンダリングするためにアクティブなインターネット接続が必要です。

***
