前回のエントリーでも少し触れましたが、@ITがタイミングよく、日本人と標準化との関係について記事を出していました。
色々考えてみたが「結局は意志の問題」という当たり前の結論になってしまった。国家として,自国のやり方や技術を世界に広めていこうという意志があるのかどうか。この一文の「国家」と「自国」を「企業」「自社」あるいは「個人」「自分」に換えて読んでみてほしい。「私のやり方は素晴らしい,ぜひとも世界の人に使ってほしい,いやこれだけ素晴らしいのだから使うべきだ」という強烈な意志を我々は持っているだろうか。「国家に戦略がない」「企業戦略が曖昧」と文句を付けるのは容易いが自分にないものを人に求めるのは無理筋である。「日本人は」と一般論を語るのは不毛かもしれないがあえて書くと,やはり「不言実行」とか「いいものさえ作れば,真面目にやっておれば,必ず分かってもらえる」という考えが我が国では強い。これは残すべき日本の長所ではあるが,そんなものを長所どころか短所とみなす世界各国と付き合っていく以上「沈黙は金」では済まない。
谷島氏は、すべてひっくるめて意思の問題と考えているようです。
確かに意思の問題もあるが、私はこう考えます。
日本人は、戦略的思考が弱いように思う。つきつめれば、教育の問題に帰結すると思うのだが、このエントリでは詳しくは触れないことにします。
日本人は、ずる賢いことは出来ない義理人情の価値観に縛られて、動けないところが大きいように思います。また、企業のすりあわせ体質により、プロジェクト内や企業内の固有の要素を多く含む仕様にとどまり、グローバルな視点での汎用化まで手が回らない事が多いように思います。1つの製品で見た場合、品質が優れていて堅牢な信頼性をもち完結しているように見えるが、かえって他の製品に活かしにくい欠点があります。これが、日本人の良いところでもあり、欠点でもありますが、これを克服しない事には、いつまで経っても標準化において世界のリーダシップを握る事は困難でしょう。
政府主導で、早急な対策をうってほしいものです。
大分前の記事になるが、ずっと気になっていたものがあったので、久しぶりに読み返してみました。
この記事の中では、独立コンサルトの戸並氏と日経ビズテック編集委員の谷島氏による日本のソフトウェア業界の問題点についての対談がなされている。
戸並:品質は圧倒的に日本が上です。バグや障害は米国では当たり前ですから。日本は過剰品質なのかもしれませんが,国民性ですから品質は落とせないでしょう。谷島:品質は高くても日本のソフトウエアに国際競争力はありませんね。
品質が高くて競争力がないことは、以下のクスマノ先生の書かれた本にも書いてある通りで、事実だと思います。ソフトウェア企業に働く方であれば、以下の本は必読だと思います。著者は日本のソフトウェア企業にも精通していて、この本には、NEC, 富士通, 日立の事例も入っています。
品質にこだわりがあるのは、日本では職人気質を美しいものとして好意的にとらえる風潮があるためのように思います。日本の歴史を振り返ってみると、士農工商だった時代から商売は軽いものと看做し、作る人を重んじる傾向が影響しているように思います。
更に以下のように詳しく原因を議論しています。
戸並:ソフトウエア製品を考えた場合,品質がいいものが売れるとは限りません。ここが悩ましいところです。90-90の法則があります。90%を達成しても残りの10%をクリアするために,90%のコストと時間がかかると言います。となると80〜90%の品質で早く市場に出した方が競争戦略では正しいのでしょう。米国は合理的で損得主義ですから,ここいらの判断の素早さは日本の比ではありません。谷島:商売の巧拙は別にするとして,そもそもソフトウエア開発は日本人に向いていると言えますか。
戸並:ハードウエアと違ってソフトウエアは関係要素数が桁違いです。ですから日本人が得意のはずです。少なくともロジックやアルゴリズムというプログラミングは,コンピュータ・サイエンス云々以前の世界です。日本人に向いていると思います。他人の作ったソフトウエアのメンテナンスがなければ日本の独壇場ではないでしょうか。メンテナナンスのやりやすさは標準化や規約ルールに比例します。ところが日本人は標準化とか規約ルールをともすれば守らないので,だれでもメンテナンスできるようにはなかなかもっていけません。
日本人のプログラミングスタイルは、クロースドなものが多いように思います。頭の中で設計し、黙々と仕事をこなす職人気質がここにも現れているように思います。他の人とコミュニケーションしてレビューしたり、標準化された手法に則ってプログラミングするのが苦手なように思います。欧米は、オープンでシンプルにプログラミングしていくため、比較的、科学的な分析がしやすく、標準化も割としやすいように思います。
また、雇用形態も関係があるように思います。日本では、終身雇用で比較的同じ人が同一製品を担当していくため、プログラミング情報を共有する必要性が薄いですが、欧米では、人材が流動的なため、プログラミング情報をなんらかの形で残していかなければならないと言う背景もあるように思います。
そんな訳で、日本は、インテグラル型、欧米は、モジュール型開発が適しているようです。
そのような形で、自動車工業のように部品を分解したり、作業を体系化するということは困難なようです。だから、「IT業界のトヨタ」は出ないのだと思います。
応用情報技術研究所の橋本大也氏のblog、”Passion For The Future”に以下の記事があるのを発見した。
☆ 小さいことは良いことだ
・富豪的プログラミング
http://pitecan.com/fugo.html増井俊之氏 (富豪化理論研究家) による解説。
・メモリや実行効率を気にしないでお気楽にプログラムを作る
効率を重視したプログラムは作るのが大変ですし、ちゃんと動かすにはデバッグも大変です。富豪的プログラミングでは一番単純で短いアルゴリズムを使います。・条件が変わる度にすべての計算や表示を行なう
再表示が必要な場所だけ書き直ししたり、出力のバッファリングをしたりする貧乏性な工夫はバグのもとになるので行なわず、条件が変わる度に計算を再実行したり全体を書き直したりします。
斬新的なプログラミング技法だと思いました。資源が貧しい昔は、メモリやレジスタなどの資源を考慮して、効率的なプログラムを作るよう心がけていました。いわば、人間が最適化コンパイラの代わりを果たしていたというわけですね。でも、今は、資源がリッチになってきており、また、最適化コンパイラの技術もかなり進んで高機能になってきているので、貧民的プログラミングでは、効率が悪いというのでしょう。効率が悪いというのは、以下の2点があると思います。
1.最適化コンパイラが最適化可能な箇所を重複して人手で効率化する。
2.資源が十分あるのに資源の再利用など大して意味のない効率化をする。
このような点を余り考慮することなくプログラミングすることが、今の時代では、効率的な場合があるという点は賛成です。