寝そべり族が日本と世界を眺めているだけ…

『会社辞めましたが何か?』からブログ名変えました

ChatGPT「AIがプログラミング?超余裕っすよw」→マジでした…

「AIがプログラミングをする時代が来るというニュースを見たな」

ふと、そんなことを思い、ChatGPTで聞いてみたら「AIでプログラミングは出来る」と回答が来ました。

おいおい冗談だろ?と思ってみたが、実際試してみたのだが

「こりゃあ平凡なプログラマーは、将来おまんまの食い上げだな…」という感想に至りました。

今回はAIプログラミングの体験談をつづっていきます。

 

この記事のまとめ

  • AIは簡単にプログラミング出来る
  • AIは主要なプログラミング言語に強い
  • 学習コストが低く、複数言語に対応している
  • 人間はエラーの解消やカスタマイズの際に必要
  • 挫折した人には福音だが勉強を怠った人には脅威

1.いとも簡単にプログラミングするAIに困惑

上記画像はChatGPTで『デスクトップに時計を表示させるプログラム』を書いてもらった画像です。

で、実際に起動して出来上がったのがこれ。

何が驚いたって…

  • 質問を入力してから書き上げるまで30秒未満
  • コードをコピペするだけで問題なく動いた
  • コードそのものに無駄な記述が無い
  • PythonをPhthonと誤字で指示を出したのに、Pythonでちゃんと記述している

私、Pythonに関しては全くの門外漢です。

だからこのプログラムを書こうと思ったら、あーでもないこーでもないと

1日…いや数日は専門書籍やWebサイトとにらめっこして作っていたでしょう。

それがこんなにもあっさりと…。時代の流れって本当に恐ろしい!

1-1.『C』『C#』『Java』『Ruby』『Python』と有名言語に強い

ChatGPTではPythonの他、C言語やC#、Java、Rubyといった日本で有名な言語でも対応しています。

 

C言語を使ってデスクトップ上に時計を表示させる例がこれ。

#include <stdio.h>
#include <time.h>
#include <windows.h>

void displayClock() {
    while (1) {
        // 現在の時刻を取得
        time_t currentTime = time(NULL);
        struct tm* timeInfo = localtime(&currentTime);

        // 時刻のフォーマットを設定
        char clockStr[9];
        sprintf(clockStr, "%.2d:%.2d:%.2d", timeInfo->tm_hour, timeInfo->tm_min, timeInfo->tm_sec);

        // コンソール上に時刻を表示
        printf("%s\r", clockStr);
        fflush(stdout);

        // 1秒待機
        Sleep(1000);
    }
}

int main() {
    // コンソールを非表示にする
    HWND hWnd = GetConsoleWindow();
    ShowWindow(hWnd, SW_HIDE);

    // 時計を表示
    displayClock();

    return 0;
}

 

C#を使ってデスクトップ上に時計を表示させるコードをChatGPTが書いたのがこれ。

using System;
using System.Windows.Forms;

namespace DesktopClock
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
            InitializeClock();
        }

        private void InitializeClock()
        {
            Timer timer = new Timer();
            timer.Interval = 1000; // 1秒ごとに更新
            timer.Tick += Timer_Tick;
            timer.Start();
        }

        private void Timer_Tick(object sender, EventArgs e)
        {
            DateTime currentTime = DateTime.Now;
            string formattedTime = currentTime.ToString("HH:mm:ss");
            clockLabel.Text = formattedTime;
        }
    }

    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }
    }
}

 

 

Rubyでデスクトップ上に時計を表示させるプログラムがこれ。

require 'tk'

# 時計の表示用の関数
def show_clock
  time = Time.now.strftime("%H:%M:%S") # 現在の時刻を取得
  @clock_label.text = time # ラベルに時刻を表示
  # 1秒ごとに時計を更新するためのタイマーを設定
  @clock_label.after(1000) { show_clock }
end

# メインウィンドウの作成
root = TkRoot.new { title "Desktop Clock" }
root.geometry("200x100") # ウィンドウのサイズ

# ラベルの作成
@clock_label = TkLabel.new(root) { font "Helvetica 24 bold" }
@clock_label.pack(pady: 30)

show_clock # 時計を表示

Tk.mainloop # アプリケーションの実行

Javaでデスクトップ上に時計を表示させるのがこれ。

