見出し画像

0からやろう。スクランバン

TOWNアドベントカレンダー2023の11日目を担当します。アキノです。
ちょっと遅れて投稿です。

おぉ、アジャイルよ…

 アジャイル… 開発チームを覗けばどこ見てもこの単語が飛び出てきます。学生として初めて開発を経験したときには、かの単語がすでに台頭していました。その内容を知る前は、僕には「リスケ」とか「エスカレーションする」とか、カタカナビジネス単語と同じような語にしか聞こえていませんでした。

 わたくしアキノは、webサービス業界でアルバイトをして一年、ついに自分がチームのリーダーとしてスクラム(アジャイル開発手法の一つ、チームの呼び名)を組むという話をいただくことになりました。はてさて、今まで渡されたチケットを実直に「レビュー待ち」に送っていた自分が、いきなりその仕組み全体を管理できるでしょうか。闘志を心に燃やし、すぐに図書館に走……ることはせず、お父さんに秒で教えを請いました。


それも仲良く

スクラムとカンバンってなに?

 お父が言うには、アジャイル開発にはいろいろな手法があり、自分がアルバイト先であるTOWNさんの開発チームをまねてやろうとしているのはその中でも「スクラム」と「カンバン」というものだそう。略して「スクランバン」です。

 「スクラム」って何でしょう…?googleさんに聞いてみると、スポーツで大会の前に円陣組んで喝入れしているあれを指すそうです。多分。

あれ

 スクラム開発では、毎日 デイリースクラム(朝会での進捗確認みたいなやつ)で、メンバー全員集まって短いミーティングを行うことから、こう呼ばれているみたいです。ほかにも、スプリント(後述)とか、スポーツ用語みたいなの使っててちょっとおしゃれ。

 「カンバン」というのは、トヨタ自動車の社内で行われていたプロジェクト管理方式に由来するそうです。看板みたいなホワイトボードみたいなのを使って指示していたことからカンバンだそう…

 さて、由来とかトリビアとかで記事を埋め尽くす前に、順序だてて、スクランバン開発に必要なアイデアを確認していきましょう。

プロジェクト管理ツール

 アジャイル開発にまず必須なのがプロジェクト管理ツールです。JIRAとかBacklog、Redmineなどが有名ですね。企業での開発経験のある学生なら、必ず触ったことがあるはずです。これらは、「スクラム」や「カンバン」に必要なインターフェースを提供します。

Trelloのスクラムボード一例

スクラム開発の手法

「スクラム」では、「スプリント」という、1~2週間の間に行うタスクを上の画像の”未対応”に全て並べ、メンバーが一つ一つやっていき、「スプリント」の終わりにはタスクはすべて”完了”に移動する、というのを繰り返すことで開発が進みます。

 タスクの中には、「概要」や「受入要件」などが書いてあります。メンバーは、受入要件を満たすよう、タスクを行い、上長(プロダクトオーナーやスクラムマスターとか言われる人)に確認してもらった後、完了に移します。

タスク内

 タスクは、単純にするため、必ず一人が担当することになっています。例えば、一度着手したタスクは、ほかの人には渡さず、上長の了承を得たのちは、すぐ完了に移動します。そのタスクに関連するデザイン調整とかやりたくても、それは別タスクとして作ります。1タスク、1担当です。

 これらのタスクは、親タスクのようなものの下にまとめることもあり、この親タスクのことを「エピック」と呼んだりもします。

 さて誰がタスクを用意してくれるんだ?ということなのですが、これは、「スプリント」の終わりごろに行われる「スプリント計画会議」にて、行われるそうです。

 「スプリント計画会議」では、将来やる予定のタスクが並んでいる、「Backlog」という一覧から、次の「スプリント」で行う分のタスクを見繕います。

 じゃあその「Backlog」に並んでるタスクはだれが作るんだ?という質問が聞こえてきます。幻聴でしょうか?はい。

 「スクラム」チームの中には「プロダクトオーナー」という人がいます。この人が、営業の人と話したり、ユーザーと話したりすることで、プロジェクトに必要な機能とかの話を持ってきます。例えば”○○な機能を実装する”といったようなタスクを「エピック」としてタスクに追加するのです。

