こんにちは、Pythonエンジニア育成推進協会 顧問理事の寺田学です。私は試験の問題策定とコミュニティ連携を行う立場です。
前回のコラムで、昨年の振り返りと今年の展望についてお話しましたが、その中でAIの活用が進んでいるというお話をしました。今回はこのAIについて、主に付き合い方の部分を中心にお話したいと思います。
なお、AIの世界の発展は非常に早く、たった数か月経っただけでも、より良いものが新たに登場したり、改修されたりします。そのため、このお話は、2025年2月初旬時点の話としてまとめていきますので、まずはその点についてご理解いただきたいと思います。
AIを利用したプログラミング学習
昨今はWeb検索だけでなく、ChatGPTのような生成AIや大規模言語モデルを中心とした自然言語処理のAIなどが数多くあり、学習に役立てることができます。
実際AIに、「こういうコードを書きたい」、「これについて分からなくて困っている」というような内容を、ChatGPTやGoogle Geminiなどに聞いてみると、それなりに正しい答えが返ってきます。そのため、何かを学びたいと考えたときに、AIを使い、質問したり調べたりという行為をする機会がますます増えていると考えています。
とはいえ、AIの使い方については、便利さを含めて良し悪しはもちろんあると思いますし、使うか、使わないか、どちらが良いという話でもありません。
コーディングをサポートしてくれるAIツールたち
さて、コーディングを助けてくれるツールを使ってコーディングする人は昨今、増えており、サービスも多様です。
2025年2月時点では、従来の「ChatGPT」のような生成AIだけでなく、コーディングなどの技術系に強い「Claude.ai(クロード)」や、AIと検索を組み合わせることによって様々な答えに到達して教えてくれる、または取りまとめてくれる「Perplexity(パープレキシティ)」や「Felo(フェロー)」、「Google Gemini」、「Deep Research(ChatGPTの機能)」といった新たなツールが登場しており、これらは盛んに使われるようになっていると感じています。
また、近頃では複数のモデルが裏側で使われているサービスも存在しており、これから先いろいろなものがミックスされて提供されるものが増えてくるでしょう。
そんな様々なサービスにあふれている中、2023年ころから市民権を得ているのはGitHub Copilotです。
最近はそこからさらに進化しており、AIエージェント的に、よりAIがコードを自分で作っていくという世界が広がっています。代表格としては「Cline(クライン)」という、様々なモデルを使っているもので、指示をもとにコードを作ってくれたり、コードを修正してくれたりします。
さらに一歩進んだものとしては、「Devin(デビン)」というものがあります。これは、レポジトリを指定すると、レポジトリからソースコードを取ってきて、指示に従ってプルリクエストまで作ってくれるAIエージェントです。
最近のプログラミング業界のAIは、このような、それなりのコードを書いて、テストを通して、プルリクエストまで出してくれるようなというところまで発展が進んでいます。
現時点でのAIに完全にコーディングを任せることは難しい
さて、これらのAIエージェントを使いこなすのは正直、現段階では難しい技術だと考えています。
確かに、今後、人がやっているような様々な作業は、AIに取って代わられる時代が来る可能性はもちろんありますが、今の段階では完全に取って代わられるほどの凄いものが提供されているとは思えないからです。
私自身も、一人で、もしくは数人で、ClineやDevinなどを使ってプログラミングをさせたことがありますが、とても素早く適切なコードを書いてくれる時と、同じところで躓いて先に進まなかったり、間違った結果を出し続けたりという場面は何度も見ています。そのため、コーディングがはかどるかと言えば、ChatGPTやCopilotと比べると思ったようにはいかず、疑問が残る状況です。活用の仕方が難しいと感じています。
なぜこのような結果になったかと言えば、的確な指示を出すのがとても難しいからだと感じています。AIが分かるように、適切にかみ砕いて指示を出さなければ、今の段階では適切なものを出すことができないためです。
もちろん、AIは進化していくので数年後には自分が書くよりも、AIにやらせた方が早くて適切なものになる可能性はありますし、AIに注目している人は多いので、いろいろなものは出来上がってくるだろうと思っていますが、2025年2月の時点では、知識がないのであれば、まだまだ難しいと思います。
AIエージェントを使いこなせる人とそこに至る道
では、どういった人物であれば、AIを使えるのでしょうか。
例えば、Pythonエンジニア育成推進協会のPython 3 エンジニア認定実践試験レベルのものが分かっている人は、恐らくコーディングもそれなりにできますので、AIへの指示も適切に出せるだろうと思います。そして、AIが書いてきたものを確認できるはずです。それができないのであれば、現段階のAIを使うよりは、自分のわかるように書いた方が圧倒的にゴールに近づくのが早いはずです。
今後、ざっくりとした要件の概要だけで完全なものを作ってくれる時代は来るかもしれませんが、望み通りになるかは分かりません。もっと言えば、トラブルが発生したときに、どこが原因なのかを探るのも、わかりにくくなると思います。
私自身、Devinに書かせたコードを使った後に、仕様変更しようとした際、自分で書いたコードではないので、その中身がなぜこのように書かれているかの意図が分からず時間が掛かりましたし、出てきたコードを良いと判断できることもあれば、中途半端な指示だったために考慮が足りていないコードになっていることもありました。
また、別の機会では、私自身が得意ではないフレームワークを使ったコードをDevinに書いてもらったことがありましたが、返ってきたものが正しいか判断することができませんでした。この時、テストコードも書かせてみましたが、適切な回答が得られなかったことから、適切な指示を出せていないことを実感しました。
だからこそ、きちんと適切な指示を出すことができ、そして確認できるエンジニアの存在は必要で、今後はそういった存在が重要視されてくるだろうと思っています。
ちなみに、今存在しているAIの技術力がどの程度かというと、ジュニアレベルと言われています。実際Devinはジュニアレベルのエンジニアをイメージしてほしいと明言しています。
このジュニアレベル、シニアレベルの判断基準は難しいのですが、前提として、今までに公開されている大量のソースコードが読み込まれており、公式ドキュメントやブログを頭の中に入れているような状態と考えてもらえればと思います。
なので、自分がやりたいことを、その考え方や、処理したい内容、処理する順番などの情報を具体的に示すことができるほどきちんとした回答が返ってきます。
例えば、こういう意味のボタンと、こういう意味のボタンをどこに配置してくれというイメージです。具体的な指示を出せれば出せるほど、理想に近いものが出来上がります。あいまいな指示のままでは、良いものにはなりません。
初心者がツールを使えるようになるまでの工夫
AIが書いたものが、そのまま動くのならそれはとても素晴らしいことではありますが、そのままでは、その後に改造が必要になったときの知識に入ってくることはありません。そして、知識がなければ、AIにどこから聞けばいいのかもわからなくなります。
そこで、初心者がツールやAIと付き合う時におすすめしている方法についてお話したいと思います。
私が初めてのツールを使うときは、まず公式ドキュメントを見ています。とはいえ、公式ドキュメントは事前知識がない中では理解するのがとても難しいものが多いというのが実情です。
例えば、新しいWebフレームワークを使おうとしたとき、すでに他のWebフレームワークをいくつか使ったことがある場合には、新しいツールであっても、公式ドキュメントをスラスラ読むことができます。
一方、そうしたバックグラウンドが無い時には、全く歯が立たないことがあります。そうした時には、最初はなるべくAIを使わずにサンプルコードをコピペして、まず動かしてみます。その後、公式ドキュメントやブログなどから情報を探して、自分で改造をしてみます。改造中などに分からなことが出てきたときにはChatGPTなどのAIに聞くか、Copilotのサジェスチョンをある程度信じてコードの改造を進めています。その後、改めて公式ドキュメントに戻り、これがどういう意味だったのかをもう一度確認します。そうすることで、そのツールがどういったものかを頭に入れていきます。
動くものがあるという事自体は勉強がしやすくなりますので、ある一定レベルで動くものを、自分の手で改造して学習する方法もありだと思います。ある程度のところまで動くようなレベルになってから、次の手を考える方が早いこともあります。特に、深く学ぶ必要がないものや、それ以降使う予定がないものに関してはなおのことです。
さいごに
普段の仕事でも、ずっと一緒にいるスタッフであれば、「上手い感じで返答しておいて」という指示だけで、立場やスケジュールなどを考慮して、良い感じに返答できる人が出てきます。それは相手が情報を持っているからできることです。一方で、新人の立場であれば、そうした事前情報を知らない可能性が高いため、現状を伝えて具体的な指示をしてあげる必要が当然あります。
それと同様で、どんなデータがあって、何を目的にしていて、どうしたいのか。知らない分野や知らないものに対して、AIを使ったから上手にできていると判断するのは現状難しいのは確かで、そうした基本的な情報が頭にない状態では、AIに問い合わせても、上手く何かを伝えきることはできません。
懸念点ばかりだと思うかもしれません。
確かに今後、AIが進化し、それなりのコードを出してくれる時代になってくる可能性はあります。
そして、AIの進化によって、今後、勉強する機会や実践を積む機会が失われる可能性は高くなります。そうなれば、AIに適切な指示を出せる人になれるかどうかは、大きな課題になりますし、重要なポイントです。
だからこそ、基礎をきちんと身に着け、自分でコードを書くという実践経験を積み、ベテランになるというステップを迎えた人でないと、AIを使いこなす側に行けないということは確かです。たくさんある様々なツールを、上手く、どう使いこなしていくか。これは今後、それぞれがきちんと考えていかなければならないことだと思います。