結局 og:image って正方形に切り取られることもあるの？調べてみました！2019

## og:image とは？
Twitter とか Facebook で URL をシェアした時になんか良い感じに画像が表示されるアレです。
この記事では詳細は省きます。
参考 : https://developers.facebook.com/docs/sharing/webmasters/?locale=ja_JP

横1200px・縦630px で作成するんですが、**サービスや環境によっては正方形に切り取られてしまう**ということがあります。
そのため、中央の 630px 四方に必要な情報を配置しておいて、それ以外の領域には切り取られてもいい情報や装飾のみを配置する…ということを最近してたんですが、正直「おかしくない！？！？！？」と疑問に思ってました。
もしかしたら最近はちゃんと横長で表示されるようになってるのでは？と思ったので、実際にいろんな環境で検証してみました。

今回使う感じはこんな感じです。
一応中央 630px に情報を詰めてあります。
![ogp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/5eb18d5a-4662-1917-53b5-4d5d36289eb5.png)

### 例
これをこうして
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/874233d4-0e3b-7188-423e-9f627398d3e6.png" width=480px>
こうじゃ
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/57e419dd-db6d-dbac-0546-03ea9bca7f27.png" width=480px>

## 指定の仕方
HTML の `<head>` 内で指定します。
og:image 以外にも og:title とか og:description とかもあって、そういうのも設定しておくとシェアする時の情報になります。

## 今回作ったサンプル
og:image は絶対パスで指定する必要があるみたいです。指定してある URL については後述します。

```html
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <meta name="robots" content="index, follow">
    <title>This is a test site for og: image</title>
    <meta name="description" content="This is a test site for og: image">
    <meta name="keywords" content="ogp test">

    <meta property="og:type" content="article">
    <meta property="og:title" content="OGP TEST">
    <meta property="og:description" content="This is a test site for og: image">
    <meta property="og:url" content="This is a test site for og: image">
    <meta property="og:image" content="https://ogptest.serveo.net/ogp.png">
    <meta property="og:site_name" content="OGP TEST">
    <meta property="og:locale" content="ja_JP">
    <meta property="fb:app_id" content="">

    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:site" content="OGP TEST">
  </head>

  <body>
    This is a test site for <strong>og:image
  </body>
</html>
```

今回は横長サイズの画像を表示させたいので、twitter:card には `summary_large_image` と指定してあります。

## 公開の方法
これだけのためにいちいちレンタルサーバ借りてくるのも面倒なので、お手軽にやってみました。
まずは ruby で HTTP サーバを立てます。

```bash
$ ruby -run -e httpd . -p 8888
```

これを html ファイルと同じフォルダで実行すると `http://localhost:8888` でアクセスできるようになります。

そして次はこれを Web に公開します。
[ngrok](https://ngrok.com/) とか [serveo](https://serveo.net/) といった、コマンドで一発で公開できる大変便利なものがあるのですが、後者の serveo をさらに使いやすくしてくださったものがあるので、今回はそれを使おうと思います。（田中みそさんありがとう！）
https://github.com/miso-develop/serveo

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">「serveo」って覚えてますか？<br>ngrokよりすごいトンネリングツールと8月頭に話題になったけど、接続すぐ切れちゃうから一瞬で消え去ったやつ。<br><br>あれを切れなくしたやつ作りました！<br>↓のコマンドでインストールなしで実行できます！お試しあれ！<br><br>npx miso-develop/serveo &lt;subDomain&gt; &lt;port&gt;</p>&mdash; 田中みそ@LINE API Expertになりました！ (@miso_develop) <a href="https://twitter.com/miso_develop/status/1171815149755228160?ref_src=twsrc%5Etfw">September 11, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

```bash
$ npx miso-develop/serveo ogptest 8888
```

このコマンドを叩くと `https://ogptest.serveo.net/` でローカルの内容が公開されます。便利！
og:image の URL にはこれを指定しました。
終了する時はこのコマンドを終了するだけなのでそれも簡単。

この URL を使っていろんな環境で検証していきます。

## 検証
### [Twitter](https://twitter.com/)
#### PC
⭕️OK
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/57e419dd-db6d-dbac-0546-03ea9bca7f27.png" width=480px>

#### スマホ
⭕️OK
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/5c7e038c-9ac3-3467-896a-f28e6e1cbb44.png" width=480px>

### [Facebook](https://facebook.com/)
#### PC
⭕️OK
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/26de9de3-3e76-15e1-37cf-0bf63f292229.png" width=480px>

#### スマホ
⭕️OK
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/d768fd92-d3d1-a02f-a4ca-363a28c3a84c.png" width=480px>

### iPhoneのメッセージ
#### PC
⭕️OK
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/e1e35024-8640-3a4b-308e-cca3557fec35.png" width=480px>

#### スマホ
⭕️OK
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/3ee5ac22-931c-c13e-944e-502ff5f16c09.png" width=480px>

### [LINE](https://line.me/ja/)
#### PC
❌NG
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/4aad647b-a2ae-5ca2-3802-1cb8259935d2.png" width=480px>

#### スマホ
❌NG
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/3929d4ce-0dae-740e-c36e-3748c4a5b5d8.png" width=480px>

## [Slack](https://slack.com/intl/ja-jp/)
### PC
⭕️OK
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/3fb8e26d-0b09-bf70-b1d5-663118f346c0.png" width=480px>

### スマホ
⭕️OK
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/9a26edc1-78d0-cbc4-db56-4b80d9469139.png" width=480px>

## [discord](https://discordapp.com/)
### PC
⭕️OK
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/83cfa532-a948-3acc-4343-765d0f44d9be.png" width=480px>

### スマホ
⭕️OK
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/510e8a20-501b-371d-6a3a-2a1ea92a7a54.png" width=480px>

## [typetalk](https://www.typetalk.com/ja/)
### PC
❌NG
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/e9e93026-5d21-d573-d99b-809549f39572.png" width=480px>

### スマホ
❌NG
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103344/73197dd9-7cb1-94a2-d9d4-d34040eb05ab.png" width=480px>

## その他
note、はてなブログでは、URL を貼っても og:image が表示されませんでした。

## 結果
|サービス|PC|スマホ|
|---|---|---|
|Twitter|⭕️|⭕️|
|Facebook|⭕️|⭕️|
|iPhoneのメッセージ|⭕️|⭕️|
|LINE|❌|❌|
|Slack|⭕️|⭕️|
|discord|⭕️|⭕️|
|typetalk|❌|❌|

というわけで、**LINE と typetalk だけが正方形に切り取ってしまう** ということが分かりました。
とはいえ、個人的には、どちらもクローズドなサービスですし、かなり小さめの画像に切り取っていてあまり情報を伝えるための領域という感じもしないので、別にそこまで問題ではないと思いました。
それよりも、オープンに公開される Twitter や Facebook での表示でちゃんと表示されることが一番大事、という考えなので、**無理に中央 630px に情報を収める必要はないし、正方形に切り取られる場合でも大して問題はない** というのが自分の中での結論です。
とは言え、正方形に切り取られた場合でもサイトの雰囲気やテイストは分かるように工夫しておくのがベストだと思います。