エンジニア

【ChatGPT】生産性10倍!?エンジニアのChatGPT使い方ハック!

ChatGPTって何?ChatGPTの使い方は?

ChatGPT公式ページ(使用するには会員登録が必要です。)

OpenAIが開発した生成AIのチャット機能が「ChatGPT」です。
今までの機会学習的なものではなく、人間らしい文章生成ができること、
が特徴と言われています。

何と、利用ユーザーは5日で100万人を突破!
Instagramでも2週間くらいかかったユーザー100万人超えを
5日で行うとは、注目の高さがうかがえます。

ChatGPTの使い方①トレンドを教えてくれる

ChatGPTは色々なページや世界の状況を既に沢山勉強して蓄積しているので、
色々なおススメをものの30秒くらいで探してくれます。

例えば、「アプリを作るならどの言語で作るのが最適?」と聞いてみます。

その答えはこうです。

アプリを作る言語は、アプリの目的やプラットフォーム、開発者の経験などによって異なります。一般的に人気のある言語は以下の通りです。

  • Java:Androidアプリ開発に適しています。
  • Swift:iOSアプリ開発に適しています。
  • Python:簡単に学べるため初心者にも適しています。デスクトップアプリやWebアプリなど様々なアプリ開発に利用できます。
  • JavaScript:Webアプリ開発に適しています。
  • C#:Windowsアプリ開発やゲーム開発に適しています。

最適な言語を選ぶためには、アプリの目的や利用するプラットフォーム、開発者の経験などを考慮することが重要です。

https://chat.openai.com/chat

ChatGPTの使い方②コードそもそもを聞ける

次は、コードそのものを直接聞いてみます。
「Pythonでランダムにパスワードを生み出すコードを教えて」

以下のようなPythonコードでランダムなパスワードを生成することができます:

import string
import random

def generate_password(length):
    chars = string.ascii_letters + string.digits + string.punctuation
    return ''.join(random.choice(chars) for i in range(length))

# 8文字のパスワードを生成する例
password = generate_password(8)
print(password)

このコードでは、string.ascii_lettersstring.digits、およびstring.punctuationを結合して、使用する文字の種類を定義しています。 その後、指定された長さ(この例では8)でrandom.choiceを使って文字をランダムに選択し、最終的なパスワードを生成しています。

https://chat.openai.com/chat

ChatGPTの使い方③コードの質問もそのまま聞ける

例えば上のコードで不明点があった場合、そのまま聞いていくことができます。
「上の「for i in range(length)」はどういった役割?」
の質問に対して答えが返ってきました。優しい。。。

for i in range(length)は、パスワードの長さを指定するために使用されています。この for ループは、指定された長さ(ここでは length)回実行されます。各イテレーションでは、random.choiceが呼び出され、ランダムな文字が選択されます。これらの選択された文字は、最終的に連結されて、生成されたパスワードが形成されます。

このように、for ループを使用することで、生成されたパスワードの長さを制御することができます。また、必要な長さに対して再利用可能な関数 generate_password を作成することもできます。

https://chat.openai.com/chat

ChatGPTの使い方④UnitTestも書いてくれる!!

例えば上で聞いたランダムパスワードのUnitTest書いてと言ったら書いてくれるのです!
人が書いたら最低30分はかかるのではないでしょうか?

「このコードに対してのUnitTestを書いて」

以下は、上記のパスワード生成コードに対する単体テストの例です:

import unittest

class TestPasswordGeneration(unittest.TestCase):
    def test_password_length(self):
        password = generate_password(8)
        self.assertEqual(len(password), 8)

    def test_password_characters(self):
        password = generate_password(8)
        for char in password:
            self.assertIn(char, string.ascii_letters + string.digits + string.punctuation)

if __name__ == '__main__':
    unittest.main()

