ただふれたものについて書くブログ

あんまり正しくない話を適当に書くブログ

2011年のまとめ - 開発手法について(主にアジャイルのこと)

アジャイル開発自体はもう何年も前からその有効性について語られてきましたが、今年はより存在感を増してきたと思います。

アジャイル開発を行うためのノウハウとツールが浸透してきた

今年になってさらに一段浸透したと感じます。ヤフーなどの大手の導入事例が*1今年になってきて増えてきました。
アジャイル開発についての参考書もますます増えてきました。特に今年はアジャイルサムライなんて、分かりやすいアジャイル入門書も出て、周りで読んでいる人が多かったです。
アジャイル開発は、単純にウォーターフォール型と同じようなものと捉えるべきではなくて、組織全体に依存する考えをする必要があって、おさえておくべき範囲はとても広いです。単純にやり方を変えるだけではなく、ビジネス面での意思決定。チーム内の意識の疎通。技術面では、TDDを率先して行い、ミスがすぐわかる状態にして、テスト・ビルド・デプロイをCIツールを使って自動化し、統計の解析や利用者のフィードバックを素早く抽出して、次のビジネス面での意思決定に繋げる必要があります。
意思決定が遅かったり、テストのないコードを書き続けたりすると、途端に回らなくなります。
CIのJenkinsがだいぶ浸透してきたり、Pivotal Trackerアジャイル開発手法に最適化されたプロジェクト計画ツールが人気だったり、アジャイル開発をサポートするサービスが増えてきています。ウェブサービスやケータイのアプリ、ソーシャルゲームアプリ市場は、どんどんスピードが求められています。組織は迅速な意思決定をすぐにコードに落とし込めるような仕組みを用意していけるようにしないと、競争に勝てない、という状況になっているんだと思います。

一開発者としてはどうするべきか

ウェブサービス、アプリ、ソーシャルゲームとかを作っている組織は、開発のスピードを求められます。もちろんスピードだけではなく、完成度もです。なのでアジャイルな開発手法は把握しておくべきなのでしょう。

  • 自分の使っている言語でテストを効率よく書く方法、TDDを効率よくこなす方法、カバレッジの取る方法(テスト)
  • リポジトリにコミットした時に、同時にテストを走らせ、失敗したらメール通知する方法(自動化)
  • サーバーにデプロイした後に、簡単にロールバック出来る方法(デプロイ)
  • 開発・本番環境を簡単に構築できる方法(クラウド)

来年さらに、もっと何か新しく効率の良いやり方が登場して、それを覚えていかなければならないかもしれません。とにかく流れに乗る必要があるんだと思います。


そんなわけで、色々書こうと思いながらも1/3しか書かなかったけれども、まぁそれはそれで。今年もお疲れさまでした。

*1:[http://bit.ly/vTOYlk:title]