テレワーク下での開発プロジェクト実践

EXcited About The Future

はじめに

新型コロナウイルス感染症は現在でもとどまるところを知らない状況が続いています。コロナ禍の働き方がリアルオフィスからテレワークへシフトする中で、弊社ではいち早く全社員の原則テレワーク化方針を打ち出すとともに、率先して業務インフラおよび業務プロセスの切り替えに取り組み、コロナ禍の業務影響を最小に食い止めることに成功しました。
特に業務プロセスの切り替えにおいては、コロナ禍以前のオフショア・ニアショア開発で培った多拠点を跨いだ開発推進ノウハウがチーム内連携の活性化に寄与しました。
本コラムでは、場所を問わない開発チーム体制とその裏側を支える開発プロジェクト推進システムの構築・運用の事例をご紹介します。

開発プロジェクト推進における課題

開発プロジェクトとは「複数の人がチームを作り顧客要求を実現するための活動」と定義できます。
具体的な活動として、顧客、プロジェクトマネージャ、担当者が連携して、上流から下流までの開発工程を経て、顧客要求を実現した成果物を期日内に顧客へ納品します。
この活動の中で重要な要素に着目するならば「成果物のリレー」と、「言葉(コミュニケーション)のリレー」に大別できます。
プロジェクトを効率よく品質担保するには、この中で発生する様々なボトルネックの排除と、情報精度の向上が課題となります。
そして、リアルオフィスからテレワークへの業務形態変化により、ボトルネック部位や情報精度を高める部位の違いを考慮して対策する必要があります。
筆者が以前に体験したオフショアリング開発では、国を跨いだ多拠点で作業するメンバと協業する必要があり、現在のテレワーク形態と非常に類似した環境でした。
そこで発生した様々な問題を解決する中で辿り着いた結論は、「成果物」と「言葉」の流れから「曖昧性」や「人手起因のボトルネック」を排除することでした。

具体的な問題と対策

具体的な問題である「品質劣化」や「作業遅延」を招いた根因の代表例を下記に挙げます。

品質劣化 作業遅延 代表例

表1 問題を招いた根因

こうした根因を除去するための具体策を下記に挙げます。

対応策

表2 根因を除去するための対策

ソリューション適用事例

前述の対策を適用した推進システムのソリューション適用事例を以下に2つ挙げて説明します。

事例1:成果物リレーのソリューション適用事例

開発テスト局面において管理者、設計者、実装者、テスターおよび運用者が開発プロセスを協業するケースでの改善方法を4段階のステップで説明します。


適用前
管理者が各メンバへ指示を出し、メンバ同士が伝達コミュニケーションを能動的に取りながら成果物を個別にリレーしていく推進方法でした。
こうした運用では、特に実装とテストの繰り返し洗練工程において、コミュニケーションや成果物リレー上のボトルネックや間違いが生じやすくなります。
その結果、各メンバが設計/実装/テストなどの純粋な開発作業に集中しづらくなり、デリバリ遅延や品質劣化を招くリスクとなります。

成果物リレー ソリューション適用前

図1 成果物リレー ソリューションの適用前


適用後
以下のステップで適用していきます。

ステップ1:成果物を一元的に構成管理する
「成果物」の構成管理を支援する枠組みとしてSubversion(*1注記)やGit(*2) などの汎用ツールを導入します。
さらに口頭伝達だけで終わらないよう、必要な情報は成果物へ過不足なく明確に記載することを徹底します。
この運用で「成果物」の版管理とアクセス制御が一元化された上で、情報精度が上がります。


ステップ2:成果物の実行環境反映を自動化する
プログラムをビルド/デプロイ/テストしてモジュール品質を検査する開発段階でのDevOps(*3) プロセスに、継続的インテグレーションを支援する枠組みとしてJenkins(*4) +Ant(*5) やMaven(*6) 、Gradle(*7) などの汎用ツールを導入します。
これにより単純繰り返しを伴う手作業から人を開放して、実装者とテスターとの「成果物」のキャッチボールがシステムで強力に支援されるサイクルを作ることができます。


ステップ3:成果物の品質管理と構成管理を一体化する
設計からテストまでのワークフローを支援する枠組みとしてRedmine(*8) などの汎用ツールを導入し、カスタムワークフローおよびチケットを定義します。
これにより、ワークフロー中の設計や実装およびテストなどのアクティビティ間を「言葉」と「成果物」を一体化した「チケット」と呼ばれる媒体でリレーできるようになり、コミュニケーション速度と深度が更に向上します。
例えば「チケット」が届けば、それが作業開始指示であり、チケットの中身を覗けば、「言葉」として対応経緯や作業指示詳細、入力情報として「成果物」リンクが含まれているため、瞬時に必要な情報を取得できます。
その中で情報不足や不明点がある場合に限り、人と直接「チャット」や「ネットミーティング」などで追加コミュニケーションを取れば良いため、重複する無駄なやり取りが減少します。
またチケット駆動にすることで、変更管理や欠陥管理においては、アクションと「成果物」の版が自動で紐づき、発生から解決までの経緯を時系列にトレース可能となり、情報の可視化につながります。


