ChatGPTを使ってTech Blog執筆を助けてもらおう

# はじめに

Tech Blogの執筆はエンジニアのアウトプットの一つです。
自分の持っている知見を共有できるだけでなく、自分自身の実績としてポートフォリオ作成時にも役立つというメリットがあります。

しかし案件が多忙、プライベートの時間があり執筆できないといった都合によりなかなかアウトプットできていない人がいる現状もあります。
今回はChatGPTを活用してTech Blogの執筆を支援してもらおうと思います。

:::note info
ChatGPTに手助けをしてもらうことが目的です。全文をChatGPTで記載するといったことは今回実施しません。
:::

# どこに活かすといいか

私としては、以下の項目に関してChatGPTを利用すると、作成するブログがより洗練されると思います。

- よりキャッチャーなタイトルを考えてもらう
- 全体の章立てをブラッシュアップしてもらう
- 全文記載した際の添削をしてもらう

また質問する際は、ChatGPTに複数案出して貰う形で行います。
例えば3案確認して、よかった1つを深掘りすることで「自分が思いつかなかったいいもの」が出てくるようになるため、ブログ自体のクオリティも上がります。

# 実際にブログ例を元に修正してもらおう

今回は下記テーマのブログを書くとします。

- ブログタイトル（仮）
    - Identity Aware-Proxyを利用してVMインスタンスに接続してみた
- 内容
    - Google CloudのサービスであるIdentity Aware-Proxyを利用してサービス接続を実施する方法を共有
    - 簡単なTipsも紹介

この内容をベースに、ChatGPTに質問することでより良い内容に仕上げていきましょう。

## よりキャッチャーなタイトルを考えてもらう

タイトル案は仮ですが、いまいちイケていません。
タイトルにセンスを加えるのは難しいと感じる人もいると思いますので、ここはChatGPTに手伝ってもらいましょう。

質問する文章は下記の通りのフォーマットです

```
下記ブログタイトルと記載予定内容でTech Blogを記載します。ブログタイトルをよりたくさんのユーザに見てもらうことも踏まえたタイトルにしたいです。タイトル案を3案上げてください

- ブログタイトル
    - [仮置きタイトルを記載]
- ブログ記載予定内容
    - [記載する内容を箇条書きで簡単に記載]
```

実際にやり取りした結果は次の通りです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283423/9ede53ce-92af-fbe7-a07f-027a66afc9b0.png)

いいタイトル案が出てきました。
では案2をベースで深掘りしてみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283423/71ae753a-4774-c9fe-1f0b-25a5a869de78.png)

このように自分がいいと思ったタイトルを更に深ぼることでよりよい内容にブラッシュアップすることができます。

今回は共有された「VMインスタンスのセキュアなアクセスに挑戦！Identity Aware-Proxyの使い方と実践的なヒント」をタイトルとしましょう。


## 全体の章立てをブラッシュアップしてもらう

次は章立てを考えましょう

今回はIdentity Aware-Proxyを利用することを目的としているため、最低限下記の章立ては必要となります

- Identity Aware-Proxyとは
    - Identity Aware-Proxyの概要を記載
- Identity Aware-Proxyの利用ユースケース
    - 利用する際のユースケースイメージを記載
- Identity Aware-Proxyの利用方法
    - サービスの利用方法を記載
- 利用時の注意事項
    - 利用時の注意事項を記載

この流れであれば最低限ブログの内容を満たすものとなります。
しかし、他に必要な章立てや記載した方がいい内容があるかもしれません。自分で考えるのもいいかもしれませんが、ChatGPTに確認してもらって提案してもらいましょう。

質問する文章は下記の通りのフォーマットです

