- AI の設計力・実装力は非常に高い。ただし、そのパフォーマンスは外部要因に左右される
- AIは魔法ではない
- AIの性能は設計品質に比例する
- AI時代だからこそ設計力が重要になる
- AI時代に求められるエンジニア
- おわりに
私は最近、Android Studio をバージョンアップしました。
AI 開発機能がさらに強化され、ますます AI 時代が進んでいることを実感しました。
一方で、対話型の AI だけで、アイデアの着想からアプリのリリースまでを、わずか 5 日で達成するという経験もしました。
この二つの出来事から、一つの考えに至りました。
重要なのは、AIをどう活用するかではなく、AIが力を発揮できる土台を作ることではないか。
生成AIの登場以来、多くの企業が「AIを使って開発効率を向上させる方法」を模索しています。
しかし、Android Studio をはじめとする開発ツール自体も、AI を活用した開発効率化を急速に進めています。
だからこそ、これから開発者にとって重要になるのは
「AIをどう使うか」
ではなく、
「AIが高いパフォーマンスを発揮できる設計」
を行うことではないかと考えました。
AI の設計力・実装力は非常に高い。ただし、そのパフォーマンスは外部要因に左右される
私はこれまで、様々な設計やアーキテクチャについて学んできました。
先日、わずか 5 日でアプリをリリースできたのも、技術的な知見だけではなく、設計を意識して開発を進められたことが大きな要因だったと考えています。
責任を適切に分離して設計すると、巨大なクラスではなく、小さく役割の明確なクラスへ分割できます。
すると、そのクラス単位で AI に相談できるようになります。
一般的に、対象となるコードや前提が複雑になるほど、AI は意図を正確に理解することが難しくなる傾向があります。
一方で、責任が明確に分離されたコードは、AI が扱う前提もシンプルになります。
その結果、AI はより高い精度で設計や実装を支援できるようになります。
つまり、エンジニアの設計品質が高いほど、AI が本来の性能を発揮しやすくなるのです。
AIは魔法ではない
AI はコーディングだけでなく、設計案の提案やリファクタリングの支援も得意です。
しかし、コード全体を完全に理解し、人間が暗黙の前提として持っている知識まで正確に把握できるわけではありません。
例えば、責任が適切に分離されているコードであれば、
- この UseCase を改善してください。
- この Repository をリファクタリングしてください。
- このクラスのテストを書いてください。
といったように、小さな責任単位で AI に依頼できます。
一方で、責任が混在した巨大なクラスでは、
- UI
- 通信
- データベース
- ビジネスロジック
が一つのクラスに集まっていることも少なくありません。
その場合、AI は広い文脈を同時に考慮する必要があるため、意図しない修正や副作用が発生しやすくなります。
人間にとって理解しづらいコードは、AI にとっても理解しづらいコードなのです。
AIの性能は設計品質に比例する
AI は、人間よりも圧倒的に速いスピードで設計や実装を支援できます。
しかし、どのような状況でも常に高品質な成果物を生成できるわけではありません。
一方で、
- 責任が明確に分離されている
- モジュール化されている
- 意味ごとにコードが整理されている
このようなコードほど、AI は高い精度でコードを生成できます。
言い換えれば、次のような関係が成り立つと私は考えています。
良い設計
↓
責任が明確
↓
AIへ渡す前提が明確
↓
AIが正しく推論しやすい
↓
高品質な成果物
つまり、
設計品質が高いほど、AI が生成する成果物の品質も高くなる。
これが私の考えです。
AI時代だからこそ設計力が重要になる
「AI がコードを書いたり設計を支援してくれる時代だから、エンジニアは不要になる。」
そのような意見を耳にすることがあります。
しかし、私は AI とエンジニアは共存するものだと考えています。
ただし、すべてのエンジニアが同じように価値を発揮できるわけではありません。
AI の能力は非常に高いものの、
- どこまでを一つの責任として設計するか
- どのように責務を分割するか
などの設計判断は、システムの全体像や将来の拡張内容を把握しているエンジニアに帰属する部分が大きいと感じます。
これらの前提を人間は AI に提供しなければなりません。
この前提が曖昧であれば、AI も曖昧な成果物を生成します。
(設計における「前提」の重要性について、いまいちピンとこない方は、こちらの 演繹(えんえき)法から考える設計の本質 もあわせてお読みください。)
責任分離が明確であれば、AI は責任単位ごとに高品質な成果物を生成できます。
つまり、
AI が普及することでエンジニアが不要になるのではなく、AI が高いパフォーマンスを発揮できる設計を行えるエンジニアの価値が、これまで以上に高まる。
私はそう考えています。
AI時代に求められるエンジニア
もちろん、AI をどのように活用するかを考える力も重要です。
しかし、それ以上に重要なのは、
AI が理解しやすい設計を行えること
だと私は考えています。
例えば、
- 責任を適切に分離できること
- 意味ごとにコードを整理できること
- モジュール間の依存関係を適切に設計できること
こうした設計力があってこそ、AI は本来の性能を最大限に発揮できます。
AI は、エンジニアから設計という仕事を奪う技術ではありません。
むしろ、AI 時代とは、設計力の価値がこれまで以上に高まる時代です。
エンジニアが良い設計を行うからこそ、AI は高いパフォーマンスを発揮できる。
私はそう考えています。
おわりに
Android Studio にとどまらず、 Figma などにも便利な AI が搭載されています。
これらのツール制作会社は、ツールをより魅力的なものにするために、今後もツール側で、 AI の便利な使い方を実装してくれるでしょう。
そうであれば、私たち、ソフトウェアエンジニアは、本来の職務であるソフトウェア領域で専門性を発揮するべきではないか?
という考え方も持っています。
それが本記事の考えに至った経緯でもあります。
「AI をどのよに活用するか」を考えられている開発者様を否定するつもりは全くありません。
そのような先進的な取り組みをされている方々に感謝の意を示して、本記事をしめくくりたいと思います。