2011-04-15
ブログ駆動開発のすすめ 〜連続更新100日目を迎えて
「2011年は本気出す」 そう思って(毎年思ってるけど)、できるだけ多くアウトプットすることを目的に、今年のはじめから毎日ブログを書くことを自分の中で決めて、いちおう三日坊主にはならずに、今日で連続更新100日目を迎えた。
記事の内容は技術系に的を絞り、主にアプリやサービスを作る過程で得た情報や失敗を書いてきた。そして成果物としては、1月にチャップリン名言Twitter Bot(ブログ記事)、2月にNekostagram(ブログ記事)、3月にInustagram(ブログ記事)を公開した。中でもNekostagramは多くの人に使ってもらえた。さらには昨日、Nekostagramとブログをキッカケに、自分がよく知っているブロガーの人と会って話をするという機会も得られた。
「毎日ブログを更新する」という1つの目標を掲げたことで、今のところ結構いいかんじに物事がすすんでいるように思える。ので、連続更新100日目を1つの節目として、Webサービスを個人で作る場合の手段の1つとして、今自分が実践しているこのブログ駆動開発(Blog Driven Development: BDD)(笑)について書いてみようと思う。この方法は特に、これからWebサービスを作りたいと思っている人におすすめかも。
自分でWebサービスを作りたい
2010年の年末に「自分でWebサービスを作りたい」関連のエントリーが流行ったのは記憶に新しいけど、これらの記事は読んでいてめちゃくちゃワクワクしたし、自分でも何か作りたくてウズウズした。以下の記事のブックマーク数やブックマークコメントを見れば、同じように思った人が少なくないのは想像に難くない。
- 自分でWEBサービスを作りたいと思っている人へ
- 自分でWebサービスを作ってたら起業することになりました - func09
- 今年はWebサービスを作りたいと思っている人にお勧めのエントリーまとめ | ロプログ
これらの記事はちょうど昨年末に流行ったので、冒頭にも書いたとおり「2011年は本気出そう」と思わせてくれたし、奮い立たせてくれた。
「とにかくオープンする」の重要性
そして、これらの記事の中でも特に強いインパクトを受けたのは、@func09さんの記事のこの部分。
アイデアはある、スキルもある、けれども作る時間がない・・・そんな考えを打ち消すために @komagata の書いた記事を何度も読んで、「とにかく作る!」と言い聞かせました。
目標に掲げたのが、「とにかくオープンすること。」なんて低い目標だと驚かれるかもしれませんが、仕事で作るのとは違って個人でWebサービスを作る上で一番大変だったのは“やる気を継続させること”でした。
個人でWebサービスを作る時に一番大変なことこの時期は、ネット上で見つけたアワードに出すという目標を掲げることで、短い期間で一気に作る。という事をしていました。
この部分で引用されている@komagataさんの記事も含めて、これにはとても共感し、実践したいと思った。
自分の過去を振り返ってみると、アイデアを思いつき、ちょっと作りかけてみただけで、最後まで作りきらずに日の目を見なかったWebサービスやiPhoneアプリなどがいくつかある。これらは、技術的な問題にぶつかって頓挫したり、自分のデザインが気に入らなくて悩んだままになったり、モチベーションが続かずに放置してしまったりなど、やめた理由は様々だけど、どれもオープンまでこぎつけられなかった苦い思い出となっている。個人で何か作ろうと思ったことがある人なら、一度や二度はそういう経験があるのではないだろうか。
@func09さんの「とにかく作る」や@komagataさんの「とにかくオープンする」は、個人で作るWebサービスを(クオリティも含めて)公開できる状態にまで持っていくことの難しさと、そしてそれまでの障壁を乗り越えることの重要さを説いている。と思う。さらに@komagataさんの記事では、そこまで持っていくためのコツが紹介されていて、中でも以下の2つは特に、自分でも真似て実践しようとしている。
- 開発初日に動くものを作る
- 1ヶ月でオープンする
そして、この「公開できる状態に持っていく」ための1つの手段として、自分では「ブログを毎日書くこと」を目標に掲げて、現在進行形でやってみている。
ブログ駆動開発(Blog Driven Development: BDD)
個人で作るWebサービスを「公開できる状態に持っていく」ための1つの手段として、ブログを毎日書く理由は以下のような流れを想定している。
- 今日もブログを更新しなくちゃ、と思う(駆動)
- 何か作ろうとすれば、必ず何かの課題に取り組むことになる(Webサービスの制作行程)
- その取り組んだ課題について、そのままブログに書きなぐる(ブログ下書き)
- ある程度時間が経ってから、書きなぐった下書きを読み返して、推敲して公開する(ブログ更新)
この流れのポイントというかコツとしては、必ずしも当日の出来事をブログに書いて公開するわけではないということ。当日でもいいけど、下書きと更新までの間にはある程度時間を置いたほうが、間違いを発見したり、冷静に読み返せて、良い記事が書ける気がする。
これの具体例としては、例えば以下の「Twitter Bot制作のまとめ記事」の場合、この記事自体はリリース後に書かれたものだけど、この記事の冒頭で紹介している8つの記事は、上述の「課題」に相当するもの。
実際にこの制作行程の中では、やり始めてみたもののうまくいかずに失敗して、別のサービスを使って最初からやり直したりしている。また最近では、RMagickに関する記事を頻繁に公開しているけど、これは近々公開する予定のWebサービスでこのRMagickを使用していて、それに関する課題に取り組んでいるもの。
このように、Webサービスの制作行程を細分化し、その課題ごとにブログを書けば、小さい目標が連続することになり、その1つ1つをクリアしていくことになる。それをコツコツ続けていけば、高確率でWebサービスの公開まで持っていけると思うし、毎日ブログを更新するという明確な目標があるので、実現に向けて取り組みやすい。実際自分はこの方法でWebサービスを公開まで持っていけたと思っている。
目指すはホッテントリ
自分の場合は、一度でも間隔が空いてしまうとサボってしまいそうなので「毎日更新」を目標に掲げてやってみているけれど、定期的に上述の開発プロセスを実行出来る人であれば毎日である必要はないし、そもそもブログを書く必要すらないかもしれない。また、毎日常にWebサービスに関連した記事を書くことはかなり難しいので、現実的には直接的には関係ないけど技術的なこと(自分の場合はVim, Vimperator, Ruby, Macのことなど)を書いたりすることになる。
突き詰めていけばブログを書くことの必要性はあまりないのかもしれないけれど、自分の書いたブログ記事にはてブやはてなスター、いいね!やツイートがされれば単純に嬉しいし、それはモチベーション維持に大きく関係している。また、失敗したことについて書けば、もしかしたら詳しい人が解決策を教えてくれるかもしれない。
そうやって少しでも長く続けていって、Webサービスを開発するコツ的なものを掴めれば(自分はまだ掴めていないけれど)、この「ブログ駆動開発」という手段は既に十分な役割を果たしたと言えるとおもう。
個人的には2011年のはじめからずっと更新を続けているけれど、当面の目標としては、とりあえずブログ記事が1つ、ホッテントリに入るまでは頑張って連続更新を続けたいと考えていて、それが達成できたらそこをひとつの区切りにしようと思っている。
func09さんとお会いして
最後に、昨日、毎日ブログを更新し続けていて良かったことが1つ増えた。FoodFoto代表の@func09さんとお会いして話をする機会を得られた。
随分前のトラックバックを整理してたら、知った名前のブログがあるなぁと思ったらネコスタグラム作った人だった。ぬこかわいいよぬこ http://bit.ly/e6IeG2
func09さんは前述のWebサービスの記事や1時間でツイッターサービスの記事
、Rails3の書き方の記事
など、ホッテントリの常連さんで、自分は2年ほど前からfunc09さんのブログを購読していて知っていた。また、Nekostagramを作ったときに使ったRubyのフレームワーク「Sinatra」の存在を知ったのも、func09さんのSinatra入門記事だったので、個人的には結構影響を受けているブロガー/プログラマーさんだった。その方から直接「エンジニアとして共通点がありそうなので会って話をしてみたい」と言われたのでふたつ返事でOKして、昨日実際に会ってお話ししてきた。
Webサービス開発全般についての話はもちろん、現在開発中のTitanium Mobile製のiPhone用FoodFotoアプリを見せてもらったり(これは面白そうなので期待!)、自分が昔作ったiPhoneアプリを見てもらったり、ゾンビやら仮面ライダーの話やらといろいろ脱線しながらも、3時間ほどぶっ通しで話せてとても面白かった。こういうエンジニアつながり(?)な経験はあまりしたことがなかったので、ブログを毎日書いて、トラックバックを送って良かったと思った。ありがとうございました。
まとめ
というわけで長々と書いたけど、自分の事例(というか現在進行形)を元に、ブログを毎日書いてWebサービスの開発を継続する「ブログ駆動開発(Blog Driven Development: BDD)」について、何か成功を収めたわけでもないのに、紹介がてらまとめてみた。
そういったブログ記事を書く人が増えれば増えるほど、困ってググった時にヒットする情報が増えるのでみんなハッピーになるよねたぶん。むしろ僕がハッピーになります。Twitterのような断片的な情報では、やはりこういったことには向かないので、ブログというメディアは無くならないと思うし、無くなって欲しくないと個人的には思った。そんなブログ連続更新100日目でした。
- 13 http://b.hatena.ne.jp/entrylist/it
- 11 http://pipes.yahoo.com/pipes/pipe.info?_id=tDfBdGWF3RGl9XNm1L3fcQ
- 9 http://homepage1.nifty.com/maname/
- 9 http://pipes.yahoo.com/pipes/pipe.info?_id=faa858a20082ef6d25ad27557e37e011
- 8 http://reader.livedoor.com/reader/
- 6 http://b.hatena.ne.jp/
- 5 http://twitter.com/
- 5 http://www.facebook.com/l.php?u=http://d.hatena.ne.jp/ruedap/20110415/bdd_blog_driven_development_100_days&h=73d27
- 4 http://b.hatena.ne.jp/hotentry/it
- 4 http://bit.ly/hnjktQ