ソフトウェアの粒度(長文駄文注意)

粒度という言葉が材料・固体物性の世界からITの世界にとりこまれている。
使い始めたのは誰か知らない。
 
恐らく一番は製作側の作業分担や(一時期流行ったようなオフィススイート的)組アプリなんだろう。
個人的には素人的にこういった視点でモノを考えてみる。
 
1.ブラウザ
最初に触ったブラウザはNCSA Mosaicだったか忘れたか,SUNのワークステーション上で
OSより大きなアプリケーションでもう少し削ればGopherくらいに軽快になるのにと思った。
当時としては粒度の大きすぎるアプリケーションだったのだと思う。
事実,通信してテキストを見せて画像も展開するってのが,当時は別アプリの仕事だった。
しかしながら現在確立されたプラットフォームとして搭載されていないPCは無いというレベルになっている。
ところが昨今これに追加機能を加えるためにプラグインだのエクステンションだのが出ている。
個人的には確立された部分ってのは多少個人的に拡張することがあっても枯れるだけ枯れさせるのが適当と思ってる。
だから,そういったものよりもブラウザと相互呼び出しする程度の軽量な専用ブラウザ
メディアプレーヤー的なものの方が好きだ。
Chromeに移行しつつあるのも,こういった理由かもしれない。
 
2.FLASH
初期のFLASHは衝撃だった。
今だとshockwave?なにそれ?と言う感じだ。
ところが一気に腐敗した感がある。追加機能を付加しすぎたんだと思う。
重くてバグがあると言う話になるとshockwave側になってきた感がある。
競争はあったのかもしれないけど,安定重視でやるべきだったんじゃないかと思う。
最後はJavaと同じでオープンソースにするしかないようになるかもしれないね。
adobeの社風とは異なるけどさ。
上記のブラウザネタと大被りなのでこれくらいにしやう。
 
3.Windows7とか新しいOS
OS Xが高評価を受けているのはOSの仕様でもコストパフォーマンスでもなく
インターフェースの話。Windows7も良い意味でパクってきたので面白い。実に快適だ。
特に起動したフリが最高にアップルっぽくて良い。
サスペンド状態から起動した風に見えるけど実は画面だけでクリックしても反応しないし
実際は裏で一生懸命に復帰作業をしてる。
建設現場の外側の囲いが建築物のプリントになっているようなもんだ。実にエライ。
こういった技術的にはどうでもいいようなことに情熱を注ぐ方が実は使い勝手が良かったりする。
iPhoneが他のスマートフォンにあっさり負けないのがそこだろう。
OSはインターフェースを重視すべきだと思う。そういった部分は取り込むべきだ。
機器側インターフェースも同様でデバイスドライバは超重要。
パフォーマンスにモロに影響する。
 
ところが,OSで肥大化して欲しくない部分もある。
歴史的にもう反省されているところは書かなくても良いだろうが
今後の懸念は仮想化技術との相性に繋がる。
仮想化環境に載せるならOS自体のインターフェースが簡素化されている必要がある。
キーボード・マウス類はUSB仮想化自体が完成されているので問題ないが
モニタは仮想化が困難な砦になるだろう。
注目技術はMS社RDP7というのかRemoteFxというのか,その他大手VID技術,Displaylink社,VNC関連オープンソース系ソフト,そして大穴がTrueRemoteのIchiGekiさんなどの独自プロトコル
どんどん違う方向に行きそうなので,この節はここで止める。
 
4.並列化とか並行処理とか
時代はマルチコア,クラスタ構成のクラウドだけど
ソフトウェア側がやっつけ感が否めない。まぁ,ソフトウェアってのは常にそうだけど。
また,GPUGPGPUを本格的に推進したいらしい。まぁこれは必須と言うより
nVidiaとかが会社として生き残りをかけた勝負に近いと思ってる。
で,粒度の観点で言うと理論的には最も上の階層で並列分割するのがベスト。
ところがハードウェア実装が(GPUなど特に)適切な問題切り分けを行なわないと全くといって
パフォーマンスが出ない。とするとGPUの場合はハードウェアに特化したライブラリが
必要になるし,それは他に流用しにくいものになる。オープンソースではウケない。
逆にマルチコアの場合は現在盛り上がってる。これは今後も生きることが確実だし
確実に長期にわたりパフォーマンス向上が期待できるからだ。
個人的にもこちら支持でいるし色々勉強させていただいている。
 
ここでもやはり粒度問題があるんじゃないかと思って・・・
それが今日の日記を書き始めるネタとなった。
 
まぁ,プロが本気で取り組む分野で素人の妄想に何の意味があるのかとも思うのだが
面白いから良いじゃないか。