生成AIは、動画の制作方法、マーケティングの実施方法、ゲームのプレイ方法を変えています。多くのメディアは、デジタル・トランスフォーメーション、コンテンツ作成、生産性向上の面でAI世代が何を実現できるかに注目していますが、コード作成をより満足のいく、さらには楽しいものにできるかどうかについてはあまり注目されていません。
コーディング・アシスタントとして機能する生成AIは、ソフトウェア・エンジニアの作業を迅速化するだけでなく、開発者の満足度とエンゲージメントも高めます。開発者は、定型コードを記述し、基本的なフォーマットを定義するために生成AIを使用しています。これにより、問題解決、新しいロジックの作成、独自のシステムの設計など、仕事の創造的な側面に集中する時間を増やすことができます。多くの場合、コード作成者はこうしたより高レベルのクリエイティブなタスクを好んで実行しています。
コンサルティング会社のMcKinsey社の調査によると、生成AIツールを使用する開発者は、全体的な幸福感や充実感が高く、仕事に没頭する可能性が、そうでない開発者に比べて2倍以上高いことがわかりました。
電子商取引プラットフォーム用に新しいWebアプリケーションの構築を任された開発者を考えてみましょう。開発者はユーザー・エクスペリエンスを設計し、推奨エンジンや動的価格設定などの機能を組み込みます。しかし、デザインで興味深い要素に取り掛かる前に、山ほどの単調な仕事をこなさなければなりません。
例えば、バックエンドをセットアップする必要がありますが、そのためには、これまで何十回も記述した同じ定型コードを記述し、初期化し、基本的なルートを定義し、ミドルウェアを構成する必要があります。いずれもプロジェクトに固有のものではありませんが、各要素はアプリケーションに必要です。こうした基礎作業が完了したら、データベースへの接続を確立し、製品、顧客、注文のスキーマとともにデータベース・ドライバーを設定する必要があります。また、コーディングや開発以外の無数の作業も山積しています。
開発者は、プラットフォームを独創性がある、魅力的なものにするコア機能の開発に意欲的かもしれませんが、実際は、定型的な作業がプロジェクトのタイムラインの大部分を占めます。強固な基盤を築くことは必要ですが、コーディングのより創造的な側面に比べて、この定型的なタスクは面倒な作業のように感じられるため、開発者の生産性が低下する可能性があります。
コーディングには時間がかかり、エラーが発生しやすいものです。高品質の結果を生み出すには、かなりの時間とリソースが必要です。調査によると、従来の開発サイクルでは、開発者は実際のコーディングに平均して1日1時間しか費やしておらず、ほとんどの時間は反復的で差別化されていないアクティビティーに費やされています。これらのタスクには、多くの場合、レガシー・コードベースの処理、プロセスのドキュメント化、テストの作成、リリースの管理、エラーのデバッグ、セキュリティーの脆弱性の特定などが含まれています。例えば、プログラマーの典型的な一日は、コードのレビューやプル・リクエストのレビューから始まります。これが終わったら、品質保証チームによって報告されたバグのトラブルシューティングに取り掛かり、デプロイメント計画が作成されます。ここまでの作業では、新しいコードが1行も作成されません。
「生成AIにより、開発者はソフトウェア構築に時間を取られる退屈で定型的なタスクを自動化できます」とIBMのデータサイエンティストであるAnna Gutowska述べています。「一例としては、朝一番にスクリプトを実行し、ソフトウェアの「ヘルスチェック・レポート」を生成するシンプルな機能を果たすロボットがあります。これは、手動でスクリプトの実行に費やす時間が減り、スキルを活用する時間が増えるということを意味します」。
開発者は、React、Kubernetes、Flutterなど、変化し続けるテクノロジーやフレームワークに遅れずについていくという課題にも直面しています。ソフトウェア開発の状況は急速に進化しているため、これは決して簡単なことではありません。こうした進歩と歩調を合わせるには、継続的な学習と実験に多大な時間を投資する必要がありますが、これにより、開発の創造的でやりがいのある側面に割ける時間がさらに少なくなってしまいます。これらの責任を常に両立させる必要性と、頑健でエラーのないコードを提供するプレッシャーが相まり、コーディングはストレスが多く、精神的に圧倒されるように感じる仕事となるかもしれません。
生成AIツールは、デプロイメントの自動化、継続的インテグレーション、監視を支援することで、DevOpsワークフローでも役割を果たします。生成AIはコーディング支援以外にも、データを分析することで、プログラマーが複雑なデータセットを解釈して、アーキテクチャー上の決定やシステムの最適化の影響をより適切に評価できるように支援することもできます。
確かに、AIは単調な作業を「好む」わけではないかもしれませんが、複雑なパターンを見つけて複製することに優れているため、コーディングの反復的な側面を自動化するための理想的なソリューションになります。定型コードの生成などの(面倒ですが必要な基礎的)タスクは、生成AIツールを使えば、数秒で完了します。AIは、エンドポイントの自動生成、認証の処理、リクエストの構造化、手動コーディングによる労力の削減により、アプリケーション・プログラミング・インターフェース(API)の統合も支援します。テックカルチャー・メディアの『Wired』誌で取り上げられたもう1つの例は、SWE-agentと呼ばれるAIツールです。このAIツールは、GitHubリポジトリー内のバグを識別し、関連するファイルを見つけてコードを正しく修正し、アマチュア開発者の潜在的なデバッグ時間を何時間も節約しています。
これらのツールは単なるアシスタントではなく、専門家向けのメンターとも言える存在です。生成AIシステムは、リアルタイムの説明、例、ガイダンスを提供できるため、開発者はトラブルシューティングに費やす時間を減らし、イノベーションに多くの時間を費やすことができます。この変化により、反復的な問題解決に関連する認知負荷を軽減しながら、創造的なソリューションの設計やシステム・アーキテクチャーの改善など、質の高いコードの作成に集中できるようになります。AIはコードの変更を自動的に検出して改良することで、回帰を防ぐのに役立ち、新しい実装がベスト・プラクティスに準拠していることを保証します。
「IBM watsonx Code Assistantは、いくつかの潜在的な脆弱性、メモリー・リーク、不適切なコーディング・プラクティスを特定し、改善のための推奨事項を提供してくれました」 - IBM® watsonx Code Assistantに関するお客様の声
生成AIは開発者の学習ペースも加速します。複雑なコードベースや馴染みのないコードベースに関する洞察を提供しながら、新しいプログラミング言語、フレームワーク、パラダイムを素早く理解できるよう支援します。ジュニア開発者にとって、そのメリットは特に顕著です。
IBMのフルスタック開発者であるAsher Scottは、watsonx Code Assistantについて次のように述べています。「大きな期待はしていなかったので、その素晴らしさに驚きました。これは、私のスキルを次のレベルに引き上げるのに役立ちました」。
ジュニア開発者たちは、生産性とスキル習得が大幅に向上したと報告しており、これにより、従来の方法よりも早く専門知識を増やし、自信を深めることができるでしょう。AIは、参入障壁を取り除き、学習プロセスを合理化することで、あらゆるレベルの開発者が、より意欲的に課題に取り組めるように支援します。
経営コンサルティング会社であるKPMG社の調査によると、調査対象となったプログラマーの半数が、AIと自動化によって生産性が向上し、新たな機会が開かれ、キャリアにプラスの影響を与えたと回答しました。同様に、OpenAI社のChatGPT調査では、開発者の50%がAIの使用によって生産性が向上したと報告し、23%が大幅な向上を実感していることが明らかになっています。
ソフトウェア開発のプラットフォームを提供するGitHub社の調査によると、こうした生産性の向上により、コーダーの既存のワークフローの効率性が大幅に向上することが示唆されています。AIコーディング・ツールを使用する開発者は、反復的または面倒なタスクを自動化して定型コードではなくソリューション設計に集中できるため、満足度が高まったと報告しています。また、コード・アシスタントは精神的負担を軽減し、燃え尽き症候群を防ぐのに役立ちます。開発者がパフォーマンス基準をより簡単に満たせるようになるため、コード品質の向上、アウトプットの高速化、インシデントの減少がもたらされます。
生成AIが仕事の満足度に与える影響は、主に洞察を提供し、面倒な開発ワークフローを合理化する能力に起因します。例えば、watsonx Code Assistant(WCA)、GitHub Copilot、SWE-agentなどのAIを活用した開発ツールは、リアルタイムのコード生成、デバッグ、最適化の威力を実証しています。このような効率性により、開発者のフラストレーションが軽減されるだけでなく、特にキャリアをスタートさせたばかりの開発者は、より複雑でやりがいのある問題の解決に集中できるようになります。AI搭載ツールは定型的なタスクを自動化することで機能性を高め、開発者が反復的なコーディングではなくイノベーションに集中できるようにします。
GitHub社によると、調査対象となった開発者の57%が、AIコーディング・ツールの使用はコーディング言語スキルの向上に役立ち、これがこれらのアプリケーションを使用する最大のメリットであると回答しました(2番目に大きなメリットは生産性の向上でした)。これは、開発者がAIコーディング・ツールの使用を、学習と開発のために追加で取り扱わなければならないものではなく、仕事をしながらスキルを向上させる1つの方法とみなしていることを示唆しています。
生成AIはリアルタイムの例とコンテキスト・ガイダンスを提供するため、ジュニア開発者はスキルアップやスキル再習得を加速し、能力を迅速に習得してチームにより早い段階で貢献できるようになります。WCAを使用すると、メインフレームのモダナイゼーションやJavaの移行など、複雑なエンタープライズ開発環境で作業する開発チームは、面倒なコード変換を自動化しながら、AIが提供するベスト・プラクティスに関する洞察を活用することができます。つまり、ジュニア開発者は頻繁に作業を中断して、シニア開発者に相談せずにタスクを進めることができるため、自信を深め、自律性をより早く確立できるでしょう。
AIは、開発者がプロトタイピングやイノベーションに取り組む方法も変革しています。かつては手作業で何時間もコーディングする必要があった作業が、今ではほんのわずかな時間で完了できるようになりました。例えば、新しい機能を設計する開発者は、生成AIを使用して実装案を作成し、それを改善を繰り返しながら発展させ、より大きなプロジェクトに統合することができます。この迅速な処理により、より多くの実験と創造性が可能になります。これは、多くの場合、ソフトウェア開発で最も楽しい作業です。
定型的なタスクを自動化することで、開発者はリモートまたは非同期の作業環境でも簡単に適応できます。AIツールは、チーム・メンバーが簡単に確認して理解できるコードの提案や説明を生成することで、より優れたコラボレーションも可能にします。これらの改善は開発者の肯定的なエクスペリエンスに貢献し、ソフトウェア開発の生産性が向上するだけでなく、現代の労働者の多様なニーズも満たせるようになります。これにより、仕事の満足度とワークライフバランスの向上にも貢献します。
生成AIツールは、開発者が生産性を追跡して改善できるように指標を提供することで、開発者のスキルセットを高めるのにも役立ちます。また、新しいテクノロジーを効果的に導入し、AIを使用する全体的な影響を評価するために必要な知識を開発者と組織に提供します。これにより、プログラマーが継続的に学習し、イノベーションをもたらす文化が育まれます。
人間の専門知識は、ソフトウェア開発プロセスの不可欠な部分であり続けます。AIにはバグを特定し、修正を提案する能力はありますが、熟練した開発者のような微妙な理解力と直感はありません。コードの背後にある意図を識別し、コードとビジネス目標の整合性を評価し、組織のコンテキストを適用して、コードがプロジェクト要件を満たしていることを確認する能力は、人間の方が優れています。機械の知能では微妙なトレードオフを解釈したり、曖昧なシナリオをナビゲートしたりすることが難しいため、人間の判断が不可欠です。
生成AIテクノロジーの導入には課題がないわけではありません。テクノロジーが及ぼす影響の度合いは、これを使用する開発者の経験レベルにより異なります。AIによって学習と貢献が迅速化されるため、ジュニア開発者が最も大きなメリットを享受することがよくあります。こうした開発者にとって、AIはメンターとなり、知識のギャップを埋めて成長を加速させます。対照的に、MITのビジネス・スクールであるMIT Sloanの調査では、上級開発者が受ける影響は8%~13%程度に過ぎないと報告されています。これが、専門知識がテクノロジーを上回っているためなのか、上級開発者がAIをワークフローに統合することに消極的であるためなのかは、まだ明らかになっていません。
AI駆動型コーディングに関するもう1つの懸念は、技術的負債リスクです。迅速に解決するためにAIに過度に依存すると、時間の経過とともに近道が一般的となり、これが長期的にはより複雑な問題となって、解決に多大な労力を必要とする用になる可能性があります。また、AI駆動型コーディング・ツールによってスキルの低下が起こり、開発者が自らの問題解決能力やコーディング能力を磨く代わりに自動化に頼りすぎるようになるのではないかと懸念する人もいます。批判的思考力と実践的なコーディング・スキルが衰えれば、開発者は将来、リスクの高い複雑な課題に取り組むのに苦労するかもしれません。
ここで強調したいのは、AIコーディング・ツールは、人間の開発者の代わりに動作するものではなく、人間の開発者と協力して動作するときに最もよく機能するという点です。生成AIはワークフローを加速し、反復的なタスクを自動化できますが、その真価は人間の専門知識を増強し、開発者が創造的な問題解決、アーキテクチャー上の決定、イノベーションに集中できるようにすることにあります。
そのよい例は、モロッコのITソリューション・プロバイダーであるrKube社です。同社はIBMのwatsonx Code Assistantを使用してJavaアプリケーションをモダナイズしました。コード変換を自動化することで、開発者は手動のリファクタリングからより価値の高い問題解決に重点を移すことができ、最終的にはこれがワークフローの効率化と従業員のモチベーション向上につながりました。
適切なプログラミング言語の選択からApp Storeへのアプリのリリースまで、iOSアプリ開発の基本を学びます。スケーラブルで革新的なiOSアプリケーション向けのAPI、テスト戦略、クラウド・ソリューションの使用方法について理解を深めましょう。
適切なツールやプログラミング言語の選択から、さまざまなデバイス向けのアプリの最適化まで、Androidアプリ開発の重要な側面を学びます。
IBM watsonx Code Assistant for Zでは、どのようにAIを活用してアプリのモダナイゼーションを変革しているかをご覧ください。生産性を高め、コストを削減し、レガシー・システムをモダナイズして将来の成功につなげる方法をご紹介します。
ターゲットを絞ったアプリのモダナイゼーション戦略により、年間収益は14%増加、保守コストは最大50%削減。