「エピック」の扱い方にもいろいろありますが、「エピックオーナー」なる役割をメンバーに渡すことを想定してみます。彼が「エピック」を任されて初めてのタスクは、「エピック」を達成するために必要な子タスクを見積もる、ということです。

 「エピックオーナー」がいろいろ分析し、タスクを作ってくれることで、ようやく下っ端にも咀嚼できるようなタスクが割り当てられてきます。

スクラム開発の嫌なところ

 手戻りが難しいのと、細かくタスクを分けているからか、一つのプロジェクトが完了するまでの工程がわかりにくいです。どの仕事が残っているのか、だれがスプリントの中で遅れているのか、とかはすごい分かりやすいのですが、このタスクが最終的にどこに行くのか、というのが見づらく、一メンバーとしては先を見据えて開発がしにくいです。

カンバン開発の手法

カンバン開発手法の特徴は、なんといってもボードが横長いことにあります。

右はまだ続く模様…→

 あまり詳しくは書きませんが、タスクはまず左端のほうから始まり、要求の洗い出しとか、仕様書とか、レビューとかテストとかそれはもうたくさんの工程を各列に並べてタスクを管理していきます。

 一つのタスクは、1タスク1担当のスクラム開発とは違い、次の担当者へと次々に移ります。ひとつのタスクの責任者なるものを置き、そのタスクの進捗を保証、管理してもらうことも一応可能です。

 各列は、あるチームや、あるメンバーが担当し、一つ左隣の列にたまってきたタスクを次々とやっていくことになります。

 まるで工場のベルトコンベアのように、タスクが左から右へと流れていくので、どこの担当で滞っているのか、工程がまるわかりです。

カンバン開発の嫌なところ

 ただ流れが置いてあるだけなので、スクラム開発にあったような、期限をバチバチに決めて毎スプリントこなすようなことや、アジャイルの思想である定期的な成果物を見てもらう、という方法が少し煩雑になります。

いざ、スクランバン

 TOWNさんでやっている手法は、見たところ、「スクラム」と「カンバン」が混ざっているような手法です。基本的にはスクラムなのですが、元のスクラムが”未対応”、”進行中”、”完了”の三つであったところ、途中に”レビュー待ち”やら”レビュー済み”、”Epic-branchマージ済み”などの追加の列が入っています。これは、アルバイトエンジニアを雇っているTOWNさんとしては、都合のいい手法なのだろうなと思います。

 スクラムでは、毎日進捗を密に確認することが前提になっています。よって、ボードでは”未対応”、”進行中”、”完了”の三つより多くの情報はあまり必要とされないのです。しかし、アルバイトエンジニアを多く雇っている以上、メンバーのほとんどは週2ほどしか出社できず、密な確認が取れません。なので今どのような状況で止まっているのか、直接本人に確認しなくてもなるべくボードで状況がわかるよう、列を追加する意義があります。

 また、勤務時間も満足に取れないため、スプリントの進行状況もスプリント(短距離走)とはいえず、ジョギングぐらいのスピード感で進みます。例えば、一つのスプリントを一ヶ月ほどにして、スプリントデモ(スプリントの成果物をユーザーに見せる会)を一ヶ月毎に持てば、学生エンジニアもちょうどよい加減の期限意識をもって開発ができるのではないでしょうか。

まとめ

 いまアルバイトで悩んでいるタスクについて吐露しただけの記事になってしまいましたが、アジャイル開発手法の考え方の一つを提供できる記事になったらなと思います。割と重めの記事になってしまいましたが、ここまで読んでくださった読者の皆様に感謝です。

この記事が気に入ったらサポートをしてみませんか?