AIの具体的な開発プロセス|AI開発に適したソフトウェア開発モデルとは?

AIの具体的な開発プロセス

企業において、AIを活用することで一部の領域で業務プロセスの効率化を促進し、多くの日系企業が抱えている深刻な人材不足という問題を解決し、限られたリソースでより生産性を高めることができる可能性を秘めています。さらに、新しい企業価値の創出や顧客満足度の向上にも貢献します。

そんなニーズを満たすためのAI開発プロセスやフロー、AI開発に適したソフトウェア開発プロセスモデルを本記事でみていきましょう。

【関連記事】

目次

AI開発に必要な3つの要素

まず、AI開発プロセスや開発フローを紹介する前に、AI開発に必要な3つの要素を確認していきましょう。

プログラミング言語

AIの開発にはさまざまなプログラミング言語が活用されますが、本記事では5つの開発言語を紹介します。

言語

特徴

①Python

AIをはじめ、Webアプリやデータ解析など幅広く活用される言語

⊕人間が読み書きしやすい記述方法

⊕初心者でも習得しやすい

⊕コミュニティやライブラリが豊富

②Java

どのような環境でも使用できる便利な言語

⊕JVM(仮想マシン)で動作するため、OSに依存しない

⊕JVM上のシステムにAIを組み込む場合に適している

⊕機械学習のライブラリがある

③JavaScript

Webサイト上でAIを活用したい場合に適している言語

⊕Webブラウザ上からAIを活用できる

⊕既存のシステムと親和性が高い

④Julia

技術計算に用いられる比較的新しい言語

⊕スクリプト言語でわかりやすい

⊕PythonやR言語のライブラリも扱える

⑤C言語

エンジニアに長年支持されている言語

⊕実行速度が速い

⊖CPUやメモリなどに関するハードの知識が必要

⑥C++

C言語にオブジェクト機能を追加した言語

⊕ほかの言語と比べ、高速に動作する

⊖難易度が高め

⑦R言語

統計学やデータ解析を目的とする言語

⊕ディープランニングに対応している

⊕アルゴリズムが多く公開されている

⊖高速な動作は不得意

⊖活用するには専門的な知識が必要

開発環境

AIの開発では、膨大なデータを取り込む必要があるため、システムを正常に稼働させられる開発環境が必要です。大容量のストレージや、十分な演算能力を持つコンピュータが必要です。しかし最近では、初期費用やハードウェアのセットアップをせずに開発が可能なオンデマンド型クラウドコンピューティングプラットフォームという選択肢もあります。具体的には、Microsoft AzureやAmazonのAWSです。

AI開発に関するフレームワーク

通常、フレームワークは“枠組み”や“ひな形”と訳されます。AI開発におけるフレームワークとは、「頻繁に利用するプログラムをまとめて、一部を変更するだけで利用できるようにしたひな形」と説明できます。多くのAIフレームワークはオープンソースで提供されており、無償で使用することができます。本記事では代表的な2つのAIフレームワークを紹介します。

①Scikit-learn

Scikit-learnとは、Pythonベースで実装されたオープンソースの機械学習フレームワークです。高機能で、AI開発をするうえで必要な機能が多く揃っています。シンプルなAPIが提供されているため、容易に学習ができ、モデルやアルゴリズムの変更を柔軟に行うことができます。使い方も比較的簡単であるため、初心者でも扱いやすいです。

②TensorFlow

TensorFlowとはGoogleが開発した機械学習におけるフレームワークです。特徴として大量のデータを扱える点やニューラルネットワークの構築や訓練ができる点があげられます。TensorFlowは、具体的には画像認識や画像検索、音声認識、翻訳などに使用されます。

AI開発プロセスとAI開発フロー

AI開発プロセス

以下では、AI開発プロセスにおける4つのフェーズと各フェーズにおけるフローを紹介します。

①構想フェーズ

