Technical Information

AI・IoT時代における プロジェクトマネジメントと品質管理のあり方

asset_approach_column_software-quality04_hero.jpg

現代は第四次産業革命(AI革命)の時代と言われます。AIの劇的な進化、AIとロボットの融合、IoTの普及は私たちの想像を超える速度で進み、今やこれまで当たり前と思っていた一般常識やビジネス習慣が通用しない新しい時代に突入しようとしています。このような革新的な時代において、企業は新たなビジネスを切り開かなくてはなりません。一方で、プロジェクトマネジメントや品質管理の在り方についてはますます複雑になりつつあります。本講演では、ソフトウェア開発において今後どのようなことについて気を付けていくべきかという点についてお話させていただきます。

※この記事は、『ベリサーブ アカデミック イニシアティブ 2020』の講演内容を基にした内容です。

伊本 貴士

メディアスケッチ株式会社
代表取締役
伊本  貴士 氏 

産業革命とイノベーション

1.社会構造の変化にどう対応するか

はじめに、OpenAIという団体が作ったロボットの映像をご紹介します(図1)。この映像は、5本の指を持ったロボットが、片手でルービックキューブを回しながらパズルを完成させていくというものです。 実はこのロボットは、プログラムではなく、人工知能の制御により動いています。何万回、何百万回という試行錯誤の末、ルービックキューブを器用に解くことができるようになったのです。このことは、ロボットとAIの融合技術の進化により、すでにロボットは人間よりも器用に動くことができるようになっているかもしれない、という可能性を示唆します。

ロボット映像

図1:https://www.youtube.com/watch?v=kVmp0uGtShk&t=1s

このような技術が進むと、従来多くの人が就いていた事務作業や軽作業はAIやロボットに取って代わられ、この結果社会構造は二極化していきます。こうした時代に企業を存続させ、成長し、経済を支えていくためにはAIやロボット、IoTといったテクノロジーを核としたイノベーションへのいち早い取り組みが必要不可欠となります。
また、少子高齢化が進む現代では、労働人口が少なくなり一人一人の作業負担が増えていきます。人が少なくなる中で収益を維持しようとすると、企業はスタッフ一人一人の頑張りに頼るようになりがちです。しかし、人間は精神的にも体力的にも限界があり、こうした人への依存を続けていくと事故が起こりやすくなります。それは、結果的に企業に大きな損害をもたらすことになってしまいます。特に、AIやIoTの時代は開発や品質管理などあらゆる面で作業が複雑化し、やるべきことが増えていきます。事故を防ぎ企業を守るためには、ツールやテクノロジーの力を借りながら人への依存度を下げ、マネジメントの効率性を上げていかなければなりません。
ではこのような時代に対応していくには私たちはどうすればいいのでしょうか。

2.イノベーションのジレンマ

企業の成長にイノベーションは不可欠ですが、実際にはイノベーションに成功する企業ばかりではありません。ハーバード・ビジネス・スクールのクレイトン・クリステンセン教授は、その著書『イノベーションのジレンマ』で、従来製品の改良に重点を置く「持続的イノベーション」と、従来製品の価値を破壊して新しい価値を生み出す「破壊的イノベーション」と2つの概念を掲げ、特に大企業は持続的イノベーションに終始しがちになり、これが新興企業の前に力を失う理由になっていると指摘しています(図2)。このような、イノベーションのジレンマというものを早期に打破して新しい事業を生みだす。ということを私たちは考える必要があるのです。

イノベーションを成功させるポイントとしては、まずモチベーションの高いスタッフだけを選りすぐって少数精鋭でプロジェクトを進めること、トップに立つ企業の責任者がイノベーション推進への強い意思を持っていること、そしてテクノロジーに投資をしていく意識を明確にすることなどが挙げられます。特にテクノロジー=コストと考えている企業にはイノベーションは困難です。テクノロジーへの投資は同時に教育への投資であり、ここから人材が育つのだと考えるべきです。このようにイノベーションというのは、技術力の問題以前に、組織の考え方、企業文化、プロジェクトメンバーの選定方法が大きな影響を及ぼすことを私たちは知っておくべきでしょう。

イノベーションのジレンマ

図2:イノベーションのジレンマ

LeanとDevOpsのマネジメント

それでは、イノベーションを進めていく上で、具体的にどうすればいいのでしょうか。ここでは「Lean」と「DevOps」という二つのマネジメント手法を紹介します。イノベーション改革とは非常にリスクが高いものという認識が一般的ですが、このリスクをできるだけ抑えてゼロに近づけていく手法として今アメリカで注目されているのがこのLeanとDevOpsです。

1.Leanとは

