見出し画像

生成AI時代のプログラミングの勉強と意義📖

生成AIが日常化している昨今、プログラミングを学ぶ意義は進化しています。
本記事では、その変化とそれが私たちに何を意味するのかを探ります。

そもそもコードを書く程度であれば、現時点でChatGPTは、「基本的な動作をするコード」を生成できます。
その「基本的な動作をするコード」を組み合わせるだけで、Chrome Web Storeに公開だってできてしまいます。もう少し頑張れば、playストアにだって公開出来ますし、そのような水準のアプリケーションも比較的容易に作成可能です。

特に注目すべきは、専門知識が乏しい人でもアプリを作成できる点です。これは、プログラミングの敷居を大きく下げていると言えるでしょう。
ノーコードでアプリを作るサービスにも通じますが、例えば、staticとは何なのかや、メソッド、クラスが分からなくても作れる時代です。
Androidアプリなんて、ライフサイクル周りの課題、ChatGPTに投げるだけで解決ですものね。
それはそれで素晴らしいですが、果たしてそれで良いのか、とも思うわけです。

コードを生成できるAIは時として、セキュリティ的に懸念のあるコードを生成することがあります。それらは今後、どんどん精度は上がっていくに従って、大した懸念は無くなるとは思います。
しかし、どうやってその品質を担保するのか、という懸念は依然として残ります。
では、テストケースも全部書いてもらって、それで潰していけば良いでしょうか。本当にそれだけで充分でしょうか。

今後当面求められる人材とは

現時点で、コードを書く生成AIは依然として改善の余地があり、完璧ではありません。なので、暫くは従来通りコードを書ける人間は絶対必要です。
しかし、ChatGPTを含む生成AIを使いこなす能力は、現代の重要なスキルの一つです。この点も忘れないようにした方が良いでしょう。

スキルとしては、ChatGPTでも何でも聞いて、組み合わせて動くものを作れる、というのは1番のスキルになると思いますが、その次に求められる具体的な人材としては、コードを1行ずつ正確に検証できるか、というところになると考えています。つまり、その責任を持てるのか、という所でしょうか。
このため将来的には、プログラミングの学習ではこのような点に重点を置くことが、より効果的であると考えられます。

プログラミング理解の深化と効果的な勉強方法とは

プログラミングにおいて、コードを書くことができても、その理由や原理を説明することが難しい場合が多いです。
例えば、多くの経験豊かなプログラマーでさえ、なぜ特定の変数がstaticである必要があるのかを明確に説明することが難しい場合があります。
これに限らずとも、よくよく見ると、確かに分かって無いな、と思うところもあるので、改めての勉強も含めて、以下の通りやってみるのも面白いのではないかと思います。

ChatGPTとのやりとり

今回、自作したGPTsベースでのやりとりですが、以下のような指示に「Javaで」って付け加えても良いと思います。任意の言語でコードは作ってくれます。

勉強用に簡単なメソッドを持つクラスをつくってください。その後に、それについてこちらが解説をしてみるので、間違っていたら間違っていると返して、解説してください。

プロンプト

以下のような課題が出されるので、自分なりに回答します。

public class StudyClass {
    // 二つの数値を足すシンプルなメソッド
    public int addNumbers(int a, int b) {
        return a + b;
    }

    // テスト用のメインメソッド
    public static void main(String[] args) {
        StudyClass sc = new StudyClass();
        System.out.println("Sum of 5 and 3 is: " + sc.addNumbers(5, 3));
    }
}

先ず、mainメソッドが優先して処理されますので、そちらから解説します。
publicは他のクラスからアクセス可能である事を意味しています。
staticはオブジェクトを作成せずに、このメソッドを呼び出せることを指しています。 voidはこのメソッドが値を返さないことを指しています。

次にStudyClassの新しいインスタンスを作成しています。
System.out.printlnはコンソールに出力するためのものです。
その中で、Sum of 5 and 3 is: は単なる文字として出力されます。
その横にある、sc.addNumbers(5, 3)については、さきほどつくったインスタンスの中にあるメソッドaddNumbersを呼び出して、 第1引数に5を、第2引数に3を渡して、その結果が出力されます。

addNumbersの方では、retuenのところで、a+bをしており、これが5+3で8を返しています。

プロンプト(質問に対する回答)

間違いや理解が不十分な箇所を特定し、それらを深く探求することは、知識の深化につながります。

なんでそんな実装なのか、細かく説明する機会ってのは、新人の頃とか、勉強している時くらいだと思います。
改めて、AI相手に通じる説明ができるのか、といったところを考えてみてもよいかもしれません。
このような深い理解は、将来的に生成AIがコーディングを支配する時代において、より一層の価値を持つでしょう。

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