ChatGPTに色々な角度から質問してみる

# はじめに
最近、何かと話題の[ChatGPT](https://chat.openai.com/)を触ってみようと思い試してみました。私は[Vantiq](https://vantiq.co.jp/)という会社で働いており、この会社は社名と同じVantiqという名前のサービスを扱っています。何気なくChatGPTに「Vantiqって何？」と聞いてみたところ、ちょっと知ってる人が書いたのか？と思うような回答が返ってきました（日本語でも英語でも…）。
![whatisvantiq.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556201/da4f4f12-40c2-72d8-f5a8-277d95ae8949.gif)
すごいと思ったので戯れてみました。色々な角度から質問をしてみればどういう癖があるのかわかるかなと思いましたので色々聞いてみました。GIFも混ぜているので雰囲気が伝わるかと思います。

:::note info
この記事はChatGPTでどんなことができるのか、さっと知りたい人向けです。
:::

:::note info
GIFは雰囲気を感じていただく用で、長いものもあるので飛ばしていただいて構いません。結果はテキストでその後に記載してあります。
:::

# 聞いてみた質問
1. **「ChatGPTって何？」** 
    - 小手調べがてら
2. **「k8sの各Podのメモリ上に保持させた値を集める関数を作りたいんだけど名前は何がいいと思う？」**
    - 命名に迷った時相談に乗ってくれるか
3. **「各サーバーのログを収集する関数の名前の候補を教えて？」**
    - 命名に迷った時相談に乗ってくれるか2回目（一つ前が意地悪だったのでもう一度）
4. **「3桁の数字かどうか判断する正規表現を教えて」**
    - 開発中に聞きたくなりそうな質問をしてみる
5. **「Azure Event Hubsのパフォーマンスを最大化するのに必要なことは何？」**
    - Google先生に聞いてもちょっとすぐ出てこなさそうなことに答えてくれるか
6. **「IoTのプロジェクトって何で失敗するの？」**
    - ふわっとした質問をしてみる
7. **「AWS Lambdaと Azure Functionsはどっちがいいの？」**
    - 前提条件も何もなしに雑な質問をしてみる
8. **「リアルタイム複合イベント処理に関するプレゼンの目次を考えて」**
    - 話の構成を考えるのが大変なので助けて欲しい

# ChatGPTを触ってみる
まず、使い方ですが[https://chat.openai.com](https://chat.openai.com/)にアクセスして、OpenAIのアカウントを作成すればすぐに使い始めることができます。
![Screenshot 2022-12-14 at 12.50.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556201/51990ec5-fb63-403f-2a2f-e1de64b8c3fc.png)

早速聞いてみましょう。

## Q1. 「ChatGPTって何？」
ジャブとして自己紹介でもしてもらってみます。

![whatischatgpt.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556201/a6f7bea9-da28-4159-0767-60bcc5422043.gif)

#### ChatGPTさんの回答
```
ChatGPTは、OpenAIが開発した、自然言語を扱う大型言語モデルです。
ChatGPTは、人間が使用する自然言語を理解し、それに応じてフレンドリーな会話をすることができます。
このモデルは、人間の会話を再現することができるように訓練されており、ユーザーとの会話が可能です。
```
***


## Q2. 「k8sの各Podのメモリ上に保持させた値を集める関数を作りたいんだけど名前は何がいいと思う？」
命名などで迷った時、相談に乗ってくれるのでしょうか。
![naming.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556201/00e04e82-d550-5a11-b092-dff703129894.gif)

#### ChatGPTさんの回答
```
Kubernetesには、Pod内の各種リソースの状態を取得するためのAPIが用意されています。
このAPIを使用することで、Pod内のメモリ上の値を取得することができます。
例えば、Pod内の各種リソースの状態を取得するには、kubectl topコマンドを使用します。
このコマンドを実行すると、Pod内の各種リソースの状態が出力されます。
このような機能を持った関数の名前としては、「getPodResourceStatus」などが考えられます。
```

Kubernetesのことも少し教えてくれました。リソースを取得したかったわけではないのですが、そもそも質問がちょっと意地悪でした。

シンプルな質問に変えてみることにします。

## Q3. 「各サーバーのログを収集する関数の名前の候補を教えて？」
#### ChatGPTさんの回答
```
各サーバーのログを収集する関数の名前として、次のようなものが考えられます。

collectServerLogs: サーバーからログを収集する。
gatherServerLogs: サーバーからログを集める。
fetchServerLogs: サーバーからログを取得する。
retrieveServerLogs: サーバーからログを回収する。
また、これらの名前にはさまざまなバリエーションが存在します。
例えば、「collectServerErrorLogs」や「fetchApplicationLogs」などが挙げられます。
どの名前を使用するかは、実装の内容やニーズに応じて決めることができます。
```

## Q4. 「3桁の数字かどうか判断する正規表現を教えて」
開発時に聞きたくなりそうな質問もしてみます。

![regular.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556201/3225089c-b2c3-dc77-8c73-af3cf5e1bb7c.gif)

#### ChatGPTさんの回答
```
3桁の数字を表す正規表現は次のようになります。
`^[0-9]{3}$`
この表現は、3つの連続する数字を表します。
また、^と$はそれぞれ行頭と行末を表しており、これらを使用することで、3桁の数字であることを確実に指定することができます。

例えば、次のようにして3桁の数字かどうかを判定することができます。
```
```python
import re

def is_three_digit_number(string):
    pattern = "^[0-9]{3}$"
    if re.match(pattern, string):
        return True
    else:
        return False

print(is_three_digit_number("123"))  # True
print(is_three_digit_number("1234"))  # False
print(is_three_digit_number("abc"))  # False
```
```
ここでは、Pythonの標準ライブラリのreモジュールを使用しています。
re.matchメソッドを使用することで、文字列が正規表現にマッチするかどうかを判定することができます。
```
サンプルコードも書いてくれました。親切ですね。ソースコードの著作権が心配です。



## Q5. 「Azure Event Hubsのパフォーマンスを最大化するのに必要なことは何？」
調べてパッと答えが見つかりにくそうなことを聞いてみます。
#### ChatGPTさんの回答
```
Azure Event Hubsのパフォーマンスを最大化するには、いくつかの方法があります。
その1つには、インスタンスのスケールアップやスケールアウトがあります。
これは、Event Hubsのインスタンスの数を増やすことで、同時に処理できるイベントの数を増やすことができます。
また、インスタンスを複数分散させることで、イベントの処理を複数のノードで並列実行することもできます。
```
Event Hubs特有の用語は出てきていないですね。言っていることは間違っていないですが、具体的に明言はしない、というふうにも見えます。

## Q6. 「IoTのプロジェクトって何で失敗するの？」
ふわっとした質問も投げかけてみます。

#### ChatGPTさんの回答
```
IoT（Internet of Things）プロジェクトは、複雑さやスケールの大きさが原因で失敗する可能性があります。
そのため、プロジェクトを立ち上げる際は、明確な目標を持っており、リスクを適切に管理することが重要です。
また、技術的な問題やセキュリティー上の問題が発生しないよう、適切なテストと品質管理が行われることが必要です。
さらに、プロジェクトのステークホルダーの間での協調作業や、適切なコミュニケーションがとられることも重要です。
```
今度、会議中にChatGPTを開いておいて、抽象的で答えにくいようなことを聞かれたら一度裏でChatGPTに聞いてみようと思います。

「AIの見解はこうです」的なコメントで責任を回避するムーブが生まれる日も近いのでしょうか。

## Q7. 「AWS Lambdaと Azure Functionsはどっちがいいの？」
雑な質問を投げてみます。

### ChatGPTさんの回答
```
AWS LambdaとAzure Functionsはどちらもクラウド上で実行されるサーバーレスなプラットフォームです。
AWS LambdaはAmazon Web Services（AWS）が提供するサービスで、Azure FunctionsはMicrosoft Azureが提供するサービスです。

どちらがより良いかは、お客様の状況やニーズによって異なります。
AWS LambdaとAzure Functionsでは、価格や使用目的、プログラミング言語に対応するサポート、およびインテグレーションの方法などが異なるため、お客様のニーズを考慮して比較する必要があります。
また、AWS LambdaとAzure Functionsでは、両方とも複数の言語をサポートしていますが、AWS Lambdaがサポートする言語のリストがより多い傾向にあります。

AWS LambdaとAzure Functionsの両方を利用することもできますが、お客様の状況やニーズに応じて適切なプラットフォームを選択することが重要です。お客様のニーズを確認し、それらを満たすために最も適切なプラットフォームを選択することが望ましいです。
```
私はカスタマーサクセス部門で働いているためお客様からの質問に回答する立場ですが、近い将来、自社のサービスについて専門にやっている私よりもこういった仕組みでの回答の方が正確になる日は近いんだろうなと思いました。

また、似たサービスの比較・差分について何かと質問されたりすることは多いと思いますが、回答案のベースとして使えるようにはすぐになってしまいそうですね。

先輩エンジニアに聞いたら激詰される可能性がある質問を一旦ChatGPTに投げてみるのも面白いかもしれません。


## Q8. 「リアルタイム複合イベント処理に関するプレゼンの目次を考えて」
何かプレゼンテーションをしたり、記事を書いたりするとき、構成を考えるのが大変だったりすると思うので聞いてみました。
#### ChatGPTさんの回答
```
1. 複合イベント処理とは
2. 複合イベント処理の基本的な概念と手法
3. 複合イベント処理のアプリケーション例
3. 複合イベント処理の実装方法
4. 複合イベント処理のデモンストレーション
5. 複合イベント処理の今後の展望
6. まとめ
```
「リアルタイム」がすっぽり抜けましたが、構成としては良さそうです。とても汎用性の高い内容なので別に複合イベント処理じゃなくてもこうなりそうですが。笑

## 触ってみた感想
答えが間違っていたり質問と回答が一致しないことはありましたが（そもそもまだ研究・フィードバック収集のフェーズ）、すでに開発中・仕事中、何か迷ったりした時に相談相手になってくれそうだなと思いました。

何となく納得感がある回答だけどよくよく考えると少し抽象的で実際にはそんなに具体的なことを言ってないな？と思うこともありましたがそれはそれでオンラインミーティングなどで答えにくい質問をされた時の答えとして使える気もしました （良いかどうかは置いといて）。

- コーディング中の相談相手
- Google先生に聞いても出てきにくい情報収集が必要な時のアシスタント
- プレゼン、記事等々、アイディア出しに

などなど現段階でも既に仕事の個人的なアシスタントみたいな役割をしてくれそうです。
それにしても、オンラインの試験系（コーディング試験など特に）などはやり方を変えないと機能しなくなる日が近いかもしれないなとも思いました。

### 続編を書いてみました↓
https://qiita.com/ysv/items/eb4d2e665944880d93c7