まずLeanですが、これはマサチューセッツ工科大学(MIT)がトヨタ生産方式をもとに開発した方法論で、かつて世界を席巻した日本の製造業の強みを分析し、その中心にある思考方法をあらゆる業種に適用できるよう一般化したものになります。
Leanという英語には「贅肉を取り除いた」という意味があるのですが、製造工程にあるさまざまな無駄を排除していくことで開発リスクを抑えることを目的としています。ベースとなるのはLean思考と呼ばれる五つの考え方で、さらにここからLean生産方式、Leanソフトウェア開発など七つの生産管理手法が定義されます(図3)。 Lean思考に基づいてソフトウェア開発やサービス開発をする際の前提として、注意しなければならない二つの要件があります。一つは顧客の需要は必ずしも明確ではなく、時には顧客自身も気付いていない(潜在的な)需要があるということ。もう一つは、社会情勢がめまぐるしく変化する中で、人々の価値観や需要も絶え間なく変化していくということです。

Lean思考

図3:リーン思考(Lean Thinking)

では、どうしたらいいのでしょうか。Lean開発の哲学としては「継続的な開発とリリースの繰り返し」が提言されます。物を作ってリリースしたら開発は終了し、次の保守フェーズに入るという考え方はもう昔のものです。これからはできるだけ最低限のスモールなものを短期間・低コストで作り、それを顧客に使ってもらいながら、要望を吸い上げて修正したり、付け加えたりしてバージョンアップをしていきます。そうすることで本当に使いやすい、いいものができます。このような繰り返しにより、顧客が本当に求めているものが最低限のリスクで作られます。これがLean開発の哲学になります。
また、修正、開発、テストという一連の過程を繰り返す際、人が一所懸命チェックしたり、テストしたりしているという状況が続くと、そこにミスを犯すというリスクが生じます。従って、これからは品質管理やテストというものはできるだけ「人依存」を排除することが重要になります。「人」を排除するのでなく、「人依存」を排除するということです。もちろん自動化テストツールや品質管理のマネジメントをする人は不可欠なのですが、誰かが頑張ればいいというスタンスからいち早く抜け出すことを考えなければ、Lean開発は実現できません。

2.DevOpsとは

次にDevOpsは、急激な社会の変化に対して最低限のリスクで対応するという点においては
Leanと一致していますが、効率化のポイントが少し異なります。
DevOpsは従来、開発(Development)、運用(Operations)、品質管理(QA)の連携が不十分なために多くの無駄が生じていた点に着目し、この三者を常に連携させながら繰り返していくことで効率的な開発を目指すという考え方になります(図4)。DevOpsでは、市場において常に優位性を築くことを目的としています。例えば、ある商品を作ってリリースするとそれを見たライバル企業が同じような物を作ります。しかし、常に優位性を築くためにはすぐにまたこれを超える商品を開発しなければなりません。従って、一つの開発が終わってリリースするとすぐに次の開発が始まります。ソフトウェアを迅速にデプロイし、これを繰り返し継続的に行うことが求められます。

DevOps

図4:DevOps

またDevOpsでは、基本的な思想としてPDCAサイクルの繰り返しによる段階的なリリースを前提としており、ベータ版(またはアルファ版)をリリースし、実際の利用者に利用してもらうことを通して「潜在的なニーズ」を引きだし、迅速に修正していくことで真に求められるものを開発していきます。これは日本の企業に多く見られる「完璧なものを作り上げなければならない」という考え方とは正反対です。「まずメインの機能だけを実現したら、それ以外の細かい部分は後でいい」‒‒‒これがベータ版の考え方です。

DevOpsではそのパフォーマンスの計測方法にも特徴があります。従来のパフォーマンス計測がコーディング量や労働時間といった「量」で計測していたのに対し、DevOpsではデプロイ頻度やデプロイの失敗率といった「成果」で計測します(図5)。前述したようにDevOpsの考え方ではベータ版を出してそれに対する顧客の要望を取り入れていきますが、その要望にどれだけ応えられたか、どれだけ喜ばれたか、その「成果」で評価されることになります。逆に労働時間やテスト項目数が多くても、それは顧客価値につながるとは限りません。このような評価を繰り返すことにより、製品やサービスは顧客にとってより価値の高いものになるわけです。

DevOpsにおけるパフォーマンス計測

図5:DevOpsにおけるパフォーマンス計測

3.繰り返し開発における品質管理とテスト

