オフィスの環境で、プログラミング画面が表示されたモニターがあり、デスクで2人の人がラップトップ上でコードについて議論している様子

開発者のための生成AI:メリットと課題

生成AIは、ソフトウェア開発者がコードを記述する方法を変革し、受動的なアシスタントから能動的なプログラミング・パートナーへと移行させています。それは開発者の能力を拡張し、ソフトウェア開発ライフサイクル(SDLC)全体の効率性と品質に貢献します。

経営コンサルティング会社McKinsey社による調査では、優れた成果を上げているソフトウェア組織が、人工知能によってチームの生産性や市場投入までの時間(タイム・ツー・マーケット)などのメトリクスで16%〜30%の向上を達成し、ソフトウェアの品質で31%〜45%の改善を経験したことが示されました。1しかし、生成AIには欠点もあります。ソフトウェア開発における生成AIの影響に関するレポートの中で、Google Cloudの DORAプログラムの研究者たちは、AIの導入の増加がソフトウェア・デリバリーのパフォーマンスを損なう可能性があることを知り、驚きました。2彼らは、その原因はAIが大量のコードを急速に生成することに起因する可能性が高いと考えており、これによりコード・レビューが遅れ、ソフトウェア・デリバリーの不安定性を引き起こしやすくなる可能性があります。2

このような期待と落とし穴は、すでに現実の世界で顕在化しています。IBMのAIオープン・イノベーション担当チーフ・アーキテクトであるGabe Goodhartは、自身の開発ワークフローのほぼすべてのステップに複数のAIアシスタントが組み込まれている場合でも、自身が判断力と所有権を維持し、コミットする前にAIが生成したコードの各チャンクをレビューしていることを共有しました。IBMのDoclingのソフトウェア・マネージャー兼テクニカル・リードであるPeter Staarは、生成AIツールがアウトプットとスピードの向上に役立つものの、厳密な監視が依然として不可欠であると指摘し、同様の経験を伝えました

コーディング・ソフトウェア向けの生成AIの仕組み

大規模言語モデル(LLM)は、コーディングにおける生成AIの基盤を形成しています。これらのディープラーニングモデルは、シーケンシャル・データの処理に優れている、トランスフォーマーとして知られる一種のニューラル・ネットワークアーキテクチャーに基づいて構築されています。コードLLMはソースコードの大規模なデータ・セットでトレーニングされており、プログラミング言語の構造や構文を理解する機能を備えています。

モデルの事前トレーニング

生成AIモデルは、さまざまなプログラミング言語で記述されたコードの多様な例を含む大規模なデータ・セットで事前トレーニングされています。事前トレーニング中に、モデルは先行するトークンのコンテキストに基づいて、コードの一連のシーケンス内にある次の単語またはトークンを予測することを学習します。このプロセスにより、モデルはさまざまなプログラミング言語に固有の構文、意味論、およびパターンを捉えることができます。

機械学習モデルは、企業の独自コード・リポジトリーや関連する専有データでファインチューニングすることもでき、これによりドメイン固有の知識を獲得できます。

コンテキストの理解

コーディング・プロンプトやクエリーが提示されると、生成AIモデルはインプットを処理し、学習した知識を使用してコンテキストと意図を理解します。モデルは、変数、関数、制御構造などのさまざまなコード要素間の関係を考慮し、関連性のある、構文的に正しいコードを生成します。

多くのモデルは、検索拡張生成(RAG)機能も備えています。RAGは、最新バージョンのAPI、コードベースの埋め込み(エンベディング)、コーディング・スタイル・ガイドライン、フレームワーク、ライブラリー、セキュア・コーディング標準、および技術ドキュメンテーションからの情報を使用してクエリーやプロンプトを強化し、最新の高度なコンテキストを提供するのに役立ちます。

コードの生成

学習したパターンとコンテキストの理解を使用して、モデルは出力としてコード・スニペットを生成します。生成されたコードはインプット・プロンプトに基づいており、モデルがトレーニングされたプロミング言語の構造とスタイルに従います。

ユーザー・フィードバックへの適応

生成AIモデルは多くの場合、ユーザーからのフィードバックに基づいて適応し、改善するメカニズムを備えています。開発者は生成されたコードに対してフィードバックを提供でき、これによりモデルが理解を深め、将来のアウトプットを強化するのを支援します。この反復的なフィードバック・ループは、時間の経過とともにより正確でコンテキストに関連したコードを生成するモデルの能力に貢献します。

The DX Leaders

AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。

ご登録いただきありがとうございます。

ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。

開発者のための生成AIのユースケース

AIがソフトウェア開発のワークフローを合理化する方法は数多くあります。ここでは、一般的なユースケースをいくつかご紹介します。

  • バグ検出

  • コード・ドキュメンテーション

  • コード・リファクタリング

  • コード・レビュー

  • コードの提案

  • コード・テスト

  • コード翻訳

  • プロトタイピング

バグ検知