ステップ4:成果物リレーを活性化する
ステップ3までの導入でかなり効率的なエココミュニケーションシステムが成立しますが、更に報告や連絡を支援する枠組みとして構成管理ツールやCI/CD(*9) ツールおよびチケット駆動ツールに人への自動通知機能を加えます。
これにより、進捗変化に人が気付かないことで発生するアクティビティ間のタイムラグが減少し、コミュニケーションの促進が加速します。
その結果、メンバー全員にプロセスの状態や詳細が可視化され、各メンバは本来の開発作業に全力で集中できるようになります。
また、ステップ1~4までの各ソリューションは容易に再利用できるよう、Docker(*10) などのコンテナ技術を使って可搬性と再現性を確保します。

成果物リレー ソリューション適用後

図2 成果物リレーのソリューションの適用事例

事例2:言葉リレーのソリューション適用事例

以下より、言葉リレーのソリューション適用事例を記載します。
円滑コミュニケーションの突破口となる「チャット」利用時のノウハウを3点ご紹介します。


①基本的な会話のルールを予め決定して周知する
最も重要な注意点は、いろいろな会話を一つのチャネル(情報ストリーム)上で行わないことです。
「チャット」はリアルタイム性が高いメリットがある反面、会話内容は連続的に画面を流れていくため話題が混ざってしまうと目的の会話を追えなくなってしまいます。
解決策は、それぞれの局面や作業を共にするグループなど、会話の用途毎にチャネルを分けて準備作成することです。
そして、チャネル毎にアクセスできるメンバを選んで設定し、用途毎に必要なメンバだけが読み書きできるようにします。
更に、同じ用途でも話題毎にスレッド(情報サブストリーム)を分けて作成し、スレッド内はその話題だけの会話に限定します。
これにより、話題毎に必要なメンバだけで集中的に会話するスタイルが運用可能となります。

言葉リレー ソリューション 適用事例1

図3 言葉リレーのソリューション適用事例①

②通知チャネルの作成
事例1のステップ4で挙げた自動通知機能との連携により、ソフトウェア支援システムからのタスク完了イベントをチャットの専用チャネルで受信できるようにします。
例えばJenkinsからビルド成功時や失敗時のメッセージをリアルタイムで受信できることで、早期の問題解決や次のアクションが即時に促されるようになります。
構成管理面では成果物のコミット通知を受けることで、すぐさま次のアクションに入ることができます。

言葉リレー ソリューション 適用事例2

図4 言葉リレーのソリューション事例②

③その場に適したコミュニケーションの形態を臨機応変に使い分ける
チャットから始まった会話が込み入った状況になってしまった場合、その延長としてネットミーティングの利用を誘導したり、チケット参照で済む場合は該当するチケットのURLを伝えたりするなど、その場に適したコミュニケーションの形態を臨機応変に使い分けるようにします。
こうした選択肢があることは、非同期コミュニケーションツールが持つ柔軟性の賜物です。

言葉リレー ソリューション 適用事例3

図5 言葉リレーのソリューション事例③

おわりに

前述の事例のように、仮想技術の進化であらゆる開発手段がソフトウェアで代替可能となった現在では、開発の本質である「計画・分析・設計・テスト・レビュー」作業に人的資源を集中させることが容易にできるようになりました。
すなわち管理作業に向けていた人的資源を開放し、推進支援の仕組みをソフトウェアでシステム化することがプロジェクト推進のベストプラクティスになると考えます。
再現性の高い推進支援システムは、多拠点リモートアクセス形態と非常に相性が良く、テレワークが主流となった現在において、一度体験すれば二度と手放すことのできない必携のツールになることは間違いありません。
日々進化する世の中のクラウド技術を積極的に取り入れることで、信頼性と効率性および経済性をより高めた課題解決が継続的に可能になると考えています。
最後に、今回ご紹介した再現性の高い開発プロジェクト推進システムのエキスを、読者の皆様に少しでもお役立ていただければ幸いです。

今回の「テレワーク下での開発プロジェクト実践」の全文の資料は、エクサHP「Tech資料」でも紹介しています。
詳細は下記「PDFを閲覧する」をクリックしてご覧ください。

(*1) Subversion: プログラムのソースコードなどを管理する集中型バージョン管理システムの一つ
(*2) Git: プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システム
(*3) DevOps: 開発チーム(Development)と運用チーム(Operations)が協力しあってシステムを開発・運用する概念
(*4) Jenkins: CIツールの1種であるオープンソースソフトウェアで機能の拡張性が高い
(*5) Ant: ビルドツールソフトウェア
(*6) Maven: Java用プロジェクト管理ツール
(*7) Gradle: ビルド自動化システム
(*8) Redmine: プロジェクト管理ができるオープンソースソフトウェアで外部連携や通知など拡張性が高い
(*9) CI/CD: 継続的インテグレーションと継続的デリバリーまたは継続的デプロイのいずれかを組み合わせたプラクティス
(*10) Docker: コンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのオープンソースソフトウェア

※記載されている製品名、社名は、各社の商標または登録商標の場合があります。
※記事内容は掲載当時のものとなっております。

お問い合わせ

CONTACT

Webからのお問い合わせ
エクサの最新情報と
セミナー案内を
お届けします
ソリューション・サービスに関する
お電話でのお問い合わせ

平日9:00~17:00※弊社休業日を除く