デジタルで豊かな社会の実現を目指す東芝デジタルソリューションズグループの
最新のデジタル技術とソリューションをお届けします。

プロセス標準と生成AIの融合で開くソフトウェア開発の新たな境地

東芝デジタルソリューションズでは現在、ソフトウェア開発の生産性と品質を高めることを目的に、生成AIを使ったソフトウェア生産技術の研究開発を行っています。その一環として進めているのが、当社のソフトウェア開発における標準やノウハウを活用した生成AIで、東芝グループのソフトウェア開発を支援する取り組みです。その特長は、ソフトウェア開発の上流工程にあたる要件定義の段階から支援すること、そして設計を段階的に詳細化して最終的にプログラムコード一式まで生成するところにあります。生成AIによって、いかに開発者の負担を減らしてより高度なプログラム開発に注力させられるか、いかに効率的に品質の高いソフトウェア開発が実現できるかを考えながら、日々トライアルを重ねています。ここでは、設計の段階的な詳細化とプログラムコード一式の生成を行う生成AIへの取り組みを例に、当社がソフトウェア開発に生成AIを活用できる理由と、その取り組みの状況、そして現状の課題についてご紹介します。


システム開発に欠かせないプロセスの標準化


システムやソフトウェアの開発において、作業の流れや成果物に一定の基準を設けること(標準化)は、生産性の向上や品質の確保を実現するために欠かせない取り組みです。特に大規模化あるいは複雑化する昨今のシステム開発においては、関わる開発者も多く、属人的なリスクをいかに抑制できるかが成果物の品質に大きく影響します。東芝デジタルソリューションズは長年にわたり、IT分野における基礎研究の成果を、実践的な生産技術に適用したり、お客さまへの最適なシステム構築や効果的な開発ツールに活用したりしてきました。これらの経験から得たさまざまなノウハウを基にシステム開発を標準化し、「プロセス」「開発環境」「実行環境」「ガイド」で整理しています。

このうちプロセスでは、「PROSQUARED(プロスカード)」という名前で、統合プロセス標準を策定しています。これは、受託型システム開発や組込みソフトウェアの開発、アジャイル開発など、システムを開発する形態ごとに開発の流れを定義(プロセス標準)するとともに、各形態のプロセス標準の設計工程で共通的に利用できるテンプレートなどを準備したものです。システムを開発する際に考慮するべき、要件や機能、画面といった事柄は、設計に落とし込むことが重要です。そのため、設計工程において、設計する順番や、どんな設計書が必要かなどを指南する「プロセス定義」、設計書や仕様書などの内容に必要となる要素や図表のフォーマット、記載例などを記した「テンプレート」、そしてシステム開発に必要な知識を解説した「ガイド」を、システム開発時に考慮するべき事柄とその事柄同士の関係を定義した「メタモデル」に基づき整備しています。この設計工程における標準を「CommonStyle Methodology(CSM)」として準備しています。

PROSQUAREDは、システム開発において世の中でデジュール標準あるいはデファクト標準といわれている国内外の規格に準拠したものです。例えば、ソフトウェアライフサイクルプロセス(SLCP)の共通的な枠組みを規定した「ISO/IEC 12207(JIS X0160)」や、ITサービスの運用について規定した「ISO/IEC20000」などに準拠しながら、当社の知見やノウハウを加え、策定しました(図1)。

※東芝デジタルソリューションズでは、システム開発における開発技術の標準を「CommonStyle(コモンスタイル)」として体系化し、2006年から運用しています。


生成AIの活用でソフトウェア開発の生産性を大幅に向上


近年、文章や映像などの効率的な作成のために、さまざまなシーンで生成AIの活用が進んでいます。ソフトウェアの分野でも同様で、Excelで使うマクロや簡単なプログラムのひな型となるコードを、いくつかの要件を含んだプロンプトを準備することで誰でも手に入れられる時代になってきました。しかしまだ、人間が行うプログラムの開発を生成AIで代替する取り組みは、始まったばかりです。これまで、生成AIによるプログラムコードの生成は、そのほとんどが単体のコードの生成であり、また比較的簡単なコードの生成まででした。

これではSI事業に関わるビジネスでは効果が小さいと考え、当社では、ソフトウェア開発者が実際に開発する手順である、上流から下流までの開発プロセスを一貫して支援する生成AIの技術開発に取り組みました。例えば、上流である要件定義から設計の工程では、要件定義書を理解する支援や設計書のレビューに生成AIを適用する研究を進めています。また、レガシー資産を新しい環境に移行するマイグレーションや、ソフトウェアの動作を保ったままプログラムコードの内部構造を整理し、改善するリファクタリングへの活用にも取り組んでいます。

これらの取り組みの1つとして進めているのが、今回ご紹介する、設計からプログラミングの工程における生成AIの活用です。ここでは、設計書を用いて、生成AIで画面やデータを格納するテーブルなどの詳細な設計を段階的に行い、必要なプログラムコードの一式を生成するという、先進的な技術を開発しています。

