概要
「アジャイルとは何ぞや?」という問いに対して、まだまだ理解が散在していると感じたので、約2年半、そこそこ形式化された某大手のアジャイル開発専門部隊で仕事をしてみて得た知見から、初心者向けのアジャイルに関する情報をまとめてみた。
(あくまで個人的な備忘録)
前提
「ウォーターフォール開発」への基本的な理解がある事を想定
(無い場合は、ウィキペディア等で調べてみてください。)
アジャイル開発とは?
正式名称: 「Agile Software Development = アジャイルソフトウェア開発」
アジャイルは、「素早い」を意味する言葉である。
従来の開発手法よりも素早く開発するために生まれたもの。
『アジャイル開発とは何か?』についての定義は、ココに書いてあることが原則
👉 アジャイルソフトウェア開発宣言
これまでのサービス開発が、答えが決まっているものを計画的に作る「計画重視」であったのに対し、
これからのサービス開発は、何が正解かは初めからわかない中で、フィードバックしながら効率的に作る「適応重視」が求められると考えから、
新たに生まれたのがアジャイル開発。
そもそもアジャイル開発は「開発手法」ではない
「アジャイル開発」は、特定の一つの開発手法ではなく、「開発手法群」を指す。
アジャイルな開発を実現する様々な手法が存在し、それらをまとめたもの。
アジャイル開発 ─────────────┐
| スクラム、FDD |
| XP、DSDM、ASD |
| クリスタルクリア |
└───────────────────────┘
アジャイルの定義を要約
「アジャイルソフトウェア開発宣言」を要約すると、以下。
「4つの基本理念」
- プロセスやツール < 個人と対話
- 包括的なドキュメント < 動くソフトウェア
- 契約交渉 < 顧客との協調
- 計画に従うこと < 変化への対応
左記のことに価値を認めながらも、右記のことに、より価値をおく。
「背景の12原則」
開発宣言の背後にある、従うべき原則👇
(かなり崩した日本語で要約したver.)
- 顧客満足を最優先。「価値がある」サービスを素早く継続的にリリースしよう。
- 仕様変更は後からでも歓迎。すぐに変化できることを強みにしよう。
- 開発期間の1サイクル(2週間〜3ヶ月)を決定し、同じサイクルで定期的にリリースしよう。
- 「真の開発」とは、経営側と開発側が、日々一緒に行うことだ。
- 熱意ある人を集めよう。そして、環境を与えて、支援し、最後まで開発者を信頼すべき。
- 結局、対面で話すことが、最も伝わるし、最も効率的。
- 動く状態のソフトウェアを見ることが、開発進捗の真の"ものさし"である。
- 開発サイクルは常に一定のペースを維持するべき。
- 常に、技術・設計・効率化の情報に飢えることで、機敏な開発者になる。
- シンプル・イズ・ベスト。
- みんなが「自己組織化」すると、優れたチームになる。
- 定期的に「振り返り」をすることで、チーム独自の開発力は洗練されていく。
アジャイルに対する、よくある勘違い
下記は全てアジャイルに対する見方を誤っていると考えています
-
短いウォーターフォールでしょ?
👉違います。期間が短いだけでなく、開発に対するアプローチややり方、開発のゴール、組織の考え方などで相違があります。 -
アジャイルは、設計書つくらないんでしょ?
👉違います。必要なドキュメントは用意します。 -
4つの基本理念の左側は、いらないんでしょ?
👉違います。「左側も必要だけど、右側がもっと大事」というだけです。 -
ウォーターフォールよりも優れた開発なんでしょ?
👉違います。プロダクトや規模によって、得意不得意があります。アジャイルでは不向きなこと、ウォーターフォールで不向きなことがあります。
まとめ
「どの開発手法が一番良い」ということはないですが、経験としてアジャイル開発の知識・経験が求められるシーンもこれから増えてくると思うので、機会があれば社内の小さなプロジェクト等でも良いからやってみるのが良い。