はじめに
こんにちは。みなさんはアジャイル開発は得意でしょうか?・・・すみません。唐突すぎました。
国内SIerで働いており、これまでウォータフォール開発という開発方法に慣れ親しんでいた私は、突然アジャイル開発を推進しましょうという部署に異動になり、非常に戸惑いました。しかしキャッチアップしないことには仕事にならず勉強を始めますが、新しい考え方なんて頭になく、毎日勉強しないと追いついていけません。
せっかくなので、知識の整理も含めて調べてみました!
これからのソフトウェア開発は「これだ!」という技術を特定するのは難しいので、新しい技術、手法を柔軟に修得する必要があります。それらに対してどのようにキャッチアップしていくかのヒントにできればうれしいです。
背景
今日のテーマはインセプションデッキとは?です。
ここのところ、技術的な支援が中心でアジャイル開発プロセスを体験することが少なかったのですが、今回から真面目に取り組むことになったのです。
というのも、後輩がインセプションデッキしましょうといったのですが、言葉は聞いたことがあるものの実際どんなものかさっぱりわからないので急いで調べてみました。ということで理解したことを書いていきたいと思います。
インセプションデッキとは
英語だとInception Deck。なのでネットで訳を調べてみました。
Inceptionは始まり、開始などの意味を持つ言葉らしいです。Deckはデッキ。デッキ?お台場にある、あのデッキ?板みたいなあれですよね。あれ。それ以前にこんなの思い浮かぶんですよね。小学生のころよくトイレ掃除で使ってました。
板を掃除するブラシですね。納得しました。
話が逸れましたので戻します・・・。
どうやらこんなイメージらしいです。
開発時において、一番最初にメンバが共有すべき事項を明確化するツール(考え方)なようです。
確かに、仕事をしていると「認識違ってました!」なんてよく聞きます。おいおいという感じですが、見ているゴールが違っていたらそうなりますよね。最初のうちにこんなことができていたら、コミュニケーションも活発化するのかなと思ってしまいした。また、やらないことを決める、というのも最近よく言われている生産性を高める仕事の仕方でよく紹介されています。
まとめると、インセプションデッキとは
- アジャイル開発において開発開始時に明確化すべきことと、大切なことの認識を合わせる手法
- 10個の質問に答えていく形式
- 開発メンバ全体で議論をしながら合意し、取りまとめた結果をアウトプットとして提示
10個の質問とは
具体的に10個の質問を調べてみました。詳細でかつ正確な表記は書籍やそれを解説したページがあるので、ここでは簡単に理解したことを書いていきます。その際に参考にさせていただいたページは、最後の項目で紹介したいと思います。
なぜを考える(WHY)
我々はなぜここにいるのか明確にする | ・背景を共有する。なぜこのプロジェクトを開始するのか理解し、自分ごとにする
・認識に違いがないかを確認する。なので、顧客などのステークホルダと話す ・指示された仕事の延長から考える。仮にその場合でもプロダクトを企画する立場で考える。ここがスタート地点で、どこへ向かうのか、ゴールとその方向感を共有する |
---|---|
エレベータピッチを作る | ・エレベータピッチ:エレベータの中での短い時間(例:30秒など)でお金を出してくれる人(投資家とか権限を持っている管理者、取締役など)にプロダクトの良さを伝えることから
・プロダクトのメリットを伝える。他のプロダクトと比較するとわかりやすそう |
パッケージデザインを作る | ・プロジェクトの特徴が見えづらいので、特徴を明示する
・これから開発するプロダクトがどんな特徴があり、使う人(関係する人)がどのようなメリットを享受できるかをみんなで話しながら考える |
やらないことリストを挙げる | ・スコープを決める
・項目名からしても開発をしないことを明確にしておく。やらないことを決めるには全体像わかっていないとできない。やることとの境界線決めないとだから。 |
プロジェクトのコミュニティを可視化する | ・プロジェクトの終盤に他の担当から思いがけない指摘を受けることがあり、それを防ぎたい
・プロジェクトに関わる担当やチームを整理しておく |
やり方を考える(HOW)
技術的な解決策を提示 | ・方式、アーキテクチャを整備する。技術者を集めて決めていく
・開発・検証環境 ・OSS使うか、製品使うかの方針を確認する。その上で決める ・インフラ、ソフトアーキテクチャを検討する |
---|---|
夜も眠れない問題・課題の可視化 | ・ノックアウトファクターがないか
・プロジェクトを推進する上でのリスクがないか ・リスクを議論することがまず目的。最悪この場で解決しなくても良い ・プロジェクト全体として解決できないリスクは脇に置いておく。方向性すら出せない |
期間の明確化 | ・大まかなスケジュール
・各マイルストーンを置いておく ・議論を行い、各マイルストーンのスケジュール感が合っているか意識合わせしておく ・最終的には顧客と合意するよう調整する |
トレードオフスライダーを作成 | ・QCDみたく、何かを優先すると何かの優先度が下がるようなものについて、優先順位をはっきりさせておく
・やらないことも明確にする ・優先順位付けなので、同率の順位はつけない方がいい。みんな中な評価はNG |
何がどれだけ必要かを明確化 | ・概算見積や開発予算を明確にする
・資材のコスト(ツールや外部ソリューションなど利用するなら入れる) ・要員のコスト(役割や専門性により単価が変わると考える)、故に体制も |
ゴール(価値)を明確にして、どうやって実現するのか、優先順位を決めていく活動なんだと思います。どのようなやり方でも重要なことですね。
最後に
日本だと、様々な会社のメンバーと仕事をすることになります。依頼先と依頼元の会社は指示される、指示する立場になってしまい、あまり自律的に動けない気がします。しかしインセプションデッキの活用により、階層的なチームではなく、各メンバが自律的に動いてくれるようなScrumのようなチームができるようになれば、一気にDX化は進むのかなと思ってみました。
参考資料
参考、勉強させていただいたサイト(大変感謝です)です。