ChatGPTに技術記事を校正してもらう

## 概要
QiitaやZennで技術ブログを書く時に、他人にレビューしてもらうほどではないけれど自分でチェックするのはめんどくさいな、、、という時にChatGPTに簡単なチェックをしてもらうようにしました。

## プロンプト
使用するプロンプトは以下の通りです。

---
あなたは次の役割を持っています。

- 例：○○のプロフェッショナル

あなたは以下のテーマで技術記事を執筆しようとしています。

- 書きたい記事のテーマ

また、記事は以下のような読者を想定しています。

- 例：○○エンジニア

次に提示する文章を読み、文法、表現、語彙などにおいて改善できる点を箇条書きで指摘してください。指摘する際には、以下の観点で指摘してください。

- テーマに沿った内容の適否
- 示された役割を持つエンジニアの視点における技術的な正確性の担保
- 内容の整合性の担保
- 内容と合致した段落の構成
- 重複する内容の排除
- 適切な接続詞の使用
- 不明瞭な説明の補填
- 抽象的な表現に対する具体例の提示
- 誤字、脱字の修正（文中の箇所を前後の単語を含めて提示）

また、作成した改善点をもとに、具体的かつ読みやすい文章の代替案を作成してください 。必要な場合はオリジナルの内容を文章に追加してください。内容を追加する際の行数は問いません。
以下が対象の文章です。

---

## 実験

実際に文章を入力してみます。今回はIaCに関する文章で実験してみます。プロンプトの前半は以下のように設定します。

---
あなたは次の役割を持っています。

- クラウドエンジニア
- DevOpsエンジニアのプロフェッショナル
- Kubernetesのプロフェッショナル
- IaCのプロフェッショナル

あなたは以下のテーマで技術記事を執筆しようとしています。

- IaCを使用したパブリッククラウドのインフラ管理手法の変化について

また、記事は以下のような読者を想定しています。

- IaCに馴染みのない技術者
- インフラエンジニア
---

文章は次のものを使用します。

---
IaCツールには様々なものが存在しますが、大きく以下のような三種類に大別されます。

1. インフラの状態をどのように達成するかを手続き的に記述するツール（例: Ansible）
2. 望む最終的な状態を宣言的に記述するツール（例: Terraform, AWS CloudFormation）
3. 汎用的なプログラミング言語を用いてコードを記述するツール（例: Pulumi, AWS CDK）
  
広義のIaCではシェルスクリプト、Dockerfile、Kubernetesのマニフェストファイル、Helmチャート等も含める場合もありますが、近年のパブリッククラウド上での開発という文脈においては、上記のようなクラウドプロバイダの提供するリソースを作成するAPIコールを代替するものをIaCと呼ぶケースが多いです。

---

どれくらいプロンプトに挙げた観点で修正してもらえるかを実験するために、上の文章を以下のように改造して壊滅的な状態にします。

---
しかし、IaCツールには様々なものが存在しまｓが、大きく以下のような五種類に大別されます。

1. インフラの状態をどのように達成するかを宣言的に記述するツール（例: Ansible）
2. 望む最終的な状態を手続き的にご記述するツール（例: Terraform, AWS CloudFormation）
3. 汎用的なプログラミング言語を用いてコードを記述するツール（例: Pulumi, AWS CDK, Bicep）

上に挙げたように、IaCツールは五種類あります。
はじめに、広義のIaCではシェルスクリプト、Dockerfile、Kubernetesのマニフェストファイル、Helmチャート等も含める場合もありますが、近年のオンプレミス上での開発という文脈においては、上記のようなクラウドプロバイダの提供するリソースを作成するAPIコールを代替するものをKubernetesと呼ぶケースが多いです。

また、財務省が発表した「2022年度国の財務書類」によると、2022年度末の日本経済の債務超過は702兆円で、前年度末から15兆円拡大しています。﻿
内閣府によると、日本経済は2012年11月を底に緩やかな回復基調が続いており、2015年度1.4％、2016年度1.2％と持ち直しています。﻿
日本は先進国かつG7、OECDの一員であり、先進国の中では米国に次ぐ第2位の経済力及び人口を誇ります。貿易面では世界第4位の輸出国であり、世界第4位の輸入国です。また経済複雑性指標（ECI）において日本は1984年以降、一貫して世界首位です。﻿

---


ちなみにこの文章は以下の部分がおかしいです。

1. 接続詞がおかしい
2. 誤字、脱字がある
3. 紹介するツールは五種類ではなく三種類
4. Ansibleは宣言的ではなく手続き的
5. Terraform, AWS CloudFormation手続き的ではなく宣言的
6. BicepはDSLを使うツール
7. ``上に挙げたように、IaCツールは五種類あります。``の文章は被るので不要
8. ``近年のオンプレミス上での開発という文脈においては``の部分はオンプレミスではなくクラウド
9. ``APIコールを代替するものをKubernetes``と書いてある部分はKubernetesではなくIaC
10. 最後の段落の文章が全く関係ない

どこまで気づいてくれるでしょうか。結果は次のようになりました。

---
"しかし、IaCツールには様々なものが存在しまｓが"という部分は誤字があります。"しまｓが"を"しますが"に修正するべきです。
"大きく以下のような五種類に大別されます。"とありますが、具体的に五種類のツールが挙げられていません。また、その後の文章で「IaCツールは五種類あります」と再度言及していますが、これは重複しているため削除すべきです。
"望む最終的な状態を手続き的にご記述するツール（例: Terraform, AWS CloudFormation）"とありますが、TerraformやAWS CloudFormationは宣言的なツールであり、手続き的なツールとしての説明は誤りです。
"上記のようなクラウドプロバイダの提供するリソースを作成するAPIコールを代替するものをKubernetesと呼ぶケースが多いです。"とありますが、Kubernetesはコンテナオーケストレーションツールであり、この説明は誤りです。
"財務省が発表した「2022年度国の財務書類」によると、2022年度末の日本経済の債務超過は702兆円で、前年度末から15兆円拡大しています。"以降の文章は、IaCやDevOps、インフラ管理といったテーマとは関連性がないため、削除すべきです。

改善案:

IaCツールには様々なものが存在しますが、大きく以下のように分類されます。

インフラの状態をどのように達成するかを宣言的に記述するツール（例: Ansible）
望む最終的な状態を宣言的に記述するツール（例: Terraform, AWS CloudFormation）
汎用的なプログラミング言語を用いてコードを記述するツール（例: Pulumi, AWS CDK, Bicep）

また、広義のIaCではシェルスクリプト、Dockerfile、Kubernetesのマニフェストファイル、Helmチャート等も含める場合もあります。近年のオンプレミス上での開発という文脈においては、上記のようなクラウドプロバイダの提供するリソースを作成するAPIコールを代替するものが主流となっています。

---

2、3、5、7、9、10の部分については指摘してくれました。1、4、6、8の部分については指摘されていませんでした。惜しい。
ちなみに、複数回実行すると1、4、8の部分を指摘してくれた時もありました。しかし、何回やっても6の部分については指摘されませんでした。Bicepがマイナーすぎるからでしょうか？

## まとめ
今回使ったような誤字脱字まみれで荒唐無稽な文章を世に出す人はそうそう存在しないと思いますが、エディタ上でLinterやFormatterを使ってプログラムの自動整形するようなノリで自然言語の文章を校正したり、雑に書きなぐった文章をまともな文章に書き直す分には役に立ちそうです。