LoginSignup
8
2

はじめに

こんにちは
今回はAI編でChatGPTについてご紹介したいと思います。
ChatGPTは簡単で気軽に使用できるので便利だなと感じてます。
そんなChatGPTにプログラムを組ませたらどんな返答がくるかを検証したいと思います。

ChatGPTとは

ChatGPTとはChat Generative Pre-trained Transformerの略称であり、OpenAIが開発した生成AIによる「対話型のチャットサービス」です。
従来の人工知能からとても技術が向上し、人間を相手にするのとほとんど遜色ないレベルで対話を行えるのが大きな特徴と思います。

ChatGPTの得意分野

①既存の文章の要約
→文章を要約して短い文章に書き換えることが最も得意とされています。

②テキストの誤字脱字のチェック
文章の添削も得意としていて、誤字脱字や日本語表現のおかしな部分を丁寧に添削してくれます。しかし文章量が多いと途中で省かれるので注意が必要です。

③外国語の翻訳や文章作成
→ChatGPT以外にも翻訳ツールはありますが、文章の意図やニュアンスまで指定できるので、柔軟に活用ができます。

プログラムコードの作成
今回のお題でもあるプログラムの作成ができます。
複雑なコードの作成はできませんし、手直しをしないと上手く実行されないのが大半ですが、手間かけずに作成したいという方に向いております。こちらは後ほど実践いたします。

ChatGPTの苦手分野

①最新の情報の出力
→最新への情報の対応が苦手であり、時事的な話題は正確性を欠くことが多いです。

②実在の人物、店舗、作品などの認識
→これらの情報をアウトプットする際に、誤情報が含まれていることが多いです。

③独創的なアイデア
→ChatGPTが出力する情報は必然的にWebにある情報の平均値となるため、アイデアや表現の品質としては、どこまでも凡庸の域を出ません。なので、人間による手直しはほぼ必要でしょう。

④マイナーな話は注意
→Webから充分な情報を取得できないとアウトプットの質が大幅に低下します。

プログラムを組ませてみた

では今回のお題でもある 「ChatGPTにプログラムを組ませてみた」 をやっていきたいと思います。やり方はとても簡単です。ChatGPTにどんな処理をさせたいかオーダーを出します。
それだけです!
スクリーンショット 2024-06-10 175933.png
ChatGPTはこちら
まず登録したいアカウントでChatGPTを開きます(私はGoogleアカウントを用いて開きました)。開けたら上図のような画面になるかと思います。
一番下の「ChatGPTにメッセージを送信する」の部分で記載していきます。

今回はChatGPTに「C言語」でプログラムの作成をしてもらおうと思います。
ここで注意点ですが要件は「なるべく具体的に記載すること」です。
あまりにも抽象的な内容だと受け取る側もよく理解できていない状態でコードを生成してしまいます。
スクリーンショット 2024-06-10 234405.png
今回はChatGPTにこのオーダーを出したいと思います。
複雑なソースコードは難しいためキー入力でオブジェクトが移動するというシンプルなオーダーにしました。ではどんなお返事が来たか確認してみましょう。
スクリーンショット 2024-06-10 234652.png
なんとオーダーの内容を確認し、GPT側で概要を定義しております。
そして以下がGPTの書いたコードになります。

#include <stdio.h>
#include <stdlib.h>

// 点を表す構造体
typedef struct {
    int x;
    int y;
} Point;

// 点を指定した距離だけ移動させる関数
void move_point(Point *p, int dx, int dy) {
    p->x += dx;
    p->y += dy;
}

// 画面をクリアする関数
void clear_screen() {
    // Windowsの場合は system("cls") を使用
    // Linux/Unix/macOSの場合は system("clear") を使用
    system("clear");  // or system("cls");
}

// 現在の位置を表示する関数
void display_position(Point p) {
    printf("Current position: (%d, %d)\n", p.x, p.y);
    printf("Use WASD keys to move (W: up, A: left, S: down, D: right), Q to quit.\n");
}

int main() {
    Point p = {0, 0};  // 初期位置は (0, 0)
    char input;

    clear_screen();
    display_position(p);

    while (1) {
        input = getchar();  // キー入力を取得

        // 改行を無視
        if (input == '\n') {
            continue;
        }

        switch (input) {
            case 'w':  // 上へ移動
                move_point(&p, 0, -1);
                break;
            case 's':  // 下へ移動
                move_point(&p, 0, 1);
                break;
            case 'a':  // 左へ移動
                move_point(&p, -1, 0);
                break;
            case 'd':  // 右へ移動
                move_point(&p, 1, 0);
                break;
            case 'q':  // 終了
                return 0;
            default:
                printf("Invalid input. Use WASD keys to move, Q to quit.\n");
                break;
        }

        clear_screen();
        display_position(p);
    }

    return 0;
}

たったの数秒でそこそこあるコードを記載してくれました。
では早速エラーが無いかビルドをかけて確認してみましょう

※ビルド -> プロジェクト全体をコンパイルして実行モジュールを生成する操作(ショートカットキーはCtrl + B)
スクリーンショット 2024-06-11 091711.png
ビルドが正常に完了するとこのような表示になるかと思います。
では実行結果を見てみましょう。

実行結果

スクリーンショット 2024-06-11 130154.png
実行画面に表示されている「Current position:(0,0)」は現在位置(座標) を示しています。
実行時は初期位置が「(0,0)」とあるので図で説明すると最初はこの赤点の位置にいます。
AI_01.png
では実行画面に戻ってキー入力でオブジェクトを移動させます。
スクリーンショット 2024-06-11 130302.png

「dキー」を入力してEnterキーを押します。そして右に1つオブジェクトが移動できるか確認します。正しくできた場合、x座標で正の向きに1つ移動するので「Current position:(1,0)」となるはずです。
スクリーンショット 2024-06-11 130358.png
正しく表示されましたね。残りの方向(上、左、下)でも試してみます。
スクリーンショット 2024-06-11 140419.png

こちらも各方向に正しく移動できているのが確認できました。
因みに原点(0,0)にいる時、上方向(up)や左方向(left)は負の向きとなり「-(マイナス)」の値が返ってきます。(upが負の方向でdownが正の方向ってなんかややこしいですね:sweat_smile:)

おまけ

スクリーンショット 2024-06-11 101258.png
先ほどまでは1字ずつ入力して実行していましたが、一気に複数入力して結果を見たいと思います。試しに「wwasssdd」と入力しました。
この場合各方向ずつ区切ると
ww → Y座標負の方向に2移動(0,-2)
a → X座標負の方向に1移動(-1,-2)
sss → Y座標正の方向に3移動(-1,1)
dd → X座標正の方向に2移動(1,1)
従って座標は(1,1)となるはずです。
スクリーンショット 2024-06-11 140237.png
一番下で「Current position: (1,1)」と表示されているので正しい値が返ってきました。
とりあえずオーダー通りのプログラムが作成されて正常に動作できたので成功と言って良いと思います。:upside_down:

おわりに

AIはプログラムだけでなく絵を描かせたり:writing_hand:、作曲させたり:musical_note:、Webサイト:desktop:を構築させたりと・・・クリエイティブなものが自動生成できる時代ですし、これからもその技術は向上していくと考えています。そして最近だと「ChatGPT-4o」が出て、より人間に近いAIと話すことができるニュースを見て驚きましたね。:open_mouth:

しかし便利な時代だからこそ変に悪知恵が効くこともできるので、扱いには充分注意が必要だと改めて感じました。
最後までお読みいただきありがとうございました!

「参考サイト」
ChatGPTで何ができる?

「参考サイト」
ChatGPTでプログラミングをするコツ

8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2