プロダクト開発やPoC*¹において、開発メンバーの役割は開発の体制・進め方によって大きく異なります。担当できる役割・開発の進め方は、エンジニアにとってキャリアを考える上で重要な観点ではないでしょうか。

今回の記事では、当社のエンジニアが担当する開発体制と他のポジションの役割分担と開発の進め方について、当社の事例に基づいてレポートします。当社では、異なる規模の開発プロジェクトが複数存在するため、当社の開発の一例としてご参考いただければ幸いです。

 

開発プロジェクトの種類と区分

当社の開発プロジェクトは、主に2つの軸で分類することが可能です。1つ目の軸は、開発フェーズであり、0→1のPoCと1→10の自社プロダクト開発に分類されます。2つ目の軸はドローン利用の有無であり、ドローン系プロジェクトと非ドローン系プロジェクトに分類されます。

当社の代表的なPoC案件やプロダクトを以下に分類してみました。

区分プロダクトニュースのページにて詳細について紹介しています。

 

開発体制イメージ

開発プロジェクトの規模は案件によって大きく変わりますが、平均的なプロジェクトは約3カ月で7名(PjM/PdM1名+UI/UXデザイナー1名+テックリード1名+開発メンバー3名※業務委託メンバーも含む+QA1名)で実施しています。インフラ・サービス基盤チームはプロジェクト横断で各開発プロジェクトを支援しています。

大型・長期プロジェクトでは、以下の図のように役割分担をしています。その中で、開発フェーズやスコープによって目的・タスクを細分化し、小規模のプロジェクトを組成します。

※引用元 「POWER GRID Checkリリースの裏側」センシンロボティクスのプロジェクトマネージャーとは~

 

開発プロジェクトにおけるエンジニアの役割

上記のように、開発プロジェクトでは多くの関係者が協力し、PoCや自社プロダクト開発を担当しています。ここから、エンジニアが担当する開発の工程と進め方を具体的に解説していきます。

開発の流れ2-1

PjMは主にPoC案件を担当し、PdMは自社プロダクト案件を担当します。開発プロジェクトの規模によっては、テックリードや開発マネージャーでなく、開発メンバーが要件定義~仕様策定、技術選定の上流工程から参画することもあります。また、各工程にQAチームが参画していますが、QAチームの役割はこちらの記事で取り上げているため、本記事では割愛します。

開発プロジェクトの進め方

ドローン系の自社プロダクトにおける開発プロジェクトの進め方を解説します。当社の開発では、多くの案件でアジャイル型の開発方式を採用し、開発工程を高速で回し、プロダクトの機能追加・改善に繋げています。一部のPoC案件では、ウォーターフォール型の開発方式も採用しています。

①企画立案:PdM

プロダクトの現機能に対して、顧客の要望・課題に合わせて追加機能・機能改善を立案。数多くの要望がある中で、緊急度・重要度の観点から優先順位を付け、顧客に提案。

②要件定義~仕様策定:PdM+テックリード/開発マネージャー+UI/UXデザイナー

PdMが顧客要望をビジネス観点で要件に落とし込み、テックリードを中心に技術的側面から開発要件・仕様を調査・検討。UI/UXデザイナーがユーザーストーリー・ユーザビリティ観点から提案、すり合わせ。PdMが要件や仕様案を作成し、顧客にプロジェクト内容を提案。顧客の承認を受け、要件・仕様を確定。
※開発の規模に応じて開発マネージャーがテックリードの役割を担当、また相談役としてサポート。

③技術選定:テックリード/開発マネージャー

上記の工程と並行し、実現したい機能や必要要件に基づいて、テックリードは技術・開発環境を調査。開発マネージャーに適宜相談しつつ、プロジェクト内の開発メンバーとの話し合いを通じて技術環境を選定。

④開発ディレクション:テックリード/開発メンバー

プロジェクトにおけるタスクの抽出・分解、技術課題の優先度付けと解決へ向けたサポート、進捗管理。テックリード/開発メンバーを中心に推進し、開発マネージャーに適宜相談。

⑤設計:テックリード/開発メンバー

策定された仕様や技術環境に基づいてアーキテクチャをテックリード/開発メンバーが決定。

⑥実装:テックリード/開発メンバー

仕様を分解したタスクに基づく設計をコードとして表現することでテックリード/開発メンバーが実装。 

⑦検証~改善:開発メンバー+PdM+フィールドエンジニア

