【Twitterやってます】 koress project | しがく(shigaku) | おかじ(okaji)

2007年5月21日 01:03

実録! Webサービスの作り方 第1回


今、個人でWebサービスを作る趣味が大流行していますが、Webサービスをイチから作ろうとしても、ノウハウや事例は意外にまとまっていません。そこで今回より、koress projectが先日リリースしたWebサービス「Cha-Cha-le!」の構想からリリース・運用までを含めたリアルな事例を連載します。これから個人でWebサービスを作ろうとしている学生や技術系サラリーマン、企業戦略として超低コスト・超高スピードのサービス開発を研究したい人など、Webサービスの裏側に興味がある人の参考になるように、なるべく詳しく書きたいと思います。

第一回は、Cha-Cha-le!の構想から設計までの事例についてまとめました。

1. はじめに

この連載は、koress projectがWebサービス「Cha-Cha-le!(チャチャーレ!)」をリリースするまでを、時間を追って記述したものです。技術的な内容だけでなく戦略的な内容やメンバー同士のやりとりの実例も含んでいます。また、ポイントを掴みやすくするために、koress projectが「やったこと」、そこで芯になっている「鉄の掟」を併記しています。

Cha-Cha-le!の概要
  • Webページに対してニコニコ動画のようなコメントを付けられるサービス
  • 検討メンバー 3名 (内、開発メンバー1名)
  • 構築開始からリリースまでの期間 約40~50時間
  • プラットフォーム Perl + MySQL + Ajax
  • コスト 固定費6,000円/年

2. アイディアを声に出して議論する

3月某日、koress projectとその仲間が渋谷に集まって飲んでいた時、"Webページにコメントを付けまくる"というサービスについて書かれたPowerPointの資料を皿の間に広げて、議論になりました。「何に使えるのかわかんないな」「荒れまくりじゃね(笑)」「これカネにできる?」「どんなニーズを満たすんだ?」「サービスコアはメタデータだよね」「この酒うまー」などなど、酔いと直感で議論が進んだのですが、ともにもかくにも作ってみることに決定。

この段階でポイントになるのは、自分の中でもやもやしているアイディアを声に出して他人に説明することです。おそらく、もやもやしていて、自分でもわからない部分があると思いますが、それ以上に、アイディアを声に出すことでイメージがどんどん具体化して行きます。その際に、アイディアをメモした資料を元にして議論するとより効果的です。この時の資料は、他人がなんとなく解読できるようなものであれば、走り書きでも殴り書きでも構いません。

また、もう一つのポイントは、この時点でモチベーションを最大限に高めておくために、全力で楽しく議論することです。一般的にブレストではネガティブな意見を言わないようにするのが鉄則ですが、楽しければネガティブな意見でも一向に構いません。大切なのはイメージをなるべく具体化して、モチベーションを最大化させることです。

やったこと (3時間)
  • 会社帰りの飲み会でネタを出す 3時間
鉄の掟
  • 少しでも思いついたら必ずメモをする 
  • 声に出して議論をする 
  • 楽しく

3. 開発環境を構築して、システムの大まかな設計をする

サーバを借りる

Webサービスを作るには、サーバとその上で動くシステムの開発が必要です。イチからWebサーバの構築するのは大変面倒です。Cha-Cha-le!のケースでは、これまでkoress.jp(このニュースサイト)用に借りていた「さくらインターネット」のレンタルサーバーを流用することにしました。具体的には、さくらインターネットのミドルレンジのプランをお借りしています。

システム構成をざっくり考える

次に、システム構成をざっくりと考えて、思いつく部分からメモしました。当時のメモはあまりに汚くて、現在は解読不能です。清書したものを下の図に示します。以後の説明は、このシステム構成図を元に展開していきます。

Cha-Cha-le!は、ページに対してコメントを書き込む機能がコアですから、「URLに対してコメントを蓄積する」という仕組みがあれば、とりあえず実現できそうです。

サーバには2つのプログラムが必要になりそうです。まず、クライアントがURLを送ってくるので、コメントを返してあげるプログラムが必要です。これは、URLをキーにしてデータベースからコメントをごそっと取ってくる機能があれば良さそうです。もう一つは、クライアントからURLとコメントが送られてきたら、データベースに格納してあげるプログラムです。(システム開発の用語で言えば、前者は参照系、後者は更新系です。)これらのサーバ側のプログラムは、ブラウザから呼び出せるように、CGIという位置付けにします。

