「WEBエンジニアはどのようにチームで開発しているのだろう?」
「アジャイルやスクラム、スプリントて言葉を聞いたことはあるけど、どういう意味か知りたい」
そうお考えの方は、このブログを少しお読みください。
僕は、未経験からwebエンジニアを目指して、プログラミングを学習開始して半年後に『アジャイルサムライ』を読みました。
転職活動中に、会社ごとの開発スタイルを教えていただく中で、「スクラム、スプリント」という言葉をよく耳にしました。その後これらの言葉がソフトウェア開発手法のアジャイル開発の一種だと判明。Webエンジニアを目指す上では開発スタイル、仕事の進め方をしっかり知りたいと考えたので、アジャイル開発を体系的に学ぶべく本書を手に取りました。
結果的に、『アジャイルサムライ』はストーリー仕立てで非常に読みやすく、かつプログラミング言語に依存せず読み進めることができて、とても良かったです。
本記事では、ざっくりと『アジャイルサムライ』の要約をします。初心者目線で重要だと思った部分を抽出しているので、載せきれていない箇所も多々あります。
アジャイル開発とは
- アジャイル開発とは、ソフトウェアを無駄なく、早く届ける手法のこと
- 開発チームとして大事にする6つのこと
- 1.大きな問題は小さくする
- 2.本当に大事なことに集中して、それ以外のことは忘れる
- 3.ちゃんと動くソフトウェアを届ける
- 4.フィードバックを求める
- 5.必要とあらば進路を変える
- 6.成果責任を果たす
- ソフトウェア開発の3つの真実
- 1.プロジェクトの開始時点にすべての要求を集めることはできない
- 2.集めても変化する
- 3.やるべきことは与えられた時間と資金よりも多い
- アジャイル開発用語
- イテレーション=スプリント:開発期間(1〜2週間が主流)
- マスターストーリーテーリスト=プロダクトバックログ:スプリントにおける実装機能リスト
- 顧客=プロダクトオーナー:プロダクトの社外のお客様や社内の責任者
- アジャイルなチーム
- 分析、設計、実装、テストといった開発工程を連続的に行う
アジャイルな目的共有
- アジャイルな目的共有
- 1.プロダクトの効能をブレインストーミングする
- フィーチャーそのものではなく、フィーチャーの効能を洗い出す
- 2.キャッチコピーを決める
- 3.パッケージをデザインする
- 1.プロダクトの効能をブレインストーミングする
- プロジェクトのスコープを確認する
- やらないことリストを作成する
- 助っ人を探す
- ヘルプデスク、インフラ、セキュリティ、データベース、運用保守などの管理者との接点を作る
- プロジェクトのリスクを洗い出す
- アジャイルプロジェクトの4つの制約
- 1.スケジュール
- 2.予算
- 3.品質
- 4.スコープ
- 唯一変動できる要素のため、やらないことリストを作成する
アジャイルな計画策定/進捗管理
- ユーザーストーリーリストを作成する
- 顧客へヒアリングする
- フィーチャーの本質を捉えるキーワードを抽出する
- 顧客がワクワクするようなストーリが良い
- ストーリーを互いに相対的なサイズで見積もる
- 過去事例を参考にする
- ポイントをもとにして進捗を追跡する
- スプリントごとにポイントの消化率を算定しチームの開発速度を算出する
- 新しいストーリーを追加するときには、既存のストーリーをマスターストーリーから削る
アジャイルなプロジェクト運営/進捗管理
- スプリントでやるべきこと
- 今回のスプリントの作業に備える(ストーリー計画ミーティング)
- 今回のスプリントのフィードバックを得る(ショーケース)
- 次回のスプリント計画を立てる(スプリント計画ミーティング)
- 次回のスプリントで改善できる余地を探す(ミニふりかえり)
- ストーリーは完了したか、していないか、そのどちらかだ
- 1つのストーリーは使える機能なので「50%終了した」などは進捗に加えない
- 進捗管理で使えるツール
- ストーリーボード
- インセプションデッキ
- 付箋
アジャイルなプログラミング
- アジャイルなプログラミングの4つの要素
- ユニットテスト
- リファクタリング
- テスト駆動開発
- 継続的インテグレーション
- ユニットテストのメリット
- 素早いフィードバック
- 低コストで再テストを実行できる
- デバッグ時間を大幅に削減できる
- 自信を持ってデプロイできる
- リファクタリングのメリット
- 技術的負債を返済し続けることで、ソフトウェアを変化に柔軟に対応できるようになる(メンテナンスコスをを下げる)
- 技術的負債のスコープ
- ソースコード
- データファイル
- ビルドファイル
- 設定ファイル
- テスト駆動開発のステップ
- レッド:新しいコードを書くまえに失敗するユニットテストを書く
- グリーン:とにかくテストに成功するコードを書く
- リファクタリング:実装を見直す
- 継続的インテグレーションとは
- 開発者がソフトウェアに加えた変更を取り込んで、ソフトウェア全体として統合する作業を途切れることなく続けていく取り組みのこと
- 継続的インテグレーションでやるべきこと
- ソースコードリポジトリ
- チェックイン手順
- git pull/fork > change > test > git push > merge
- ビルドの自動化作業単位を小さくしようとする姿勢
アジャイルサムライ要約まとめ
本記事では、『アジャイルサムライ』の要約をしました。
Webエンジニアとしての開発手法がわかり、仕事のイメージが掴めてきました。
目標設定やタスク洗いだしなどのコミュニケーションが生じる工程では、すでに培った経験を活かせる部分もありそうです。
それでは!!
コメントを残す