Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

書評『Webサービスのつくり方 - 「新しい」を生み出すための33のエッセイ』

和田裕介(yusukebe)著『Webサービスのつくり方 - 「新しい」を生み出すための33のエッセイ』をご恵投いただきました。ありがとうございます。本を書いているという話はYAPC::ASIA 2012のトークなどでうかがっており、楽しみにしていたので、うれしく思います。

Webサービスのつくり方 ~「新しい」を生み出すための33のエッセイ (Software Design plus)

Webサービスのつくり方 ~「新しい」を生み出すための33のエッセイ (Software Design plus)

和田さん、というか、yusukebeさんとは、もちろん彼我の差は歴然としてあるにせよ、プログラミングの学習過程や時期がだいたい重なっていて、第1章の「心構えと下準備」で述べられている内容など、自分もそのように歩んできた身なので、共感を覚えます。そのあたりのことは以前書いたので繰り返しませんが、懐しい思いがしました。その上で、という感想を述べます。

本書は以下5章からなっています。

  1. 心構えと下準備
  2. 企画
  3. 設計
  4. 開発
  5. プロモーションと運用

第1章「心構えと下準備」では、のっけから"shut the fuck up and write some code"という、Perl界隈で有名な標語から書き出されるのでびっくりするのですが、難しいことはいいから「どうやって書くか」よりも「何を書くか」に軸を置いて、どんどん手を動かしていくことが薦められています。

昨今は、Webアプリの開発環境が整えられてきたこともあって、いきなりRailsなどのフレームワークを使って初心者にWebアプリを作ることを薦める文献も多いですが、この本が薦めるのはCLIアプリ。ライブラリを使って、まず面白さを簡単なスクリプトで検証してみること、です。確かに、Webアプリは見た目は派手ですが、本当の初心者が実践するには、HTTPや、HTML/CSSなどの知識が必要である等、前提が多過ぎるものです。「まずやってみること」以前に、準備に明け暮れるだけで挫折してしまうでしょう。

合わせて説かれるのが、アウトプットしていくこと。ゆーすけべーさんがアウトプットの効果の例として挙げているdankogaiさんによる「添削」は、僕もいただいたことがあります。初学者の頃だったのでびっくりしつつも、とても勉強になり、感謝しています。また、そうしたことを続けていくうちに、プログラミングのコミュニティとの交流などもできると、切磋琢磨する気持ちが起こって、よりスキルが伸びるという説明も納得です。とにかく、小さなことからでもやってみること。やった結果を外に出すことが重要であることが、繰り返し語られています

第2、第3章は、この本のキモとなる部分だと思います。ただ開発に必要なスキルを身につけるだけでなく、本書が「Webサービスのつくり方」と銘打ってあるからには、また、著者が開発だけでなく、ひとり、あるいは少人数で数々のサービスを手がけてきたクリエータであるので、企画や設計を実際にどうやっていくかというのは、とても面白い部分。企画やアイディアに関する書籍を引きながら、著者が自ら育ててきたのであろうフレームワークを紹介しつつ、具体的に語られます。そのフレームワークとは、以下の7つからなるものです

  1. 哲学
  2. アイディア
  3. テーマ
  4. コンセプト
  5. 名前
  6. デザイン
  7. 内部設計

「どう」から「何を」指向でモノを作っていくにしても、情熱だけではよいものはできないでしょう。このような、著者の経験から醸成されていったのだろう考えかたの筋道に触れることで、より芯の通った開発を行っていけるようになるのだと思います。

ところで、僕自身は一応はプログラマを職業としている者であるので、本書に述べられる開発に関する内容については、知らないことや実践できていないことはありません。なので、主に以下のふたつの観点から読むことになります。

  1. Webサービスの企画のしかた
  2. 新人研修や、初心者への導入に使えるかどうか

まず、1.について。上記した通り、第2章の企画で語られる7つのステージは、簡潔かつ必要充分で、それでいて実際のサービス開発の現場においても充分に実践されているかといえば、そうともいえないものであると思います。たとえば、僕(と同僚の@hsbt氏)がここ数ヶ月、自分なりに咀嚼し、また、実際の開発にも取り入れてきたリーンスタートアップなりインセプションデッキなども、同様のフレームワークです。

それらのうちの何を選ぶかはあまり問題ではなくて、重要なのは、なにかしら一貫した筋に基づいて考えを整理したり、共有したりすることで、開発コミュニケーションを円滑化することでしょう。そういう意味で、本書の記述によって、あらためて考えかたの筋道を整理することの大切さを確認しました。

2の「新人研修や、初心者への導入に使えるかどうか」という点に関しても、まず、「何を」というアイディア、プロダクト指向から入るという点で障壁が低いと思えるし、また、第4章「開発」で述べられているような平易な記述、自分用ツールキットを持つことの薦めなど、得るところの多い記述を本書は持っていると考えます。Webサービス、あるいはプログラミングを始めたいけどなにをしたらいいのか……というひとがいたら、まず薦めてみるうちの一冊になるでしょう。

9月のYAPC::ASIA 2012で、著者とお話しをする機会がありました。その時おっしゃっていたので特に印象に残っているのが、ボケての話です。このサービスは4年ほど前にリリースされたものが、2012年の春頃から、まとめサイトなどの影響により、突如として大きな注目を集めるようになったそうです。サーバの負荷など大変なことになり、プログラムを書き換え、システムを一新した話が、本書でも紹介されています。第5章「プロモーションと運用」は、これから作り始める初心者にはまだ関係のない話かもしれませんが、「ボケて」の例にあるように、突如としてアクセスを集めた時にチャンスを逃がすようでは、せっかくのサービスが無駄になってしまいます。

また、さらにこの例からわかるのは、Webサービスは、何が、いつヒットするのかまったくわからないということでもあるでしょう(「ボケて」は、実際みてみるとわかるように、あんなに面白いサービスなのに、4年経った後に突如ヒット)。だから、上述の7つのステージや、リーンスタートアップなどのフレームワークによって明快な筋道を持って考えることで、素早い試行錯誤をすることが、これからの「Webサービスのつくり方」にはますます必要になってくるだろうという教訓を読み取ることができるでしょう。

というように読んでみると、この本がその実、初心者向けに見えながら、普通にWebサービスを仕事としている我々にとってもなお役に立ったり、あらためて認識を深めさせられたりするものであることがわかります。是非手に取ってみてください。