上記のメンバーが連携し、テスト項目を策定。開発メンバーが機能テストを主に担当し、QAメンバーがシステムテスト、リグレッションテスト*²、シナリオテストを担当。ドローンを活用するプロダクトでは、PdMが実機検証の詳細を顧客とすりあわせ。開発メンバー、PdM、フィールドエンジニアがドローン実機で検証し、機能改善や不具合修正を実施。

ドローン実機検証の様子
IMG_1775※プロダクトによっては開発メンバーとフィールドエンジニアが現地で飛行ロジックを修正することもあります。

⑧運用:PdM+テックリード/開発メンバー

PdMが顧客に今後の開発・運用方針を提案。テックリード/開発メンバーが追加機能を搭載したプロダクトの運用・改善を担当。サービス基盤や品質保証面では、インフラ・サービス基盤エンジニアやQAエンジニアが適宜サポート。

上記の工程を見ていただくとウォーターフォール型の開発方式の印象を持たれるかもしれませんが、プロセス①~⑧のサイクルを高速で回しているため、アジャイル型の開発方式になります。下記のサイクルを高速で回し、スピーディーなプロダクトの機能追加・改善を実現しています。

アジャイル開発-1

上記の解説を通じて、開発の進め方のイメージを持っていただけましたら幸いです。

 

開発の進め方(事例紹介)

開発の進め方のより具体的なイメージを持っていただくため、当社の開発事例に基づいて、開発の進め方を紹介します。

【プロジェクト名】BLADE Check 飛行ルート改善プロジェクト

当社の自社プロダクト『BLADE Check』は、風力発電設備のブレードの保守業務を効率化する業務アプリケーションです。これまで地上から撮影、目視点検など人が実施していたブレード点検を、ドローンを活用したデジタル化を行うことにより、点検工数の削減、ブレード点検品質を向上させます。
 主に顧客の設備点検部門の担当者が本プロダクトを活用し、ドローンを自動飛行させ、点検業務を担当しています。2022年4月にリリースし業務運用を開始しましたが、飛行ルートに関しては、以下の理由から継続的な改善が現場から期待されていました。

理由①:飛行時間の短縮

風力発電施設の点検業務では風車の回転を停止する必要がある一方、設備停止時間は発電量、すなわち収益に直接影響するため、発電事業者は設備停止時間の最小化を期待しています。また、ドローンのバッテリー容量やサイズによって飛行時間に制限があるため、業務要件を満たす中で最短の飛行ルートの構築が求められています。

理由②:安全性の向上

当初、安全第一で飛行ルートを設計しましたが、プロダクトの信頼性向上のため継続的な安全性向上が求められています。

本プロジェクトは、上記の理由から一度作成した飛行ルートの改善等に取り組んだ事例になります。メインの飛行ロジックの設計~実装~検証の工程は約1カ月で実施し、実際のドローン飛行を通じた検証~改善の工程を含めた約6カ月のプロジェクトでした。

実際のプロジェクトでは飛行ルート改善以外のテーマについても取り組んでいますが、開発プロジェクトにおけるエンジニアの役割や開発の進め方に焦点を当てるため、飛行ルート改善のテーマに限定し、開発の進め方を紹介します。

開発の進め方

本プロジェクトの開発の流れについて紹介します。ドローンPoCの経験豊富な開発メンバーがテックリードの役割を担当しています。なお、今回は、飛行ルート改善(内部ロジックの修正)がメインのタスクとなるため、UI/UXデザイナーやQAの参画、技術選定のフェーズはありませんでした。

①企画立案:PdM

顧客との定例ミーティングにて飛行ルート改善要望を受け、PdMより飛行ルート改善を顧客に提案。実際にドローンを使って点検いただく顧客の現場意見とすり合わせながらインタラクティブに調整。  

②要件定義+仕様策定:PdM+開発メンバー(相談役:開発マネージャー)

PdMが開発期間・予算・費用対効果等を、開発メンバーが技術的な側面から短縮可能な飛行時間や開発に必要な工数をそれぞれ調査・検討。それらに基づき、PdMが仕様案を策定し、顧客にプロジェクト内容を提案。

③開発ディレクション:開発メンバー(相談役:開発マネージャー)

開発の進め方は開発マネージャーのアドバイスを踏まえ、開発メンバーが決定。プロジェクトメンバーのリソースを考慮し、業務委託パートナーも含めた役割分担を決定。進捗はJiraで管理し、2週間単位のSprintで進行。進捗は開発メンバー内で日次共有(PdMには週次報告)。

