AIにプログラミングを助けてもらおう

どうも上村です。
ブログは1年以上サボりました。

書きたいことは山ほどあるけどメンドイ

最近、GitHubの企業アカウントで「GitHub Copilot」使えるようにしてるから、開発でガンガン使ってOK


っていう現場にスポットで数カ月参画してました。

 

・・・AIによる支援ツールを使っている現場が初めて
・・・今更ながら、実はAIの支援ツールを使うのが初めて

ということで、ガツガツ使って体験してきました。

 

 

~  超簡単にAI支援の個人的な感想  ~

 

反復的なことを書かせるなら、提案されたものをガツガツ適用するのは時短につながる

 テストコードで同じassert文を書く
 エラーハンドリング時にエラーをラップして返却する

等々

 
専門的な知識が必要になる、フレームワークが絡むinfrastructure層の実装に詰まった時はかなり強い

 「こういうエラーになり困ってる、こんな実装をしたい」みたいな指示で割と良い感じに動くコードを出してくれる

技術者として当たり前だけど、ドキュメントを読む必要性があるフレームワーク知識箇所を甘えさせてくれる
もちろん自分でも読むけど、機械なので解釈が秒を超えてくる

 

 

・評判通り、自分が書くコードの特徴に合わせてきてくれるから、精度が上がっていく

例えば、Go言語ですが、以下のようなソースが提案されたとします

    b := []byte(`{"name":"taro","age":33}`)
    var h Hoge
    err := json.Unmarshal(b, &h)
    if err != nil {
        return err
    }
    return nil

エラー返却だけのものに対して、エラーの有無は1ライナーで行い、エラーはラップして返却するのが望ましいので、
以下のように1ライナーのハンドリングで書きなおす

    b := []byte(`{"name":"taro","age":33}`)
    var h Hoge
    if err := json.Unmarshal(b, &h); err != nil {
        return fmt.Errorf("failed to unmarshal xxx: %w", err)
    }
    return nil

これ以降、エラー返却だけのものに対してハンドリングする場合、1ライナー+エラーラップで提案してくれるようになる

等々

~~~

ここらが使う際に良いなと思いました。
前提として言語やアーキテクチャ知識が必須ですね。

指示で生成して動かす × n  ⇒ 動くものできた! ⇒ PRでレビュー依頼
というのは個人的にNG
AIも間違ったものを生成してくるので、人間がちゃんとした知識を持ってレビューしないと開発が炎上する未来が見えます。
※今回参画した案件、私が参画する前に作られた「全部AIにまかせっぱコード」で炎上しました

 

AIがスピーディーにコードを生成  ⇒  生成されたら即時レビュー・・・ ×  n 
このサイクルがちゃんとできれば、品質良いものを早く作っていけるでしょう。

 

これからの未来、設計とコードに落とし込んだ時のアーキテクチャが更に重要で、AIが作ったものをちゃんとレビューできることが必須だな・・・
と今回の経験で確信できました。