見出し画像

革新的なAI技術の発達の時代におけるエンジニアのあり方を考える

OpenAIが開発した大規模言語モデルの一つである「GPT-3.5」に基づくチャットボット「ChatGPT」が登場し、日々世間を賑わせていますね。

私も例外なく、早速様々なプロンプトを試して、楽しみつつも精度の高さに驚愕しています。

私の本業は ITエンジニアで、お客様と要件を詰めたり、実際の開発・テストを行ったりという業務が中心です。
しかし、この「ChatGPT」に近い将来、仕事を奪われる可能性があるのでは?と真剣に考えるようになりました。

ChatGPT のエンジニアにとっての脅威

※ この章は私「ねこねこ」自身が書いています。

1. 簡単な命令でプログラミングができてしまう

無料版の ChatGPT の言語モデルである GPT-3.5 でも、そこそこの精度のコードを書いてくれていましたが、GPT-4 ではその精度が格段に向上しています。
例えば、数学のプログラミングの問題を提供する「Project Euler」の問.50を解かせてみましょう。

質問文

以下は Project Euler の問題の一つです。
The prime 41, can be written as the sum of six consecutive primes:41 = 2 + 3 + 5 + 7 + 11 + 13This is the longest sum of consecutive primes that adds to a prime below one-hundred.The longest sum of consecutive primes below one-thousand that adds to a prime, contains 21 terms, and is equal to 953.Which prime, below one-million, can be written as the sum of the most consecutive primes?
Java で回答してください。

参考:https://projecteuler.net/problem=50

回答文

以下に、Java言語を使用してProject Eulerの問題を解決するプログラムを提供します。

ChatGPTの回答
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        int limit = 1000000;
        List<Integer> primes = generatePrimes(limit);

        int maxLength = 0;
        int maxPrime = 0;

        for (int i = 0; i < primes.size(); i++) {
            int sum = 0;
            for (int j = i; j < primes.size(); j++) {
                sum += primes.get(j);

                if (sum >= limit) {
                    break;
                }

                if (j - i > maxLength && isPrime(sum, primes)) {
                    maxLength = j - i;
                    maxPrime = sum;
                }
            }
        }

        System.out.println("The prime, below one-million, that can be written as the sum of the most consecutive primes is: " + maxPrime);
    }

    public static List<Integer> generatePrimes(int limit) {
        boolean[] isPrime = new boolean[limit];
        for (int i = 2; i < limit; i++) {
            isPrime[i] = true;
        }

        for (int i = 2; i * i < limit; i++) {
            if (isPrime[i]) {
                for (int j = i * i; j < limit; j += i) {
                    isPrime[j] = false;
                }
            }
        }

        List<Integer> primes = new ArrayList<>();
        for (int i = 2; i < limit; i++) {
            if (isPrime[i]) {
                primes.add(i);
            }
        }

        return primes;
    }

    public static boolean isPrime(int n, List<Integer> primes) {
        for (int prime : primes) {
            if (prime * prime > n) {
                break;
            }
            if (n % prime == 0) {
                return false;
            }
        }
        return true;
    }
}

実行してみると、答えは `997651` でした。すごい、あってる!
一発で動くコード、しかもメソッドの分割まで行ってくれてます。

2. ITに詳しくなくても開発ができてしまう

別記事で、「ChatGPT があればプログラミング未経験者でもテトリスを作れる」というコンテンツを紹介しました。
これは ChatGPT に指示を出して、提示されたコードをそのまま貼り付け、エラー修正も含めて動くアプリを作るまでを検証してみた記事です。

この時は完全に未経験者や初心者を想定して指示を出してみていますが、少しITの知見のある情報システム部の担当者ぐらいであれば、もしかすると自分で仕様を決めて投げかけて、開発ぐらいできてしまうかもしれません。

そうなると、外部のベンダーに頼まなくてもいいのでは?と思われてしまう時代は実はすぐそこなのかもしれないと感じました。

ズバリそのものを ChatGPT に投げかけてみる

やりとり その①

私は IT 業界で働くエンジニアです。
あなた、つまり、ChatGPT(GPT-4)が登場して以来、自分の仕事が近い将来奪われるのではないかと危惧しています。

あなたは指示を出せば、的確なコーディングをしてくれます。
これはつまり、プログラマーの需要が減少することを意味します。
あなたは曖昧な質問、要望から、しっかりした回答を行います。
これはつまり、顧客がコンサルタントを介さずに直接開発ができてしまう可能性が高まります。

