どうも上村です。
ブログは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が作ったものをちゃんとレビューできることが必須だな・・・
と今回の経験で確信できました。