Agile×Ruby×Cloudが示す価値
Webアプリ開発におけるニーズ
Webアプリケーションを開発するにあたって、お金を出す人、つまり顧客であったりプロダクトオーナーであったり、ベンチャー企業であれば経営者や投資家などの人々にとってのニーズには、以下のようなものがあります。
- 初期のユーザを獲得するため早期に市場に出したい(スピード重視)
- 開始後に出るニーズや得た経験を反映していきたい(フィードバック)
- 事業開始時にかかる初期投資額はなるべく下げたい(スモールスタート)
- 事業が軌道に乗るに従いKPIに応じた拡大をしたい(スケールアウト)
最初から開発そのものに大きく賭けるのはリスクも大きいです。しかも、その投資の仕方では「システム開発」という行為そのものがゴールにすり替わる危険性があります。
本当に目指すゴールは作ったシステムで何を為すか、です。特にコンシューマ向けの新規事業Webサービスの場合などでは、早めに小さく作り市場に投入しつつ、反応を見ながら改善を繰り返し、成長に従いインフラ投資のボリュームを変えていく、ということが望まれているのです。
ところで、シリコンバレーやサンフランシスコといったWebのスタートアップ企業が集まるところで、Rubyができるプログラマは非常に高い給与水準で募集があるそうです。それは何故でしょうか。
Webをサービスしているスタートアップ企業にとって、もっとも重視するのはスピード感です。速いスピードを持って開発する為には、開発作業を外注する訳にはいかないので、必然的に内製化します。また、世の中にないまったく新しいサービスを作り出そうとする場合は、しっかり考え尽くしたとしても市場の反応が必ずしも良いとは限らないため、未成熟な状態でもローンチしつつ、得た経験をもとに改善を繰り返すことが最も効率が良い方法です。
理想のシステムを追い求めすぎて、世の中に出せないとしたら、スタートアップにとっては本当に意味がありません。自分たちで試行錯誤をするためにも、やはり内製化するのが一番です。内製をするのであれば、要件定義から詳細設計までドキュメントにして作っていくような形でなく、コミュニケーションを重視して少しずつ修正を繰り返していくという形が効率が良く、それに適しているのがRubyなのです。
サーバなどのインフラについても、これまでであれば将来に増えるであろうトラフィックやデータ量などを推測しながら可能な限り最大のスペックで用意しようとしていました。しかし、それでは最初のローンチに準備だけでも相当な時間が必要になるし、ハードウェア購入の費用も大きくかかってしまいます。決してそこまで使われることもないという可能性もあり、相当なリスクを負うことになります。
そういったリスクを回避するためには、AmazonEC2などに代表されるIaaS/PaaSと呼ばれるクラウドを採用することで、将来のスケールアウトを心配せずに、小さく始めることが出来ます。また、ハードウェアの調達などの期間も無くなり、ソフトウェアが出来次第、すぐに稼働させることが可能です。
順調にユーザ数やトラフィックが増えてくれば、それは売上や投資が入ることに繋がりますので、その原資を使って、クラウド上でスケールアウトさせれば済みます。クラウドを活用することで投資リスクを大きく下げることができます。それはコスト削減という意味よりも、チャレンジしやすい環境であるという意味の方が大きいと感じています。
図3:スモールスタートしない場合のリスク |
ARCで解決できること
ARCではRubyを活用することで、素早く最初のバージョンを開発することができ、クラウドを活用することでハードウェアの導入検討に時間をかけずスピーディにユーザに届けることができるようになります。そうして稼働させたソフトウェアに必要なのは、ユーザからの日々の要望を受けて逐次改修を加えていく際の保守性であり、Rubyによるプログラミングは保守性を高めるのに一役買ってくれます。
一方、ユーザ数などによるパフォーマンスへの影響が出てくれば、クラウドであればすぐに仮想的に基盤を増強することができ、スケールアウトを実現します。スピードを重視したスモールスタートからの、フィードバックを取り入れてバージョンアップを継続し、ユーザ数などの増加に応じてスケールアウトしていく、その姿勢こそがアジャイルであると言えます。
企業がARCを採用することで、継続的にビジネスリスクを最小化しつつ、外部環境にあわせたタイミングで費用対効果の最大化を図ることが出来るのです。
しかし、ARCを活用したとしても、一括外注の仕方であったり、成果物で契約を結ぶことをしてしまうと、その恩恵は受けられません。次回では、ARCに適したプロジェクトマネジメントや開発体制、ポリシーといった点を紹介するとともに、ARCを実現するためのビジネスモデルについても考えていきたいと思います。