開発言語の選定ですが、CGIやDBとの相性が良く、さっくりとコードが書けるPerlを使うことにしました。もしかしたらPHPでも良かったかもしれません。サーバ負荷の心配は、サービスが流行ってからすることにします。また、ブラウザ(クライアント側)では、ページの上に文字列を合成して流す必要があります。これには、ダイナミックHTMLの扱いができるJavaScriptが適しています。また、サーバから動的に文字列をダウンロードするので、必然的にAjaxとして実装するだろうな、と予想できます。

サーバ環境を設定する

幸い、さくらインターネットではPerlが使えます。しかも、β版という位置づけながらデータベース機能も標準で付いてきます。おかげで、設定は最小限で済みました。・・・というか、こうなるだろうと予測してさくらインターネットを借りたというのが本当の所です。

まず、Perlをコーディングする環境について設定します。そんなに巨大なプログラムにはならないだろうということで、サーバ上にemacs(高性能のテキストエディタ)をインストールして、SSHでログインすることで直接サーバ上でプログラミングすることにしました。emacsのインストールについては、「さくら emacs インストール」とGoogleで検索すればいくらでもノウハウが出てきます。SSHについては、SSHクライアントをインストールすればokです。すでにSSHクライアントを持っていれば、特に設定は必要ありません。ちなみに私は「PuTTy 0.58ごった煮版」を使っています。

次に、MySQLの設定を行います。Cha-Cha-le!では、コメントの格納にMySQLを使うことにしました。さくらインターネットでは、すでにMySQLのアカウントと個人用のDBが作成されていますので、あとはスキーマを定義するだけでokです。スキーマの設計は考え始めると大変に奥が深いのですが、あまり深く考えていても仕方がないので、エイヤッと作ります。

最初は、システム構成図にあるように、2つのテーブルを作りました。その後、機能強化でフィールドにいくつか変更を加えています。なお、DBを使わずに、原始的な掲示板CGIのようにファイルにコメントを蓄積する方法でも実現できますが、DBを使うことでその後の機能強化に柔軟性がもたらされます。

[コラム] 業務上でのサーバ構築

まともなWebサービスの構築業務では、本番用とテスト用の2つのサーバを構築します。なぜならば、開発の際に本番サーバでデバッグなどをやっていたのでは、サービスが止まるわデザインが崩れるわで、不安定になるからです。これを避けるために、本番用とほとんど同じ環境を持ったテスト用サーバを構築し、テスト用サーバでシステムやサイトが安定して動作することを確かめてから、一気に本番サーバに転送する形をとります。企業で、それなり気合を入れてサービスを作る場合にはこれはMUST要件です。個人で始める程度ならば、いきなり本番サーバで作ってしまうのもよい選択です。最初からサービスの安定などに気を使いすぎて、テスト用の環境の構築に時間を掛けていると、モチベーションも下がってきてしまいます。

やったこと (3時間, 累計6時間)
  • レンタルサーバーを申し込む 15分
  • システム構成をざっくりメモする 30分
  • DBを構築する(スキーマ定義) 15分
  • 必要なソフトのインストールなど 2時間
鉄の掟
  • メモとノートを活用する
  • 最初から無駄な心配はしない(大丈夫、最初は誰も使ってくれない)
  • モチベーションが冷めないうちに作る

 

ここまでで、第一回の内容であるシステム設計と開発環境の構築までが終わりました。お酒を飲みながら議論した時間も含めて、約6時間です。サーバなど、これまでの資産を流用した部分もありますが、この辺りの内容までは勢いで一気に済ませてしまうのがよいでしょう。第二回は、設計した内容を具体的なコードに落とし込んで行くフェイズです。コア機能の開発や付加機能の開発について説明します。

>> 第2回はこちら

--

関連情報

田口元の「ひとりで作るネットサービス」探訪
個人サービスを作るコツ
個人サービスを作るコツに思ったこと
個人でネットサービスを運営するための5つのコツ(momose版)
個人でWebサービスを作る時のポイント(+)
個人でWebサービスを作る時に一番大変なこと

トラックバック

コメントする

※返信が必要な場合にはメールにてお問い合わせください.