次に品質管理とテストの話になりますが、正常系、異常系のテスト以外にもやらなければならないテストはいくつもあります(図6)。例えば、性能についての問題はリリース当初は基準を満たしていても、改修を繰り返した結果、ボトルネックとなり性能基準を満たすことができない、という結果を招きかねません。このような問題を防ぐためにはテストツールなどを用いてパフォーマンスの計測を継続する必要があります。このように、段階的なリリースを前提とした開発では、テストにかかる工数はますます増大していきます。そのため、可能な限りテストは自動化する必要があるのです。また、テストツール以外にもソースコードの修正とデプロイを頻繁に行う上で有効なのがバージョン管理ツールです。これは「いつ、誰が、何かを書いたか」をツールで確認でき、常に共同作業で効率よく修正していくために必要なツールで、有名なものとしては「git」などがあります。人への負担や依存が増えると必ず事故が起きると前述しましたが、これからの開発においてはこういった開発支援ツールを使いながら、組織の文化や開発手法を変えていく必要があるかと思います。

主なテストの種類

図6:主なテストの種類

IoTとAIの品質管理

1.IoTと品質管理

最新のIoTやAIを導入した時に、品質管理はどのように変わるのでしょう。
ご存じの通り、IoTの世界では、電化製品や自動車などさまざまな物がインターネットとつながり、頻繁にデータをやりとりしながら連携していきます。この時、製品は「モニタリング」「制御」「最適化」「自律性」という四つの機能を持つと言われています。従来モーターなどの駆動部品とICだけで動いていたハードウェアには、センサーが必要になり、通信モジュールが必要になり、さらにOSが入りというようにコンピュータ化していきます(図7)。

ハードウェアのコンピュータ化

図7:ハードウェアのコンピュータ化

当然、品質管理は複雑になり、テスト対象もどんどん増えていきます。またハードウェア開発においては、従来のようなすべての部品を自社で作る「すりあわせ開発(インテグラル型開発)」は通じなくなり、他社製の部品を組み合わせてそこに自社のオリジナルソフトウェアを載せる「組み合わせ開発(モジューラー型開発)」が主流になってきます。この時、製品のテストをどのように行うかが課題になります。まず他社から仕入れた部品に対して、どのように動くのかといった検証を行う必要が生じます。また、セキュリティも今後は非常に重要になってきます。仕入れた電子部品のセキュリティに問題はないか、通信は安全か…。こうしたことから、今後IoTテクノロジーに関わる電子部品はセキュリティの機能を持つようになってきます。例えば、STマイクロという会社が提供している「STM32」というチップに対し、同社ではセキュアブートやセキュアインストール/アップデート、データ保護機能といったIoT機器のサイバーセキュリティをサポートする「STM32 Trust」というシステムを提供しています。つまり、チップ自身がセキュリティ対応機能を持っているわけで、IoT製品の開発を行う企業が組み込む部品を選定するに当たっては、こうした品質管理のしやすさも重要な要素になりつつあるのです。

2.AI開発と品質管理

最後にAIの話をしたいと思います。
人工知能には、二つのフェーズがあります。一つが「学習」です。学習は、過去のすでに答えの出ているデータから問題を出し人工知能に予測させます。答え合わせの結果が正解であれば人工知能は考え方を維持し、不正解であれば新たな判断を付け加え新たな法則で再度予測します。もう一つのフェーズは、学習後に、まだ答えの出ていない新たなデータに対して予測するというというものです。

図8は人工知能の学習回数に応じた正解率の推移を示したものですが、学習段階の正解率(青線)は学習するほど上がっていきます(縦軸の1=100%)。一方、未知のデータに対する評価(緑線)は、5~6回までは順調に上がりますが、その先はなかなか上がっていきません。そこから先、人工知能の精度を上げていくには、学習の仕方を変えたり、アルゴリズムを変えたりといったチューニングが必要になります。人工知能というものは、プログラムを開発した段階ではまだ何もできていません。通常のプログラム開発においては、ソフトウェアは開発と同時に成果を出すことができます。それに対し、人工知能は、そこから学習をさせ、チューニングすることで賢くなっていきます。このように考えてくると、人工知能は非常に開発の時間もかかり、コストもかかります。成果が100%保証されるということもありません。従って人工知能に対しては、予算編成の段階からしっかりとした投資計画作成しておく必要があり、リリース後の運用フェーズにおいてチューニングと監視など継続的なサポートが必要になることを見越した品質管理体制が求められます。

人工知能の学習回数と正解率の計算

図8:人工知能の学習回数と正解率の計算

おわりに

IoTや、AIを含む製品においては、テストする対象が増えたり、リリース後の管理工程が増えたりと、品質管理は今後ますます複雑化していきます。これからの開発では、本講演でお話したような生産管理手法やツール、テクノロジーなどを駆使しながら自動化とプロジェクトマネジメントの効率化を推し進めていかなくてはなりません。従来のような人への依存を排除し、人が「顧客目線での価値を追求する」といった、よりクリエイティブな仕事にシフトする必要があるでしょう。このようにして的確なイノベーションを進めることは、次世代に飛躍するための必須条件になると考えます。