複雑性/不確実性に対応するためソフトウェア開発業界で広く採用されている「アジャイル開発」の製造業での活用法を紹介する本連載。第5回は、製造業のファクトリーIoTの開発で、どのようにアジャイル開発を導入し、活用したのかを紹介する。
こんにちは。本連載ではアジャイルとは何かの基礎から始まり、アジャイル開発導入のポイント、導入がつながる未来などについて紹介してきました。
そこで今回は、実際に製造業の現場でアジャイル開発をしてみたメンバーがその実態を紹介してみたいと思います。
今回紹介するプロジェクトは、ファクトリーIoT(モノのインターネット)の事例です。
このプロジェクトは、工場をIoT化し、工場の設備に取り付けられたセンサーなどから情報をデータレイク/データマートにリアルタイムに蓄積し、稼働状況や品質情報などを必要としている部署に提供するシステムです。
本事例で紹介するのは、その中で実際に工場から送られるデータを加工し、データレイク/データマートに格納する基盤アプリケーションの開発およびデータレイク/データマートに蓄積されたデータを取得するためのAPI開発を行うチームのお話です。
プロジェクト開始当初のチーム構成は下記の体制でスタートしました。
開発者とSMは毎日プロジェクトルームに来て作業をしていました。POは週2日程度プロジェクトルームに来て、スプリントレビュー前に開発状況や作成物を確認していました。その後、スクラムチーム全員でスプリントレビュー、スプリントプランニングなどのスクラムイベントを実施します。また、アジャイルコーチは週1日、スクラムイベントに参加し、アジャイル開発の進め方などを教えてもらいました。
このような体制で始まりましたが、現在はPO1人、開発者5人程度で落ち着いています。
チームメンバーはアジャイル開発経験のないメンバーばかりでした。そこで、アジャイルコーチに入ってもらった上で、アジャイル開発をスタートしました。スクラムを採用し、スプリントの期間は1週間にしました。
最初に開発したのは下記のようなアプリケーションです(図1)。
MQTTブローカは「Mosquitto」、メッセージキューには「Kafka」を使用するなど、オープンソースソフトウェア(OSS)を多用しました。
また、開発者の技術向上、成果物の品質向上を目的にモブプログラミングやTDD(テスト駆動開発)を採用しました。技術や品質の向上だけでなく、パッケージで開発した場合に比べ、はるかに短い時間で開発することもできました。
アジャイル開発を取り入れた効果はすぐにでました。
これまではベンダーに開発依頼をしていたため、機能の修正に2〜3カ月かかっていました。それに対して、今回の開発では1週間〜1カ月の期間で機能を修正することができました。
このような効果が生まれたのは下記のような違いが大きな要因だと思います(図2)。
これ以降の開発においても、ステークホルダーからの要求を次スプリントには反映し、迅速にリリースすることができています。
また、当初これらのアプリケーションはプログラミング言語としてJavaを使って開発を行いましたが、コンテナで動かす観点からGoを使ったアプリケーション開発に切り替えました。Goでの開発経験のあるメンバーはいませんでしたが、チーム全体で学習、モブプログラミングを実施するなどして対応しました。こういった大きな技術的変化に対する対応力も、アジャイル開発ならではの柔軟性ではないかと思います。
単純に考えるとGoで開発し直すなら、Goが得意なベンダーへ外注する手段が考えられますが、上記で紹介した通り、ベンダー開発では時間がかかり、タイムリーな開発ができません。アジャイルチームが自身で開発していくため、個々のアプリケーションを徐々にGoに変更していくこともできるため、ステークホルダーからの要求に答えながら、Goへの変更、さらにGoで開発したアプリケーションの改善も行うことができるからです。
Copyright © ITmedia, Inc. All Rights Reserved.