見出し画像

人間中心設計はアジャイル開発か?〜定義から本質の話〜

先日、人間中心設計についての社内レクチャー会を開催しました。
内容は、人間中心設計にふれたことのないエンジニア向けに、HCD-Netが用意してくれている入門編の教材を基に概念の説明をするというものでした。

0.エンジニアから質問をいただいた

レクチャー後のQ&Aで質問いただいた中に、「人間中心設計とアジャイル開発の差がわからなかった」というものがありました。

同僚のnoteにも言及があるのですが、時間が限られていたこともあり、「アジャイルとは」の定義論争を避けたく、「企画段階からアジャイルにやろうという事」というような、ふんわりとした回答となってしまいました(ごめんなさい)。

今回、アジャイル開発手法に関して勉強し、自分なりにまとめるとともに、何が違いで、何が同じなのかを明らかにしたいと思い、noteを記します。

1.アジャイル開発とは(私の理解)

アジャイルソフトウェア開発 (アジャイルソフトウェアかいはつ、英: agile software development) は、ソフトウェア工学において迅速かつ適応的にソフトウェア開発を行う軽量な開発手法群の総称である。
一群のソフトウェア開発手法の総体を意味する言葉であり、単一の開発手法を指す言葉ではない。
アジャイル開発手法の例
スクラム/Crystal Clear/エクストリーム・プログラミング (XP) /ユーザ機能駆動開発 (FDD; Feature Driven Development)/Dynamic Systems Development Method (DSDM)  etc.

1-1.アジャイル開発の特徴

a.反復的(イテレーションベース)
開発対象を多数の小さな機能に分割し、1つの反復 (イテレーション) で1つの機能を開発する。
1つの反復内では、計画、要求分析、設計、実装(コーディング)、テスト、文書化といった、ソフトウェアプロジェクトに要する全ての工程を行う。
このサイクルを継続して行うことで、1つずつ機能を追加的に開発し、そのたびにリリースすることを目指す。
各反復が終了するごとに、プロジェクトチームは、プロジェクトにおける優先度を評価し直す。

目的は短い期間単位を採用することで、リスクを最小化することである。

b.協働的(チームが一堂に会する)
ほとんどのアジャイル開発チームでは、ソフトウェア開発に必要な関係者全員が、1か所の作業場所で仕事をする。この場合の関係者には、少なくともプログラマと「顧客」が含まれ、テスト担当者、ユーザインタフェース設計者、テクニカルライタ、管理職も一緒に作業する場合がある。

目的は、プロジェクト関係者間で必要な時に即座に直接顔を合わせて意思疎通を行い、イテレーションのスピードを上げるためである。

c.実体的(ドキュメントよりも動くもの)
実際に動くソフトウェア
こそが最重要なプロジェクト進行尺度である。

目的は、こちらもイテレーションのスピードを上げるためである。


1-2.アジャイルと、他の開発手法との比較

適応的開発であるアジャイルと、
対となる概念として、
計画重視開発であるウォーターフォールが存在する。

両方に共通するのは、計画を立て、統制を行うことである。

適応的開発(アジャイル)
利点 現実世界で生じた変更にすばやく適応できる。
弱点 将来起こりうる変更を正確に文書化することは困難である。
   長期的予測になるほど、予測の不確実性は大きくなる。

計画重視開発(ウォーターフォール)
利点 開発プロセス期間の注意点と作業を正確に計画することができる。
弱点 プロジェクト中に生じた変更に対応することは困難である。
   計画立案時点を基準として、計画が最適化されている。
   プロジェクト中に変更が生じると完了した作業は無駄になる。

1-3.アジャイル開発手法まとめ

・アジャイル開発とは反復的、協働的、実体的
・計画されたイテレーションを素早く回すことで迅速に開発を行える
・利点は 変更にすばやく適応できること


2.人間中心設計とは

一旦、こちらに定義しているので、ご一読ください。

2-1.人間中心設計とアジャイル開発の類似点

人間中心設計とアジャイル開発手法は、外形的には類似している。

a.反復的
人間中心設計プロセスのなかで、要求分析→仕様化→設計→評価のサイクルを繰り返す。

b.協働的

人間中心設計プロジェクトでは、基本的にメンバーが全て集まってプロセスを実施する。

c.実体的
人間中心設計プロセスの中で、評価のために実体のある動くプロトタイプを製造し、テストを行い、フィードバックを次のサイクルに渡す。


