LINE Clova Desk の context.System.device.display 画面情報

## 概要

- [LINE の スマートスピーカー Clova Friends と Clova Desk の HTTP リクエストを調べる \- Qiita](https://qiita.com/niwasawa/items/9426f90a60a19a813c49) の HTTP リクエスト情報を元に、JSON の context.System.device.display フィールド (クライアントデバイスのディスプレイ情報を持っているオブジェクト) についてまとめる
- Clova Desk (ディスプレイ付きモデル)、Clova Friends (ディスプレイ無しモデル)、Clova Developer Center テストツールから実際に取得した display フィールドについて比較する

## Clova Desk の Custom Extension リクエストメッセージ全体 (LaunchRequest タイプ)

```json
{
  "version": "1.0",
  "session": {
    "new": true,
    "sessionAttributes": {},
    "sessionId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "user": {
      "userId": "UXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    }
  },
  "context": {
    "System": {
      "application": {
        "applicationId": "info.maigo.lab.helloclova"
      },
      "device": {
        "deviceId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "display": {
          "size": "custom",
          "dpi": 160,
          "orientation": "landscape",
          "contentLayer": {
            "width": 1024,
            "height": 552
          }
        }
      },
      "user": {
        "userId": "UXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
      }
    }
  },
  "request": {
    "type": "LaunchRequest",
    "requestId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "timestamp": "2020-02-04T21:50:41Z",
    "locale": "ja-JP",
    "extensionId": "info.maigo.lab.helloclova",
    "intent": {
      "intent": "",
      "name": "",
      "slots": {}
    },
    "event": {
      "namespace": "",
      "name": "",
      "payload": null
    }
  }
}
```

## 各デバイスのディスプレイ情報比較

Custom Extension リクエストメッセージの context.System.device.display フィールドの内容を比較する。

### Clova Desk (ディスプレイ付きモデル)

[Clova Desk \| LINE Clova公式サイト](https://clova.line.me/desk/) によると画面は「7インチ WSVGA （1024 × 600） タッチ付き」となっている。

- DPI: 160
- ディスプレイ装置の向き: 横方向
- コンテンツ表示領域: 1024 x 552 ピクセル

```json
"display": {
  "size": "custom",
  "dpi": 160,
  "orientation": "landscape",
  "contentLayer": {
    "width": 1024,
    "height": 552
  }
}
```

### Clova Friends (ディスプレイ無しモデル)

- ディスプレイ装置無し

```json
"display": {
  "size": "none",
  "contentLayer": {
    "width": 0,
    "height": 0
  }
}
```

### Clova Developer Center テストツール

- 現時点 (2020年2月5日現在) ではテストツールにディスプレイ的なものは見当たらないが、仮想的な値がセットされている

```json
"display": {
  "size": "l100",
  "orientation": "landscape",
  "dpi": 96,
  "contentLayer": {
    "width": 640,
    "height": 360
  }
}
```

## フィールド値の意味

[CEK APIのリファレンス \- Clova Developer Center β](https://clova-developers.line.biz/guide/CEK/References/CEK_API.md#message-fields) にあるディスプレイに関する情報をまとめる。

|フィールド名|フィールドの説明|
|---|---|
|size|ディスプレイ装置の解像度を示す値 (none, s100, m100, l100, xl100, custom)|
|dpi|ディスプレイ装置の DPI|
|orientation|ディスプレイ装置の向き (横方向: landscape, 縦方向: portrait)|
|contentLayer.width|ディスプレイでコンテンツが表示される領域の幅 (ピクセル: px)|
|contentLayer.height|ディスプレイでコンテンツが表示される領域の高さ (ピクセル: px)|

### size フィールド

- none: クライアントデバイスにディスプレイ装置がない
- s100: 低解像度(160px X 107px)
- m100: 中解像度(427px X 240px)
- l100: 高解像度(640px X 360px)
- xl100: 超高解像度(xlarge type、899px X 506px)
- custom: あらかじめ定義された規格ではない解像度

## 参考資料

- [Clova Desk \| LINE Clova公式サイト](https://clova.line.me/desk/)
- [CEK APIのリファレンス \- Clova Developer Center β](https://clova-developers.line.biz/guide/CEK/References/CEK_API.md)
- [LINE の スマートスピーカー Clova Friends と Clova Desk の HTTP リクエストを調べる \- Qiita](https://qiita.com/niwasawa/items/9426f90a60a19a813c49)