世の流れを受けて私のような凡百のエンジニアも生成AIなしには仕事できない体になりつつある。
社会人になってからいろいろあったが、昨年2024年ほど仕事のやり方が変わったことはなかった気がする。
1年後はまた違う感想を持っていそうな気がするので、あとから見返せるように思うところを雑に書き残しておく。
なお現在私が主に利用しているのは以下のようなサービスで、用途はコーディングに関わるタスク、技術調査、翻訳などごく普通のこと。
- Perplexity
- GitHub Copilot
- Cody
- NotebookLM
初動が楽
PoCやMVP開発みたいなことがすごいやりやすくなった。
とりあえず試しにやってみようという気持ちになる。
私のような腰が重い人間にはこれが一番の価値。
レガシーコードは苦手
巨大でハイコンテキストな秘伝のコードはあまり得意ではない。
逆に言うと今後の伸び代な気はしている。
巨大なモノリスを解析してリアーキテクト案を提示してくれるとか。
IaC もちょっと苦手
おそらくアプリケーションコードと比較して学習量の差と、主な管理対象であるクラウドサービス側の変化の早さに起因すると思われる。
このへんは大手クラウド各社が特化型モデルみたいなのをもっと積極的に公開したらいいような気がする。
使ったことないがAWS CodeWhispererとかはそういう言語モデルを使っているのだろうか。
AI ネイティブなシステム設計を模索したい
例えばFaaSベースのシステムはAIに開発してもらいやすい。
ChatGPTに仕様検討の壁打ち相手になってもらった流れで1~200ステップ程度のLambda関数の草稿を書いてもらい、続きはGitHub Copilotで適宜修正していくみたいな。
この手のノウハウをまとめた本が出てほしい。
自分のスキル以上の結果は得られない
仮にすごいアウトプットしてくれたところでそれの評価ができない。
プロンプトを書くのも成果物をレビューするのも自分なので、結果的に自分のレベル前後の結果に落ち着く。
だとしても自分がある程度時間をかけたのと同じレベルのアウトプットがすぐ生成されるのだから十分価値がある。
試行回数重視
完璧な指示よりとにかく繰り返す。
プロンプトエンジニアリングのようなことを頑張っても正解がすぐ変わると思うし、どのLLMにどんな聞き方をするか考えるより可能な限り全部試して一番いい結果になったものを採用するほうが早い。
やりたいことを言語化できるか
何をしたいのか自分で分かっていないと指示ができないし、課題を正しく捉えていないと適切な問いが立てられない。
どことなくユニットテストを書こうとしたら、そういえば仕様自体が曖昧だったと気づく的な事象に似ている。
AIが仕事してくれるようになっても要件定義や設計が大事なことに変わりないということ。
格差を助長しそう
ここまでのまとめ的な話で、結果的に仕事できる人はより早く成果を出せるようになり、できない人は変わらずできない。人が定型作業することも減る。
サービス利用料が月3万円だろうが10万円だろうが払える人(払う人)はいくらでも払ってより大きな利を得るし、どれだけ便利なものがあっても使わない人は使わない。
この分断の先にどんな未来が待っているのかどちらかというと不安である。