投稿

5月, 2010の投稿を表示しています

アジャイル開発の生産性について

イメージ
IPAの「非ウォーターフォール型開発に関する調査」という文書を読んでいて,ソフトウェア開発の生産性に関する興味深い結果を見つけた.アジャイル型開発(非ウォーターフォール型開発の一種)によって,生産性が向上したにもかかわらず,開発コストはさほど削減されていない,という結果が出ているのだ. 下のグラフを見てほしい.生産性も,Time-to-Marketの加速も,ソフトウェア不具合の削減も,半数以上で10%以上の改善ができているにもかかわらず,10%以上のコスト低減が実現されているところは30%ほどにとどまっている. 出所:情報処理推進機構「非ウォーターフォール型開発に関する調査」より抜粋. 生産性は,ソフトウェア開発によって生み出されるソフトウェア価値を,開発工数で割ったものである. 生産性 = ソフトウェア価値 ÷ 開発工数 もし,ソフトウェア価値が変わらないものとすれば,生産性の向上は開発工数の減少を意味し,それは,開発コストの減少につながるはずだ.なぜなら,特別な開発ツールへの投資をしない限り,開発コストは開発工数に比例するからだ.しかし,調査結果はこれに反する.いったい,どうなっているのだろうか? コストが減らない理由は,「ソフトウェア価値も増加している」としか考えられない.ソフトウェア価値は,すなわち,ソフトウェア品質である.生産性は高まったのだが,要求されるソフトウェア価値(品質)が上昇しているため,開発工数はさほど減っていないのだ.そのため,開発コストも減らない. この推測を支持する情報がもうひとつある.それは,「ソフトウェア不具合の削減」である.不具合が減るということは,品質が高まるということである.つまり,ソフトウェア価値を高めるために,開発工数がつぎ込まれている,と考えられるのだ. ここに,日本のソフトウェア開発の慣習が見えてくる.日本のソフトウェア開発の特徴のひとつに,「品質に関して明確な取り決めを行わない」というものがある.ユーザー側が,期限ぎりぎりまで,品質向上(機能追加や不具合修正)を求めるのである.つまり,開発側が,品質に対して,無制限の責任を負う習慣があるのだ. 生産性の向上を,開発コストの削減につなげるためには,この習慣を断ち切る必要がある.完成品の品質基準を明確に記述し,それ以上の品質改善は別契約

要素技術立国ニッポンとなるか?

今後,日本の経済を支える技術とは,家電でもゲーム機でもなく,MEMSなどの要素技術となるだろう.昨日述べたばかり( 羽岡哲郎ブログ: ハードウェアを観察すればITの将来が見える )の「ITの進歩を予測するには,ハードウェアの進歩に注目する」という原則を当てはめるとこうなるのだ.日本の要素技術力の高さは,サムスンのトップの言葉にも表れている.いまや世界にとって,日本の家電メーカーが消えることより,日本の要素技術が消えることのほうが困るのだ.MEMSに見る発展(参照: 日経主催のセミナー )は,新たなイノベーションを予感させる.

ハードウェアを観察すればITの将来が見える

ITの世界では,ソフトウェアの進歩が与えるインパクトよりも,ハードウェアの進歩が与えるインパクトのほうが,はるかに大きい.便利なアプリケーションが豊富なスマートフォンは,GPSやバッテリー,液晶パネルなどの,様々なハードウェアの小型化と高性能化抜きには存在しえない.さらに,そのスマートフォンにユビキタスなサービスを提供するクラウド技術も,高速通信インフラと大規模なデータセンターがなければ存在し得ないし,そのデータセンターを支える高性能サーバー,高速ネットワークがなければ絵に描いた餅でしかない.ソフトウェアの発展は,ハードウェアの発展抜きに語ることができないのだ. このような現実をみると,ITの今後を占うためには,ソフトウェアだけでなく,ハードウェアの発展に注目することが重要であると考えられる.そのためには,まず現状の分析をソフトとハードの組合せの観点で考えてみる. 「様々なソフトウェアが,どういうハードウェアの上で実現されているか?」 「別のハードウェア上で動かすことは可能か?」 「ハードウェアが進化すると,そのソフトウェアはどのような影響を受けるか?」 そういった視点で現状を分析した上で,ハードウェアに,今後どのような変化が起こりそうなのか,考えてみる. 「どのようなハードウェア技術が研究段階にあるのか?」 「その技術がどのようなインパクトを与えるのか?」 「世の中に眠っているハードウェアはないだろうか?」 こうして得られるハードウェアの変化を,ソフトウェアに結び付けて考えることによって,次にソフトウェアで起こる変化を,かなり正確に,予測することが可能になると考えられるのだ.

