Excelマクロで仕事効率化（初心者向け）(5) | ChatGPTの利用


<img width=A%><img width=100% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/fe096a61-b3d9-9207-592d-f922d2c18b26.jpeg">

# はじめに

　実際にVBAマクロのプログラミングをして、ChatGPTに質問を投げて、それが返ってくるツールを作ろうと思います。
これ自体は、`ChatGPT`や`Copilot`(Microsoft社)のWebブラウザからでも同様のことができます。
　ただ、今後ChatGPTのAPIから結果を受け取り、その結果を基に例えば自動的に計算表を作成したり、ファイルを自動的にメール送信するなど、幅広い「自動化」を実現することができます。
　それでは、プログラミングを進めて行きます！と、言いたいところなのですが、その前に基本的なことを抑えておく必要があります。今回はプログラミングの前に押さえておくべき基本的なことについて説明します。

# 押さえておくべき基本的なこと
以下、押さえておくべき基本的なことです。
これらの項目についての詳細は、次の章以降で説明します。


| 項目 | 説明 |
|:-|:-|
| API  |  API（アプリケーションプログラミングインターフェース）とは、異なるソフトウェアが互いに通信し、機能を共有するためのルールやプロトコルの集合です。例えば、天気アプリが天気情報を取得するために気象データ提供サービスのAPIを利用します。APIは、開発者が既存の機能を簡単に利用できるようにし、新しいソフトウェアの開発を効率化します。 |
| JSON  | JSON（JavaScript Object Notation）とは、データを軽量かつ人間が読み書きしやすい形式で表現するためのフォーマットです。主にデータの送受信や保存に使われます。JSONはキーと値のペアで構成され、配列やオブジェクトをサポートします。例えば、ウェブアプリケーションがサーバーとデータをやり取りする際によく使用されます。  |
| ChatGPT API  |  OpenAIが提供するChatGPTモデルを使った対話や自然言語処理をアプリケーションに統合するためのインターフェースです。このAPIを利用することで、開発者は自分のアプリやサービスにChatGPTの機能を組み込むことができます。例えば、カスタマーサポートの自動応答、チャットボット、言語翻訳などの機能を実装できます。 |

いかがでしょうか？これはChatGPTに質問した結果をそのまま載せたものなのですが、何となくは分かるかもしれませんが、とにかく言い回しがややこしいですね。
次の章からは、これら３つについてもう少し噛み砕いて説明をします。

# APIとは

APIとは、装置間でやり取りするためのルールです。APIにはいろいろなものがあるのですが、ここでは「httpsプロトコル」について説明をします。「httpsプロトコル」は、Webブラウザにhtmlファイルの情報などを表示させたりする際に使用しており、APIでは装置間の会話で利用しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/3d531e8c-99a9-a7c0-9231-a16cd3f788ce.png)


具体的に図で示します。左のシステムから右のシステムに対してリクエストを送信します。これは、LANケーブルや無線LANを通って右のシステムに到達します。

### リクエスト送信
ここでは、送信リクエストはhttpsとして説明します。
httpsは`ヘッダー部分`と`ボディ部分`に分かれています。

##### ヘッダ

