ひがやすを blog このページをアンテナに追加 RSSフィード

Information

2008-08-28

NTTデータとの決闘シリーズ第二幕

昨日は、NTTデータとの決闘シリーズ第二幕。戦闘服には、かりゆしウェアを選びました。

今回は、データ顧客であるユーザ企業からも参加していただきました。この人はKさんと呼ぶことにします。Kさんは、現在Seasar2(SAStruts, S2JDBC)を使って、プログラミングファースト開発を実践されている先進的なユーザです。BtoCのサイトを作っていると考えてください。

プログラミングファースト開発の詳細はこちら。

http://d.hatena.ne.jp/higayasuo/20080501/1209636051

http://d.hatena.ne.jp/higayasuo/20080721/1216607451


最初のテーマは「品質」。データとしては、


テストコードカバレッジを見るのは悪くないと思うんだけど、カバレッジの数字だけにとらわれて、本当に必要なテスト漏れてしまうことも多いので、注意が必要。また、数字をあげることにとらわれて、意味のないようなテストが増えてしまうことも問題。

カバレッジは、参考程度に見るのはいいけど、数値目標を立てて管理に使い始めると弊害が増える。


問題なのは、バグ密度ですよ。いまどき、「これくらいの行数なら、これくらいのバグが含まれているはずだから、その数に足らない場合はテストが足りない」なんて管理はないでしょう。「バグの数が少なかったら、無理やりバグを仕込んで数を増やす」なんて意味のない行動を引き起こすことになる。


Kさんはこういってました。

ユーザの立場からすると、仕様書どおりに動いていることが品質が高いということではない。多少のバグがあっても、実際に使うエンドユーザが機能に魅力があると感じて、ビジネスとして成功することが、品質の高さにつながる。

品質の高いものを作るためには、最初から動かしてみるしかない。だから、プログラミングファーストで開発しているんだと。


私の考えだと、「品質は実際に使うことで高めていくもの」です。実際に使ってみないと、目的にあっているかどうかなんてわからない。上流の設計の精度を高めるのは、限度がある。ユーザですら自分が本当に欲しいものは何なのかわかっていないのに、精度の高い設計なんてできるわけがない。

だから、プログラミングファーストで最初に作って、実際に使ってみるのです。


次のテーマは、開発プロセス

Kさんのビジネスにおいては、スピードが最も重要アイディアをできるだけ早くビジネスとして実現する必要がある。だから、開発プロセスは、軽量化したい。

軽量化するうえで目をつけたのが、設計書。昔は、たくさんコードを書かなければいけなかったので、自然言語で考えた(設計した)上で、コードを書く必要があった。でも今は、フレームワーク(SAStrutsなど)が発達しているので、コードは必要最小限のものですむ。コードを見れば何をやっているのか一目瞭然なので設計書は書く必要がない。

設計書のかわりに、外部仕様テストシナリオを書く。テストシナリオが設計書のかわりになる。

設計書を書かないことで、かなり開発のスピードが上がる。


そのとおり。これだけ理解力のあるユーザがいるなんてびっくり。

さらに付け加えると、品質を上げるためには、早期のレビュー重要プログラミングファーストでは、ペアで開発するんだけど、ペアプロではなく、一人がプログラミングをしているときに、もう一人はテストシナリオを書く。そして、お互いにレビューしあう。これでより、品質を高められると思います。


データは、コードレビューは、ほとんどしていないといってました。社員がコードを理解できないという問題もあるでしょう。コードを理解できない人が、設計書を作っているってのもおかしな話なんだけどね。

ただ、データにはアーキテクチャや設計のレビューをしている部隊がいて、その人たちが、コードの早期レビューを行なったときは、とても効果があったということでした。

早期のコードレビューは、品質を高めるのにとても効果的なので、データ全体で行なうことをお勧めします。


最後のテーマは、SI業界の多重下請け構造をどう思うか。

ずばりいえば、データは多重下請け構造の頂点にいて、まったく困っていないので、多重下請け構造をどうこうしようとは思っていないというのが、本音でしょう。

