1人のプロジェクトと、チーム開発をつなぐ「鳥の目」

江島さんの記事に触発されつつ、丁度よく考えていたことを書き出してみる。WEB系の開発は、ますます少人数で効率的におこなえる環境が整ってきて、ちょっとしたサービスなら一人で作って公開もできてしまう。ただ、やはりある程度の人数でないと作れないものもある。どちらも違った楽しさがあるけれど、「一度は一人でやってみる」という経験は、チーム開発でも役に立つし、「一人でも作れるかもしれない」という思い込み、予感は、ソフトウェアの多様性、可能性をひろげていくのではないだろうか。

まずはソフトウェアやサービスをつくる過程を、ちょっと抽象的にザックリいくつかのステップにわけてみる。

  1. 原料の塊から、形を削り出す
  2. 持ちやすい、使いやすいフォルムに磨く
  3. 透明な形に色をつける
  4. 使い方を決めて、説明する
  5. 使ってもらうために公開する

ソフトウェアが面白いのは、作り始めるときに、1〜3の間を割と自由に繰り返せること。WEBの開発に絞って具体的にしてみると

  1. 利用する言語やフレームワークを決める。DBのスキーマを定義する。全体的な設計とモデル実装。
  2. 画面遷移や各画面の要素、HTMLの基本的なDOM構造を定義。AjaxやDHTMLな部分の実装。
  3. インターフェースをCSSでデザイン

この辺は、得意なところから初めてもいい。最近だとユーザーインターフェースの部分から初めて、サービスの具体的なイメージを徐々につくっていくことも多い。4〜5も、ネットで公開するのであれば、ベータ版として出して、あとから機能を拡張したり、開発ブログで説明したり、継続的におこなうことが可能。

一人で小さなサービスをつくると、この辺を全部自分でやることで、全体の流れがみえて楽しいのかも。公開したものを人に説明しながら、「こうした方がいいかな?」と思った部分はどんどん変えていくと、頭の中を整理しながら、手を動かすことができる。感覚的にノッてくると、スピードもあがってくる。

一方で、規模の大きなものを作るためには、うまく分業をしなくてはいけない。分業しつつ、同じ目的に向かうには、それぞれのパート、ステップを担当している人同士でうまくフィードバックをかける必要がある。フィードバックは、自発的に他の人に伝えていく行為なので、それがうまく噛み合っているチームは、柔軟でスピードも速い。

どのようなフィードバックを伝えると、他の人が動きやすいのか、具体的にイメージできることが重要なのかも。その時に、小さなプロジェクトでも、全部の流れをやった経験は、かなり役にたつのだろう。

オープンソースのフレームワークやライブラリを活用することで、全体的なコスト・工数が減ることは大きな変化に違いない。それに加えて、小さい規模の開発や制作を、一人で行えるようになることで、全体を俯瞰できる「鳥の目」を手に入れられることが、実は潜在的に重要な変化をもたらすような気もします。

ブログとかPodcastingとか、ネットのサービスという「道具」の作成で起きつつある、そういう変化は、その先にある、人間の創作活動という、より大きな領域にもつながっていくのだろうか。