NTT技術ジャーナル記事

   

「NTT技術ジャーナル」編集部が注目した
最新トピックや特集インタビュー記事などをご覧いただけます。

PDFダウンロード

挑戦する研究開発者たち

AIを活用してシステム開発の効率化と生産性向上を推進するための開発標準と開発プロセスガイド

2022年11月にOpenAI社の生成AI(人工知能)ChatGPTが公開されて以降、生成AIが世界的に注目を集めています。生成AIはプロンプトとして文字等を入力すると、その内容に合致したテキスト、画像、または他のメディアを応答として生成するものですが、この特徴から文章がベースとなっているソフトウェア開発ドキュメントやソースコード等を生成する、生成AIのソフトウェア開発への活用も着目されるようになりました。しかし、開発の効率化や生産性向上が、適用の対象や活用方法によっては効果が期待できない場合もあります。このような生成AIの適用対象や活用方法を検証し、プロセス整備を行っている、NTTデータグループ 技術革新統括本部 小林由依氏に、NTTデータグループにおける生成AIの開発への活用とプロセス整備・展開、そのためのスキルアップへの思いを伺いました。

小林由依
技術革新統括本部 Apps&Data技術部
NTTデータグループ

「AIを活用したアプリケーション開発プロセスガイド」で、システム開発プロセスの効率化と生産性向上をめざす

現在、手掛けている業務の概要をお聞かせいただけますか。

「AI(人工知能)を活用したアプリケーション開発プロセスガイド」(開発プロセスガイド)を作成し、開発プロジェクトで活用する仕組みづくりに取り組んでいます。
NTTデータグループでは、2023年6月に「生成AIの活用をグローバルで推進する体制の整備」について発表し、次々と新しくなり、進化している生成AIをシステム開発に活用することで、開発プロセスの効率化と生産性向上をめざしています。この取り組みの中で、生成AIを活用した次世代のシステム開発プロセスの整備を行い、生成AI活用に際してのノウハウや事例をガイドラインとして取りまとめたものが、「AIを活用したアプリケーション開発プロセスガイド」です。
開発プロセスガイド作成に先立ち、開発プロセス整備のめざすべきところを、私たちは次のように考えました。
・ユーザが、生成AIを使った開発プラクティスは、アプリケーション開発作業における生成AIの活用方法を少ない学習コストで得られる。
・開発者にとって、生成AI活用におけるアンチパターン(生成AI活用のメリットを引き出せていないパターン)発生の抑制とともに、開発工期短縮の実現、PM(Project Manager)にとっては生成AI活用によるメリット・デメリットを提示することで商用案件への適用可否の判断材料を得ることができ、適用の際もガバナンスを効かせた状態で生成AIを活用した開発を可能とする。
・お客さまにとって、安心してAIを活用することができ、リリースまでの期間が短縮されることによりビジネスアジリティを向上する。
・技術者の独断による生成AI利用や、使い方のみを定義した利用ルールではなく、具体的なプラクティスに基づいた再現性のあるプロセス定義を活用することで開発品質を担保し、さらに生成AIの効率的な活用を可能とする(他社との差別化材料)。
なお、開発プロセスガイドは、ウォーターフォールモデルによるアプリケーション開発およびアジャイルによるアプリケーション開発どちらも対象としています。

どのようなアプローチで開発プロセスガイドを作成しているのでしょうか。

