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つの手段として、ブログを毎日書く理由は以下のような流れを想定している。
- 今日もブログを更新しなくちゃ、と思う
- 何か作ろうとすれば、必ず何かの課題に取り組むことになる
- その取り組んだ課題について、そのままブログの下書きに書きなぐる
- ある程度時間が経ってから、書きなぐった下書きを推敲して公開する
この流れのポイントというかコツとしては、必ずしも当日の出来事をブログに書いて公開するわけではないということ。当日でもいいけど、下書きと更新までの間にはある程度時間を置いたほうが、間違いを発見したり、冷静に読み返せて、良い記事が書ける気がする。
これの具体例としては、例えば以下の「Twitter Bot制作のまとめ記事」の場合、この記事自体はリリース後に書かれたものだけど、以下の記事の冒頭で紹介している8つの記事は、上述の「課題」に相当するもの。
Herokuを使って1日1回名言をツイートするTwitter Botの作り方
実際にこの制作行程の中では、やり始めてみたもののうまくいかずに失敗して、別のサービスを使って最初からやり直したりしている。また最近では、RMagickに関する記事を頻繁に公開しているけど、これは近々公開する予定のWebサービスでこのRMagickを使用していて、それに関する課題に取り組んでいるもの。
このように、Webサービスの制作行程を細分化し、その課題ごとにブログを書けば、小さい目標が連続することになり、その1つ1つをクリアしていくことになる。それをコツコツ続けていけば、高確率でWebサービスの公開まで持っていけると思うし、毎日ブログを更新するという明確な目標があるので、実現に向けて取り組みやすい。実際自分はこの方法でWebサービスを公開まで持っていけたと思っている。
最初から多くのことを成し遂げようとして極端な努力をすると、たちまちのうちに全てを放棄することになる。
— チャーリー・チャップリン (@chaplin_bot) April 7, 2011
目指すはホッテントリ
自分の場合は、1日でも間隔が空いてしまうとサボってしまいそうなので「毎日更新」を目標に掲げてやってみているけれど、継続的に上述の開発プロセスを実行できる人であれば毎日である必要はないし、そもそもブログを書く必要すらないかもしれない。
また、小さな課題ごとにブログを書くということは、開発自体のサイクルがその度にちょっとずつ中断されることになるので、長時間集中してガーっと一気にプログラミングやデザインを出来る人には向かないかもしれない。自分の場合は、仕事から帰って寝るまでの時間を利用して、小さくコツコツやっていたので今回の方法が適していたといえる部分もある。
さらには、毎日常にWebサービスの制作行程を題材にした記事を書くことはかなり難しいので、現実的には、直接的には関係ないけど技術的なこと(自分の場合はVimやMacのことなど)を書いたりすることになる。
そういう意味では、突き詰めていけばブログを書くことの必要性はあまり高くないのかもしれないけれど、自分の書いたブログ記事にはてブやはてなスター、いいね!やツイートがされれば単純に嬉しいし、それはモチベーション維持に大きく関係している。また、失敗したことについて書くと、記事にまとめている時に制作途中では思いつかなかった解決方法が見えてくることもあるし、それでもわからなかった時は疑問点や不明点を詳細に書いて公開すれば、もしかしたら詳しい人が解決策を教えてくれるかもしれない。
そうやって少しでも長く続けていって、Webサービスを開発するコツ的なものを掴めれば(自分はまだ掴めていないけれど)、この「ブログ駆動開発」という手段は既に十分な役割を果たしたと言えるとおもう。
個人的には2011年のはじめからずっと更新を続けているけれど、当面の目標としては、とりあえずブログ記事が1つ、ホッテントリに入るまでは頑張って連続更新を続けたいと考えていて、それが達成できたらひとつの区切りにしようと思っている。
func09さんとお会いして
昨日、毎日ブログを更新し続けていて良かったことが1つ増えた。@func09さんと直接お会いして話をする機会を得られた。
随分前のトラックバックを整理してたら、知った名前のブログがあるなぁと思ったらネコスタグラム作った人だった。ぬこかわいいよぬこ http://bit.ly/e6IeG2
— Mitsuru Haga (@func09) April 7, 2011
func09さんは前述のWebサービスの記事や1時間でツイッターサービスの記事、Rails3の書き方の記事など、ホッテントリの常連さんで、自分は2年ほど前からfunc09さんのブログを購読していて知っていた。また、Nekostagramを作ったときに使ったSinatraの存在を知ったのも、func09さんのSinatra入門記事だったので、個人的には結構影響を受けているブロガー・プログラマーさんだった。その方から直接「エンジニアとして共通点がありそうなので会って話をしてみたい」と言われたのでふたつ返事でOKして、昨日実際に会ってお話ししてきた。
Webサービス開発全般についての話はもちろん、現在開発中のアプリを見せてもらったり、自分が昔作ったiPhoneアプリを見てもらったり、ゾンビやら仮面ライダーの話やらといろいろ脱線しながらも、3時間ほどぶっ通しで話せてとても面白かった。こういうエンジニアつながり(?)な経験はあまりしたことがなかったので、ブログを毎日書いて、トラックバックを送って良かったなと思った。ありがとうございました。
まとめ
というわけで長々と書いたけど、自分の事例(というか現在進行形)を元に、ブログを毎日書いてWebサービスの開発を継続することについて紹介がてらまとめてみた。
そういったブログ記事を書く人が増えれば増えるほど、困ってググった時にヒットする情報が増えるのでみんなハッピーになるよねたぶん。むしろ僕がハッピーになります。Twitterのような断片的な情報では、やはりこういったことには向かないので、ブログというメディアは無くならないと思うし、無くなって欲しくないと思っている。そんなブログ連続更新100日目でした。