ソフトウェア開発にChatGPTは使えるのか?

プログラミングでの活用

コード生成

正規表現

プロンプト
JavaScriptで正規表現を使用してパスワードを検証するコードを作成して下さい。
パスワードの条件は以下です。
・英大文字を含む
・英小文字を含む
・数字を含む
・!”#$%&の記号を含む
・10文字以上
回答

function validatePassword(password) {
    const regex = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[!"#$%&]).{10,}$/;
    return regex.test(password);
}

// テスト例
console.log(validatePassword("Password123!")); // true
console.log(validatePassword("password123!")); // false (英大文字が含まれていない)
console.log(validatePassword("PASSWORD123!")); // false (英小文字が含まれていない)
console.log(validatePassword("Password!"));    // false (数字が含まれていない)
console.log(validatePassword("Password123"));  // false (記号が含まれていない)
console.log(validatePassword("Pass123!"));     // false (10文字未満)
ファイル操作

プロンプト
Pythonでテキストファイルを読み込んで末尾に文字を追加するプログラムを作成して下さい。
回答

def append_to_file(file_path, text_to_append):
    # ファイルを読み込みモードで開く
    with open(file_path, 'r') as file:
        content = file.read()
        print("現在の内容:")
        print(content)

    # ファイルを追加モードで開く
    with open(file_path, 'a') as file:
        file.write(text_to_append)
        print(f"\n'{text_to_append}' を追加しました。")

# 使用例
file_path = 'example.txt'
text_to_append = '\n追加するテキスト'
append_to_file(file_path, text_to_append)

 

httpリクエスト

プロンプト
JavaScriptでGitHubアカウントの情報を返す関数を作成して下さい

回答

async function getGitHubUserInfo(username) {
    const response = await fetch(`https://api.github.com/users/${username}`);
    if (!response.ok) {
        throw new Error('ユーザー情報の取得に失敗しました');
    }
    const data = await response.json();
    return data;
}

// 使用例
getGitHubUserInfo('octocat')
    .then(userInfo => console.log(userInfo))
    .catch(error => console.error(error));
テストコード追加

プロンプト
上のコードにテストコードを追加して下さい
回答

クラス化

クラス図

プロンプト
Mermaid記法でクラス図を作成して下さい。
仕様は以下です。
## クラス仕様
クラス名:ShoppingBag
目的:買い物かごの情報管理
プロパティ:商品名、価格、数量
メソッド:商品追加、商品削除、買い物金額計算
回答

classDiagram
    class ShoppingBag {
        +String 商品名
        +float 価格
        +int 数量
        +void 商品追加(String 商品名, float 価格, int 数量)
        +void 商品削除(String 商品名)
        +float 買い物金額計算()
    }
class作成

プロンプト
上のクラス図を使ってNext.jsのコードを作成して下さい。
回答

// shoppingBag.js
class ShoppingBag {
    constructor() {
        this.items = [];
    }

    商品追加(商品名, 価格, 数量) {
        this.items.push({ 商品名, 価格, 数量 });
    }

    商品削除(商品名) {
        this.items = this.items.filter(item => item.商品名 !== 商品名);
    }

    買い物金額計算() {
        return this.items.reduce((total, item) => total + (item.価格 * item.数量), 0);
    }
}

export default ShoppingBag;

// pages/index.js
import { useState } from 'react';
import ShoppingBag from '../shoppingBag';

export default function Home() {
    const [bag, setBag] = useState(new ShoppingBag());
    const [total, setTotal] = useState(0);

    const handleAddItem = () => {
        bag.商品追加('商品A', 100, 2);
        setBag(bag);
        setTotal(bag.買い物金額計算());
    };

    const handleRemoveItem = () => {
        bag.商品削除('商品A');
        setBag(bag);
        setTotal(bag.買い物金額計算());
    };

    return (
        <div>
            <h1>Shopping Bag</h1>
            <button onClick={handleAddItem}>商品追加</button>
            <button onClick={handleRemoveItem}>商品削除</button>
            <p>合計金額: {total}円</p>
        </div>
    );
}

学習プロセスでの活用

プロンプト
教師と生徒のやり取りを想定します。
あなたが教師役となり、私を生徒として、next.jsでバックエンドプログラムについて授業して下さい。
回答
1〜4説明
5. 演習
実際に手を動かしてみましょう。以下のステップを試してみてください。
pages/api/hello.jsを作成し、簡単なメッセージを返すAPIを実装する。
pages/api/data.jsを作成し、POSTリクエストを処理するAPIを実装する。
Prismaを使ってデータベースと連携するAPIを作成する。
何か質問があれば、いつでも聞いてくださいね!

React

次の記事

React Hooks