そんな中、これからのITエンジニアの意義とはなんでしょうか。

私の質問文

ちょっと切実な感じを出してみました。

AI技術の発展は間違いなくIT業界に大きな変化をもたらしており、一部の職種については将来的に影響を受ける可能性があります。
しかし、これからのITエンジニアには依然として重要な役割があります。
AI技術の開発・研究: AI技術はまだ進化し続けているため、ITエンジニアは新しいアルゴリズムや手法を開発・研究し、より良い技術を生み出すことが求められます。

AIの適用とカスタマイズ: AI技術は汎用的であるため、各企業や業界の特定の問題に適用する際にはカスタマイズが必要です。ITエンジニアは、顧客の要望に合わせたAIソリューションの開発や適用を行うことが重要です。

システムの統合: AI技術は単独で機能することもありますが、多くの場合は既存のシステムや他の技術と組み合わせて使用されます。ITエンジニアは、システム間の連携やデータのやり取りを円滑に行うことが求められます。

セキュリティとプライバシー: AI技術の普及に伴い、セキュリティやプライバシーに関する課題も増えています。ITエンジニアは、データの保護や不正アクセスの防止に努めることが重要です。

教育とサポート: AI技術の普及に伴い、エンドユーザーに対する教育やサポートも重要な役割となります。ITエンジニアは、顧客やユーザーがAIを効果的に利用できるよう指導やアドバイスを行うことが求められます。

要約すると、AI技術の発展は確かに一部の職種に影響を与えるかもしれませんが、ITエンジニアにはまだ重要な役割がたくさんあります。柔軟性を持ち、新しい技術やスキルを学び続けることで、これからのIT業界で活躍することができるでしょう。

ChatGPTの回答

そうなんだけどさぁ。。これは AI技術に強い人しか未来がないってことでしょうかね。

やりとり その②

回答ありがとうございます。つまり、今後は AI 技術をキャッチアップした上で、それをどう使うかが重要になってくると理解しました。それでは、AI と関係の薄い技術を利用してきたエンジニア達は非常に苦しい立場になると思いますが、その点はいかがでしょうか。

私の質問文

AI技術の普及によって、従来の技術やスキルに依存していたエンジニアは、確かに変化に対応しなければならない状況に直面するでしょう。ただし、IT業界は常に変化が激しい分野であり、過去にも新しい技術の登場によってスキルセットが変化することが一般的でした。そのため、以下のような対策を取ることで、AI技術と関係の薄いエンジニアも適応し、競争力を維持・向上させることができます。

スキルのアップデート: AI技術だけでなく、他の新しい技術やプログラミング言語を学ぶことで、市場での競争力を維持できます。また、従来のスキルもブラッシュアップし続けることが重要です。

転職やキャリアチェンジ: AI技術と関係が薄い分野での経験を活かしつつ、AI技術と関連する分野に転職することも一つの選択肢です。あるいは、完全に異なる分野や職種にキャリアチェンジを検討することも可能です。

人間が持つ独自の強みを活かす: AI技術にはまだまだ人間に劣る部分があります。例えば、創造力、直感、対人スキル、チームワークなどの能力を活かし、エンジニアとしての価値を高めることができます。

スペシャリストになる: AI技術と関係が薄い分野でも、その分野の専門家として深い知識やスキルを持ち、他のエンジニアが持ちえない価値を提供することで、競争力を維持できます。

コミュニケーション能力の向上: 顧客やチームメンバーとの円滑なコミュニケーション能力は、技術だけでは解決できない課題に対処する上で重要です。コミュニケーション能力を磨くことで、エンジニアとしての価値を高めることができます。

AI技術の普及による影響は否めませんが、上記のような対策を講じることで、AI技術と関係の薄いエンジニアも変化に対応し、今後もIT業界で活躍し続けることができるでしょう。重要なのは、自らのスキルや知識を継続的にアップデートし、柔軟性を持って変化に適応する姿勢を持つことです。

ChatGPTの回答

はい、火の玉ストレートが返ってきました。

我々エンジニアは、「生涯勉強」ですよね。実感させられました。

結局は、時代についていくには自分もアップデートするしかないですよね。

今後を考える

少なくとも、この短期間での GPT-3.5 から GPT-4 への精度の向上を考えると、今後も AI技術は飛躍的に進歩していくと考えられます。

私自身は AI の技術とは少し離れた位置にいるエンジニアですが、もう避けては通れなさそうです。

「生涯勉強」、改めて肝に銘じます。


この記事が気に入ったらサポートをしてみませんか?