AIが幻滅期ときいて
初めに
最近AIでのコーディングは、結果品質を担保できないとか、思ったよりいいものができない
ソフトウェアの開発プロセスを変えてないという話が多いなあと思っています。
これから書くことは、個人的に思ったことで、批判されうる内容も結構あると思うんですが
お手柔らかに見てもらいたいです。
AIでコーディングするデメリット(よく言われてること)
AIでコーディングすると、以下のようなデメリットをよく聞きます。
- 作ったは良いが、思ったより不具合がある。
- レビューのコストが増える。
- コードの量は増えたけど、コードを理解する、読む時間は下がってない。
- プルリクエストが大きくなって、チェックがしずらい。
- レビュー者は、AIを使って書いたコードをそのまま投げてこられて困る。
- 正しくモデリングされていないコードが投げられる。
- AIは事業を加速させていない。(まだまだ、実際に利益を産めていない)
という話があると思います。
結果、普段より時間かかってるし、生産性が上がったというけど
品質が下がったコードを産んでいるなら、「結局生産性って上がってないよね?」っていう
意見を多く聞きました。
まだAIは評価段階なんだと思います。
自分の場合は
AIが来るまで、コーディング力は低かったと思う。けれどもAIが来てから、実務でも、プライベートでも自分でアプリを作れる幅が増えて、プログラミングが好きになった。
コーディングエージェントは実務には貢献しないのか
現段階では、期待より事業利益を産めてないのは事実だと思う。
銀の弾丸ではないみたいな。
この話を突き詰めると
正直、AIでコーディングするときのネガティブな意見は事実だと思う。
自分も経験があるから。
でもこの話を どれだけ突き詰めても「結局AIはまだダメ」 って結論にしかならない話だと思う。
そうなるぐらいなら、このコーディング方法を正しくするという 気概 が大事だと思う。
どういうメンタルで取り組むか
こういう話って 「便利につかえる」っていう思い込みが必要 だと個人的には思う。
ネガティブな意見があるとしても使い続けるべきだと思っている理由は
「出来るって思わないと、物事が続けられない。」 という部分があると思ってます。
自分は、人より明らかにエンジニアに向いてないと思う部分は沢山あるが
この気持ちがあったからエンジニアを続けられたと思う。
このメンタルが大事だと思っている。
※楽器とかの練習に近いメンタルかもしれない。
どんな風にAIで実装するのか
自分はこのようにしています。
-
普通にAIで実装する。
-
実装でAIに任せすぎずに、実装するときに 出来るだけ具体的なコードの実装方法を指示する。
- ちゃんとモデリングの方法を指示する。
- 事前にどんな処理を、どこに、どのように記載するのかを決めておく。
- バイブスでコードを書かせ「すぎ」ない。
-
実装して画面からテストしても良いし、テストコードからテストを行っても良いし、とにかく 作り切ってしまう。
-
作りきって動作が正しいことを確認したら、コードを理解するフェーズに入る。コードを理解する。
-
どのようなコードであるべきかを判断して、必要があれば修正する。
なぜこのやり方か
作り切るまでが早く、コードも最終的には理解して、ほしい形に持っていける。
つまりどうチェックするか
テストコードの書き方と似てるけど
- 最初に、こんな 動作や実装になっているべき を考える。
- コーディングをして、動作確認をする。
- 1を検証する。
結局、勉強が必要
AIが得意なことは 「模倣」 である。
つまり、 「ただしい暗黙知を明文化」 する必要がある。
間違った方法を示せば、間違った実装が生まれる し、逆も然りなので。
正しい実装のケースを、文字で明文化しAIに伝えられることが必要 と思っています。
これさえできていれば実装は、大筋から逸れて行かない。
逆に、正しいコードのモデリングができないとか、テストコードを書く技術を知らない状態だと
AIにも正しさを伝えられない。正しさを伝えられないことが問題。
Google検索がAIに置き換わった感覚
わからないことを、Googleで検索して実装していたときは、正解にたどり着くまでが大変だった。
今はAIが、 検索もして正解のパターン(あくまでもパターン) を教えてくれる。
AIを使って実装方法を調べて、学ぶ。正しい実装方法を考える。
それをAIに伝えて実装する。
社内の知識、ドメイン知識、これらもAIに伝えられる状態を作ることが大切で、
組織の知識を体系化して伝える、AIオンボーディング が僕は重要だと思う。
もしかしたら向いてないのかもしれない。
このやり方で良いやんって思ってるので、ちゃんとコードを手で書くのが正しいという人と比べると、自分は向いてないのかも。
おわりに
色々な批判はあると思うんですが、自分はAIを使って今後も実装していくつもりです。
できないとか、まだだ、って思ってる間に海外ではAIOSなるものが作られて要るようです。
とにかく進化してどんどん変わっていくから、試し続けるしかない。
手でやったほうが早いと言い続けると、使い方もうまくならないし
やっぱり 思い描いているコードを素早く書いてくれるところ が自分は好きです。
Discussion
まだ成長の過程にあって、ビッグテックとかは半分くらいAIで書いてるみたいな話もあるし、今後も考えると今のうちに慣れておきたいよね。
自分は、IT系のエンジニアじゃないけど、だからこそ、試作トライしたいと思ったときに、ITエンジニアの力を借りずに初期検討をすることができて、迅速に結果を得られる。そういう意味で、利益は得られてる。本職ではまだまだ難しいかもしれないけど。