生産性と成長性の関係

以前,生産性と成長性の関係について,考察してみた( 羽岡哲郎ブログ: 成長性を高めるには生産性向上とともに市場の創造が必要 ).今読み返すと,何を言いたいのかよくわからないと感じている.そこで,もう一度,直感的な考察をしてみたい. 成長性 成長性は,総資本の増加率と定義する.漠然とした定義だが,直感的には妥当だろう.企業でいえば,自己資本,個人でいえば,純資産の増加率,ということになる. 生産性 生産性は,単位当たりの資本から生み出される付加価値である. (生産性)=(総付加価値)÷(総資本) 生産性と成長性の関係 単位期間(例えば1年間)に生み出された付加価値の総和のうち,一部が資本として再投資される.総付加価値に対する,この再投資分の割合を(再投資率)とすると,次の式が得られる. (資本増加分)=(再投資率)×(生産性)×(総資本) この式の両辺を総資本で割ると,生産性と成長性の関係が得られる. (成長性)=(再投資率)×(生産性) したがって,再投資率が一定のもとでは,成長性は生産性に比例する. ところが,日本のような成熟市場では,再投資率を一定に保つことが困難になってくる(はずである).たとえ再投資をしたとしても,高度成長期のころと同じだけの見返りを期待することはできない.成長性を持続させるためには,新たな投資先を開拓せねばならないのだ.このことは,前回指摘したことと同じになる.結局,生産性を上げるだけでなく,新たな市場開拓が必要なことに変わりはない.

名前付けは単射を意識する

イメージ
今日は,ドキュメンテーションの社内トレーニングを受けてきた.ビジネス資料作りに大変参考になる内容だったので,ポイントをまとめておく. 「名前の付け方は単射」 最初に印象に残っているのが,名前の付け方は誤解のないようにすること,というものだ.つまり,名前の指す対象が,書き手と聞き手で違ってはならない,ということだ.これを,数学的にいうと「単射」となる.簡潔な文章を書く際には,様々な対象に名前をつけなければならない.例えば,概念,動作,昨日,物,プロセス,データ,などなど,文章中に何度も登場するものは,適切な名前をつけて,その名前で呼んだ方がずっと効率が良くなる.しかし,書き手と読み手の間に,認識のずれがあると,コミュニケーションは成立しなくなってしまう.だから,命名は単射でなければならない. ちなみに,単射は英語で injection である.そういえば,Dependency Injection というパターン名があるな... 上手い命名を考えるには,『パターンランゲージ』という本が参考になりそう. あとは,箇条書き 相手の知っていることから入る. 一度間違った理解をされると,その修正コストはとても大きい. 業務フロー定義では,だれが,いつ,なにを,どうするか,について書く 業務フロー定義では,「どうやって」は書かない(書ききれない) 業務フロー作成手順:1) 業務の分類,2) ヒアリング,3) 清書&疑問点リストアップ,4) 確認,仕上げ 例外的業務を意識する 比較表は,実質的な違いがあるものを比較する 評価軸が多岐にわたる場合は,グループ化を試みる(意思決定に何が重要か意識) パワポ作成前に,「タイトル,メッセージライン,備考」の表を作成する 結局「良いデザイン」とはなにか.というところに集約される.良いデザインとは,そのデザインに触れる人(聞き手,読み手,使い手)を迷わせないものだ.

良い文章を書くための参考文献

