アジャイル開発ってなに?

アジャイル開発
この記事は約5分で読めます。

結論

 「アジャイル開発」とは、一言でいうと、早めに小さく失敗しながら開発していくことです。もう少し言うと、複数人で一つのソフトウェアを作っていくときに、開発する人(チーム)に注目して、正確性よりも早さを重視し、変化に柔軟に対応し、リスクを最小化するような考え方や概念を取り入れた開発のことです。

 結論がざっくりすぎてよく分からないと思うので、以下に詳しく説明します。

前置き

 僕は今回、enPiTの合宿に参加して、アジャイル開発について学び、そのひとつの手法であるスクラムを実践しました。そこで学んだことを元にこの記事を書いています。記事の内容には細心の注意を払っていますが、万が一、間違えている部分や分かりにくい部分がありましたら、指摘していただけると幸いです。

これまでの開発の問題点

  • 「わたし考える人、あなた作る人」問題。つまり既存の開発手法は分業体制
  • やることが多く、人がたくさん必要で、文書も大量、期間も長い

アジャイル開発

  • これまでの開発方法を改善した軽量級の開発手法
  • 開発プロセスではなく、マインドセットのようなものを表したもの。開発方法はその場その場で最適なものを選びましょう、選べる能力を持ちましょう、という考え。
  • アジャイル開発、とは大きな考え方。手法はたくさんある。
  • 開発する工程ではなく、開発するチームに注目する。
  • 人々が協働する力を最大限に活かして、価値のあるソフトウェアを作り続けるための活動およびその方法論

「アジャイル」の言葉の意味

 最近耳にする機会が多くなった「アジャイル」ということば。一体どういう意味なのでしょうか?辞書で調べると、、

agile | ˈædʒəl

able to move quickly and easily able to think and understand quickly

1機敏な、すばしこい

2頭の回転の早い、鋭敏な

Oxford Dictionary / ロングマン英和辞典

 どうやら、「早い」という意味らしいです。

アジャイルソフトウェア開発宣言

私たちは、ソフトウェア開発の実践

あるいは実践を手助けをする活動を通じて、

よりよい開発方法を見つけだそうとしている。

この活動を通して、私たちは以下の価値に至った。

プロセスやツールよりも個人と対話を、

包括的なドキュメントよりも動くソフトウェアを、

契約交渉よりも顧客との協調を、

計画に従うことよりも変化への対応を、

価値とする。すなわち、左記のことがらに価値があることを認めながらも、私たちは右記のことがらにより価値をおく。

© 2001, 上記の著者たち

この宣言は、この注意書きも含めた形で全文を含めることを条件に自由にコピーしてよい。

アジャイルソフトウェア開発宣言

アジャイルソフトウェア開発の原則

  • 私たちは以下の原則に従う:
  • 顧客満足を最優先し、
    価値のあるソフトウェアを早く継続的に提供します。
  • 要求の変更はたとえ開発の後期であっても歓迎します。
    変化を味方につけることによって、お客様の競争力を引き上げます。
  • 動くソフトウェアを、2-3週間から2-3ヶ月という
    できるだけ短い時間間隔でリリースします。
  • ビジネス側の人と開発者は、プロジェクトを通して
    日々一緒に働かなければなりません。
  • 意欲に満ちた人々を集めてプロジェクトを構成します。
    環境と支援を与え仕事が無事終わるまで彼らを信頼します。
  • 情報を伝えるもっとも効率的で効果的な方法は
    フェイス・トゥ・フェイスで話をすることです。
  • 動くソフトウェアこそが進捗の最も重要な尺度です。
  • アジャイル・プロセスは持続可能な開発を促進します。
    一定のペースを継続的に維持できるようにしなければなりません。
  • 技術的卓越性と優れた設計に対する
    不断の注意が機敏さを高めます。
  • シンプルさ(ムダなく作れる量を最大限にすること)が本質です。
  • 最良のアーキテクチャ・要求・設計は、自己組織的なチームから生み出されます。
  • チームがもっと効率を高めることができるかを定期的に振り返り、それに基づいて自分たちのやり方を最適に調整します。

 アジャイルソフトウェア開発の原則

アジャイル開発手法

  • リーンソフトウェア開発:無駄の排除
  • スクラム:開発プロセスの枠組み
  • XP:技術的なアドバイス
  • カンバン:見える化して流れを良くする

動くソフトウェアを最速で作る

部品ごとに作って最後につなげる、という方法だと、最後の結合段階で致命的な問題が見つかる可能性があります。長い時間をかけて作ってきたものが、最後の最後に「やりなおし!」となると、完成までにもっと時間とお金がかかってしまいます。

例えば、乗り物を作る場合を考えてみましょう。

とりあえず動くものを早く作る(source)

乗り物の機能で一番重要なことは、「利用者が移動できること」です。もちろん、正確に慎重に作るのも重要ですが、とりあえず最低限の機能(作るのが乗り物なら、「移動できること」が最低限の機能)を満たしたものを作ろう、つまり実際に動く価値のあるものを早い段階で作って、後々ブラッシュアップしていこうよ、という考え方が、アジャイル開発の考え方なのです。言い換えると、ユーザー目線で重要度の高いものから実現していく、とか、最小手でアガる方法を考える、という感じです。

まとめ

ここまで、アジャイル開発の核となる考え方や手法について、簡単に書いてきましたが、理解は深まりましたでしょうか?

アジャイル開発は比較的新しい概念なのですが、ソフトウェア開発をしている日本企業にもじわじわ浸透してきています。

もし今後、「アジャイル」という言葉に出会うことがあったら、ぜひ、このページに書いてあったことを思い出してくださいね!

最後まで読んでいただき、ありがとうございました!