このテストでは、2つのテストメソッドが定義されています。 最初のメソッド test_password_length は、生成されたパスワードの長さが正しいことをテストします。 2番目のメソッド test_password_characters は、生成されたパスワードに含まれている文字が正しいことをテストします。

これらのテストは、 unittest モジュールを使用して実行されます。 if __name__ == '__main__': ブロック内で unittest.main() を呼び出すことで、テストを実行することができます。

これらのテストは、生成されたパスワードが正しいかどうかを確認するための最低限の例です。必要に応じて、これらのテストに加えて、他のテストも作成することができます。

Bear

エンジニア以外の方にこの感動って伝わるのかわかりませんが、ここまでNoCodeで教えてくれるって本当にすごいことです。。。

ChatGPTの使い方⑤コードを他の言語に瞬時で直してくれる

お次は、上で聞いた「上のPythonコードをJavaに書き換えて」と聞いてみました。

以下は、上記の Python コードを Java に移植した例です:

import java.util.Random;
import java.security.SecureRandom;

public class PasswordGenerator {
    private static final String ALLOWED_CHARACTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*_+-=[]{}|,.<>?/";
    private static final SecureRandom RANDOM = new SecureRandom();

    public static String generatePassword(int length) {
        StringBuilder password = new StringBuilder(length);

        for (int i = 0; i < length; i++) {
            password.append(ALLOWED_CHARACTERS.charAt(RANDOM.nextInt(ALLOWED_CHARACTERS.length())));
        }

        return password.toString();
    }
}

この Java コードは、上記の Python コードと同様に動作します。生成されたパスワードの長さを指定することで、 generatePassword メソッドを呼び出すことで、新しいパスワードを生成することができます。

Java では、標準の Random クラスよりも、暗号的に強力な SecureRandom クラスを使用することが推奨されます。このため、上記の Java コードでは、 SecureRandom クラスを使用しています。

https://chat.openai.com/chat

鳥肌!ここまでくると、鳥肌ですよね、すごすぎる。。。
全部やってくれている上に、説明までしてくれてることです。神業。

ChatGPTの使い方⑥コードの改善もしてくれる

例えば下記のページから引用したPythonのコードがあるとします。

i = 1
while i < 6:
  print(i)
  i += 1
else:
  print("i is no longer less than 6")

https://www.w3schools.com/python/python_while_loops.asp

比較的シンプルなので、あまり改善の余地がないですが、
このように回答してくれました。

この Python コードは単純な繰り返し処理を行っているため、改善の余地はありませんが、以下にいくつかの一般的な改善提案を示します。

  1. 不要な変数を削除する: 上記のコードには変数 i だけが使用されていますので、変数名を短くすることができます。
  2. range 関数を使用する: range 関数を使用すると、繰り返し回数を指定することができます。上記のコードでは、6 未満の整数を使用していますので、以下のように書くことができます。
for i in range(1, 6):
    print(i)
else:
    print("i is no longer less than 6")
https://chat.openai.com/chat

ソースレビューまでしてくれるなんて!

ChatGPTの使い方⑦APIも作ってくれる

次は今日では欠かせない、APIデータ生成もしてくれるということです。
「ID, Name, Attribute, Ageが入っているAPIデータを作ってほしい」

以下は、ID、Name、Attribute、Age が含まれる API データを作る方法です。この API データを生成するためには、サーバーサイドのプログラミング言語(例えば Python、Java、Ruby、PHP、Node.js)が必要です。

例えば、Python の場合、Flask という micro web framework を使用することで簡単に API データを作成することができます。

以下は、Flask のコードの例です。

from flask import Flask, jsonify

app = Flask(__name__)

data = [
    {'ID': 1, 'Name': 'John Doe', 'Attribute': 'Coder', 'Age': 30},
    {'ID': 2, 'Name': 'Jane Doe', 'Attribute': 'Designer', 'Age': 25},
    {'ID': 3, 'Name': 'Jim Brown', 'Attribute': 'Manager', 'Age': 40}
]

