「アジャイル」が私の中で話題に。

yanzmさんから引き取りました!
本記事はTech Women Advent Calendarの13日目の投稿記事となります。
私のブログでは、文字にリンクがついている場合は関連サイトへジャンプするように作成しております。
引用/出典については各リンク先をご参照ください!

最近社内で話題沸騰(?)の「アジャイル」について、
私なりの考察を書きたいと思います。

■アジャイルソフトウェア開発の「アジャイル」って?

エンジニアをしていると「アジャイル開発」ってよく聞きますよね。
求人とかでもよく見かけると思います。
エンジニア界では古馴染みな言葉となりつつあれど、そもそも「アジャイル」ってなんなんでしょう?
なんとなく「こういうかんじ」というものは漠然とあったり、
「スクラムとかのことでしょ?」みたいな例を挙げることはできても、
アジャイルそのものってよくわからなかったりします。なんとなく言葉の一人歩き感です。
哲学で言う「愛とは?」「死とは?」みたいな命題に近しい所に言葉が放置されてしまっている訳ですw

Wikipediaから抜粋すると

「アジャイルソフトウェア開発手法とは、一群のソフトウェア開発手法の総体を意味する言葉であり、単一の開発手法を指す言葉ではない。」

一瞬えっ!って思った人もいるんじゃないでしょうか。
アジャイルソフトウェア開発(以後アジャイル開発)とは、何か具体的な手法のことを指しているのではありません。
agility(「俊敏な」「すばやい」)を意識した ”開発思想” を指しています。
そしてこの ”開発思想” をソフトウェアを開発する上で「どうするべきか?」をまとめたものが、
アジャイルソフトウェア開発宣言です。
現在は、このアジャイルソフトウェア開発宣言に則った開発手法を行う事がすなわちアジャイル開発となることがおおいです。(本ブログでもこの宣言を元に進行することにします)。

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

この宣言では何を詠われているのか。
それはagilityの高い素敵開発をするためには、
ツールに捕われて作業するよりも、開発者同士もしくは顧客と開発者の間のコミュニケーションを大事にする事で
顧客の欲しいものへ早く正確にたどり着く事を目的とし
欲しいものへの変化について行ける開発をしようね、ってこと。
そのためにはドキュメントファーストでなかなか出来上がりの見えない開発をするよりも
ちょっとずつでもいいから出来上がりを見せながら進む事で、
顧客の欲しいものとの乖離を防ごうね、ってこと。

決して、アジャイル開発だからドキュメントを書かなくていい、テストもだいたいでいい、ということではありません。
よく間違えている人居ますけどね。そうじゃありません。
アジャイル開発にしたって、最終的にドキュメントは必要であり、入念なテストは必要です。
ただし、むやみやたらにやるのではなくて、必要な分だけ、やりましょう。そういうことです。
カウボーイコーディング(そのときよければOK!的な開発)を推奨しているわけではないんです。