④設計:開発メンバー(相談役:開発マネージャー+テックリード)

策定した要件・仕様に基づいて飛行ロジックを開発メンバーが設計。

⑤実装:開発メンバー(相談役:開発マネージャー+テックリード)

設計と役割分担に応じてタスクに落とし込み開発メンバーが実装。業務委託パートナーがコードレビューを担当。技術的な課題に直面した場合、開発マネージャーやテックリードに相談し解決。 

⑥検証~改善:開発メンバー+PdM+フィールドエンジニア

システム上での動作シミュレーション後、フィールドエンジニアも参画しドローン実機を用いた現場検証を実施。現場検証⇒飛行ロジック修正⇒再検証を数回繰り返し、最終確定。顧客の受入テストを経て完成。

⑦運用:PdM+テックリード/開発メンバー

顧客からの定期ヒアリングや問い合わせに応じてPdM、開発メンバーが保守、運用を実施。

今回のプロジェクトでは、下記のように飛行ルートを修正し、風車の種類(大きさ)により、平均的に20%の飛行時間短縮を実現しました。
飛行ルート
本プロジェクトは一例に過ぎず、顧客との定期的なミーティングを通じて、上記以外にも機能修正~改善を行い、継続的にプロダクトの提供価値の向上を図っています。実際の事例をご紹介しましたが、具体的なイメージを持っていただければ幸いです。

 

当社の開発の特徴

開発プロジェクトの一例を紹介させていただきましたが、当社の開発における特徴は2点です。

1.共通コンポーネントを通じた効率的な開発

当社のプロダクトのユーザーは電力/石油/鉄鋼/建設等と幅広く、各業界・利用シーンに合わせたプロダクトを開発しているため、プロダクト数が多いという特徴があります。数多くのプロダクトを効率的に開発するため、個別・共通機能の開発を分け、必要な機能を組み合わせています。

個別機能 業界特性や利用シーンのUIに合わせて個別に開発
共通機能 当社が開発する業務自動化統合プラットフォーム『SENSYN CORE』の共通コンポーネントの組み合わせによる開発

SENSYN CORE』では以下の機能コンポーネント群を提供しています。

SENSYN COREの共通コンポーネント
Core

一例として、ドローン自動点検アプリケーションにおいて、以下の個別機能、共通機能を組み合わせて効率的に開発しています。

個別機能
・点検対象物のデータ登録・形状認識
・ユーザーインターフェース(一部)

共通機能
・ドローンの飛行ルート計画作成
・外部システム連携
・撮影データ管理・分類

上記の手法を通じて、共通機能の開発重複を回避し、付加価値の高い個別・共通機能に開発を集中し、少人数のプロジェクトメンバーで効率的な開発を実現しています。

2.「リアルの現場」で役立つプロダクトを常に追求

一般的なWeb/モバイルアプリケーションの開発と異なる点として、ドローン飛行による実機での検証プロセスがあります。当社の開発のフェーズでは、現場にて機能や不具合を確認~修正~改善のサイクルを回しています。顧客の課題をどのように解決していくかを常に考え続け、アジャイル開発でプロダクトを改善し続けることで、顧客の課題を解決し続け、常に活用してもらえるプロダクトに繋げています。

 

最後に

今回は、当社の開発の進め方と開発体制について取り上げました。効率的で円滑な開発プロジェクト推進には、適切な役割分担と各ポジションによる相互連携が重要です。本記事を通じて、当社の開発の進め方と開発体制の具体的なイメージを持っていただけると幸いです。

当社の働き方や取り組みに共感いただけましたら、エンジニアポジションにご応募いただけると幸いです。各ポジションの募集要項はこちらに掲載しています。まずはカジュアル面談からのスタートも大歓迎です。皆様からのエントリーを心からお待ちしています。

*¹PoC‥‥新しい技術や事業アイデアなどの実現可能性や実際の効果などを検証する目的で実施される検証プロセス (引用元 SHIFT ASIA ブログ 「PoCとは~目的やステップをご紹介~」)
*²リグレッションテスト‥‥機能の追加や変更、不具合の改修などに伴うプログラムの変更によって、その他のプログラムに意図しない影響が発生していないかどうかを確認するテスト (引用元 SHIFT ASIA ブログ 「リグレッションテスト(回帰テスト)とは|目的や重要性、実施のポイント 」)