AIがソフトウェア開発に与える影響についての真実
今年初めにドバイで開催された世界政府サミットで、ジェンスン・ホアン(NvidiaのCEO)は興味深いことを述べました。「この10年から15年の間に、このようなステージに立つほとんどの人が、自分の子供がコンピュータサイエンスを学ぶことが重要であり、誰もがプログラミングの方法を学ぶべきだと言うでしょう。そして実際、それはほぼ正反対です。」それは波紋を呼んだのでしょうか?ある程度はそうです。
今年初めにドバイで開催された世界政府サミットで、ジェンスン・ホアン(NvidiaのCEO)は興味深いことを述べました。「この10年から15年の間に、このようなステージに立つほとんどの人が、自分の子供がコンピュータサイエンスを学ぶことが重要であり、誰もがプログラミングの方法を学ぶべきだと言うでしょう。そして実際、それはほぼ正反対です。」それは波紋を呼んだのでしょうか?ある程度はそうです。
しかし、彼は正しいのでしょうか?現実がより複雑であり、AIがソフトウェア開発の仕事に与える影響がまだ観察され、議論されているからだけではありません。
ジェネレーティブ AI、ローコード、そして開発の新時代
現在では、Qodo(旧称CodiumAI)のように、コードの生成、ユニットテストの記述、ドキュメント作成のためのAIアシスタントを提供する自律型生成AIシステムがあります。次に、AI機能(App Builder AI)、UIコンポーネント、コード生成などを提供して開発サイクルを効率化するApp Builderのようなローコードツールがあります。
詳細については、「App Builder AI: アプリ開発をどのように効率化するか」をご覧ください。
AIを活用したコード生成ツールは、開発者のコードの書き方をすでに変えていますが、ソフトウェア開発の仕事が完全に引き継がれるまでには、まだ長い道のりがあります。ソフトウェア開発のダイナミクスは大きく変化しましたが、今のところAI革命とは言い難いです。
実は、AIは開発者の役割を排除するのではなく、次のような方法で開発者の役割を強化する役割を果たしているのです。
- 経験豊富なプログラマーよりも、経験の浅いプログラマーに大きく影響します
- チームにアーキテクチャの方向性と品質チェックの実施を義務付ける
- ジュニア開発者が日常的で反復的なタスクを処理できるようにします
- プログラミングのスピードアップ – より多くのコードをより迅速に記述
- 次の生産性ブームを解き放つが、スキルアップと適応が必要
- ビジネス価値、俊敏性、成長を獲得
そのため、コンピュータプログラミングは、ほとんどの場合、依然として人間中心の追求であると予想されています。そして、Jensen Huang が言ったことに私が同意することが 1 つあるとすれば、それはこうだ:「今や世界中の誰もがプログラマーだ。これが人工知能の奇跡です。あなたは今、あなたが指示したことをするためのコンピューターを持っています。」それでも、ソフトウェア開発の中核は依然として人間の能力と能力です。
マッキンゼーが「ジェネレーティブAIの経済的可能性」レポートで指摘しているように、「ジェネレーティブAIの時代は始まったばかりです。この技術に対する興奮は明らかで、初期のパイロットは魅力的です。しかし、このテクノロジーの利点を完全に実現するには時間がかかり、ビジネスや社会のリーダーは依然として対処すべき課題を抱えています。これには、ジェネレーティブAIに内在するリスクの管理、従業員が必要とする新しいスキルや能力の決定、再トレーニングや新しいスキルの開発などのコアビジネスプロセスの再考が含まれます。」
ソフトウェア開発者の役割の変化
当初は、ジェネレーティブAIやローコードプラットフォームが従来のプログラマーに取って代わり、コーディングスキルが時代遅れになるのではないかと恐れる人もいましたが、これは誤解です。それどころか、ローコード開発とAIは、反復的なタスクを自動化することでプロセスを合理化することで、開発者がコアビジネスロジックと機能開発により集中できるようにし、反復的な技術タスクやコラボレーションの課題に費やす時間を減らすことを目指しています。
マッキンゼーは次のように示しています。「ジェネレーティブAIは、仕事の構造を変える可能性を秘めています。個々の労働者の活動の一部を自動化することで、個々の労働者の能力を強化します。ジェネレーティブAIやその他のテクノロジーは、今日の従業員の時間の60%から70%を吸収する仕事活動を自動化する可能性を秘めています。」
その結果、AIがソフトウェア開発に与える影響により、技術的なスキルと非技術的なスキルが混在するシフトが生じています。開発者は、利害関係者間のギャップを埋め、要件をモジュール式コンポーネントに変換し、自動化を最も効率的に適用できる場所と方法を特定する方法を学びます。
さらに、ローコードプラットフォームとAIにより、これらのツールによりハンドコーディングが不要になるため、技術者でない人でも、より幅広い専門家により多くの機会が提供されるようになりました。アプリ開発にますます関与するようになった市民開発者の台頭が見られます。経営幹部レベルのエグゼクティブとステークホルダーは、フュージョンチームをまとめ、開発の生産性を向上させる手段としてローコードツールを使用する方法を学びます。
一方、開発者の役割には、ローコード プロジェクトの監督、コード検査 (Angular、Blazor、Web Components、Reactなどの一般的なフレームワークのコードを生成するApp Builderローコード ツールとして)、ベスト プラクティスの指導などが含まれます。
では、プログラマーの雇用保障は危険にさらされているのでしょうか?
まだですが、AIには一定の制限があります。AIの進歩とローコード開発は、雇用の安定を直接脅かすものではなく、むしろ開発者の仕事の種類を変えるものです。これらのプラットフォームは反復的なコーディングタスクを自動化しますが、ローコードソリューションでは単独では処理できない複雑なシステム設計、カスタマイズ、および高レベルの統合には、開発者が依然として不可欠です。
手動コーディングの必要性が減ったため、開発者はアーキテクチャ、問題解決、プロジェクトライフサイクル内のより戦略的な役割など、より価値の高いタスクに集中できます。企業がデリバリーを加速するためにAIとローコードを採用するようになると、これらのプラットフォームを最適化し拡張する方法を理解している開発者は依然として不可欠です。彼らの専門知識は、AI主導のワークフローを指導および管理する役割に進化し、仕事の安定性を高めます。
インパクト開発ワークフローとは?
ローコードとAIがソフトウェア開発ジョブに与える影響は、このように機能します。プロトタイピングの高速化、初期コーディングの作業負荷の削減、関係者が早期にレビューできる視覚的な(多くの場合はWYSIWYGインターフェース)によるフィードバックサイクルの簡素化により、ワークフローを合理化します。これにより、より協調的で反復的な開発が可能になり、ワークフローが変わります。開発者以外の人が貢献できるため、要件の収集と初期段階の改訂がスピードアップします。
ただし、これらの自動化プラットフォームでは、生成されたコンポーネントが広範なアーキテクチャとパフォーマンス標準に合致していることを確認するための監視も必要です。全体として、プロジェクトのタイムラインを短縮するだけでなく、開発者がカスタマイズや最適化のために介入しなければならない場合があるため、バランスも必要になります。
ソフトウェア開発でAIができること(できないこと)
現在、AIによるコーディングはまだ最適ではありません。AIとローコードが動作するコンテキストにはまだ制限があります。これらのツールは、小さくてシンプルで独立したコードを生成するのに最も適しており、再利用可能でシンプルなモジュール式コードを書くというプログラミングのベストプラクティスと一致しています。
アスペクト | ジェネレーティブAI | ローコード |
---|---|---|
コーディングアプローチ | NLPモデルを使用する場合の確率モデル | 決定論的モデル |
コード生成の一貫性 | 結果はプロンプトごとに異なり、同じ質問が複数回尋ねられた場合でも異なります | 同じタスクに対して同じ出力を生成し、一貫性を確保します |
利用範囲 | 小さくてシンプルな独立したコードスニペットの生成に最適 | 自動化された一貫性のあるエンドツーエンドのソリューションの構築に最適 |
コンテキスト認識 | コードスニペットがより大きなシステムにどのように統合されるかについての理解が不足している | システム全体を包括的に理解して動作し、まとまりのあるコードソリューションを生成できます |
ベストプラクティスとの整合性 | モジュール式で再利用可能なコードの記述をサポートしますが、プロジェクトの全体的な認識が欠けています | システム開発への一貫したアプローチを確保し、自動プログラミングの実践を順守します。 |
制限 | コンテキストによって制限され、複雑な統合とカスタマイズには人間の介入が必要 | 完全にカスタマイズ可能なソリューションを提供することはできませんが、体系化された構造化された開発に優れています |
Infragisticsの製品開発マネージャーであるZdravko Kolev氏は、次のように指摘しています。「上級開発者はAIをより効果的に活用しています。彼らはより良い質問をし、その見返りとして、より具体的でより良い答えを得ることができます。コンテキストの提供が少ない若手開発者は、より一般的な回答を受け取る傾向があります。Gen AIまたはローコードソリューションを使用すると、開発者の生産性を高める一般的な既存の機能が得られるため、反復的なタスクに非常に役立ちます。これにより、より高速で高品質なアウトプットを短時間で実現することができます」
AIがソフトウェア開発に与える影響はそれほど深刻ではありませんが、ローコード(非常に強力ですが)には、完全にカスタマイズ可能なソリューションを提供する際にまだ一定の制限があります。したがって、開発者は時代遅れになるリスクはありません。
プログラミングの品質とセキュリティはどうなりますか?
AIが仕事に与える影響は、ソフトウェアの迅速な展開を促進することです。つまり、AIは書くソフトウェアの量を増やすことになりますが、必ずしも品質が向上するわけではありません。その結果、多くの場合、スパゲッティ コードを維持することは、高パフォーマンスのミッション クリティカルなアプリに必要な品質と構造なしでは困難です。
時間が経つにつれて、手動でコードを書く人は少なくなります。特にフロントエンドソリューションの場合、ローコードは短時間で大きな価値を提供します。開発者は、より高品質のコードを生成するために適切な質問をする方法を知ることにますます注力するようになります。最終的には、AIがソフトウェア開発に与える影響により、開発者は、AIやローコードツールを望ましい結果に導く方法を正確に知っている、熟練した迅速なエンジニアに進化するよう促されます。
それでも、企業には、コードとプログラミングの概念を理解し、レビューし、保守し、アプリがベスト プラクティス、アーキテクチャ原則、コーディング標準を満たしていることを確認できる人材が必要です。