SIの新しいビジネスモデルが現れて、自分たちのビジネスが脅かされない限りは変える必要がない。

日本のSI業界の多重下請け構造をなくすためには、新しいビジネスモデルが必要なのです。


この新しいビジネスモデルこそ、「プログラミングファースト開発をするSIer」だと思っています。全部内製で、自分たちで最初から最後まで開発するSIer

ユーザから見るとこれまでより早く、コストが安く、自分たちの思ったものが手に入る。


プログラミングファースト開発をするSIer」は、私自身で作ろうかと思っています。今はその準備中プログラミングファースト開発が本当に通用するのか、もっと経験をつむ必要があるから。

追記:主催者の方の議事録が公開されているので、合わせてご覧ください。

http://d.hatena.ne.jp/ikedatka/20080831/1220184983

KanasansoftKanasansoft 2008/08/28 16:09 /高度レビュー/コードレビュー/ かと思います。

higayasuohigayasuo 2008/08/28 16:26 Kanasansoftさん
ご指摘ありがとうございます。修正しました。

在東京的算譜少女在東京的算譜少女 2008/08/28 18:16 思いつきを無責任に書きます。
>「プログラミングファースト開発をするSIer」
には、アーキテクト脳をもった営業が必要かも。さらには、ソフトウェアを知的財産として売るという
視点が必要なので、知財に強い法務部門が必要かもしれません。そこで行われる開発手法だけではなく、
おそらく「プログラミングファースト開発をするSIer」自体も、アジャイルに育っていくのでしょうね。

在東京的算譜少女在東京的算譜少女 2008/08/28 21:52 またもや、思いつきを超超超超超無責任に書きます。
>「プログラミングファースト開発をするSIer」
は、ひがさんが社長になるのでしょうけれども、iSiDの子会社とかになるのかしらん?
でもお〜それだと、アテクシのような野次馬にはちょっとつまんな〜い! 
D通の孫会社が新しく一個できてもさ〜、それがドーシタ?的な感じイ。
アテクシ的には、株主は外資系企業にしたらよろしいんじゃないかしらん、とかって思うのねーん。
日本のSI業界という箱庭を、外部から俯瞰する視点を経営戦略の中に取り込むには、
まず株主がそういう視点を持てる人たちだといいんじゃネーノなんて思うの。

でも露骨にデータに弓引くようなことすると、、、、、、、、、、、、、、、、、彼らも手強いわよんw

atsuizoatsuizo 2008/08/29 00:46 >早期のコードレビューは、品質を高めるのにとても効果的なので、データ全体で行なうことをお勧めします。
に対応したのかどうかは知らないですが、

ツールと有識者の目視でJavaコード品質をチェック、NTTデータなど3社
http://www.atmarkit.co.jp/news/200808/27/jtest.html

だってさ。

自分ところがお金もらって作って(作らせて)納品するコードのレビュー
はしないが、
他所が書いたコードのレビューでカネを取るビジネスを始めると。
なんか順番間違ってないかな。

kensir0ukensir0u 2008/08/29 01:56 ちょっと見えないのが「プログラミングファースト開発」ってのはSIerを作らないとできないものなんでしょうか???そもそもSIerってのは法人を意味してるのか?それとも業界のしくみを意味してるのか?あ、そもそも君になってしまった。

在東京的算譜少女在東京的算譜少女 2008/08/29 08:50 ひがさ〜ん!また来ちゃったの〜!!

ふと思ったんですが、たとえば、
ひがさんがiSiDをお辞めにになって
会社を設立するとして、その会社の
コアプロダクトを

>フルスタック(Seasar2 + SAStruts + S2JDBC)

