AI 時代だからこそ技術力をつけたい
Published
最近は Claude Code をはじめとした様々な AI ツールが登場して、コーディングがとても楽になりました。ただ、その一方で「実装前の設計・計画の重要性」をより強く感じるようにもなりました。最近はそのことについて色々思うことがあったので、今回は AI 時代だからこそ見過ごされがちな「エンジニアとしての設計力」について思っていることを書いてみたいと思います。
AI で楽になったのは「コーディング」だけ
AI ツールの登場で、確かにコードを書くスピードは格段に上がりました。雑な仕様を投げるだけで、なんとなくそれっぽいものが出来上がってしまう時代です。
でもまぁ、それが実務で許されるというか通用するのか?という話なんですよね。
個人開発と実務の違い
個人開発レベルなら「なんとなく完成しました」で良いかもしれません。ただ、実務だとそうはいかないんですよね。
実務レベルでは以下のようなことが求められます
- 自分以外が書いたコードに手を入れること
- リリース期日もクオリティも求められる
- PdM やデザイナーと仕様を詰めるときに「技術的に可能・不可能」の判断をする
- 自分が書いたコードについては責任を持ってPRに実装内容を記載する
- プロダクトの設計思想から逸脱しない実装が求められる
実務で扱うようなドメインは複雑ですし、「一応動いているので大丈夫だと思います」ってクオリティで PR とか作られても、レビューする側はたまったもんじゃないですよね。
設計こそが AI 時代の要
正直なところ、実装前の設計は AI だけの力では限界があると感じていて、AI を操るエンジニアが持つ技術力が物を言う工程がこの設計フェーズだと思っています。
そして、AI 行う実装のクオリティは、その前段階である設計に大きく依存します。つまり、エンジニアとしての技術力を身につけることを疎かにしてはいけないということです。
エンジニアに求められる設計力とは
じゃあ、その設計をするためには具体的にどんな力が必要になるのか。自分は大きく分けて2つあると考えています。
1. コードの変更箇所・影響範囲を把握する力
実装の際には基本的に仕様というものがあって、それに対して、
- 今のコードのどこに変更を入れないといけないのか
- その影響範囲はどれくらいなのか
- 責務分離はどうするのか
こういったことを考える力が必要です。
このあたりって個人的には、純粋にエンジニアとしての技術力だと思っています。そして、この力を養うには「そのプロジェクトで経験を積んでプロダクトコードを把握していく」しかないと思っています。ただ、触ったことのない部分が多いコードであっても、基本的なアーキテクチャを勉強しておけば、「どこで何をやっているか」の当たりがつけられるので、それを頼りにコードを読んでいけば「皆目見当もつかない」なんて事態にはならないと思います。
2. 引き出しの多さ
もう一つ重要だと思っているのが「引き出しの多さ」です。具体的に言うと
- デザインパターンの知識
- アーキテクチャの選択肢
- ライブラリの使い方
- 過去の失敗から得た知見
みたいなことで、今の課題に対するベストプラクティスをこれらの知識を元に選択していくイメージです。
自分が結構重要だと思っているのは「過去の失敗経験」だったりします。レビューの指摘もそうですし、最初は良いと思って採用したコードでも、数ヶ月後に機能変更が入ると、そのスケールアップに耐えられなくて結果的にイマイチになった...みたいな。こういうのって書籍とかの単純な勉強じゃ身に付けられないので。
AI との正しい付き合い方
ということで、AI ツールとはどう付き合っていけば良いのかという自分の考え。
AI に任せる部分と自分で考える部分
自分の場合、最初にやりたいこと(仕様)を投げて、そこから AI と会話しながら仕様を詰めて実装計画を練り上げていく感じで実装を進めていきます。
具体的には
- 新規実装や手を入れるところを AI に洗い出してもらう
- それに対して「そこに手が入るということは、あそこも変更しないといけないのでは?」、「このケースは?」と詰めていく
つまり、AI は「洗い出し」や「提案」はしてくれますが、それに対するツッコミや最終的な判断は人間の責務だということです。
AI と二人三脚での学習
「じゃあ、そのエンジニアとしての技術力はどうやって身につけるんだ?」という話。これについては厳しいようですが、「個人で勉強するか、周りが辛抱強く教えてあげるか」しかないと思います。
ただ、今はAIと二人三脚で勉強できる環境があります。おすすめなのは、AI と一緒にコードリーディングをすることです。
単にコードを追うだけじゃなくて
- 責務分離がどうなっているのか
- どういう設計になっているか
- なぜこういう実装になっているのか
こういったことを聞きながら、自分がコードレビューするようなイメージで AI と会話しながらコードリーディングしていくのが良いと思います。
最後に
AI 時代になって実装が全自動化されたと思われがちですが、実際は、仕様を渡せばそれっぽいものができるけど、その成果物のクオリティはその事前の設計にかかっているという状態だと思っています。
なので、技術力を身につけることを疎かにすると、その辺の AI 使いとそんな変わらない存在になってしまいます。AI があるからこそ、エンジニアの技術力がより重要になる時代だと感じています。
というわけで、AI ツールを使いこなすためにもまずは自分自身のエンジニアとしての技術力を磨いていきましょうという話でした。