生成AIは開発プロセスすべてに使える可能性があるため、上流工程からテストまでの全プロセスとプロジェクト管理にフォーカスを当て、プロセスごとに生成AI活用のユースケースを想定します(図1)。次に各ユースケースのどの部分に生成AIを適用すると効率化等のメリットがあるのかといったポイントについて、ノウハウ・知見を基にした机上検討と、実際のプロジェクトへの適用や内部検証等により確認し、具体的に生成AIをどのように活用すると効果的なのかといったところまで検証したうえで、その結果を再現性のあるプロセスとして整備しています。
NTTデータグループには、すでに業界標準とNTTデータグループのノウハウを融合して策定された「TERASOLUNA」等の開発標準があるため、実際の開発において生成AIを適用した効率化をめざしたプロセス整備においては、事細かにプロセスの手順を記述するのではなく、既存の開発標準との差分をまとめてドキュメント化します。具体的には、ユースケースごとに生成AI適用のメリット、適用の際および適用後の注意点、生成AIの回答が正解(人間が求めている結論に達する)であるという保証がないので、それを人間が妥当であると評価するために必要なスキルやその方法等のかたちでまとめてあります。
実際にプロジェクトで生成AIを使うときは、開発プロセスガイドに従って、まずはどこの部分に使えるのか、例えばそれがレビューの場合、どのようなレビューに使えるのかというところを判断し、それを開発標準に沿ってプロジェクトの中での適応の流れを検討します。そうした流れの中でそれぞれの作業が何のために必要なのか、どこに気をつけたらいいのかというところを、理解したうえで生成AIを適用していきます。さらに、品質確保、見積り、生産性、契約、セキュリティ(例えばOpenAIを利用するときは、情報が外部に出ていくといったセキュリティリスクがある)等に関する注意点を意識したうえで、プロジェクトの手順に反映して開発を進めます。

どのように開発プロセスガイドを社内に展開しているのでしょうか。

開発プロセスガイドは、AIを利用してアプリケーション開発する現場の開発リーダーやPMを想定し、そのペルソナ(求められる人物像)がプロセスガイドを参照して行動できるようにすることをめざして記述してあります。粒度や実現レベル、図1に示すさまざまなユースケースを対象に生成AI適用検証を実施し、順次プロセス整備を行っています。2023年度下期では、主に「コード変換」「設計書」から「テスト資材作成」のユースケースにおける自社IP(製造工程に特化した生成AIツール)を活用した場合のプロセスを整備・公開し、2024年度上期では主に、「設計書の作成・レビュー」「コードを作成」のユースケースについてチーム内部で検証を実施し、プロセスを整備しました。
整備されたプロセスは、2023年度下期より社内の各プロジェクトに、生成AIを活用するための一般的な知識やTips等とともに公開されています。「TERASOLUNA」等の開発標準はすでに公開・実践されているので、開発標準に従った各工程で生成AIを活用する際に開発プロセスガイドを参照するかたちで展開しています。また、AIは今日の最新技術は明日には陳腐化するほど目まぐるしく進化している一方、各ユースケースにおいて検証された結果を取りまとめて掲載するには、多くの時間を要するといった相反する状況にあるので、多くの事例を紹介することでそのギャップを埋めています(図2、3)。事例の中では、ユースケースの中でどのようなプロンプトを使うとうまくいくのか、といった実例も提供しています。
開発プロセスガイドの目的は、生成AIをアプリケーション開発に活用することで、効率化と生産性向上をめざすところにあるので、理想的な到達点は要件定義の段階から生成AIを活用することで、アウトプットとしてソースコードが出来上がり、テストが行われることです。ただ、生成AI自身が進化の最中であること、ユースケースの検証に時間がかかること、プロセス相互に連携したかたちで生成AIを活用するには、ノウハウが蓄積されていないこと等から、これらを1つひとつ積み上げていくことで、理想的な到達点をめざします。

T字型のスキルで開発標準やプロセス整備にかかわり続ける

開発者としてスキルの維持、スキルアップはどうしていますか。

