システム開発事業|アジャイル開発・スクラム
システム開発のコガソフトウェアは、ビジネスシーンやシステム要求の変化に柔軟に対応できる、アジャイル開発・スクラム手法を積極的に採用しています。
システム開発のご相談・お見積り等、お気軽にお問い合わせください
-
アジャイルソフトウェア開発宣言
アジャイル開発とは
ビジネス環境を取り巻くスピードは早くなる一方です。業務要求も日々変化することが当たり前です。 事業開発の過程では予測できないことも起こります。
- 最初に決めた仕様に漏れがある
- 現場からの新たな要求がある
- 市場の変化
- 競合企業・サービスとの競争
- 新技術の登場・普及
- すべての事態が計画段階で分かっているわけではない
アジャイル開発は、ビジネス要求の変化を前提とし、その変化に柔軟に適応することでアジャイルを採用しても、開発期間の短縮や、コスト削減を達成できるとは限らないので、注意が必要です。
「使えない、無駄なシステムを作ってしまうリスク」を軽減するための価値観です。
ウォーターフォールとアジャイルの比較、スクラム手法
スクラムの開発サイクル
スクラムメンバーの役割
従来型の開発では、プロジェクトマネージャやリーダが、チームを牽引する責任者として定義されました。 スクラムでは、チームがプロダクト開発の主役となります。 リーダが事細かに指示しなくても、チームがセルフマネジメントし、自分たちの最善を尽くして仕事を進めます。 チームの意思決定と、スクラムサイクルのPDCAを円滑にするため、メンバーには以下の役割を定めます。
主な開発プラクティス
スクラム開発のサイクルを円滑化するため、各種プラクティスのフレームワークをご用意しています。
チーム運営
- デイリースクラム、スプリント計画・振り返り
- タスクかんばん、バーンダウンチャート
- KPT
日次で5分程度のスタンドアップミーティング(デイリースクラム)、週次でスプリント計画・振り返りを行います。デイリースクラムでは、チームメンバの昨日・今日やったこと、やること、課題を共有するとともに、
各人の体調や様子を確認しあいます。スプリント計画(週の管理単位、イテレーションともいいます)では、チームが達成した成果を振り返り、
次のマイルストーンでの達成目標を設定します。最後に KPT(Keep,Problem,Try)を話し合い、翌週のスプリントで解消できる課題は解消します。
コミュニケーション管理
- Skype
- Idobata
- Chatwork
Skype のほか、Github と連携してタイムライン上に issue や PR の起票・更新、build がフックされるため、
エンジニアの使いやすさから Idobata も活用しています。特定のエンジニアに向けたメンションをつけることもできます。Chrome デスクトップ通知も便利です。
簡単なグループタスク管理も兼ねたい場合は、Chatworkを導入します。
タスク管理
- Redmine/Backlog
- Github issue+waffle.io
Redmine や Backlog による、チケット駆動開発を推奨しています。エンジニアの開発効率を上げるために、開発タスクを Github issue に一本化することも可能です。waffle.io との組み合わせで、マイルストーンごとにカンバン形式でタスクの確認も可能。効率化を図ります。
バージョン管理
- Github/GitLab
- Bitbucket
- Subversion
Pull Request 駆動開発を実践しています。Github Flow として、master 常にブランチはプロダクション環境にデプロイ可能な状態にしています。master ブランチへのマージは Pull Request がレビューされた後に限り、
すべてのソースコードは常にレビューされます。
CI(継続的インテグレーション)、CD(継続的デリバリ)
- Jenkins
JenkinsによるCI(継続的インテグレーション)、継続的デリバリ(CD)を実践しています。ビルドされるのは Github リポジトリへの push 後に自動テストを通過したソースコードだけで、
テストのエラーは当日のうちに修正します。
TDD(テスト駆動開発)
- サーバ構築状態テスト(CMツール、serverspec)
- サーバサイド、E2Eテスト(Spec、Feature specs、Cucumber)
- フロントエンドテスト(Capybara、Selenium)
エンジニアがコードに自信を持ちながら開発できるよう、テストファーストの TDD (テスト駆動開発)を
推奨しています。Red→Green→Refactorという、いわゆる「黄金の回転」を保ち、ときにはペアプログラミングをおこなうことで、
エンジニアはコードに自信を持ってプログラミングを進められます。レビューや自動テスト、TDD でコードの信頼性が担保されている前提で、過去のコードに対しては
躊躇なくリファクタリングをおこないます。
インフラ構成管理
- Chef/Vagrant/Capistrano
Chef を使い、サーバ環境/構成をコードで管理しています。Cookbook や Recipeは再利用可能で、
Chefのテストには Vagrant 環境を用いています。サーバ操作やデプロイについては、ルーチンワークの手作業による属人性、誤作業、非効率を排除するために、Capistrano により極力自動化しています。DevOps により開発チームと運用チームをコラボレーションし、
サーバ環境/構成のメンテナンスビリティ・ポータビリティを保っています。