ChatGPTでプログラミング学習をする際の大事なこと

今回はChatGPTでプログラミング学習をしている初学者、これからしようとしている方に向けて記事を書こうと思います。

先輩方にも、現在の初学者界隈を垣間見てもらえればと思います。
　
私はChatGPT4でPythonを主に学習して２か月が経ちました。
　
２か月の割にはあまり身に付いていないと感じたので、自分への戒めも含まれています。

## 教えは乞うても答えは乞うな

私😎「以下の要件を満たすコード頂戴」

GPT😊「はい✨」

私😩「エラーでた」

GPT😊「エラーを見ると…このコードで解決できると思います✨」

ChatGPTめっちゃ優秀なのでまとまったコードもバンバンくれます。
　
エラーが出て理解していなくても、エラーを貼り付ければ正解コードにたどり着けます。
　
私はこの沼にハマっていました。
　
この２か月で、学習中の私がアプリなどを５つほど開発できたのは確かにChatGPTのおかげです。
　
しかしもう一度同じアプリを開発しろと言われると、知識技術を吸収できておらず恐らくほとんど同じくらいの時間がかかると思います。
　
学習の一環としてアプリ開発を主にしてきたものの、これではアプリを開発しただけで学習にはなっていないと、事の深刻さに２か月経ってやっと気づきました。

:::note warn
**戒め**

* 一連のコードを求めるのではなく、完成を目指して協力して開拓すべし
* エラーが出たら絶対にエラーを読み、可能な限りエラーの内容と解決方法の予測・改善を試みよ
* エラー解決は理解できて初めて意味を成す
* 常に、今自分が何をしたくて何をしているのかを把握すべし
:::

## 必要性・関連性・注意点を意識せよ

私😉「以下のコードを解説して」

GPT😊「はい✨」

私🤨 「つまりどういうこと？」

必要性・関連性・注意点を把握していないと理解がなかなか追いつかないと思います。
　
もらったコードが何をしているのか理解していないと、ものすごっく開発効率も悪いです。
　
もちろん学習にもなっていません。
　
でも開発は進みます。
　
ChatGPTが優秀故にこんなことが起こるようになりました。
　
一連のコードを書き終わった時、そのコードは何をしていてなんでそれをしているのかしっかりと把握してから次に進みましょう。
　
そうしないと他でエラーが起こった時に解決方法がわからなくなります。
　
また、コードには表向きの顔と裏の顔があると思っています。

表向きの顔とは、そのコードが何をしているかなので表面に出ていて認知も理解も容易です。
　
ですが裏の顔は覗かないとなかなか見えません。
　
「このコード正しいはずなのになんで動かないんだろう…」

「これでエラー解決できるはずなのに一生エラー出る…」

表の顔しか知らず自分の理解が誤ったりしていると、一生ボコボコにされます。

詰まった時は自分のコードを再確認しましょう。

:::note info
教訓
* 自分は何をしたくて何をしているのかを把握すべし
* 何事も思い込むべからず
* 何かおかしいと感じたら１つ上の視野で確認すべし
:::

## プロンプトエンジニアリングを意識せよ

プロンプトエンジニアリングとは
> 大規模な言語モデル(LLM)が与えられたタスク(回答)をより効果的に実行できるようにするために、質問や指示を設計する技術。
ChatGPTなどの自然言語処理を必要とするAIに対し、適切な回答を得るために必要なプロセスの一つ

高品質な回答を得るためには、プロンプトエンジニアリングと呼ばれるAIとの会話技術も重要です。

例えば、以下のようにシンプルに伝えると、

```input.txt
以下のコードを解説して。

"""
print('Hello World')
"""
```

```output.txt
このコードはPythonで書かれており、非常に基本的な1行のプログラムです。
このプログラムは、"Hello World"という文字列を出力するだけです。
なお、このコードを実行するためには、Pythonインタープリタが必要です。
Pythonのインストールやセットアップ方法については別途質問いただければ幸いです。
```
このように回答もシンプルです。

では次は先ほどの章の``必要性、関連性、注意点``にフォーカスしてみましょう。

```input.txt
以下のコードを必要性、関連性、注意点を交えて解説して。

"""
print('Hello World')
"""
```

```output.txt
このコードはPythonの基本的なコードで、文字列 'Hello World' を出力するものです。

必要性：
このコードはプログラミングの学習を始める際の最初のステップとして非常に重要です。
'Hello World' プログラムは、新しいプログラミング言語を学ぶ際の伝統的な最初のステップで、
その言語の基本的な構文を理解し、プログラムが正しく動作することを確認するために使用されます。

関連性：
このコードは、Pythonの基本的な構文と出力関数について理解するためのものです。
Pythonは、Web開発、データ分析、AI開発など、多くの領域で使用される人気のあるプログラミング言語です。
したがって、この基本的なコードを理解することは、Pythonを使用したプログラミングの基礎を学ぶ上で重要です。

注意点：
このコードは非常にシンプルなため、特に注意すべき点はありません。
ただし、Pythonはインデント（スペースやタブ）に敏感な言語であるため、複数行のコードを書く際にはインデントを正しく行うことが重要です。
また、Pythonでは文字列をシングルクォート(' ')またはダブルクォート(" ")で囲むことができますが、どちらを使用するかは一貫性を持って選択することが推奨されます。

このコードは、Pythonがインストールされている環境であれば、Pythonファイル(.py)として保存し、コマンドラインから実行することができます。
また、Pythonの対話型シェルやJupyter Notebookなどの対話型環境でも実行できます。
```

もう``print('Hello World')``についてマスターしたと言えるのではないでしょうか。
　
今回はコードがそもそもシンプルなためオーバーな気がするかもしれませんが、普段はもっと複雑なコードを扱っているはずです。
　
プロンプト次第で学習の質が大きく左右されますので、ぜひプロンプトエンジニアリングも意識的に高めていきましょう。
　
ChatGPTでのプログラミング学習はプロンプトエンジニアリングスキルを磨くのに持って来いの機会です。
　
ありがたいことにネット上にはプロンプトエンジニアリングに関する有用な記事もたくさんあるため、せっかくなら一石二鳥を目指しちゃいましょう。

:::note
プログラミング学習と並行でプロンプトエンジニアリングを磨くべし
:::

## 最後に

今回は私がChatGPTの沼から学んだことを主に書きました。
　
これは何事にも当てはまりますが、``受動的ではなく能動的に``行動することが大切だと再認識できたいい機会でもありました。
　
これからもさらにChatGPTを活用していろいろと磨いていきたいと思います。
　
また、初学者さんで学習に不安などを抱えている方がいれば、ぜひ相談していただければと思います。
　
私も最初のころは不安などもあり学習に前向きになれないこともありましたがそんなものはやはり不要でした。
　
あなたの不安、取り除きます！
　
コメント、TwitterのDMなどもお気軽に！

**Happy Programming Life!**