import javax.swing.*;
import java.awt.*;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DesktopClock extends JFrame {
    private JLabel clockLabel;

    public DesktopClock() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Desktop Clock");
        setResizable(false);

        clockLabel = new JLabel();
        clockLabel.setHorizontalAlignment(SwingConstants.CENTER);
        clockLabel.setFont(new Font("Arial", Font.PLAIN, 48));
        updateTime();

        getContentPane().add(clockLabel);
        pack();

        setLocationRelativeTo(null); // 画面中央に表示
        setVisible(true);

        startClock();
    }

    private void startClock() {
        Thread clockThread = new Thread*1;
        clockLabel.setText(currentTime);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(DesktopClock::new);
    }
}

 

ここまでAIが自動で書いてくれます。

小さいアプリでは人間のやる事など『動作環境の構築』や『実際に動くか』のテスト位しかありません。

極論言えば、凝った物じゃないなら、プログラミング言語の学習すら不要です。

実際Pythonなんて全く触ったことが無い自分ですら、AIの力に頼ればアプリが出来た訳ですからね…。

 

もちろん自分好みの機能やデザインに調整する場合には、専門的な知識は必須です。

しかし今までのように参考書をにらみながら作るより、かなりハードルが下がったと言えるのではないでしょうか。

 

2.AIがプログラマーに取って代わると感じた3つの根拠

今回はデスクトップ上に時計を表示させるだけの簡単なアプリを作ってもらいましたが

応用を利かせれば、AIがプログラマーの仕事を奪うだろうと感じました。

その根拠は3つあります。

  1. 学習コストが人力と比較して低い
  2. 様々な言語に対応している
  3. コードは誰が書いても評価は一緒

正直、仕事がAIに奪われるランキングを作ったらプログラマーがダントツの1位じゃないかと思っています。

2-1学習コストが人より大幅に低い…悔しい

人間がプログラミングを始める場合、時間もお金もかかるので必然的に学習コストは高くなりがちです。

しかしAIの場合、人間が指示を出すだけで勝手に書いてくれます。

この際、人間に求められるのは大きく2つだけです。

 

  • 書いたコードにエラーがあったら修正するリバースエンジニアリング能力
  • 欲しい機能やデザイン等があれば調査して実装できる能力

 

今までプログラミングを学ぶ場合、専門書を購入、学校に通う、Webページを見て独学で勉強といった手法が主流でした。

その習得する難易度の高さがプログラマーという職業を生んだのも事実。

私も何で動かないんだ…と専門書やWebページを漁りながら、云々とパソコンの前で唸り続けた経験があります。

 

しかしこうもあっさりと突破されるとは、本当に良い時代になった…

と、素直に喜べないんですよねえ。

なんというか複雑です。

2-2様々な言語に簡単に対応しやがる

AIはあらゆるプログラミング言語に対応しているスペシャリストと言っても過言じゃないです。

プログラミングは、言語が変われば文法も書く内容も全く異なりますが、AIなら複数言語対応できます。

「〇〇という言語なら任せろー」という特定のプログラミング言語に強いだけの人は、今後食い扶持が厳しそうだなあと感じます。

2-3コードは誰が書いても評価は一緒

以前、AIイラストに手を出した時

イラストは人が描いてこそ評価される」という思想を私は感じました。

 

しかしプログラミングの分野では話は別です。

理路整然とした無駄のないコードはAIが書こうが人が書こうが、評価は変わりません。

むしろこういったデジタルな分野は、AIの独壇場です。

 

仮に上記のコードを私がゴリゴリ書いたとしても、世間は評価しないでしょう。

ちなみに前回AIイラストに手を出した体験談が下記

souta-k.hatenadiary.jp

敷居の下がったプログラミング…活用できるようにしたい

AIのプログラミング能力は高いものでした、今後も勉強する価値はあります。

今までプログラミングに挫折した人にとって、AIのプログラミングは福音となる可能性を秘めています。

むしろ個人で必要な機能を程度のアプリなら、AIに作ってもらうことは、今後ポピュラーだと言って良いでしょう。

 

ただし一方で簡単なアプリしか作れない人、勉強を怠ってきたプログラマーにとっては飯のタネを奪いかねません。

AIに食われず、活用できる人間になりたいものです。

 

この記事のまとめ

  • AIは簡単にプログラミング出来る
  • AIは主要なプログラミング言語に強い
  • 学習コストが低く、複数言語に対応している
  • 人間はエラーの解消やカスタマイズの際に必要
  • 挫折した人には福音だが勉強を怠った人には脅威

 

 

*1:) ->; {
            while (true) {
                updateTime();
                try {
                    Thread.sleep(1000); // 1秒ごとに更新
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

        clockThread.start();
    }

    private void updateTime() {
        SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
        String currentTime = dateFormat.format(new Date(