こんな宣言を見ただけでは結局開発するときに何すればいいんだよ (怒`Д´)ρ゙ ++
となってしまうので、
「きっとこういう決まり事を開発時に作ってあげればagility高くて、でも誰も辛くなくてハッピー!」
と定義された(フレームワーク化された)ものが「スクラム開発」や「(ソフトウェアにおける)リーン方式」「エクストリーム・プログラミング 」など皆さんの記憶にある言葉/手法です。

■アジャイルフレームワーク〜スクラムと私〜

アジャイルのフレームワークとしてはスクラムが一番有名なのではないでしょうか。
詳しい説明は別途ぐぐっていただくとして、
大まかなにはこんな感じです。

  • 最初に今回のスプリント(PDCA的なサイクルを回す期間)で開発するタスクを決めるよ!
  • スプリント内の作業工数上限を設ける事で、無茶な作業負荷がかからないようにするよ。
  • プロダクトオーナーが要望をクライアントからヒアリング&選定を行い、スクラムマスターがその要望に対しての優先順位をつけたりメンバー割り振り、タスク化するよ。
  • スプリントの終わりにKPTなどの振り返りをチーム全体で行うよ
  • だいたいスプリントは2〜3週間から2〜3ヶ月を想定し、都度リリースするよ
  • スプリント実施中はデイリースクラムという1日単位の小さなスプリントを回すよ!

詳細はこちら

スクラムのよいところは、事前の見積もりをパッツリ行う事、数値化/明示化することでチーム外の人にも現在の作業量について知らすことができるというところです。
また、必然的にセルフPDCA的なことも行えますし、成果物意識のトレーニングにもなります。
これは、自社サービスやプロダクトの開発チームや、
リリース済みのシステムの機能拡張など追加開発や追加改修を行うチームに有力なフレームワークと言えます。
私の働いている会社でも自社サービス開発チームで取り入れられています(きっとその話はそのうち会社のブログに出てくるに違いない。ちらちら)。

デメリットとしては、「納期」と「緊急対応」に弱いこと。
事前に決められた工数内で作業できない場合は、既に積まれている今回のスプリントタスクのうちどれかを削って実施するという形になるため、
決められた納期内に全ての納品を行う受注タイプの作業を行うチームや、
細かなタスクや予測不可能な作業が頻繁に舞い込む運用チームでは扱いづらいフレームワークです。

私は現在運用チームで働いているため、当然のように破綻しました。。。
じゃぁ運用にはどのフレームワークがいいの?となりますが、これは私も今模索している状態です。
一見リーン方式(詳しくはぐぐって!)などは上手い事回りそうな予感がしますが、
「クライアントとやり取りしている間はどういうステータスにしよう?」とか
外部要因によるタスクの割方や作業中タスクを放置プレイして緊急タスクを行う場合のステータスやチームの動かし方についてはやはり同様に議論を呼びそうです。
少なくとも、運用チームにアジャイルフレームワークを導入するには、
何かしら拡張した定義をチーム内に生成しないと上手く稼働できなさそうに感じます。
どなたか運用向きなアジャイルフレームワーク知ってる方いたらご教示ください!

■最後に激アツ★かんばんの利用のすすめ

どのアジャイルフレームワークを調べてみても、結構どこにでも出現するこの「かんばん」手法。
本ブログでは、フレームワークとしてではなく1ツールと定義します。

かんばんとは

  • チームみんなが常に見えるところにタスクボードが存在し
  • タスクを物理的に移動させる事で現在のステータスとタスク分量を可視化する
  • 基本的にはバックログ/TODO/作業/リリースの軸を移動する

というものです。
かんばん軸については各チームや各フレームワーク用にカスタマイズするとなおよし、という感じです。
ポイントは、「常に見えるところ」。
他の作業をしている間にメニューに隠れてしまったり、IntelliJの裏に入ってしまったりではダメなのです。
デスクで作業しているときに、ちょっと目を動かせばそこにはかんばんが!くらいの立ち位置が必要です。
そうすることで常にチームメンバ全員にタスクの進行と成果を意識させるようにするのです。
物理的に模造紙と付箋を使っている会社さんも多いですね。

最近はJIRA Agileなど、
web上のタスク管理ツールと一体化しているものもあります。
個人的にはタスク管理ツールとかんばんは一体化(連動している)方が手間がなくて良い!と思います。
2重管理はなかなか辛いものがありますもの。人数が多ければなおさらです。
しかしながら、web上でやることのデメリットとしては「常に見える」をキープしづらいということです。

ということで!
私のおすすめかんばんはこちら。
「Web上でタスク管理ツールと連動させたかんばんを “かんばん専用の” ディスプレイで表示する。」

2人で1つとかみんなが見えるところに投影、とかでも構いません。
かんばん専用の画面を用意しましょう。
ついでに1分おきとか3分おきに画面を自動更新してくれるように設定しておいて、
最新の情報が表示されるようにしておきましょう。

これを導入するだけでもチームにアジャイル感が生まれてチームの人に興味を持ってもらえるかもしれません。
アジャイル開発の導入は社内全員の理解や協力の元に成り立つものです。
地道な普及と大胆な改善で布教活動を進めましょう!

ま、とはいえ実は私もまだうまくかんばんを取り入れられないのが現状ですけどね。。。
近々成功させたらまたブログかきます。
日々精進!

【まとめ!】

  • アジャイルとは概念であり、その概念をソフトウェア開発定義として昇格させたものが「アジャイルソフトウェア開発宣言」である
  • アジャイルソフトウェア開発宣言を具体化したもの(フレームワーク化したもの)がスクラムやXPやリーン
  • アジャイルフレームワークを円滑に稼働させるために利用するのはかんばんなどのアジャイル開発ツール
  • 運用に向いたアジャイルフレームワークまたはツールがあったら誰か教えて!

以上でした。
次のアドベントカレンダーはrisatareさんです!おたのしみに!

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中