スケール間に連続性を築くプロジェクトを構成するさまざまなスケールのループ構造は,それぞれ独立したものではなく,互いに連続性を持っています。その連続性は自動的には成立しません。人が絶えず意識し,手を入れる必要があります。スケールとスケールの間をつなぐのがアジャイル開発者の仕事です。ループ構造の各スケール間に連続性を築くために必要なマインドセット(心構え)とプラクティス(実践)を紹介します。マインドセット「“いま・ここ”のスケールを意識する」プロジェクトに従事するとさまざまな作業やイベントがあります。計画づくり,ストーリの定義,スタンドアップミーティング,設計の議論,タスクの分割,プログラミング,テスティング,ふりかえり......。それぞれの局面で“⁠いま・ここ⁠”のスケールがどのレベルにあるのかを意識しましょう。テストケースを定義する際に,ソフトウェアとしてのそもそも論を語っていませんか?(これは詳細を検討できるだけの情報を得ていないことや,チーム内の認識に齟齬があることのサインです)マインドセット「スケール間にはギャップがある」ループ構造は複数スケールで構成されると説明しましたが,これはあくまで比喩です。実際には完全にそのとおりではありません。スケール間にはギャップがあります。プログラミングレベルでユニットテストの実行を完全に自動化できるからといって,受け入れテストが完全に自動化できるわけではありません。受け入れテストの手動実行を正式なタスクとして計画に組み入れる必要があるかもしれません。タスクレベルの見積りの合計が,ストーリレベルでの見積りと自動的に一致するわけではありません。見積りの数値的な整合性よりも,タスクの作業結果がストーリと結びついていて,ストーリをタイムボックス期限内に実現できることの論理的な整合性に注意を払います。見積りが妥当かどうかは,チームで考えて判断しなければなりません。小さいスケールでうまくいっていることを,そのまま大きなスケールに適用するだけではうまくいきません(逆も同様です⁠)⁠。重要なことは,ループ構造が各レベルごとの抽象度でリズムを持って正しく回転していることを,動作するソフトウェアで示すことと,各レベルのループを回している理由を,より上位のループ構造から導きだせることです。「⁠このスケールでうまくやるには何をすべきか(そして何をすべきでないか⁠)⁠」を常に考える必要があります。計画づくりを重視するアジャイル開発では,スケール単位で計画を立てます。計画はさまざまなレベルから構成され,それぞれをタイムボックス化(注7)します。タイムボックスにはレベルごとにループ構造が存在します(図2⁠)⁠。四半期単位では,実現する内容を漠然としたテーマのような形でリストにします。直近の四半期については,リリース単位でストーリを一覧にします。リリース対象のストーリを具体的にいつ実装するかはイテレーション単位で計画します。各イテレーションでは,ストーリをタスクに分割し,日々の作業ではタスクを実現するために必要なテスト項目をリストにします。四半期,月,週,日といったスケールをチームで共有するためには,プロジェクトのカレンダーを用意するとよいでしょう。ホワイトボードマーカを使って予定やイベントを書き込めると,計画の変更に適応できて便利です。私の周囲では「ほぼ日ホワイトボードカレンダー」に定評があります。私の周囲ではよく作られているものにチームの時間割があります。これは,スケール単位での計画づくりを日次のレベルに適用したものです。チームの時間割は,学校の時間割と同じです。1日を複数のコマに分割し,チームの作業時間単位とします。1コマの長さは1.5時間~3時間程度です。チームの時間割は,1日の作業にリズムとメリハリをもたらします。タスク見積りの共通のスケールとして活用したり(⁠「⁠このタスクは2コマ分ぐらいだね⁠」⁠)⁠,チームメンバーの作業結果を同期化するトリガーになったりします(注8⁠)⁠。注7)タイムボックス化については連載の第1回(本誌Vol.39)を参照してください。注8)連載第2回(本誌Vol.40)の「継続的インテグレーション」も参照してください。著者プロフィール角谷信太郎(かくたにしんたろう)(株)永和システムマネジメント,サービスプロバイディング事業部所属プログラマ。「『楽しさ』がシステム開発の生産性を左右する」と信じて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.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。