```
Tech Blog「[先程設定したタイトル]」を記載します
ブログ内の章立てとして、追加した方がいい内容、不足している内容があれば教えてください

- [想定する章立て内容を記載]
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283423/06c73926-4685-fe1b-cbbd-9f24b2f50cf7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283423/67281993-5ee7-ab49-8f69-a1df37236815.png)

章立て内容としては問題なさそうです。
追加の内容や不足している内容もアナウンスしてくれるため、ブログ記載時に「この角度からの記載はぬけもれないよな？」といったことを意識できます。

## 全文記載した際の添削をしてもらう

では全文記載したとしましょう。Qiitaであれば限定公開URLの発行が可能となりますが、ChatGPTはURL内に記載された文章を添削するといったことは（デフォルト設定であれば）できないです。
そのため、作成された文章全文をChatGPTに投げる必要があります。

今回投げる文章は以下のとおりです（最低限の内容を記載しています。画像に関しては省略しています）

<details><summary>タイトル：VMインスタンスのセキュアなアクセスに挑戦！Identity Aware-Proxyの使い方と実践的なヒント</summary>

Google CloudにはIdentity Aware-Proxyと呼ばれるサービスがあります。このサービスを利用することで、VMインスタンスへのアクセスをセキュアに実施することができます。
今回は利用方法と実際の設定、注意事項について共有します

# Identity Aware-Proxyとは

Identity Aware-Proxy（以下IAP）はGoogle Cloud上で利用可能なプロキシサービスとなります。
IAMで許可されたユーザはIAPを利用することにより、Google Cloudが指定したIPアドレスを経由してVMインスタンス等にアクセスすることが可能となります。
TCP転送と呼ばれる設定を実施することで、パブリックIPアドレスを付与されていないVMインスタンスに関しても専用線やVPNを利用せずにアクセスが可能となります。

# Identity Aware-Proxyの利用ユースケース

次のユースケースでIAPは活躍します

・IAMベースでVMインスタンスの接続を制御したい
・不特定多数の通信経路がある、FWルールを都度変更する必要がある
・VPNの導入コストは厳しいが、セキュアな通信を実現したい
・外部IPアドレスを持たないサーバに接続したい

# Identity Aware-Proxyの利用方法

IAPを利用する上での必要な設定は次のとおりです

・Identity Aware-Proxy APIの有効化実施
・対象ユーザのIAM権限付与実施
・Identity Aware-Proxy利用時のFW設定
・接続確認

## Identity Aware-Proxy APIの有効化実施

Google Cloudにログインし、[セキュリティ] → [Identity Aware-Proxy]を選択します。
初期状態ではAPIが有効化されていないため、画面上にある[APIを有効化]を選択してAPI有効化を実施します。


## 対象ユーザのIAM権限付与実施

次にIAMで権限付与を行います。

[公式サイト](https://cloud.google.com/iap/docs/using-tcp-forwarding?hl=ja#grant-permission)に記載されている通り、下記権限の付与が必要となります。

- roles/iap.tunnelResourceAccessor（IAP で保護されたトンネル ユーザー）
- roles/compute.instanceAdmin.v1 （Compute インスタンス管理者（v1）） 

## Identity Aware-Proxy利用時のFW設定

IAP利用時にはFWの設定が必要になります。

[公式サイト](https://cloud.google.com/iap/docs/using-tcp-forwarding?hl=ja#create-firewall-rule)に記載されている通り、FWルールの設定を行います。
公式サイトを参考に、下記コマンドを実施します。今回は対象をSSHポートである22番のみとします。

```
## defaultネットワークにIAP用FWルールを作成
gcloud compute firewall-rules create allow-iap \
  --direction=INGRESS \
  --network=default \
  --action=allow \
  --rules=tcp:22 \
  --source-ranges=35.235.240.0/20
```

## 接続確認

Compute Engineの対象VMインスタンスにある「SSH」を選択し、接続を行います。
設定が正常にできていれば問題なくアクセスできます。


# 利用時の注意事項

IAPはIAMで権限制御をするため、IAPを利用して接続ができない！といった場合は、
- 権限が正しく付与されているか
- FWの設定が正しいか
といった点をご確認ください

</details>


こちらの記事をChatGPTに添削してもらいましょう。

質問する文章は下記の通りのフォーマットです

```
Tech Blog「VMインスタンスのセキュアなアクセスに挑戦！Identity Aware-Proxyの使い方と実践的なヒント」を記載します
ブログの本文を記載しましたが、文章の重複表現や言葉がおかしくないか添削してください。
添削フォーマットは以下の通りで出力してください

フォーマット(XXは適宜変更して回答してください。回答は<ChatGPT_ANS>に記載してください)
指摘件数：XX件
XX件目
- XX行目：
 - 指摘内容
   <ChatGPT_ANS>
 - 指摘理由
   <ChatGPT_ANS>
 - 改善内容
   <ChatGPT_ANS>

ブログの本文
--以下本文内容を記載--
```

実際にやり取りした結果は次の通りです（一部長いため中略表記となります）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283423/eccf7783-93ab-b89d-0053-a456bca75cba.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283423/74bf1235-acee-d667-d80e-2a23387bdd9b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283423/b1bf5757-8418-0645-b38f-89bf102bb38f.png)

このように、簡単に文章を添削してくれます。
添削結果を受けて、必要に応じて修正することでブログ文章がよりよくなります。

# 最後に

今回はChatGPTにブログ執筆を手助けしてもらう目的で作成しました。
他にもより良い活かし方はありますので、ぜひ試してみてください。