2-2.人間中心設計とアジャイル開発のの相違点

人間中心設計とアジャイル開発手法は、以下の相違点がある。

2-2-① 手法を実践する目的

外形的な類似点はあるが、目的が違う

a.反復的

アジャイル開発 ;リスクを最小化することである。
人間中心設計  ;要求に近づくためである。

b.協働的
アジャイル開発 ;イテレーションのスピードを上げるためである。
人間中心設計  ;要求に近づくためである。

c.実体的
アジャイル開発 ;イテレーションのスピードを上げるためである。
人間中心設計  ;要求に近づくためである。


2-2-② 要求がどこに存在するか?

開発・設計の起点となる「要求」が出てくる場所が違う。

アジャイル;全体要求・リリース計画が外部に存在する。
アジャイル開発ではリリース計画に基づいてイテレーションを実施する。
計画の基となる仕様要求は外部に存在する

スクリーンショット 2020-04-21 11.05.52

人間中心設計;要求はプロセスの中で抽出される。
人間中心設計では、このリリース計画にあたるものや、開発期間の統制は行われない。プロセスの内部でユーザーの要求を抽出し、要求が満たされると判断できた時点でプロセスが完了する。

画像2

※特定非営利活動法人人間中心設計推進機構WEBサイト内、組み込み技術者のためのユーザビリティ基礎講座 第6回「人間中心設計の次なる段階へ −プロセスアプローチの紹介」 より、図1:人間中心設計プロセス Human-centred Design Processes for Interactive Systems(JIS Z 8530:2000 − インタラクティブシステムの人間中心設計プロセス)を引用

2-2-③ 順次的か?順次的でないか?

アジャイル;順次進むことを基本とする。
アジャイル開発では、サイクルを継続して行うことで、1つずつ機能を追加的に開発する。基本的に機能がプラスされていくか、存在する機能を修正するのみである。それにより予め決められたリリース計画に沿うことを目指す。

人間中心設計;順次進まないことが許容されうる。
人間中心設計では、サイクルを継続して行った結果、利用状況の把握に疑念が生じた場合に、利用状況の把握からやり直すことがあり、それまで進んだプロセスによるアウトプットを0にしうる。

2-3.人間中心設計とアジャイル開発の違いまとめ

・共に反復的、協働的、実体的だが、目的が違う。
要求の出どころが違う。
・順次進むか、順次進まないことが許容されうるか。


3.現場の実際

3-1.人間中心設計+アジャイル開発の体制は難しい

外形的に類似している人間中心設計とアジャイル開発が、なぜ共同で行われないのでしょうか。

理由① 適切な役割が、明確に異なる
人間中心設計がいわば「要求を発見する」プロセスであるのに対し、
アジャイル開発は「要求を満たすものを適応的に速く作る」プロセスです。
アジャイル開発で要求を発見することはできないし、人間中心設計を適応的に速く回すことはできないのです。

理由② 事業として適用するのが困難である
事業としては、どのように予算化し開発を進めKPIを管理するかという視点が求められます。
特に、BtoBの受託開発の場面では契約の単位を区切る場合が多いです。それは、構想・要件定義・設計・開発・テストといった各フェーズは、順次的に進むことが前提となります。
この場合、
・要求はプロセスの中で決める
・順次進まないことが許容されうる
という特徴がある人間中心設計のプロセスを、フェーズをまたいで実施すること、また期間がわからないまま予算を組むことが困難です。

当面の解決方法
人間中心設計 からの、アジャイル開発です。
人間中心設計で企画され、要求が提示され、プロトタイプしたものに対し、その要求に応える実製品の開発でアジャイル開発手法を用いる、
といった使い方になれば、両方の利点を活かせるのではないでしょうか。

3-2.たぶんめちゃくちゃ強い人間中心設計withアジャイル開発


事業会社で開発を内製している場合や、
受託開発であっても準委任契約で期間契約している場合、
企画・デザインチームがアジャイル開発チームと合同し、
企画段階のイテレーションとして人間中心設計プロセスを合同で駆動し、
開発段階においてアジャイル開発チームにひきつぐ、
という組織体制が取れると思います。

考えうるベストな体制かと思います。

この体制への理解と、推進ができる組織が、デザイン経営組織といえると思います。

デザイン経営組織については、後日まとめます。

よろしければサポートお願いします!