【Claude3でコーディング】 AIで技術研修のコード作ってみた!
2024-05-10
こんにちは!新入社員の大町です!
5/10のFIXERブログ駅伝を担当します!
今回私が取り上げるのは生成AIで本格的なコーディングに取り組む方法です。最近、コーディングはこれから生成AIが担っていくのだというお話を耳にします。人間は司令塔、AIがコーディングみたいな。それを聞いたらきになりませんか?
「じゃあ、今AIはどこまでできるの?」ってこと。
だから私、実践してみました!実際に技術研修で生成AIを活用し、どこまでコーディングできるのか。そしてAIを使ったコーディングの現在地とその課題その未来も見えてきました。今日はそれを余すことなくお伝えします!!
AIでコーディング?どうやる?
まずはプロンプトを作りから
AIでコーディングをするにはどうすればよいのでしょうか?私は「プロンプト」を作りから始めました。
よく、ChatGPTとかに「○○をお願い~」とか、「××って何?」とかってお願いする文章、あれです。あれがプロンプトです。
これを読んだあなたは、こう思いませんでしたか?
「え、適当に△△って機能を持ったコード書いて」って言えば良くない?って。
残念ながら、そうはいきません。そんな感じで”ふわっとした”指示をしてもAIは何もしてくれません。
正確には、一応コーディングはするけど、自分の想定する機能を実装したコードを作ってくれない。
これまで使ってきた感想として、生成AIは抽象的思考が苦手であると感じています。プロンプト内で”ふわっとした”指示をしても、生成AIがそれを詳しく正しく認識できないということです。その代わり、具体的思考にはめっぽう強い。つまり「何をどのようにするか」を詳しく指示して、それをやらせるとめちゃくちゃ強いんです。
よほどの天才でもない限り、具体的思考でAIに勝てる人間はいないと思います。
だから、AIに指示を出す時には「いつ」「誰が」「何を」「どのように」「なぜ」行いたいのかを明確にしなければなりません。5W1Hです。
だから、プロンプトを作るのです。
プロンプトはどうやって作る?
ではプロンプトはどのように作るのでしょうか?考えられる方法は2つあります。
- 自分自身で作る
- AIと自分の共同作業で作る
それぞれのメリットはなんでしょうか?1.の場合のメリットは、人間が与えた指示を過不足なくAIに伝え、これをやらせることができます。その代わり、自分自身で作らなければいけません。例えば、分量が大きくなる場合や仕事の役割などを細かく理解し、分解できていない場合、人間への負荷が増大します。
2.の方法は、人間の負荷という意味ではそれほどないといっていいかもしれません。しかし、AIに作らせるということはそれを監視していなければ使えないプロンプトを作ることにつながりかねません。そういう意味で、今回は1.と2.のいいところを組み合わせてプロンプト作成に取り組みました。
具体的には、「①プロンプトの大まかな条件を列挙して、それをもとにAIにプロンプトを作成させる→②そのプロンプトを別のAIでレビューさせる→③レビューをもとに再度プロンプトを生成」ということです。ただし、①の内容に明らかな問題がある場合、自分自身が改善してほしい点がある場合は、②で別のAIにレビューを依頼するときに「レビュー観点」を設定してレビューさせました。
こうすると、AI自身が問題をあぶりだすのに加えて、自分自身の変更希望点を反映させたレビューを行うことができるからです。今回は、GaiXerで最近利用可能となったClaude3 Opus同士でプロンプトのラリーを行いました。実際に作成できたプロンプトはこちら(ここをクリック)です。社内で確認を取りましたので、このプロンプトは自由に使ってください!
プロンプト使ってみた
ここからは実際にプロンプトを使ってみた感想を書きたいと思います。機密情報が含まれているので、実際に利用した画面をスクショでお見せすることができません。
本当は別でnuxtプロジェクト立ち上げて作ればいいんですけどね(笑)
実際にプロンプトを使ってみた感想としては、まずAIがまるで本物のSEであるかのように話しかけてきました。技術研修では今Nuxt3を活用してフロントエンド実装を行っているのですが、機能を実装する上で何が必要なのか、その機能はコンポーネント分けしてやったほうがいいんじゃない?とか提案してきます。
逆に自分が勉強になったりもするんですよね。
しかも、最近はASCIIアートでUI案を提示させることによって、実際にプログラムを動かしてみたときの表示上の問題点を予めあぶりだすことができるということにも気づきました。AIすごい。
ただ逆に問題にも気づいてきました。それはAI側の問題と、人間側の問題の2つに分けられます。まずAI側としては、必ずしも好ましいコードを作ってくれるとは限らないということです。これは生成AIで言われる一般論ですが、AIは平気で嘘をつきます。しかも、一見辻褄があったように見える嘘。
だから、嘘を嘘を見抜けないと本気で生成AIを使うことは難しいと感じます。
そして人間側の問題。これは前者より結構深刻だと思います。
その問題とは、「人間自身コーディングスキルを失ってしまう」ということ。
「え?コーディングを楽にするためにやってるんじゃないの?別にコードを人間が書けなくなってもよくない?」
こう思った人がいると思います。個人的には、この意見は半分正しくて半分間違っていると感じています。
確かにこれから先、これ以上に進化したAIやコーディングスキルを持ったAIが登場するだろうということを考えれば、コーディングスキルは失ってもいいかもしれません。しかしながらAIは嘘をつきます。しかも、下手をするとセキュリティ的に問題になるコードを書く可能性も考えられます。
ですので、人間が生成AIのコードをレビューし、安全か、処理に問題がないかをチェックする必要があります。これに必要なものは、私はコーディングスキルだと思うのです。
正確には、「コードの意図と処理の内容を見抜けて、コードの問題点を明らかにできる」スキル。この力が養えるのは、結局人間自身が過去にコーディングした経験ですよね?。
経験、というよりも経歴にできるほどに。
これがAIコーディングの一番の問題点だと感じています。大きな矛盾なのです。
「じゃあコーディングで生成AIを使うことをやめるべき?」と考える人がいるかもしれませんが、それは違います。
生成AIはコーディングにおいても強力な武器です。おずおずと使うのをやめる必要はないです。
必要なのは「正しい使い方」です。
おわりに
いかがでしたでしょうか?いろいろごちゃごちゃ書きましたが、結局AIはすごいです!
ポジティブに考えると、AIがどんどん人間の仕事を代替してくれるので、人間が楽できるようになる未来が来るかもしれません!
ネガティブに考えると、AIの嘘を見抜ける人間を増やさないと、これから先の未来は暗いものになる可能性があります。そして、それをできる人間は往々にして超高度な人材で、ものすごく頭のいい人たちしかできないでしょう。となるとAIをこのまま発展させれば、AIが与える社会へのデメリットだけが大きくなっていくかもしれません。
じゃあそのネガティブな部分にどう付き合うんでしょうか?
この解は社会がはじき出すしかありません。
この解は社会がはじき出すしかありません。