これらは、ソフトウェア生産技術のノウハウを蓄積して標準化を進めてきたからこそ、PROSQUAREDおよびCSMが定める標準があるからこそ実現できることであり、当社の特長です。これら標準を生成AIのモデルに学習させたり、入力するプロンプトに活用したりすることで、上流から下流までの開発支援を実現していきます(図2)。生成AIを活用して目的の結果を得るためには、AIが解釈し易く、かつ十分な情報量があるプロンプトの入力が必要です。標準で定義している、設計の順番や、必要となる各種設計書とその構成要素、さらには設計のガイドの情報を活用することで、必要な情報を構造化された設計情報として、入力できるようになります。これによって、プログラムコード一式の生成に必要な画面やテーブルといった要素を漏れなく設計できる効果が得られます。またプログラムコードを生成する際には、標準に基づいてコーディングのルールを守らせることで、品質のばらつきや属人性の少ないプログラムコードの生成ができるようになります。

設計の段階的な詳細化、そしてプログラムコード一式の生成を行う生成AIを用い、簡単なECサイトのアプリケーション開発での効果を検証しました。機能定義書(設計書)を入力し、生成AIを活用して、まずは必要な画面の一覧を設計し、次に各画面に対して遷移図や表示する項目の仕様、レイアウトを、そしてテーブルの一覧表とテーブル内のデータ項目の仕様書を段階的に設計しました。そのうえで、ECサイトのアプリケーションに必要な、サイトを利用するユーザーの目に触れる画面(フロントエンド)に関わるプログラムコードや、その裏でDBと連携するプログラムコードなどを生成しました(図3)。

生成AIの活用にあたっては、機能定義書から画面やテーブルなどの設計に必要なテキストを抜き出して、自動で生成AIに入力します。例えば、「あなたはWebフロントエンドのプログラマーです」というような役割を与えたうえで、CSMのメタモデルで定義された設計内容や項目を指示します。さらに出力形式の例示や出力の注意事項なども入れ、最終的に生成されるプログラムコードの品質を高める工夫を行います。このような当社のノウハウや形式知などを盛り込んだプロンプトは、スクリプトで自動化することで、生成AIに入力する作業を効率化しています。


生成コードのうち約8割がそのまま利用可能に


このトライアル検証では、ECサイトにおいて「商品購入」「購入履歴表示」「ログイン/ログアウト」の3つの機能を持つアプリケーションの開発を行いました。仕様にもよりますが、通常、このようなECサイトのプログラムコードを人間が一から開発するには、1か月程度の開発期間を必要とします。一方、今回の生成AIによる開発では、プログラムコードが生成されるまでの時間は2時間程度でした。単純に比較すると、アウトプットするまでの時間が大幅に短縮されたことがわかります。もちろん生成されたプログラムコードについては、品質の確認や、人間が手直しをする時間などを検証していく必要があります。

実際に、生成AIによって今回生成されたプログラムコードは、全体で1700行ほどでした。この生成されたコードのうち約83%はそのまま利用できることが確認でき、残り17%は手直しや削除が必要なコードでした。また、複雑な処理については生成できていなかったため、人間によるプログラムコードの追加作業が必要でした。例えば、セッションの管理や、商品購入に関するトランザクション処理などの追加です。このように現時点では、一定量の手直しが必要になりますが、生成AIを活用した生産性の向上に向けて、期待が高まる結果となりました。手直しが必要な部分に対しては、修正を提案するAIを活用するなど、修正作業の効率化も図っています。

生成AIを活用した生産性や品質の向上に取り組む一方で、生成AIで得られたプログラムコードのセキュリティや著作権侵害への対応も重要になります。例えば、既にコーディングに関する規約も含めたプロンプトを入力することによる、セキュアなコーディングへの対応を進めています。さらに今後は、生成したプログラムコードを解析ツールにかけて、結果を生成AIに繰り返し入出力させることで、よりセキュリティを強化していくことも考えています。また、生成AIに関する特有の課題として、著作権を侵害するプログラムコードの出力を行うケースが考えられます。例えば、OSSのプログラムコードをそのまま利用して出力することがあるかもしれません。当社では現在、テストの段階でツールを使ってチェックするといった検証を進めています。この課題については、まだ先行きが見えていないところも多く、今後も世の中の動きを把握しながら適切な体制や仕組みを検討していきます。

上流から下流までの工程に生成AIを活用する新しいソフトウェア開発の手法はいま、さらなる生産性や品質の向上を図りつつ、多くの開発現場で使えるように実用面でのブラッシュアップにも取り組んでいます。東芝グループ内の多くのソフトウェア開発者やシステム開発者に利用してもらえること、つまり実際の開発現場で効果測定を行える点も東芝の強みです。この試みによって、これまで培い整備してきた設計やプロセスの標準化の意味や重要性、効果が改めて多くの開発者に伝わる手助けにもなりました。現場での生成AIの活用を通じて、実際の効果の検証と、それによる改善を続けていきます。

生成AIは、どんなに進化してもそれだけでソフトウェア開発を完遂することは困難です。学習することが要となるAIにとって、よくある問題を解くことは得意ですが、先進の技術を扱ったり何かに特化したりした実例の少ないプログラムコードの開発は苦手だからです。人間とAIとで適切に作業を分担しながら、生産性と品質を高めるソフトウェア生産技術の開発に、私たちはこれからも注力していきます。当社は人に寄り添いながら、既存の技術やノウハウと、先進の技術を効果的に活用することで、ソフトウェア開発業務をサポートする技術と環境を今後も進化させていきます。

  • この記事に掲載の、社名、部署名、役職名などは、2024年8月現在のものです。
  • この記事に記載されている社名および商品名は、それぞれ各社が商標または登録商標として使用している場合があります。

関連記事