AIは、システムエンジニアになれるのか?
ChatGPTやGitHub CopilotなどのAIツールが急速に発展し、プログラミングの自動化が進んでいます。この状況下で、システムエンジニア(SE)の仕事がAIに奪われるのではないかという懸念が広がっています。しかし、新たなパラダイムが生まれない限り、SEの役割が完全に代替されることはないと考えています。
SEの仕事は大きく分けて以下の3つに分類できます。
システムの要件定義や仕様書の作成など、システムの設計を決める仕事
コーディングやデータ作成など、システムを開発する仕事
レビューやテストなど、システムの正しさを保証する仕事
1と2に関しては、ChatGPTやGitHub Copilotなど、すでにAIの力が広がっており、急速に代替が進んでいると考えられます。
しかし、3については、AIに任せることができません。
SEは、コードレビュー、ユニットテスト、結合テスト、統合テスト、正しいと保証できる境界を引いていきます。
SEが定める正しいと保証できる境界は、顧客との契約範囲を明確にする上で非常に重要です。境界の内側で発生した不具合は、システム会社側の責任範囲となり、瑕疵として扱われます。一方、境界の外側の要件については、追加開発として扱われ、別途契約が必要となります。
AIは、テストケースの作成や実行を自動化し、ある程度の正確さでシステムの正しさを判定できるようになってきました。しかし、AIは正しいと保証できませんので人がテストする必要があります。このテストはAIが生成した内部構造の分からないシステムとなっているのでテストは、システム全体を対象としたブラックボックステストとなり、内部構造が不明な状態でテストケースを作成しなければなりません。このテストは、バグの原因特定が困難であったり、テストケースの網羅性が低いといった課題を抱えており、従来のシステム開発と比較して、非常に困難な作業となります。
また、このブラックボックスなシステムにおいて、どこまでがシステムの責任範囲で、どこからが外部要因によるものなのかという境界を明確にすることは、極めて困難です。この境界が、顧客との契約において非常に重要な役割を果たすため、AIが生成したシステムのテスト結果に基づいて、システムの瑕疵を判断することは、従来よりも複雑な問題となります。
もし、AIが正しいと保証できる方法を手に入れたのなら、そのときSEの仕事はなくなるんだと思っています。