生成AIは、デバッグやバグの特定、さらには自動修正において、ソフトウェア・エンジニアリング・チームをサポートできます。これにより、より堅牢で信頼性の高いソフトウェアと、より迅速な開発サイクルが実現します。

コード・ドキュメンテーション

生成AIは、コード・ドキュメンテーションの自動化、インライン・コメントの提案、コードの変更を迅速に反映するための更新の促進、およびスタイルや構造の標準の実装を支援します。これは、明確で最新のプロジェクト・ドキュメンテーションを維持するのに役立ちます。

コード・リファクタリング

AI駆動型のコーディング・ツールは、冗長な部分や非効率的な部分を特定して既存コードへの改善を推奨することにより、コード・リファクタリングを加速できます。これは、長期にわたる高品質なコードの維持とパフォーマンスの最適化に役立ちます。特定が困難であった可能性のある問題も、AIが提案するソリューションを実装することでより迅速に発見して速やかに修正でき、これを自動的に行うことも可能です。

コード・レビュー

生成AIモデルは、初期のコード・レビュアーとして機能し、機能性、スタイル、および品質の観点からコードを評価できます。これらは潜在的な問題を浮き彫りにし、それらに対処する方法を提案できます。

コードの提案

AI搭載型のコーディング・アシスタントは、開発者がコードを記述する際に、文脈を認識した説明、ガイダンス、および提案をリアルタイムで提供することで、初心者を支援できます。これにより、新しい開発者の学習曲線を緩やかにすることができます。

コード・テスト

生成AIは、コードを分析してテスト・ケースを自動的に作成できます。これは、実際の使用状況や動作を反映したテスト・データを生成し、エッジ・ケースであっても詳細なテスト・シナリオの概要を示すことができるため、テスト・カバレッジの向上に役立ちます。

コード翻訳

AI支援型のアプリは、コードをある言語から別の言語に翻訳することができ、コード変換やアプリケーション・モダナイゼーションプロジェクトを合理化します。例としては、COBOLからJavaへの変換によってレガシー・アプリケーションの更新を行うことや、CからPythonへとレガシー・コードを段階的に書き換えることなどが挙げられます。

プロトタイピング

生成AIは、小規模でシンプルなプロトタイプの設計を支援し、ソフトウェア・エンジニアリング・チームのアイデア出しプロセスを加速させ、斬新なアルゴリズムや独創的なソリューションを迅速に探索できるようにします。その後、チームはAIが生成したプロトタイプを要件に合わせて修正および洗練させることができます。

開発者のための生成AIのメリット

生成AIは、開発者のツールボックスにおけるもう1つのツールとして機能します。ソフトウェア・エンジニアリング・チームに以下のメリットをもたらします:

  • 定型業務の自動化

  • 開発者の生産性向上

  • 開発サイクルの最適化

  • 開発環境のパーソナライズ

  • 自然言語インターフェースの提供

定型業務の自動化

コーディングには退屈なタスクが伴うことがあり、これこそが生成AIアプリケーションが真価を発揮する領域です。標準的なメソッドのインプットなどの定型業務は、コード・コンプリーション機能によって迅速化できます。生成AIツールは、自然言語による記述に基づいて、コードの行や関数全体を提案できます。また、プログラマーが特定のコード・ドキュメンテーションフォーマットを遵守するのを支援します。

開発者の生産性向上

定型業務を自動化することで、生成AIは開発者がソフトウェア構築における全体像、高レベル、かつ戦略的な側面(セキュリティー、アーキテクチャー、システム・デザインなど)に集中できるようにします。これにより、開発者の生産性が向上し、仕事への満足度も高まる可能性があります。

開発サイクルの最適化

SDLCへのAIの組み込みは、ソフトウェア・リリースの円滑化につながります。例えば、継続的統合継続的デリバリーCI/CDパイプラインにおいて、DevOpsチームは生成AIを使用して、ロード・バランシングやスケーリングなどのインフラストラクチャー・タスクを自動化したり、リアルタイムでパフォーマンスの問題を検知してダウンタイムを最小限に抑えたり、潜在的なパイプラインの障害を予測して停止を防止したりできます。

開発環境のパーソナライズ

生成AIは、個々のコーディング・スタイルや好みに適応する、パーソナライズされた統合開発環境(IDE)の構築を支援します。これにより、前向きな開発者体験が促進され、プログラマーが最高のパフォーマンスを発揮できるようになります。

自然言語インターフェースの提供

生成AIは、ソフトウェア開発ツールの自然言語インターフェースを容易にすることができます。プログラマーは自然言語コマンドを使用してIDEやバージョン管理システムと対話できるため、広範なプログラミングの専門知識を持たない人でもアクセスしやすくなります。

AI Academy

AIの専門家になる

ビジネスの成長を促進するAIへの投資を優先できるように知識を習得します。今すぐ無料のAI Academyを試して、貴社のAIの未来をリードしましょう。

コーディングに生成AIを使用する際の課題

生成AIは強力なツールですが、人間の開発者の創造性や能力に代わるものではありません。それはコーディング中に開発者を拡張して支援する役割を果たしますが、プログラマーは依然として責任を持って生成AIを使用する必要があります。