まず、解決する課題を設定します。次に、その課題を解決するのに本当にAI開発が最も適している解決策であるのかを検討します。また、その課題においてどの領域をAIに任せるべきかを考えます。AIが最も適していると判断した場合、次に具体的にどのようなAIモデルであるべきかを考えます。ここで重要なのは、開発したAIが設定した課題を解決できるかという点です。このフェーズはAI開発プロセスにおいて最も重要なフェーズであり、多角的な視点から検討する必要があります。

②PoC(概念実証)フェーズ

上記で構想したAIが技術的に実現可能なのかを検証します。従来のシステム開発におけるプロトタイプのようなものと考えると理解しやすいかもしれません。具体的には、仮モデルであるモックアップを開発することで検証します。ここでは以下のような点を検証します。

  • 機械学習やディープラーニングに必要なデータの量と質が確保できているか
  • 期待した精度は出せるか
  • 処理スピードは費用対効果にあっているか
  • 出力に誤りがあった場合のオペレーションはうまく回るか

③実装フェーズ

モックアップにおける開発内容をベースにし、実際の環境で求められる精度や実行速度に対応したAIシステムを完成させ、実務で稼働させます。このフェーズにおける具体的な開発フローは、「要件定義&機械学習モデル最終化→設計→設計→開発→テスト」となります。

ここでは、本番環境に必要な要件を定義し、開発を進め、AIモデルを完成させます。完成後はシステムが問題なく動作するかを検証し、ビジネス上の実務を見据えた稼働につなげます。

④運用フェーズ

開発したAIシステムを実務に実装し、運用していくフェーズです。

ここでは、

・システムを安定して稼働するための保守・点検

・構想フェーズで設定した目標や成果を満たしているかの確認

を行います。期待していた成果と実際の結果に乖離があった場合、原因を突き止め、期待通りの成果が得られるよう改善策を考え、修正するというPDCAを回さなければなりません。

AI開発に適したソフトウェア開発プロセスモデルとは?

ソフトウェア開発プロセスモデルにおいて、ウォーターフォール型とアジャイル型の2つのモデルがよく知られています。AIを開発する場合はどちらのモデルが適しているのでしょうか。2つのモデルの特徴とともに見ていきましょう。

ウォーターフォールモデル

ウォーターフォールは、直訳すると“滝”です。このモデルは上流から下流へ水が流れるように工程が進むため、ウォーターフォール開発と呼ばれているということになります。システムやソフトウェア開発は「要件定義」→「設計」→「製造」→「テスト」→「リリース」という流れで進められますが、このモデルには、前工程が完了しないと次の工程に進めないという特徴があります。ウォーターフォールモデルのメリットは、各フェーズごとに人員を配置し、開発できる点です。反対に、開発途中の仕様変更ができない、ドキュメントの作成に時間がかかるというデメリットがあります。

アジャイルモデル

このモデルは、チームを組み「要件定義」→「設計」→「製造」→「テスト」→「リリース」の開発工程を、素早く繰り返し進める点でウォーターフォールモデルと異なります。スピード感をもって開発を進めるため、メリットは開発途中の柔軟な仕様変更に対応可能な点です。反対に、柔軟性があるあまり、当初の目標から意図せず方向に開発が進んでしまう可能性があります。そのため、定期的な目標の確認が必要です。

以上のことから、実装後の運用と頻繁なPDCAを通じた柔軟なシステム改善が求められるAI開発においては素早く開発を進めるアジャイルモデルが適していると考えられます。

まとめ

本記事では、AI開発プロセスを中心に紹介しました。

一般的なシステム開発が当初に計画していた完成形を目指すのに対し、AI開発はリリースがゴールではなく、想定フェーズで期待していた成果を満たせるよう運用を通して改善し続けなければならないという違いがあります。AIはさまざまな業界の課題を解決する可能性を秘めているのは事実ですが、企業体制や解決する課題によって適切な開発言語や開発環境、採択するべき開発モデルは異なります。

CMC JapanのAI開発ノウハウ知識や成功事例に関する詳細情報をお求めの方は、こちらのリンクから簡単にお問い合わせいただけます。