にしようとしたとするじゃないですか。
そのときにですね、お辞めになる会社側ってゆーかー
水野社長がね、ひがさんにね、こんなことを
言い出したりして。

 「ひがクン、あのね、Seasarのプロダクト群は、
  キミが会社の仕事を通じて着想して、会社の
  業務時間内に、開発作業をすることを、ボクが認めてあげて、
  開発に使う機材も、全部会社から提供したんだから、
  Seasarのプロダクトのソースコードもドキュメントも
  著作権は、ぜんぶ、iSiDのものなんだよザンネーン。
  だから、会社辞めて、Seasarを使ってビジネス
  やるのは勝手だけど、何%かゼニよこせ。
  そうしたら、今まで通り、ソースコードのメンテナンスを
  する許可をあげるけど、今後、勝手にやったら、テメ、訴えんぞ。
  もっとも、これからもボクらの手先になってくれて、
  うち通しのデータの仕事とか請けてくれるなら、
  そうウルサイことは言わないけどねw
  ドーヨ?」

みたいなことをね、言い出さないでしょうかね?っていう。
普通の会社の就業規則には設けられているものだけど、
もし、iSiDの就業規則に、
 「社員が業務時間内に創作したものの著作権、
  知的財産権はすべて会社に帰属する」
という一文があったら、Seasarファウンデーションで、
著作権について、どう希望的観測が謳われていても、
就業規則が優先されるかもしれませんわよ。
なんといっても就業規則は、労働基準法で決められた、
雇用主と被雇用者のルールですからねえ。
発光ダイオードの裁判以降、会社の仕事で作ったものにも、
技術者本人に一部権利を認めるような風潮もあるでしょうが、
iSiDはいかがなものでしょうか?
なんといってもひがさんの会社の親会社は、
日本の著作権ビジネスのドンみたいなところですからね〜
一筋縄じゃいかんでしょうという気が。

ひがさんが、会社をお辞めになった瞬間に、iSiDがSeasarの
プロダクト群に対する所有権を強行に主張しはじめて、
その結果、オープンソースじゃなくなったりして、とかね。
で、Seasarがね、NRIのO3Wみたいな、

「NRIを儲けさせるシステム(エンジニア)養成ギブス」

的なものになったら、誰も嬉しくないってゆうか〜
そんなことになるなら、ひがさん辞めないでねお願い、ってゆうか〜

たとえばね、こういう思考実験をしてみるのはいかがでしょうか?

ひがさん個人とね、会社(iSiD)側がね、Seasarプロダクトの著作権は、
現時点で、どっちにあるんだ?
両方にあるとしたら、何%対何%なのか?
みたいなことで決着をつようとして、裁判をやったらどうなるか?
ひがさんに有利な法律は何で、会社側に有利な法律は何だろう?
みたいな、そういうシミュレーション。

外資をからませるといいと思ったのは、日本の著作権法や、
労働基準法だと、どうしても大企業側が強くて、個人は
守られないので、Seasarをね、欧米の特許法で保護させるような
スキームにしちゃえば?っていうのもあんねんで。

みんな、技術者としてはひがさんのファンではあるけど、
ビジネスとなったら、やっぱり勝ち馬に乗りたいんだもん。

以上、いつもの煽りでした〜!キャ〜!!

koroharokoroharo 2008/08/29 10:23 ひがさんが決闘したユーザの方は、かなりエッジで素敵ですが、ユーザも、人(担当)によってさまざまです。
今度は、エッジでない一般的な?ユーザさんも含めた上でデータと決闘をしてもらえたら面白いです。

なまえなまえ 2008/08/29 13:29 なんか、Seasar2に続いてslim3とかできてるのをみてると、higaさんなら新しいFW作っちゃいそうな気もしますね。
全日本プロレスとノアみたいに、ががっと独立したら救世主みたいに報道されそう。

><>< 2008/08/29 14:10 To:在東京的算譜少女さん
seasar関連の著作権はNPOが持ってます。
http://www.seasarfoundation.orgを熟読してから書き込んだ方がいいです

なまえなまえ 2008/08/29 22:50 NPOの主張と会社の主張が「衝突」していないかどうか、は、既に確認済みだと見なしていいということでしょうか?

たしかGNUだと「GNUにコード持ち込むときは勤め先の許可をもらったという証明書(?)をよこしてね」ということになってましたよね。その手のトラブルは来る人が事前解決しておいてくれということ。

