AIにコードを書かせる時代、エンジニアに求められるスキルとは?
生成AIの進化によって、エンジニアの仕事の進め方は大きく変わってきました。
少し前までは、わからないことがあればGoogleで検索し、公式ドキュメントや技術記事を読みながら、一つずつ調べて実装するのが当たり前でした。
しかし今では、Claude CodeをはじめとしたAIツールを活用することで、調査から設計、実装、テストまで、さまざまな作業を効率的に進められるようになっています。
私自身、日々の開発でAIを活用していますが、その便利さには驚かされることばかりです。
一方で、AIができることが増えれば増えるほど、「これからエンジニアにはどのようなスキルが求められるのだろうか」と考える機会も増えました。
今回は、実際にAIを活用している立場から、開発現場の変化と、これからのエンジニアに必要だと感じていることについて書いてみたいと思います。
AIはコードを書く道具から、開発を進める存在へ
AIによる開発支援というと、コードの自動生成をイメージする方も多いかもしれません。
しかし、現在のAIツールは、単にコードを書くだけの存在ではなくなっています。
私が日々の業務でAIを活用しているのは、例えば次のような場面です。
- タスクやチケットの作成・整理
- 要件をもとにした設計の検討やドキュメント作成
- 実装方針の相談や技術調査
- コードの実装・修正
- エラーの原因調査やデバッグ
- テストコードの作成・実行、E2Eテストによる動作検証
- 工数の見積もりや作業の洗い出し
- メールなどの文章作成
以前であれば、一つずつ調べたり考えたりしていた作業も、AIと対話しながら進められるようになりました。
特に、複数の調査や作業を並行して進められることは、大きな変化だと感じています。
これまで丸一日かかっていた作業が、数時間で終わることも珍しくありません。
もちろん、すべてをAIに任せればよいというわけではありませんが、AIを使うことで開発の進め方そのものが変わってきているのは間違いないと思います。
作業をこなすだけでなく、仕事の進め方そのものを改善する
最近、私が特に面白いと感じているのは、AIを使って目の前の作業を終わらせるだけでなく、次の仕事をもっと効率的にする方法を考えることです。
例えば、AIと壁打ちをしながら業務の進め方を整理したり、繰り返し発生する作業を、再利用できる手順やルールとしてスキル化したりしています。
一度仕組みを整えておけば、次に同じような作業が発生したとき、最初から説明したり調べ直したりする必要が減ります。
単純に作業時間を短縮するだけでなく、同じ時間でできることを増やしていく。
そうした改善を考え、実際に効果を感じられることが、今のAI活用の楽しさの一つになっています。
AIが生成したコードを、そのまま信用しない理由
AIが非常に便利になった一方で、私が意識しているのは、生成されたコードをそのまま信用しないことです。
AIはもっともらしいコードを生成してくれますが、それが必ずしも正しいとは限りません。
一見動いているように見えても、既存の設計と合っていなかったり、セキュリティ上の問題があったり、将来的に保守しづらい実装になっていたりする可能性があります。
そのため、AIに実装を依頼するときも、まず自分の中で「どのような動作にしたいのか」「どういう設計が適切なのか」を考えるようにしています。
また、生成されたコードについては、自分自身で確認するだけでなく、AIによるコードレビューも活用しています。
レビューでは、例えば次のような観点を確認します。
- 仕様・設計との整合性: 要件を満たしているか。既存の設計や実装方針に沿っているか
- 変更範囲・既存機能への影響: 不要な変更が含まれていないか。他の機能に影響を与えていないか
- セキュリティ: 認証・認可、入力値の検証、機密情報の扱いなどに問題がないか
- テスト・動作検証: 正常系だけでなく、異常系や境界値も考慮されているか
- パフォーマンス: 不要なDBアクセスやN+1、非効率な処理が発生していないか
- 品質・保守性: コードが複雑になりすぎていないか。可読性があり、今後も修正しやすいか
- 技術的な妥当性: APIやライブラリの仕様が正しく、より適切な実装方法がないか
- ドメイン知識との整合性: プロジェクト固有の業務ルールやドメインロジックが適切に考慮されているか
もちろん、こうした観点もAIに確認してもらうことはできますが、AIによるレビューも万能ではありません。
レビューで得た知見を、次の開発に活かす
最近、特に意識しているのは、レビューで見つかった問題を、その場限りの修正で終わらせないことです。
現在はClaude CodeのSkillsを活用し、設計やセキュリティ、パフォーマンス、保守性などの観点をまとめたコードレビュー用のスキルを作成しています。
そして、PRレビューで自分が見落としていた観点を指摘された場合、そのコードを修正するだけでなく、レビュースキル自体も見直すようにしています。
例えば、コードとしては正しく動作していても、プロジェクト固有のドメイン知識や業務ルールが十分に考慮されていないケースがあります。
AIは一般的な実装パターンには対応できても、そのプロジェクト特有のドメインロジックや設計上の意図まで、必ずしも正しく理解できるわけではありません。
こうした観点も含め、レビューで新たな気づきがあった際には、対象のコードを修正するだけでなく、レビュースキル自体を見直し、次回以降のレビューに活かせるようにしています。
こうした取り組みは、最近注目されている「ハーネスエンジニアリング」の考え方にも近いものだと感じています。
AIに作業を任せるだけでなく、AIが適切に判断できるようにルールやツール、検証の仕組みを整え、その仕組み自体を継続的に改善していくという考え方です。
現状は必要に応じてスキルを呼び出す運用ですが、将来的にはPR作成時に自動でレビューを実行するなど、開発フローに組み込むことも考えています。
単にAIを使って作業を効率化するだけでなく、AIがより適切に仕事を進められる環境を作ることも、エンジニアの重要な役割になっていくのではないでしょうか。
ただし、スキルに観点を追加したからといって、必ず問題を検出できるわけではありません。
AIが問題ないと判断した場合でも、自分自身でコードを理解し、最終的な判断をする必要があります。
大切なのは、「AIがそう書いたから」ではなく、「なぜこの実装を選んだのか」を自分の言葉で説明できること。
AIの活用が進むほど、生成されたものを理解し、判断する力が重要になると感じています。
これからのエンジニアに必要なのは、判断力と責任感
AIの進化によって、コードを書くスピードは今後も上がっていくと思います。
その一方で、AIが生成したものを適切に判断できるかどうかが、エンジニアの価値を左右するようになるのではないでしょうか。
例えば、AIが自分の理解を超えるコードを生成したとき。
そのまま採用するのではなく、わからない部分をAIに質問したり、関連する技術を調べたりして、自分が理解できる状態にすることが大切だと考えています。
AIを使って効率化することと、考えることをやめることは違います。
むしろ、実装にかかる時間を減らせるからこそ、設計や品質、ユーザーにとって本当に必要なものは何かを考える時間を増やせるはずです。
また、AIが実装を進められるようになったからこそ、エンジニアには「何を作るべきか」「どのような設計が適切か」「どこまでAIに任せるべきか」を判断する力が、これまで以上に求められると感じています。
そして、もう一つ大切なのが責任感です。
AIが作ったコードに問題があったとしても、実際にそのコードを採用し、サービスとして提供するのは私たちエンジニアです。
「AIが生成したから」という理由で、品質や不具合に対する責任がなくなるわけではありません。
AIに作業を任せることと、仕事の責任まで任せることは違う。
私は、この意識を持つことが、AI時代のエンジニアにとって特に重要だと考えています。
弊社でも、AIを積極的に活用しながら、最終的にはエンジニア自身が考え、判断する姿勢を大切にしています。
技術力だけではない、コミュニケーションの重要性
AIの活用が進む中で、技術力以外のスキルも、これまで以上に重要になると感じています。
その一つがコミュニケーション能力です。
開発の仕事は、単にコードを書くだけではありません。
お客様が何を実現したいのかを理解し、課題を整理し、チーム内で認識を合わせながら、適切な形でシステムを作っていく必要があります。
AIがコードを書けるようになったとしても、お客様との信頼関係を築いたり、チームの状況に合わせて判断したりすることまで、すべて任せられるわけではありません。
また、AIが提案した実装について、なぜその方法を選んだのかを周囲に説明する場面もあります。
だからこそ、技術的な知識に加えて、相手の意図を理解する力や、自分の考えをわかりやすく伝える力が重要になります。
もちろん、技術力が不要になるという話ではありません。
AIが生成したものを評価するためにも、技術的な基礎知識は欠かせないと考えています。
AIを積極的に活用するからこそ、基礎力を大切にする
ここまでAIの便利さについて書いてきましたが、弊社では未経験エンジニアの初期研修において、原則としてAIの利用を制限しています。
AIを積極的に活用している立場からすると、少し矛盾しているように感じるかもしれません。
しかし、これには理由があります。
未経験の段階からAIに答えを出してもらうことに慣れてしまうと、自分で調べたり、エラーの原因を考えたりする経験が不足してしまう可能性があるためです。
プログラミングを学ぶうえでは、思いどおりに動かないコードに向き合い、試行錯誤しながら解決する経験も大切だと考えています。
もちろん、AIを使いながら効率的に学習できる人もいると思いますし、すべての人に同じ方法が適しているとは限りません。
それでも、まずは基礎的な知識や、自分で考える習慣を身につけることを重視しています。
一方で、研修を終えた後の実務では、AIの活用を積極的に推奨しています。
基礎力を身につけたうえでAIを使えば、AIの回答が適切かどうかを判断しやすくなり、より効果的に活用できると考えているからです。
AIを使わないことが目的なのではなく、AIを使いこなせるエンジニアになるための土台を作ることが目的です。
おわりに — AIを使いこなすために、自分自身も成長し続ける
AIの進化は本当に速く、少し前まで難しかったことが、次々とできるようになっています。
最近では、AIが並行して進めてくれる作業の量が増え、自分がその結果を確認し、理解するスピードの方が追いつかないと感じることもあります。
AIができることが増えるほど、それを使う人間側も成長しなければならないのだと思います。
これからのエンジニアには、AIを使うスキルだけでなく、生成されたものを理解する技術力、適切に判断する力、周囲と協力する力、そして仕事に責任を持つ姿勢が求められるのではないでしょうか。
私自身、これからも新しい技術を学びながら、AIを積極的に活用していきたいと考えています。
AIに任せられることは積極的に任せる。そのうえで、人間が担うべき役割にしっかり向き合う。
そんな姿勢を大切にしながら、エンジニアとして成長し続けたいと思います。