私は2011年にNTTデータに入社し、テスト自動化ツールの活用・展開を行いました。テスト自動化ツールを勉強している中で、何のためのテスト自動化ツールなのか、という点を振り返る中で、それがテストの効率化であることを再確認し、テスト自動化ツールとそれを活用するためのプロセスの研究開発に取り組みました。私としては、これがまさに現在の「開発プロセスガイド」の原点になっています。
テスト自動化ツールの活用・展開を進めていくにあたり、テストのプロセスだけではプロジェクト全体を把握することができないので、実際にプロジェクトに参加して、要件定義から設計、製造、テストを経てリリース、移行までの一連のプロセスを経験しながら、工程管理、進捗管理、品質管理といったプロジェクト管理を学びました。これらすべてのプロセスが定義された開発標準「TERASOLUNA」は基本的事項として勉強していたのですが、プロジェクトで要件定義からリリースまでを経験することによって、それがより実のあるものとして理解できるようになったのです。さらにプロジェクトとして、メンバ全員が、要件定義から品質担保、リリースまでのプロセスを同じ目線で理解して実践していくためには開発標準が必須であることに気付き、その意識をもって開発標準やプロセスの整備に取り組んできました。
さて、ChatGPTの登場以来、生成AIが注目されるようになり、ソフトウェア開発においても生成AIを活用して生産性向上をめざす動きが活発化してきました。生成AIに関するスキルはもとより、その活用においてどのプロセスにどのように活用するのか、といった知見やスキルが生産性向上のためのポイントであり、それをベースとしてプロセスを体系的に整えていくことが重要であると考えています。
こうした状況において、スキルの習得にあたっては、「T」字型のスキルを意識してきました。これは、コアとなるスキルがTの柱の部分で、その周辺に関するスキルもTの水平方向に向かって習得していくイメージです。私の場合は、コアのスキルはやはりプロセスなのですが、現在の業務の中では生成AIや、CI/CD(Continuous Integration/Continuous Delivery)といった、プロセスを整備するために必要なスキルが水平の部分にあたると思います。技術は日進月歩であり、それを常にキャッチアップしていく必要がありますが、そのときもT字型を意識していくことが重要になってきます。

事業会社は異動がありますが、こうしたスキルを活かして将来的に何を経験したいのでしょうか。

今後も何らかのかたちで開発プロセスにかかわっていきたいと思います。例えば、開発プロジェクトで私たちが整備してきたプロセスを実際に使ってみて、そこで得たノウハウや知見をプロセス整備にフィードバックするとともに全社的に水平展開をかける、といったことを繰り返していきたいと思います。さらに、生成AIの活用といったような新しい概念をそのプロセスに取り込んでいくことも続けていきたいと思います。
また、生成AIは大規模言語モデル(LLM)による言語をベースとしたものですが、言語以外の画像や音声等もカバーしたマルチモーダル化が進んできます。現在のソフトウェア開発は、要件定義や設計等において言語がベースになっており、だからこそ生成AIの活用が可能であるといわれていますが、マルチモーダル化により、さらに簡単に生成AIを活用することが可能になると考えられ、それにより開発のさらなる効率化・生産性向上が期待されます。こうしたマルチモーダル化された世界もプロセスとして整備していきたいと思います。
ソフトウェアは基本ソフト(OS)からアプリケーションまで数多くの層があり、その適用対象も千差万別。ただ、ソフトウェア開発は、ソフトウェアの種類に関係なく「基本的なプロセスの考え方」は同じであり、メンバ全員が共通した用語で認識があったプロジェクトとして開発を進めていくうえでは開発標準がその根幹をなすものとして重要です。だからこそ開発プロジェクトを含んでプロセスや開発標準に今後もかかわり続けていきたいと思います。

後進へのメッセージをお願いします。

自分の経験も踏まえて、T字型のスキルを意識していってほしいと思います。プロフェッショナルとしてのコアスキルが重要であることは誰でもすぐ気付き、それに対してのスキルアップは常に心掛けて実践しているかと思います。それに加えて、Tの水平方向のスキルについても興味を持って、ぜひ取り組んでください。特に最近の開発は、単独の技術ではなく、さまざまな技術を組み合わせて行うことが多くなっているので、T字型スキルの重要性が増大しているのではないでしょうか。さらに、技術の組み合わせも複雑化しているので、T字型ではなくπ字型スキルという話も聞くようになりました。私もπ字型をめざして、もう1つのコアづくりに努力しています。
それから、生成AIツールを使う機会が増えてきている中、まずは生成AIを使うことにフォーカスしがちですが、どこにどのように使えば効果的なのか、といった観点も意識していただければいいかなと思います。現在、私はソフトウェア開発を対象に事例収集を含めてこの部分を検証中なので、同じ思いの人と一緒に取り組んでいければいいと思っています。

DOI
クリップボードにコピーしました