2,000行書いたら公開すべし!

反省会です。Shibuya.js 用に作っていたアプリが4日間猛烈に頑張ったんですが、完成しませんでした。Flash版の ZooKeeper を Flash 用の処理系を作って、Ajax で動くようにしようとしたんですが、最後まで作れなかった。

うまくいく時、うまくいかない時があるんですが、過去の例で成功例・失敗例を分類すると、約2,000行以内で公開したらうまくいくみたいです。何でだろう?HotRuby も Dokan 関係のライブラリもどちらも約2,000行くらいです。2,000行あると、そこそこ動く物が作れるので、いい数字です。

一気に2万行とか書いてから公開しようとすると、さっぱりうまくいきません。たぶん、そういう計画を立てた時は、2000, 4000, ... , 20000 と、計画を10分割、つまり10段階に分けて公開した方がいいみたいです。たぶん。でも、そのための計画変更って、結構コツが必要です。どうやるんだろう?

今回のも、

  1. SWF を JSON に変換する
  2. Flash の処理系を作る

の2ステップですが、第1段階の、Transform SWF を使って、JSON に変換する処理だけで 1,000行も書いてしまいました。HotRuby の場合は、Ruby 自体に変換する機能があるので、数十行書くだけで、この部分が作れたんですが、今回、ごりごり書いたのは問題でした。Flex SDK 3 に、SWF -> XML のコンバータがついているらしいのですが(使ったことないので正確には不明)、これを使えば良かった。 orz

加えて、処理系を作る方も、HotRuby の時は、自作の Ruby アプリしか動かそうとしなかったんですが、今回は ZooKeeper を動かそうとしたのが敗因でした。ZooKeeper 自体が Flash のいろんな機能を呼び出していて、それを全て実装するのが量が多すぎました。クラスライブラリも色々実装しないといけないわけだし。

書いている最中に 2,000 行で収まらないことは、途中からはっきりとわかったんですが、その段階で、ZooKeeper という目標をあきらめ、目標変更すべきでした。ZooKeeper は Ver.2 の目標にすべきでした。

ソースコードは予定の3倍にふくれあがる」という有名な経験則がありますが、特に、今回のように、何をどれくらい書けばいいのかよくわからずに、アジャイルな手法で開発を進めている時は、「目標変更」は特に重要なようです。

あと、今回はやりませんでしたが、目標を語ってしまうと、プライドが邪魔して、ある種、「負け?」的な目標変更がしづらくなるので、公開するまで目標は語らない方がいい気がします。(笑)

2,000 行という数字は、僕の場合の経験則であり、他の方まで一般化できるとは全く思っていません。きっと違う数字だと思います。でも、何かの参考にどうぞ。

以上、反省会でした。m(_ _)m

(2008年12月12日追記)

2000行という基準は、JavaScript や Groovy の場合だと思います。Java は、IDE が色々と生成してくれる代わりに行数が増えてしまうので、Java なら 5000 行くらいかもしれません。