AWSマネージメントコンソールの縦長設定画面を一枚の画像に収めたい

AWSマネージメントコンソールの縦長設定画像を作れるようにする。
![full.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2697194/c96dac48-3572-628f-49fa-3d9172729610.png)

## 結論
Google Chromeのデベロッパーツールでhtmlとcssを操作する。

- ヘッダーおよびフッターの削除
- コンテンツのheight調整

## 背景
最近マネージドコンソールベースの手順書を作成することになり、
各リソースの設定画面の画像が必要となりました。

可能であれば1つの設定画面ページは1枚の画像に収めてしまいたいと考え、色々と試行錯誤しました。

## ステップ1 : 全画面スクリーンショット
縦長のWebページを一枚の画像として保存する方法はいくつかあるのですが、ここではChromeのデベロッパーツールの機能を使いました。
下手にいろんな拡張機能を入れたくなかったので。
（もしかしたら拡張機能とか入れたら以降の悩みも勝手に解決してくれるかも？）

具体的には「Capture full size screenshot」という機能を使います。
やり方は

1. 該当のサイトでデベロッパーツールを開く
1. 右上のメニューアイコンから「Run command」を選択
    - Windowsだと「Ctrl + Shift + p」、Macだと「Command + Shift + p」でショートカット
1. 「full」と記入すると「Capture full size screenshot」が表示されるはずなので、そちらをクリック
1. 画像が自動で保存される

すると便利、こんな感じに画像が保存されます
![before.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2697194/60569c19-a365-b43b-dfaf-f9a5da8965e5.png)

・・・うまくいかないですね

## ステップ2 : うまくいかない原因
さて、なぜダメなのでしょうか。
その理由は**コンテンツの高さがブラウザのウィンドウサイズに合わせて自動調整されてるから**です。

例えばさきほどの方法、今度は目一杯ブラウザを縦に伸ばして実行してみます。
すると以下のような結果になります。
![before_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2697194/e2df6b65-61e2-36a1-4d67-b0c431f10ff7.png)
さっきより表示範囲が増えましたね。

では次に、どこでその設定がされているのでしょうか。
結論、それは以下の`<dev class="_layout-wrapper_xxx" >`に対して設定されています。
※ xxxは設定画面によって違うようです。
※ 必要なもの以外は「...」として省略しています。
```
<html>
    <body>
        <div id="h" ...>
            ...
        </div>
        <div id="cc">
            <div id="c">
                ...
                <div class="awsui" ...>
                    <div class="_root_xxx ...">
                        <div class="_layout-wrapper_xxx" ...>
                            ...
                        </div>
                    </div>
                </div>
            </div>
            ...
        </div>
        <div id="f">
            ...
        </div>
```

この`<div class="_layout-wrapper_xxx">`に
```
height : calc((100vh - 41px) - 29px)
```
が設定されているが故に、コンテンツはウィンドウサイズに依存しているのです。

ちなみに

- `<div id="h">`はヘッダー
- `<div id="f">`はフッター

となります。

## ステップ3 : htmlを弄る
ステップ2で理由がわかったので、その値を変更してしまいましょう。
デベロッパーツールでは、現在表示されているコンテンツについてcssを自由に操作することができます。
![developer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2697194/20fcd6a7-0b21-8ed2-3280-716a7dc9bd41.png)

なのでここのheightを変更してしまいましょう。

### ヘッダーとフッターを削除する
が、その前に不要なヘッダーとフッターを削除します。
ヘッダーはともかくとして、フッターはそのままにしておくと以下のようにコンテンツを覆ってしまいます。![footer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2697194/ac738cce-742b-4dba-ea4a-ee6a8cdce0ed.png)

ステップ2で述べたようにヘッダーおよびフッターは`<div id="h">`と`<div id="f">`で表現されているので、
デベロッパーツールからこれらを選択し、「Delete element」から削除してしまいましょう。
![delete.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2697194/13fc304d-a5bf-ecc0-cdb5-969b1611d213.png)

※ ヘッダー、フッターを消した後は、一度ウィンドウサイズを変更した方がいいかと思います。（ちょっと変えて戻すで大丈夫です）

### heightを調整する
ヘッダー、フッダーも消したので、改めて`<div class="_layout-wrapper_xxx">`のheightを変えます。
`height : calc((100vh - 41px) - 29px)`を適当に`height : 3000px`とかに変えてしまいましょう。

基準としては、右端にあるスクロールバーの数が2つになれば大丈夫かと。

- BEFORE
  ![bar.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2697194/68b43dce-6215-d241-f19c-40f5598a1e2d.png)

- AFTER
  ![bar2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2697194/f19ce013-3fd0-408e-8c58-73df6bde3bc0.png)

## ステップ4 :  スクリーンショット & トリミング
ここまでくると後はステップ1で説明した通りに全画面スクリーンショットを行い、
不要な部分はトリミングをすれば完成です。

## まとめ
設定画面によってhtml要素名や配置に差異があったりするかもしれませんが、VPC関連のリソースもこの方法でうまく行きました。

普段は基本的にTerraformなどでリソース管理をしており、コンソール画面を触ることはないですが、
初学者の方へのハンズオンなどの際にちょっと役立つのではないでしょうか？

何かしらで参考になれば幸いです。