ソフトウェア開発プロセスに生成AIを統合する際に、ソフトウェア・エンジニアリング・チームが直面する可能性のあるいくつかの課題を以下に示します:

  • 不正確さ

  • より包括的なコード・レビュー

  • 過度の依存

  • セキュリティーの脆弱性

不正確さ

AI搭載型のアプリは、不正確または誤解を招く結果、扱いにくい関数、またはパフォーマンスを低下させる可能性のある洗練されていないコードを生成する場合があります。これは、開発者が生成されたコードをコミットする前に、徹底的に検証してテストする必要があることを意味します。

より包括的なコード・レビュー

生成AIが多くのコーディング・タスクを処理するようになると、焦点は検証へと移行します。AIが生成したコードは、出荷可能な状態であることを確認するために、複数の詳細な評価を経る必要がある場合があります。これにより、コード・レビュー・プロセスにかかる時間と労力が増加します。

過度の依存

生成AIツールの継続的な使用は、過度の依存につながる可能性があります。開発者は、これらのツールを単なるサポートの枠を超えて扱う可能性があり、それらをデフォルトとして使用し、深く依存してしまうかもしれません。これは、彼らの批判的思考や問題解決のスキルを損なう可能性があります。プログラマーは、自身の専門知識と理解によって生成AIのアウトプットを補完する必要があります。

セキュリティーの脆弱性

AI支援型コーディングにおける大きなリスクとして、セキュリティーの脆弱性が入り込む可能性が挙げられます。それは、セキュア・コーディング・プラクティスに準拠していないコードを生成したり、旧式で安全でない依存関係を使用したり、機密データを意図せず露出させたり誤って処理したりする可能性があります。

開発者は、注意すべき点を把握するために、セキュア・コーディング標準とシークレット検知に関するトレーニングを受ける必要があります。チームは、コード・セキュリティーを中心としたレビュー・ステップを追加する必要があるかもしれません。

開発者向けの生成AIツール

ソフトウェア開発における生成AIツールには、数多くの選択肢が存在します。最適なものを選択する際、チームは自らのテック・スタックとの互換性や、ツールがワークフローにどれほどシームレスに溶け込むかを考慮する必要があります。また、責任あるAIの使用に関する明確なポリシーを策定し、セキュリティーを維持するためのガードレールを実装する必要があります。導入を推進するには、これらのツールの仕組みに関する実践的なワークショップやチュートリアル、およびプロンプト・エンジニアリングなどの関連スキルに関するトレーニングが必要となります。

AIエージェントとAI搭載型のコーディング・アシスタント

コーディング・エージェントやAI搭載型のコーディング・アシスタントの役割は、コードの生成にとどまりません。これらは、プル・リクエストの作成、デバッグ、コードのリファクタリング、およびドキュメンテーションの更新を行うこともできます。最も人気のあるものには、Claude Code、オープンソースのCline、OpenAI社のCodex、Cursor、GitHub Copilot、IBM Bob、AWS社のKiro、Tabnine、Windsurfなどがあります。

コード・レビュー

一部の生成AIアプリは、初期段階のコード・レビューを行うことができ、手動でのコード・レビューで見落とされる可能性のある一般的な問題や微妙なバグを特定できます。これらのアプリには、Codacy、CodeRabbit、Graphite、Greptile、Qodoなどがあります。

チャットボット

対話型AIテクノロジーは、ブレーンストーミング、コードの説明、アルゴリズムの研究、およびドキュメンテーションの要約に役立ちます。開発サポートを提供できるチャットボットの例には、Anthropic社のClaudeGoogle社のGemini、Microsoft社Copilot、OpenAI社のChatGPT、およびPerplexity社などがあります。

プロトタイピング

一部のAIツールは、プロンプトからのプロトタイプ生成に優れています。これらには、Bolt、Lovable、Replit、v0などがあります。

執筆者

Cole Stryker

Staff Editor, AI Models

IBM Think

Rina Diane Caballar

Staff Writer

IBM Think

関連ソリューション
IBM Bob

安全で意図を認識した開発を実現するAIパートナーであるBobと連携して、ソフトウェア・デリバリーを加速させましょう。

IBM Bobはこちら
AIコーディング・ソリューション

信頼性の高いAI駆動型ツールを活用することで、コード作成、デバッグ、リファクタリング、コード補完に費やす時間を最小限に抑え、イノベーションに集中できる余地を広げます。

AIコーディング・ソリューションはこちら
AIコンサルティングとサービス

AIの導入によって重要なワークフローと業務を再構築し、エクスペリエンスの最大化、リアルタイムの意思決定、ビジネス価値の向上を実現しましょう。

AIコンサルティング・サービスはこちら
次のステップ

生成AIと高度な自動化を活用して、企業向けのコードをより迅速に作成Bobモデルは開発者のスキルセットを強化し、開発とモダナイゼーションの取り組みを簡素化、自動化します。

  1. IBM Bobの詳細
  2. AIコーディング・ソリューションはこちら