@app.route('/')
def index():
    return jsonify({'data': data})

if __name__ == '__main__':
    app.run(debug=True)

このコードを実行すると、http://localhost:5000 にアクセスすることで、API データを取得することができます。

https://chat.openai.com/chat

ChatGPTの使い方⑧:デモデータも作成できる

次は「Json形式で、ID, Name, Price, Originの入ったフルーツのデモデータを作成してほしい」と言ってみます。どう返ってくるでしょうか?

以下は、ID、Name、Price、Origin の入ったフルーツの JSON 形式のデモデータの例です。

[  {    "ID": 1,    "Name": "Apple",    "Price": 200,    "Origin": "USA"  },  {    "ID": 2,    "Name": "Banana",    "Price": 100,    "Origin": "Philippines"  },  {    "ID": 3,    "Name": "Mango",    "Price": 300,    "Origin": "India"  },  {    "ID": 4,    "Name": "Orange",    "Price": 150,    "Origin": "Brazil"  }]

この JSON 形式のデータを使用するには、サーバーサイドのプログラミング言語で HTTP リクエストを作成し、このデータを返す Web API を作成する必要があります。また、クライアントサイドの JavaScript や他の言語でこのデータを取得して使用することもできます。

https://chat.openai.com/chat

ChatGPTの使い方⑨デモデータの保存方法も教えてくれる

せっかくデモデータを出してくれたので、
「上のJsonデータをJavascriptで/product/fruitsに保存するコードを書いて」と聞いてみます。

以下は、上の JSON 形式のフルーツデータを /product/fruits に保存する JavaScript の例です。このコードを実行するには、AJAX の使用が必要です。

const fruits = [
  {
    "ID": 1,
    "Name": "Apple",
    "Price": 200,
    "Origin": "USA"
  },
  {
    "ID": 2,
    "Name": "Banana",
    "Price": 100,
    "Origin": "Philippines"
  },
  {
    "ID": 3,
    "Name": "Mango",
    "Price": 300,
    "Origin": "India"
  },
  {
    "ID": 4,
    "Name": "Orange",
    "Price": 150,
    "Origin": "Brazil"
  }
];

$.ajax({
  type: 'POST',
  url: '/product/fruits',
  data: JSON.stringify(fruits),
  contentType: 'application/json; charset=utf-8',
  dataType: 'json',
  success: function (data) {
    console.log(data);
  }
});

このコードは、jQuery ライブラリを使用しています。 jQuery ライブラリを使用していない場合は、JavaScript の fetch API で代替することもできます。Regenerate response

https://chat.openai.com/chat

何度も言いますが、ただコードを書くだけでなく、
説明がちゃんとついてくるのが毎回感動です。。。

ChatGPTの使い方⑩もちろんSQLとかもいけます

まだまだ100個くらい色々出来そうですが、最後はSQL。
「Customerというテーブルで下記の値の入ったテーブルを作成するSQLを教えて Name(String) Age(Int) Address(String) Gender(Int)」

以下は、名前、年齢、住所、性別を含む Customer テーブルを作成する SQL の例です。

CREATE TABLE Customer (
  Name VARCHAR(255),
  Age INT,
  Address VARCHAR(255),
  Gender INT

https://chat.openai.com/chat

いかがでしたか?本当にすごいですよね!
注意としてあるのは、

「ChatGPTも間違った情報を提供することがある」

ということです。素晴らしいAI技術と言われていますが、
完璧ではないので、最終的には自分の判断が必要になります。

コードだけに関わらず、色々な業界の知識をどんどん蓄えて
すごいことが出来そうです。わくわく!
もちろん、会社に勤めている方は守秘義務等あると
思うので、何でもかんでもコードをChatGPTに載せることは
せず、適切な判断をあおいでくださいね。
でも、NoCodeで様々なことが出来る日も近いかもしれないですね!楽しみ!


-エンジニア
-, , , , , ,