「アジャイル」という言葉がかなり浸透するようになりました。
反復型開発、とも呼ばれますが
この概念を知っておくとプログラミングだけでなく
集客や目標達成のための環境づくりにも使えますので、
知っておいて損は無いはず。
かつては「ウォーターフォール」が主流
「アジャイル開発」という概念は、
それまでの開発手法に異議を唱える形で生まれました。
「ウォーターフォール・モデル」と呼ばれるのですが
基本的に「要件定義 -> 外部設計 -> 内部設計 -> 開発 -> テスト -> 運用」という流れで
順番に開発を進めるスタイルです。
ちょっと言葉が難しいですが、要するに・・
【要件定義】
お客さんがシステムでやりたい事を聞く
【外部設計】
どんな機能やデータがあればよいかを、抽象的に考える
【内部設計】
外部設計の内容を、具体的にどうすればコンピュータ上で実現出来るか考える
【開発】
各プログラムやデータを作り、動かせる状態にする
【テスト】
思った通りの動きをするか確認する
【運用】
実際に動かす、改良する
と、いった感じ。
ウォーターフォール=滝、という言葉の通り
基本的に後戻り無く上から下へ順番に開発を進める、というイメージの場合が多いです。
動いてからでないと分からない事もある
しかし、ウォーターフォール的開発には弱点があります。
基本的に開発が一方通行になってしまうので
途中で手直しし辛い、という点。
設計フェーズがお粗末だと、
開発フェーズにそのしわ寄せが来る。
でも、もう後戻り出来ないので
設計を見直す事ができず、無理矢理合わせる。
結果、お客さんにも使ってもらえない
「ごみ」システムの完成。
・・こういった事が、
ソフトウェア開発では頻繁に発生するのです。
(いわゆる「デスマーチ」が生まれるのも、こんな所から)
システム開発を知らない側からすれば、
システムって何やってるか分からないブラックボックス的な所があるので
その辺の擦り合わせって、難しい。
なので、考え出されたのが
「アジャイル開発」という概念です。
小さく繰り返す。フットワークの軽さが自慢
アジャイル開発は、すべてを一度に完成させるのではなく
短期間(2週間とか1ヶ月)ごとに細かい機能を雪だるま式に追加していくイメージです。
例えば、TwitterのBotシステムを作ろうと思ったら・・
第1ステップ:とりあえず定期的に自動でつぶやけるようにする
第2ステップ:自動フォロー機能を追加してみる
第3ステップ:フォロー解除機能を追加してみる
・・
といった感じで、
ステップごとに「小さく完成」させながら
機能を増やしてシステムを成長させていく開発スタイル。
特に最近のWebサービスやソーシャルゲームなんかは
お客さんも多種多様なので、実際どんな事が必要とされるかは
運用が始まってからでないと分からなかったりします。
なので、先に最低限の機能だけ作って運用を開始し
ユーザーの声を聴きながら改良を重ねて行く、という形が主流です。
集客システム作りにも応用できる
システム、というのは何も
プログラミングだけのものじゃありません。
例えば自分のビジネスや活動をネット上で広めるために
各種サービス(ブログ、Twitter、Facebook、Youtubeなど)を組み合わせて
自分専用のメディア(=情報発信環境)を作るのも、1つのシステム構築です。
こうした『集客システム』を作りたい時も、
いきなりたくさんのサービスを用意して始めると
どのサービスがなぜ必要なのか分からなくなったり、
それぞれにかける時間も膨大になって続かなくなります。
アジャイル的に考えるなら・・
例えばまずはブログだけで数週間やってみて、
その中で結果(アクセス数や読者の動き)を測定し、
目標達成するまで修正を加える。
それから、新たに他のサービスを追加して
どんどんシステム全体を広げていく。
・・やる事が多すぎてお嘆きなら、
こうしたアプローチも1つ面白いんじゃないかと思います。
小さく「テスト&検証」を繰り返しましょう!
【告知】
メルマガ始めました。
VB.NET、Java、PHPなどの体験型プログラミング講座や、
自作Webサービスの開発進捗などを随時報告していきます。
=> メルマガ『武器としてのプログラミング』に登録