```html:
https://www.****.co.jp/?user_name=user&age=20
````

ヘッダは上記のような文字列で、ブラウザ上部のURL表示ボックスでも見たことがあるかと思います。
`www.****.co.jp`は`FQDN`と言って、一般的に言われている「ドメイン名」の一種で、サーバを特定するアドレスと思ってもらえばよいです。
また、その右部に`?user_name=user&age=20`とあります。これは「パラメータ」と言って「?」より右に記載されます。「パラメータ名」と「パラメータ値」が「=」でつながれており、それがセットになっています。ここでは「ユーザ名はuserで、年齢は20歳」ということになります。

##### ボディ
図に`BODY`という記載があります。これは`ヘッダ`と一緒にLANを伝わってデータが送られるのですが、人が表面的には見ることができません。右のシステムではリクエストを受ける際に、`BODY`の情報を`Cookie`など、人が直接見られないように格納します。
httpに対してhttpsはセキュアな通信であり、httpsの場合`BODY`部分は暗号化され、第三者に盗み見られることは無くなります。ですので、重要な情報はこの`BODY`の中に入れて送信することが多いです。

### レスポンス受信
左のシステムは、レスポンスを受信します（図では下部の`JSON`が該当）。この時後ほど説明しますが、`JSON形式`で受け取ることになります。「グラフ構造」（樹形図やトーナメントのようなツリー構造）が得意で、親子関係を上手く表現することができます。一方、CSVファイルやデータベースでは表形式であり、「グラフ構造」を表見するのは不得意です。

# JSON とは
先ほどの図の中にある`JSON`のサンプルを用いて図式化します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/25f5769a-c4ea-1018-2289-9ae2bb694426.png)


左側の`JSON`形式のデータを、右側に模式化しています。
先ほどお伝えした通り、`JSON`は「グラフ構造」になっていることが分かります。
このデータは「名前がJohn Doeで、30歳、学生ではなく、成績はまずまず、それから住所はAnyton市の123メインストリートでzip番号が12345」といった感じでしょうか。


# ChatGPT API を利用する
次に`ChatGPT API`の利用がでるようにするための操作について説明します。
CHatGPTのAPIを利用できるようにするには、ChatAPTのサイト( https://platform.openai.com/ )からユーザ登録とクレジットカードの登録をする必要があります。それが完了して初めて利用することができます。

以下に、その手順を示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/c4eda9ca-8ecc-00a9-4f64-8036bbae8c71.png)
ChatGPTのプラットフォーム画面が表示されたら、右上の`Sign Up`ボタンを押下します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/cece97e5-3378-7bf4-02bb-be2efee8fc3c.png)
「アカウントの作成」という画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/d5ba6923-3d99-7366-ae6c-fe1892ff7fdd.png)
この画面にメールアドレスとパスワードを入力します。パスワードは「長さ12文字以上」が必要です。「続ける」ボタンを押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/7bcd9800-f065-7625-55ad-f0304e1bfd20.png)
「メールを検証する」画面が表示されます。登録したメールアドレスにChatGPTからメールが届きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/76f294da-49be-f36a-cb53-df740a56f3af.png)
届いたメールを開き、「メールアドレスの確認」ボタンを押下します。
これで電子メールアドレスが完全に紐づけられました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/770f4836-7775-e246-9f43-51abb5eaa0e0.png)
「ご自身についいて教えてください」画面が表示されるので、「氏名」「組織名（オプション）」「生年月日」(DD/MM/YYYY形式)を入力し、「同意する」ボタンを押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/a5bc7d2f-e9b9-456e-98e7-63d8b3183ed7.png)
プラットフォーム画面に戻りますので、右上の「Dashboard」ボタンを押下してください。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/0f9bdd32-ea93-a039-dd88-29d764a6b81f.png)
そうすると、管理画面が出てきますので、左側の「API keys」ボタンを押下して、APIを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/7a055204-4afe-a922-bb61-3646cf77a96b.png)
そうすると「API keys」画面が表示されます。右上の「Start verification」ボタンを押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/c9e85d02-3dc5-2286-76b2-95a8e0f6626e.png)
電話番号入力画面が表示されるので、電話番号を入力します。ショートメールの返信が受けられるように、スマートフォンの電話番号を入力します。入力は「090-・・・」ではなく最初の「0」を省いて、「90-・・・・・」と入力するようにしてください。
「Send code」ボタンを押下すると、スマートフォンのショートメールにコードが届きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/ea06d4ff-e6c4-bd77-e8cf-c416bee2ee02.png)
届いた6桁のコードを入力します。すると次の画面に遷移します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/578108fc-6d07-2eda-b5b1-bc5f2f72f0fd.png)
「A note on credits」という画面が表示されます。「Continue」ボタンを押下すると実際にクレジットカード情報を登録する画面に移ります。ここではセキュリティ上画面を掲載するのは控えました。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/4b2b26ea-4cd6-af58-bba6-ece105dfb506.png)
クレジットカード情報を登録すると、「Create new secret key」画面に遷移します。
上段に`API key`の名前を入れてください。下段は「Default project」のままで結構です。
「Create secret key」ボタンを押下して、`API key`を作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/f722ced7-5ec0-abbb-252f-b0af2b561524.png)
「Save your key」画面に`key`が表示されます。(ここでは`sk-proj`から始まる文字列)
「Copy」ボタンを押下して、何か別のテキストファイルなどに張り付けて保存しておきます。
そうしなければこの`key`は二度と確認することができなくなります。
最後に「Done」ボタンを押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/7120ec83-71e4-bf8e-685e-ee309c05ba6f.png)
赤枠で示した通り、`API key`が作成されていることが分かります。
これで、Excelマクロで`API key`を利用することができるようになります。

# おわりに
今回はExcel VBAマクロでChatGPT APIを利用できるようにするため、ChatGPTにメールアドレス・携帯電話番号、それからクレジットカード情報を登録し、`API key`が作成されるところまで確認をしました。
次回は、VBAマクロのプログラミングをして実際に生成AIと会話をしていきます。