2. ソフトウェア開発へのAI適用
技術革新統括本部 技術開発本部
Technology Strategist 遠藤 宏
ソフトウェア開発にAIを適用して変革を起こすことについて、「可能性がある」としている記事は多いが、実用化したと公表されている事例はそう多くはない。今回はソフトウェア開発における設計、製造、試験の各工程にAIを適用したと謳っている事例を紹介する。
ソフトウェア設計工程へのAI適用
カナダのトロントにあるスタートアップBookmark社はWebサイト設計構築にAIを適用したプラットフォームを提供している。例えば衣料品販売と弁護士事務所とでは全く異なるウェブサイトになるので、同社では数百のビジネスタイプを分析し、各ウェブサイトからデータを収集している。
電子メールの購読、ダウンロード、行動を促すクリック、オンラインストアでの購入などの顧客の行動特性はビジネスタイプ毎に異なるので、顧客とウェブサイトとのインタラクションデータを使用してユーザーエクスペリエンスを最適化する。
この情報に基づき、同社のAIDA(Artificial Intelligence Design Assistant) はウェブサイトが持つべきセクション、要素、画像、デザインスタイルなどを設計し、コンバージョン率の高い最適なウェブサイトを構築している。
Bookmark社の顧客はWeb デザイナーに頼むことなく、プロ並みのウェブサイトを簡単に作ることができる(図1)。
ソフトウェア製造工程へのAI適用
DeepCode社はスイス連邦工科大学(ETH) からスピンオフした、チューリッヒを拠点とするスタートアップである。同社はDeepCode AIと称するソフトウェアプラットフォームを運用している。
既存のルールベース分析では、各プログラミング言語に対して数千個規模のルールを記述しているのに対して、DeepCode AIはJavaだけで35万以上のルールを自動的に学習している。
DeepCode AI は、公開コードベース( 例えば、GitHub、GitLab、Bitbucket)及びプライベートコードリポジトリの両方から学習することができる。すなわち、登録されたすべてのソースコード、これまでに行われたすべての修正及びソフトウェアコミュニティの最新の開発成果物から自動的に学習することができる。
同社のプラットフォームはソフトウェアの意図を理解し、AIが「ビッグコード(BigCode)」から学び、ソフトウェア開発者に強力なツールと重要な洞察を提供する。コードに欠陥がある、正しくないまたは最適ではない書き方、あるいは安全性の低い使い方をしているなどの問題を指摘し、コードの書き換えを推奨する(図2)。
ソフトウェア試験工程へのAI適用
2018年9月にリリースされた「World Quality Report2018-19」では、ソフトウェア開発においてチームがより効果的にテストできるようにするためAIの採用が増えているとの記述がある。
従来からテスト自動化は多くの開発プロジェクトで取り組まれていたことだが、「テスト自動化」の次のステップは「ソフトウェアのテストに機械学習を使用すること」である。試験工程にAIを導入し、QA(品質保証)に適用した事例として、米国ボストンに本拠を構えるスタートアップmabl社の取り組みを紹介する。
同社は機械学習を使用してソフトウェアの試験プロセスを変革したいと考えている。具体的には、QAプロセスを自動化し、クラウドサービスの形で提供している。
mabl社のテストツールは単に自動化されたものではなく、機械学習によって実現されている。具体的には、QAプロセスを自動化し、クラウドサービスの形で提供し、テストを続行するとともに学習する。コードレベルを調べる代わりに、ウェブサイトやサービスを見て、読み込み時間の増加、JavaScriptのエラー、視覚的な差分、リンクの切断、その他の問題といったアラートを出し、ダッシュボードに表示する。
問題が検出されると、問題が発生したプロセスのステップにフラグを立て、テストチーム及び開発チームにスクリーンショットを送信し、必要な修正を促す(図3)。
ソフトウェア開発とAI適用
今回はソフトウェア開発にAIを適用して事業を営んでいる事例を紹介した。ソフトウェア開発トレンドが時とともに変わっていく中、各スタートアップが流行り廃り(はやりすたり)に敏感に反応し、学習すべき対象を明確に定義していることをご理解いただけたと思う。
ソフトウェア開発の現場が抱える課題は多種多様で、今回紹介した事例だけで全体を語ることはできない。また、従来手法で解決していく課題もあれば、AI を適用することで解決可能性がある課題もある。
ソフトウェア開発にAI を適用するということは、現場の課題全体を棚卸しした上で、解決すべき重要課題を見つけ、学習する対象を定義して、継続的な学習プロセスをマネジメントしていくということかもしれない。
<お問い合わせ先>
endouhr@nttdata.co.jp