Seasarはどうしてるんでしょうか?もしGNUと似たような方式だとすれば、(少なくとも他の人からの部分じゃなくひがさんの部分については)衝突チェックの責任はひがさん個人にあることになりますが、そういう感じでしょうか?

ところでSeasarでは著作権は「ファウンデーションに寄贈することを条件」なんですね。ちょっとびっくりしました。こういう体制は珍しい気がしたので。GPLとかとは全然違う発想ですね。ファウンデーションという非人間というか集団が持つという発想は、個人権の延長で話を進めるGPLとは違って、日本的発想なのかな。

なまえなまえ 2008/08/30 00:03 あー数字だけで云々、はわかります。無駄なテストして余計工数食って、でもやっぱり後で不具合出まくるんですよね。(経験者談)

akiranekoakiraneko 2008/08/30 02:12 ゲーム会社が似た開発スタイルだと思います
上から下まで全部責任もってやって、仕様書よりも出来上がった物重視
仕様書どおり作って楽しいゲームじゃなければがんがん手を入れていきます
その分バグが出やすいので開発中は常にデバッグチームが動いています
ゲームはスマートじゃなくって泥臭いですけれどね(笑)

mogyamogya 2008/08/30 11:52 「データ」ってNTTデータさんの略なのかなぁ。プログラミングに関わる記事だと、普通の「データ」という単語も登場しうるので、この省略は勘弁して欲しいです。

みんな大企業が悪い病みんな大企業が悪い病 2008/08/31 14:58 プログラミングファーストとか言ってる人が「今はその準備中」とか「もっと経験をつむ必要があるから」とかって言うのは少し詭弁に聞こえます。
実は「俺がやる前に誰か代わりにやってくれないかな」とか思ってませんか?
プログラミングファーストが本当にイノベーションなら「今」行動に移す事が大切なのではないでしょうか?

ikedatkaikedatka 2008/08/31 19:28 主催側です。ブクマコメントにもあるとおりソースコード診断サービスを社内外に提供しており、社内では多くのプロジェクトで利用しています。

議論中に指摘できず恐縮です。

ikedatkaikedatka 2008/08/31 19:36 主催者側です。実際のプロジェクトでもチームメンバー間(非プロパーですが)でレビューをやっている(やるように促進するチーム作りをしている)という話は、今回のディスカッション中にも出ました。
前回もそうですが、NTTデータ内部の発言がだいぶ、はしょられているなーという印象を受けました。

blogで言った者勝ち?blogで言った者勝ち? 2008/08/31 20:37 >みんな大企業が悪い病さんへ
技術の新しさと顧客満足度は必ずしも一致しないもの。
先走って最新技術ばかりを手に入れようとしても業界標準や実務レベルがそれに追随して来る保証は全く無いです。
特にアメリカなどではすぐに概念的な話だけで盛り上がる節があるので、わざわざ我々がそれに振り回される必要はないと思います。
日中に長い妄想が書けるってことは、そんなにお忙しく無いんですよ、この人。現場の問題は、ブログのネタで所詮は他人事なんですよ。

matobaamatobaa 2008/09/01 11:17 「データは、コードレビューは、ほとんどしていないといってました。」という内容の発言ってありましたっけ? ちょっと記憶にないのですが、録音を確認してみます。

しげしげ 2008/09/04 14:23 利用者品質と実装品質がごっちゃになって議論されていると感じました。
コードレビューによって改善ができるのは実装品質であり、そこでバグが多いからといって要件定義に力を入れても実装品質が改善されることはありません。その意味でデータの品質に対する改善方法はおかしいのではないか。
また、発注者にとって利用者品質と実装品質のどちらが優先されるのかが、ビジネスへのインパクトの発生の仕方によって変動するはず。いつも「合目的性」を確保すれば、多少のバグが許される、ということではない。

ともだちともだち 2008/10/07 07:38 カバレージは品質目標を明らかにすることを棚上げにして、ただ定量的に図ろうとする場合に用いられることも多いですね。バグの残存率に関してもそうです。

合目的性であれなんであれ、やっぱりバグは定性的に分析して根こそぎ絶やすのがいいですね。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証