JavaScript

ChatGPTはプログラミングに使えるか?

こんにちは!
ChatGPTのサービスが登場してから、様々な仕事で使われるようになってきました。
世の中の多くの仕事はAIがする時代がくると予想する人もいます。
この記事ではプログラミングにChatGPTは使えるかを検証していきます。

ChatGPTとはなにか?

OpenAI社が作成したAI(人工知能)です。いろんなことができますのでChatGPT自身にフランクに自己紹介してもらいました。

テルプロ

フランクに自己紹介してください

ChatGPT

こんにちは、僕はChatGPT。人工知能だけど、気軽に「チャット」と呼んでください。

OpenAIが作ったAIで、いろんな質問に答えたり、文章を書いたりするのが得意です。

基本的に、いろんな知識を持っていて、どんな話題でも対応できるように設計されています。たとえば、最新のテクノロジーやエンタメの話、歴史や科学についてのディープな質問にも答えられます。

日本語だけじゃなくて、他の言語もいけるので、国際的な会話もOKです。気軽に声をかけてくださいね!

なかなか感じよい自己紹介ですね。プログラミングについても期待が膨らみます。

ChatGPTを使用してプログラミングが出来るか


それではChatGPTでプログラミングが出来るか検証してみます

ChatGPTでプログラミングする


まず動かすのが簡単なhtmlとJavaScriptで計算機の作成をお願いしてみましょう。

テルプロ

htmlとJavaScriptで計算機を作成できますか?

ChatGPT

もちろん、HTMLとJavaScriptでシンプルな計算機を作成する方法をお教えします。以下の例では、基本的な四則演算(足し算、引き算、掛け算、割り算)ができる計算機を作成します。

まず、HTMLの基本構造を作成し、ボタンやディスプレイエリアを追加します。次に、JavaScriptで計算機の機能を実装します。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>シンプル計算機</title>
    <style>
        .calculator {
            width: 200px;
            margin: 100px auto;
        }
        .display {
            width: 100%;
            height: 40px;
            text-align: right;
            padding: 10px;
            background: #eee;
            margin-bottom: 10px;
            font-size: 20px;
        }
        .button {
            width: 45px;
            height: 45px;
            margin: 5px;
            font-size: 18px;
        }
    </style>
</head>
<body>
    <div class="calculator">
        <div class="display" id="display"></div>
        <button class="button" onclick="appendNumber('1')">1</button>
        <button class="button" onclick="appendNumber('2')">2</button>
        <button class="button" onclick="appendNumber('3')">3</button>
        <button class="button" onclick="chooseOperation('+')">+</button><br>
        <button class="button" onclick="appendNumber('4')">4</button>
        <button class="button" onclick="appendNumber('5')">5</button>
        <button class="button" onclick="appendNumber('6')">6</button>
        <button class="button" onclick="chooseOperation('-')">-</button><br>
        <button class="button" onclick="appendNumber('7')">7</button>
        <button class="button" onclick="appendNumber('8')">8</button>
        <button class="button" onclick="appendNumber('9')">9</button>
        <button class="button" onclick="chooseOperation('*')">*</button><br>
        <button class="button" onclick="appendNumber('0')">0</button>
        <button class="button" onclick="clearDisplay()">C</button>
        <button class="button" onclick="compute()">=</button>
        <button class="button" onclick="chooseOperation('/')">/</button>
    </div>

    <script>
        let display = document.getElementById('display');
        let currentOperand = '';
        let previousOperand = '';
        let operation = null;

        function appendNumber(number) {
            if (number === '0' && currentOperand === '') return;
            currentOperand = currentOperand.toString() + number.toString();
            updateDisplay();
        }

        function chooseOperation(op) {
            if (currentOperand === '') return;
            if (previousOperand !== '') {
                compute();
            }
            operation = op;
            previousOperand = currentOperand;
            currentOperand = '';
        }

        function compute() {
            let computation;
            const prev = parseFloat(previousOperand);
            const current = parseFloat(currentOperand);
            if (isNaN(prev) || isNaN(current)) return;
            switch (operation) {
                case '+':
                    computation = prev + current;
                    break;
                case '-':
                    computation = prev - current;
                    break;
                case '*':
                    computation = prev * current;
                    break;
                case '/':
                    computation = prev / current;
                    break;
                default:
                    return;
            }
            currentOperand = computation;
            operation = undefined;
            previousOperand = '';
            updateDisplay();
        }

        function clearDisplay() {
            currentOperand = '';
            previousOperand = '';
            operation = undefined;
            updateDisplay();
        }

        function updateDisplay() {
            display.innerText = currentOperand;
        }
    </script>
</body>
</html>


わずか数十秒でなかなかのボリュームのプログラムを書いてくれました。
実際にこのプログラムは動くのでしょうか。気になりますね。

ChatGPTで作成したプログラムを動かす


早速ChatGPTが作成してくれた電卓プログラムを動かしてみましょう。


動かし方

  1. テキストエディタ(メモ帳やサクラエディタなど)を開き、上記のコードを全てコピーします。
  2. ファイルを(適当な名前).htmlとして保存します。
  3. 保存したファイルをブラウザで開きます。

画面に下記の画像のように表示されました。
少し見かけが悪いですが、電卓に必要な1~9の数字ボタン、足し算、引き算、掛け算、割り算の四則演算ボタン「+-*/」、クリアボタン、イコールボタンの基本的な電卓に必要なボタンがちゃんと存在しています。

上の色の変わっている箇所は計算結果が出る場所だと思われます。

それではこの電卓がちゃんと動くか確かめてみましょう。

10+50=60
600-500=100
5000*30=150000
88/4=22
上記の計算をしてみました。ChatGPTに修正してもらいましょう。


ちゃんと計算できました。
でも見かけが気になりますね。

テルプロ

ボタンの配置がうまく並んでないのでなんとかできない?

ChatGPT

ボタンの配置を整えるために、CSSのFlexboxを使用することができます。以下に、修正したコードを示します。このコードでは、ボタンをグリッド状に整列させ、見た目を改善しています。

どうやらCSSというものを使って、きれいな見た目にしてくれたみたいです。
ソースは省略しますが先ほどと同じように動かしてみました。

先ほどの電卓よりかなりイメージする電卓に近づきました。これはもう電卓といってよいほどの見た目です!!

先ほどと同じように実際に計算してみたら無事に計算できました。
ちゃんとこちらの要望通りに作ってくれました。
このようにChatGPTはプログラミングも作成してくれます。

またchatgptのプロンプト(質問)の仕方をまとめてる記事もあるので
ぜひお読みいただければと思います!

まとめ

ChatGPTは電卓プログラムを作成することができました。
簡単なプログラムは作成できるみたいです。
複雑なプログラムだとまだ難しいですが、簡単なサンプルプログラムなどを作ってもらってプログラマーの仕事のサポートをしてもらうことはできそうです。

ABOUT ME
テルプロ
東京都在住のアプリエンジニア。大学では、ソフトウェア開発の研究に取り組む。長期のエンジニアインターンシップを経て、実務スキルを磨き、現在はフリーランスエンジニアとしても活動中。メインはモバイルアプリ開発。IT関連の記事監修も行い、技術の共有と普及に励んでいます。 監修実績(レバテックフリーランス
Flutter関連の書籍を出版しました!