はじめに
プログラミングの勉強をしているのですが、なかなか苦戦しています。
特にアルゴリズムまわりの問題がむずかしく、全然わかりません。
ChatGPTくんに考え方を教えてもらい、ヒントを出してもらい、それでも解けないので答えを見て解説してもらっています。困ったことがあればすぐに頼って泣きついています。
子供のころはのび太くんの事をすぐドラえもんに頼る、なんて情けないやつなんだと思っていましたが、大人になったぼくに彼の事を笑う資格はありませんでした。
しかしここでふと疑問が生まれました。
あれ...?
アルゴリズムの事を聞いたらChatGPTが全部解決してくれるんだし、勉強なんてしなくても良いのでは……?
アルゴリズムはもう学ばなくていいのでは?と思った理由
1. ゴールを設定すれば実装はAIがやってくれる
最近は、アルゴリズムを自分でゼロから書く必要がほとんどありません。
ChatGPTに聞けば、解法の候補を出してくれて、コードを書いてくれて、テストまで生成してくれます。
結局のところ必要なのは
- ゴールを設定する能力
- そこに至るための道筋がどんなものか
明確なゴールが設定でき、その為の技術や手段さえ知っていれば、その中身を人間が書く必要性は限りなく低く感じます。
2. 必要なのはAIに正しく指示する言語化能力
AIは賢いですが、こちらの伝え方が曖昧だと期待通りの結果になりません。
- 最終的に思い描いている形はどんなものなのか
- 何を優先したいのか
- どんな形で出力がほしいか
こういった要求を整理し、AIに伝える力が重要で、これは必ずしもアルゴリズムを深く理解していなくても成り立ちます。
むしろ、どうしたいかを言葉にする力こそが大切なのでは?と感じていました。
ChatGPTに聞いたらボコボコに反論された
この考えをChatGPTに投げてみたところ、御託はいいから早く勉強しろと言われました。
簡潔にまとめると、以下のような内容です。
1. AIのコードは完璧ではないため、誤りを見抜く基礎知識が必要
AIは自信満々に間違えるので、正しいかどうか判断できる最低限の理解が必要です。
なにもわからないまま採用すると、性能問題や論理バグにつながる可能性があります。
2. 複雑な要件を正確に伝えるには、どうしても基礎理解が必要
「計算量を抑えたい」「メモリ使用量に制約がある」など、抽象的な性能要件を伝える場面では、アルゴリズムやデータ構造の概念が必要になってきます。
3. 現場のバグはアルゴリズム理解の欠如から生まれるケースが多い
実務で痛い目を見ている人ほどこの怖さを知っており、基礎理解のなさがそのままプロジェクトの破綻に繋がる可能性があるようで、かなり恐ろしいです。
4. AIに依頼するための言語化にも、アルゴリズムの理解が必要
これが一番確かに......と思った理由なのですが、そもそもAIに正しく言語化して伝える為にはアルゴリズムの理解が必要不可欠になってきます。
抽象化、問題の分解、条件整理など、AIに正確な指示を出すための思考そのものがアルゴリズム的であり、結局は土台となる概念を理解しなければいけません。
おわりに
個人で小さなツールを作ったり、簡単なスクリプトを書く程度であれば、正直そこまでアルゴリズムに精通していなくても困らないかもしれません。
しかし、仕事としてコードを書く場合や、規模が大きく複雑な開発に関わる場合は、むしろアルゴリズムの理解があるほど有利になる、と感じました。
ただし必要になる能力と場面は変化しており、深いアルゴリズムの実装力よりも、概念として理解し、必要に応じてAIに正しく依頼できる状態を目指すのがこれからは大切になってくるのかなと思いました。