イメージ
良い文章(論説文)を書くことは,簡単なことではない.思いつくままに単語を並べても,決して,良い文章は出来ない.文章が長大になるほど,良い文章にすることは,より困難を極める.ちょうど,一軒家を建てるのと, ブルジュ・ハリファ(ブルジュ・ドバイ) を建てるのとが異なるように. そもそも,良い文章とは何なのだろうか.それは,読み手が理解しやすい文章である.さらに言えば,良い文章は,書き手が伝えたいメッセージを,読み手が正確に理解できなければならない.読んでいる途中で生じる疑問には全て,文章中で答えていなければならない.最初から最後まで,順に読むだけで,すーっと理解できる文章,それが,理想の文章だ. ところで,この文章は良い文章ではない.「理解しやすさ」を心がけてはいるが,まともに校正をしていないので,改善ポイントは山ほどあるだろう.見つけた方は,コメントで,自由に指摘していただきたい.ただし,修正するかどうかは,気分次第だが. さて,ここで,良い文章を書くにあたって,大変参考になる文献を,二冊ほど紹介したい. 一冊目は,"The Elements of Style". こちらは,英語の本なので,当然,英語文章の書き方に特化した内容になっている.しかし,そのエッセンスは,様々な言語にも,共通に使えるものばかりだ.極端な話,プログラミング言語にも応用できる内容になっていると,私は本気で思っている.この本は,どちらかと言えば,ミクロな視点に立っており,句読点の使い方や,明快な文章にするための注意点など,文章の最小単位を洗練させる方法について,詳細に書かれている. 二冊目は,『考える技術・書く技術』. こちらは,コンサル会社の新人研修でよく使われる,定番の教科書として有名だ.この本に対する,アマゾンの書評を読むと,「文章の書き方の本なのに,この本自体が読みにくい」という,ネガティブなものが多いが,私はさほど気にならなかった.こちらは,マクロ寄りの視点で書かれており,良い長文を書くための,「設計方法」に詳しい.超高層ビルの建設には,入念な構造設計が必要なように,長い文章にも,しっかりとした論理構造が必要なのだ. 余談ながら,ここでも,私は,プログラミングと同じだと思ってしまう.プログラミングも,その規模が大きくなるにつれ,きちんと

英語教育より哲学教育が先

私は,英語教育は大切だと思うが,それよりも先に,哲学教育を充実させるべきだと思う.なぜなら,それが,日本の衰退を防ぐうえで,最も重要な役割を果たすからだ.英語は所詮「道具」なのであって,それ自体が価値を生み出すことはない.それよりも,問題なのは,日本人の集団知の低さが,日本の国力を,相対的に低下させていることにある.個々の知力は優れていても,集団になったとたん,総和よりも低い知性となってしまう.シナジーどころか,足の引っ張り合いが起きてしまう.その結果,生み出す価値が低下し,さらには,国の成長が止まっているのだ.これを打破するには,集団知を高めねばならないが,どうするか?それは,発展的な議論をする力をつけることだ.古代より,人類は,議論によって個々の知性を結集し,より優れた知性へ発展させてきた.そして,その議論を鍛える学問こそ,哲学なのである.日本は,まず,哲学教育を充実させることによって,国力の強化を図るべきなのであって,決して,英語教育が先であってはならない.

ロジカルシンキングの続き

先日のブログに,ロジカルシンキングを使って家庭の問題解決をするという投稿をした.ここで,問題点をまとめておくと,次のようになる.子供のいる共働き家庭で,仕事と子供の世話に忙殺され,妻が慢性的な疲労感を訴えており「職場へ近いところに引っ越そう」と提案してきている.それは,一見正しそうな解決方法に思えるが,思いつきの解決策に過ぎず,それが根本的な問題解決になるかどうかは不明である.そこで,ロジカルシンキングを使って,あらためてこの問題に取り組んでみたわけである. そして,その結果,次の二つの課題を得るに至った. 睡眠の質を改善する. 通勤時間を短縮するため,職場により近い場所に引っ越す. 初めに手をつけるのは,問題の根っこを特定することだった.そのためには,現象として表れている問題から出発する,Whyツリーを作ることが良い.ポイントは,ツリーの各節で,枝が MECE になっていること.そうしないと,重要な要因を見落としてしまったり,焦点がぼやけてしまったりする. 今回は,Whyツリーの一段目では,「時間割フレームワーク」を使ってみた.日々の活動を,時間割にすることで,疲労蓄積の要素を分解するわけだ. 早速,一日の時間配分を割り出してみたところ,睡眠,通勤,家事,勤務,の4つに大きな時間を割いていることが分かった.これらのうち,睡眠は疲労回復のために消費される時間であり,残りは疲労の原因となる時間である.日々の疲労を低減するためには,前者の疲労回復効果を高めつつ,後者の影響を軽減する必要があることが明らかになった. 初めに睡眠を深掘りしてみると,睡眠の質を改善できるのではないかと考えられる.睡眠の疲労回復効果は,およそ,「質x時間」と考えられる.妻の場合,睡眠時間は8時間程度と,一般の平均的な睡眠時間と比較してやや長いので,睡眠時間は十分であると考えられる.これに対して,睡眠の質に関しては,現状では特別対策がとられていない.よって,睡眠の質はまだいくらか改善の余地がありそうだ.そこで,「睡眠の質を改善する」という課題を一つ抽出しておく. 次に,通勤,家事,勤務の3つを考えてみたところ,影響を軽減できそうなのは,通勤時間のみであることが分かった.まず,家事の時間は一日1時間半程度と短いうえに,精神を擦り減らすものでもなければ,体力を消耗するような