投稿日:2007年07月05日 作成者:yasunaka
タイトルは重いテーマです。
日本のソフトウェア産業は製造業に比べてあまりいいことが書かれたことがないように思えます。それは、製造業の分野では明らかに世界No1といえる分野がいくつもあるのにくらべ、ソフトウェア産業は世界No1と呼べるものがないからではないでしょうか?
日本は日本語という見えざる参入障壁に守られているわけですが、この参入障壁がかえってソフトウェア産業の国際競争力を弱めていると思います。もしこの参入障壁が破られたら、そのときには日本のソフトウェア産業というのはひとたまりもないかもしれません。でも現在の中国のソフトウェア産業の成長を見ると、それもありえない話ではないように思えます。
では振り返って、日本のソフトウェア産業の優位性は何だろう、というのが今日のテーマです。いったい何でしょうか?
一昔前(10年以上前?)は日本のソフトウェアの品質に対するこだわりが優位性だといわれていた時代がありました。でも今ではそのときの方法論が死に絶えた?のか、それとも単に過剰品質だったのか、そういったこともあまり言われなくなってしまいました。今ではむしろインドのソフトウェア会社のほうがCMMI5とか誇っていますよね。
となると、後はなんでしょうか? 日本が世界のソフトウェア産業に対して渡り合える分野ってあるのでしょうか? うーん、あまり思いつかない…
携帯のJavaVMとか車載電子機器用の組み込みソフトウェア等はあるかもしれません。いずれも「製品」に付属するものであるのは興味深いところです。でもソフトウェア単体で勝負するもので世界に名を馳せるものとなると、知的資産としてのRubyぐらい?しかパッと思いつきません。最近のIT系企業がやっていることは米国の焼き直しが多いと思いますし。
こうやって考えてみると実に寂しいですね。私もぜひ日本発のソフトウェア企業として世界を目指したいです。
投稿日:2007年07月04日 作成者:yasunaka
さて、私の会社で現在研究開発中のプロダクト(コードネーム:APIS)についての説明の第2弾です。
会社のホームページには「銀の弾丸」を目指す、と勇ましいことを書いているのですが、正直なところ、このプロダクトを入れたからといってプロジェクトの生産性がウン倍にアップするなんてことは決してありません。私達が目指しているのはそういうものではなく、プロジェクトチームが円滑に機能しやすくする、手助けのためのツールというか、サービスを目指しています。
私達の対象とする問題領域は、次のようなことです。
・プロジェクトに関わる人数が増えると、仕様を決めるために必要なコミュニケーション量が爆発的に増える。(図の中の矢印が示しています)
実際、プロジェクトの規模が膨らむと、生産性を向上させるために人をつぎ込む以上に、コミュニケーションの問題を改善するための人が大量に必要になります。つまり仕様を関係者全員に伝達して理解させたり、検討したり認識合わせをしたり、意見を調整したりレビューしたり、など、一連のコミュニケーションにかかるコストが膨大に膨らむということです。そしてこういったコミュニケーションがうまくいかないことが、プロジェクトにまつわる悲哀を生む原因になっていると思うのです。
私達のプロダクトはこの問題を改善するための提案です。具体的な説明は次回に譲りますが、一定以上のサイズのプロジェクトのコミュニケーションの問題を如何に解決するか、という観点で設計しています。
もちろんプロジェクトが円滑に機能するのは、チームメンバの前向きながんばりによるものであり、ただプロダクトを入れただけでは効果はでません。非常に勝手ながら、少しでも良くしていこうという前向きのプロジェクトのところにだけ入れて欲しいな、と思っております。
投稿日:2007年07月03日 作成者:yasunaka
今まで、仕事で「あ、この人はスーパープログラマだな」と思った人に何人か出会いました。スーパープログラマといっても何か一般的な基準があるわけでもなく、学歴も肩書きも資格も関係ないわけですが、明らかに他の人たちよりも「理解力に優れ」、「並みのプログラマの10倍以上の生産性」を上げ、かつ「書いたコードが美しい」人達がいるんです。そういった人たちを私はスーパープログラマと呼んでいます。
こういった人たちに共通するのは、新しいことに対する飲み込みの速さです。「地頭(じあたま)」の良さというのでしょうか。まったく新しいことでも人より早く本質を理解してしまうのですね。プログラミングというのは演習問題をいっぱい解いてお勉強をすればそれなりには組めるようになると思うのですが、そういった基礎能力だけではスーパープログラマにはなれないのだと思います。
かといって、頭が良ければスーパープログラマになれるのかというと、かならずしもそうでもないと思います。誰もが頭が良いと認めるような人がプログラミングをしても、かならずしもスーパープログラマといえるレベルではない場合も多いからです。
いままでお会いした人たちに共通する、重要に思える素質としては次のようなものがあると、私は考えています。
1.集中力、というか熱中力?
2.構成力。コンテキストを読み解く能力。
特に構成力は重要だと思います。全体からコンテキストを読み解いて、自然に構成することができるかどうか。この構成力とは数学とか理数系というよりはむしろ国語力というか、文系に近い能力だと思います。構成力が優れた人ほど理解力に秀でている傾向が強いな、と個人的に持っています。
よくよく考えてみるとプログラミングもコンピュータ「言語」を操つる仕事であり、コンピュータという感情のない機械を相手にしているにせよ、豊かな構成力が求められるのは自然なことなのかもしれません。
投稿日:2007年07月02日 作成者:yasunaka
ちょっと雑談的な話題ですが…
先週の金曜日に愛用しているノートPCのハードディスクが逝ってしまい、修理に出しました。ちょうど3年前に買ったLet’s noteのCF-W2です。
これを買ったのは自分で何か作ってみたいな、と考えていたからでした。それまではNECのLavie MXというノートPCを使っていたのですが(Crusoe+反射型液晶を積んだ11時間稼動モデルです)、このマシンでは何かを作ろうとしても、例えば開発ツールとしてEclipseを使うにはあまりにも非力で画面も小さく(私のは初代のMXなので、SVGAでした)、作りたくても作れる状態ではなかったのです。Lavie MXもそのとき既に買ってから3年以上経っていたので、思い切って買い換えたのがこのLet’s noteです。(そしてこのLet’s noteを使って、夜中とか休みの日とかにこつこつと作ったのがSwingUnitというヤツです)
このマシンは見た目=デザインは正直あまり好きではないのですが、軽く、かつバッテリーが長時間持つので、どこにでも手軽に持っていけるので、非常に重宝しました。また今の会社設立に向けての作業用マシンとしても大活躍してくれました。いわば、私の相棒とでも言うべきマシンです。
そんな愛着のあるマシンですが、普段使うときには私は必ずマウスを挿して使っています。タッチパッドはどうしてもマウスが使えない電車の中とかで使うための非常用にしか過ぎません。やっぱりどうもタッチパッドというのは使いにくいと思うのです。その理由は、
1.ドラック&ドロップがやりづらい。ソフトウェア的に1つの指でドラッグ&ドロップができるようにするモードもあるが、こちらが思ってもいないときにそれが働くのがいやなので使いません。そうすると親指でボタンを押しながらぐりぐりさせることになるのですが、親指からは作用・反作用の法則で上向きの力で押し返されつつパッドから指を離さないようにするという動作はどうもやりにくいと思います。
2.スクロールホイールがない! マウスの真ん中に鎮座するスクロールホイールは私にはなくてはならない機能なのですが、ノートPCにはスクロールホイールがありません。Let’s noteにはこのスクロールホイールに変わるものとして、タッチパッドが丸くなっていて、その周囲を指でなぞることで同じ機能を代替できるようになっているのですが、やっぱりこれとて普通のスクロールホイールの使い勝手の良さにかなうものではありません。
1についてはいつもドラッグ&ドロップをやっているわけではないので、100歩譲るとしても、2は無意識のうちにいつも使うものなので、譲れません。で、私の場合いつもマウスを別に挿して使っている、という次第です。
でも、よくよく考えてみたらなんでノートPCにはスクロールホイールが付いていないのでしょうね? 確かに場所は多少食いますが、今の日本の製造業の技術力ならばお茶の子さいさい(死語?)のはず。Let’s noteにはその昔、トラックボール付きのマシンも確かあったはずだから、絶対できると思うんですけど、どうなんでしょうね?