分1234プロジェクトのループと4つのスキル本連載で言及するアジャイル開発者の4つのスキルはプロジェクトのループを正しく「1周」させるためのスキルです。それぞれのスキルとループ構造との関わりを順番に説明します。ここで説明するのは,プロジェクト全体レベルでの適用についてです。ストーリの作成ストーリの作成は,プロジェクト全体レベルのループの出発点です。ソフトウェアへの要求を,ユーザ価値の視点から,ユーザの語彙を使って数行の文章で記述したものがストーリです。実装する」ではなく「設定された閾値を越えている対象者を一覧から選択して通知できる」といったようにです。ストーリそのものに詳細を含める必要はありません。必要に応じて補足するドキュメントや仕様書を用意して対応します。ストーリは受け入れテストと対をなします。ストーリは,受け入れテストを書くことができ,受け入れテストに成功すれば「正しく」ソフトウェアが作られていることを検証できるような記述を心がけます。アジャイル開発者の腕の見せどころです。テスト駆動開発(TDD)プロジェクト全体レベルでのTDDは,ストーリに対する受け入れテストの定義(と実行)です。受け入れテストには2つの役割があります。作業のゴールテストを定義する際には,文字通り「そのテストが作業のゴールであり,そのゴールへ向かって開発が駆動されていくこと」を念頭に置いてください。述べたとおり,具体的な開発作業はストーリをタスクに分割して取り組みます。タスクの分割は「受け入れテストに成功するためには何をすればよいか?」という視点から行います。タスクを分割しきれたかどうかを判定する質問は,「⁠分割したタスクをすべて完了させれば,受け入れテストに成功できるか?」です。受け入れテストの実行は,必ずしもすべてが自動化されている必要はありません。誤解されていることも多いのでここで補足しておきます。現場での受け入れテストは,自然言語で書かれた文書(注5)であることも多いです。TDDではテスティングフレームワークの利用を強調するので「テスト実行の自動化」が注目を集めがちです。開発対象のソフトウェアの特性や受け入れテストのケースによっては,実行を自動化するためのコストが非常に大きいものもあるからです。実行の自動化は重要な要素ですし,取り組む価値のある課題ですが,TDDの本質ではありません。繰り返しますが,TDDの本質は「そのテストを書くことが開発を駆動するか?」を問い続けることです。リファクタリングプロジェクトは1回のループでストーリの実現に必要な作業を行うわけですが,その作業全体を通してリファクタリング――システムの振る舞いを変えずにソフトウェアの設計を洗練させる――を行います。ユーザ価値とリファクタリングリファクタリングは,プロジェクトのループを継続させていくうえで必要な作業です。リファクタリングはユーザ価値を提供し続けるために基盤としてこの上なく大事なものではありますが,ソフトウェアの振る舞いは何も変わらないので直接的にはユーザ価値を提供しません。リファクタリングが直接ストーリとして表現されるのはよほど特殊な例外的状況にあることを心得てください。ユーザ価値を提供するストーリと関連させたタスクとして,日常的継続的に少しずつコツコツと進めていくのがリファクタリングです。リファクタリングの手順を実践できることもアジャイル開発者として必要なスキルですが,どうやってプロジェクトの日常的な作業に組み入れていくかの作戦を考えられることは,さらに重要なスキルです。計画づくり計画づくりは,プロジェクトの各回のループがリズムを持って正しく回転するように定めるプロセスです。計画づくりでは,どのストーリをどういった順番で実現していくのかを,ストーリの見積りを踏まえたうえで,タイムボックスに収まるようにビジネス的な優先順位に従って決定します。計画駆動」という図式がよく用いられますが,アジャイル開発も計画を重視します。後述しますが,アジャイル開発ではさまざまなレベルで計画づくりを行います。計画づくりを実施する頻度は,一般に計画駆動と呼ばれている開発プロセスよりも格段に多くなります。計画に対する両者のアプローチの違いは,状況に応じた計画づくり(プランニング)を重視するか,立てた計画(プラン)を予言として絶対視するかです。プラン重視(計画駆動⁠)⁠」と考えたほうが実態に即していると思います。計画と見積り計画づくりにあたっては,ストーリやタスクを見積る必要があります。アジャイル開発での見積りは作業量の相対サイズで行います。見積りについて言及すると,この連載の枠の範囲を大きく逸脱してしまいます。ここでは見積りについてのヒントを一つだけ紹介します。あなたが「見積り」と「コミットメント」と「ターゲット」の違いについて説明できないようであれば,今すぐ『ソフトウェア見積り』(⁠注6)を読んでください。注5)受け入れテストはプロジェクトの進行とともに変化していくので,私の周囲では保守しやすいようにWikiに書くことが多いです。著者プロフィール角谷信太郎(かくたにしんたろう)(株)永和システムマネジメント,サービスプロバイディング事業部所属プログラマ。「『楽しさ』がシステム開発の生産性を左右する」と信じてRubyによるアジャイル開発を現場で実践するテスト駆動開発者。目標は達人プログラマ。好きな言語はRuby。好きなメソッドはextend。著書に『アジャイルな見積りと計画づくり』(共同翻訳),『JavaからRubyへ』(翻訳),『アジャイルプラクティス』(共同監訳),『インターフェイス指向設計』(監訳)。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。