投稿日:2007年11月28日 作成者:yasunaka
2日前の「藍屋の白袴」のブログに対して「日本の場合、開発ベンダーはツール類を顧客指定(実態はSIerの売ったもの)で対応するケースが多い」というコメントを頂きました。そういえば、受託開発において顧客側で全部買い揃えて開発するということも良くあります。日本のSIのお客さんは、何から何まで自前主義のところが多いのかもしれません。(でも開発そのものは自前ではないのですけどね)
こういったケースで問題になりがちなのが、そのような開発において自社ライブラリが利用できるのか、という件です。効率的に開発を進めるにはSIerが自社でライブラリを整備してそれを使うようにすべきですが、もしお客さん側から成果物全体についてのすべての権利を譲渡するように要求された場合には、ライブラリを使うことができなくなってしまいます。(もしそのような契約形態で自社ライブラリを使ってしまうと、そのライブラリは他のお客様のSI案件では使用できなくなる恐れがあります)
最近は使用許諾権のみをお客様に与え、プログラムの著作権や著作隣接権などは開発者側で保持するという契約形態が増えていると思いますが、まだまだ「金を出した側がすべてを所有する」という考えのお客様も多いと思います。でもそうすることで、IT業界全体が非効率で高コストなものとなっていたとしたら、それは結局のところお客様がそれを被ってしまっていることになるのです。
先日、ある技術系の勉強会に出席した後の懇親会で、日本のSIは必要以上に高コストになっている、と指摘されていた方がいらっしゃいました。もっとオープンソースなどを利用して安く提供できるようにすべきではないかと。
「金を出した側がすべてを所有する」という考えのお客様の場合には、自社ライブラリはおろか、オープンソースも利用できないのです。これでは非効率・高コストになってあたりまえなのだと思います。この考えから変えていかないと、日本のIT産業はなかなか浮かばれないのではないでしょうか?
投稿日:2007年11月21日 作成者:yasunaka
最近、システムの開発期間がどんどん短縮されてきているという話を良く聞きます。技術的要因としてはシステムの基本要素のコンポーネント化やライブラリー化が進んだこと、優れた統合開発環境が誰でも手に入りやすくなったこと、非技術的要因としては昨今の一般マーケットにおける商品サイクルの短縮化などにより、儲けるためには時間がかけられなくなってきているということ、などが理由でしょうか?
システムの開発期間が短くなっている、というのはほとんどの場合、開発の期間のことを指していると思います。設計期間が短いというのはおそらく、同じようなものを過去何度も作ってきているので、いちいち設計しなおす必要がない場合など、特殊な場合のみで、大規模な受託案件だと設計期間が長く、かつそれは開発期間に比べ、あまり短くなっていないと思います。
開発期間はできるだけ短く、という話になるのに、設計期間が短くならないのは、1つにはその仕様決め作業にユーザ側自身が関わっているため、無茶なスケジュールになりにくいということ、もうひとつには「考える」時間は短縮できない、ということがあると思います。
で、工数という観点で考えると、昔は設計工数に比べ、開発工数のほうが圧倒的に大きかったのですが、今は開発工数が期間が圧縮されて少なくなった分、設計工数の割合が大きくなってきているように感じます。設計工数の中にユーザ側の参加者の工数まで含んでしまうと、実はかなり大きな数字になっていたりしますよね。
システム開発というと開発のほうにばかり目が行きがちですが、全体の最適化という観点ではもう少し設計工程の効率化も検討していくべきだと思います。
投稿日:2007年11月05日 作成者:yasunaka
セキュリティシリーズ、第4弾です。今日はネットワークとセキュリティの関係について取り上げたいと思います。一昔前に比べてセキュリティを保つことが難しくなった大きな要因として、ネットワーク、特にインターネットの急激な発達が挙げられると思います。
今では誰でもインターネットに接続できる環境が当たり前のようになっています。特にシステム開発の現場の場合、インターネットを利用できない環境で仕事をすることを強制させられる、というのはとんでもなく不便を強いられているということに他なりません。でも、信じられない人もいるかもしれませんが、セキュリティ上の理由でインターネットを利用が禁止されている現場もあるのです。これって、目隠しをさせられた状態で仕事をしているのと同じようなことだと思いませんか?
でも実際問題として、インターネットへの接続を野放しに認めてしまうと、誰でも簡単に機密情報を外に持ち出したり、逆に持ち込んではまずいものを持ち込むことが出来てしまいます。これをコントロールできない以上は接続を認めないようにせざるを得ない、ということなのです。
通常は以下のような対応がとられると思います。
1つは、ルータでやり取りするデータを解析して問題のあるデータのやり取りをブロックする、という方法があります。ただしこの方法で漏れなく完璧を期すというのは難しいかもしれません。
別の方法として、インターネットにつながるネットワークと、開発専用のつながらないネットワークの2系統用意する方法があります。インターネット専用のノートPCを別途用意するような方法です。インターネットに求める機能を、情報の取得と割り切ってしまえば、意味のある方法かもしれません。ただしコストがかかってしまうのが難点でしょう。
インターネット接続専用の仮想マシンというのが用意できたらいいかもしれませんね。ホストマシンとのやり取りを一切遮断し、内部のネットワークへの接続が出来ないようにした仮想マシン環境でのみインターネットを使えるようにする、というアイデアです。誰かこんなの実現しませんか?
投稿日:2007年11月01日 作成者:yasunaka
今日もセキュリティの話の続きです。せっかく自由度を高めてくれる能動的なセキュリティという考え方があったとしても、運用が難しければ絵に描いた餅になってしまいます。セキュリティにも手軽さが必要なのでは?という話です。
高セキュリティと手軽さは反比例の関係にある、と通常は誰もが思います。確かに高セキュリティを謳っていると、一般的にはいろんなところががんじがらめになっていて、運用が難しいものだろうと、想像しますよね。
そしてその結果起こるのが、抜け穴作りです。「運用に耐えない」という理由で抜け穴がいろいろ開いている、という例を皆さんもいろいろ知っているのではないでしょうか? この「運用に耐えない」というのは、ちゃんとやろうとすると、とんでもなく面倒くさくなってしまい、仕事に支障をきたす状態を指していると思います。
これに対してストレートに、抜け穴を作るのは悪い、という意見があるかもしれませんが、ちょっと待ってください。そもそも運用を考えていないセキュリティモデルを考えているのもまずいのではないでしょうか? 運用不能なものを無理やり押し付けていいわけがありません。
高セキュリティであることを理由として、やたらに使い勝手の悪いことを強制しているとしたら、それは実はそもそも、そのセキュリティモデルに問題があるのではないかと思います。
セキュリティはソーシャル的な部分も含めて、全体として守られていなければ意味を成しません。実際に運用した場合どうなるのだろうという検討がとても重要なのではないでしょうか? そして過度な面倒くささがなく、運用上問題がないと言えることが、能動的な(アクティブな)セキュリティを実現する上ではとりわけ重要なことだと思います。
投稿日:2007年10月31日 作成者:yasunaka
セキュリティの話、第2弾です。昨日は自由を奪うように思えるセキュリティも、実は場合によっては逆に新しい自由を作り出す場合もある、という話をしました。今日はそのケーススタディです。お題は「crossnote」のケースです。(なんだ結局それか、という声が聞こえてきますが :grin:、具体例で考えるならば一番手っ取り早い教材なので、ご了承ください)
crossnoteについてマーケッティングしてみると、セキュリティ面についてのメリットに反応する人が多いのですが、しかし一方で、どのような場面でそれが有効になるのかが、いまいちピンとこない人も多いようです。そもそもプロジェクト開発において、どんな場合にセキュリティを向上させていいことがあるのかわからない、という意見です。
ではこれを能動的(アクティブ)なセキュリティの考え方をしてみると、こんなことが言えるのではないでしょうか? 例えば、次のような例はどうでしょうか?
1.持ち帰り開発が可能になるセキュリティ
日本でシステムの受託開発をしている場合、持ち帰り開発が許されていないケースというのも多いのではないでしょうか? つまり発注元が用意したシステム開発ルームでの作業を強制されるケースです。持ち帰り開発が許されていないというのは、セキュリティ上の問題が絡んでいると思います。
でも実はこのやり方は、委託側にとっても受託側にとっても不経済な方法です。委託側はシステム開発のためのスペースや環境を用意しなければなりません。また出入りする人が大量に増えることにも気を配らなければなりません。受託側にしても、人員を機動的・効率的に配置する上で持ち帰り開発を望むところは多いはずです。
もしセキュリティを向上させる仕組みにより、この持ち帰り開発ができるようになったなら、これはすばらしいことではないでしょうか?
2.在宅勤務を可能とするセキュリティ
これも1と同じような話ですね。セキュリティ的な問題をクリアしておかないと、在宅勤務というのは認めにくいと思います。
もしセキュリティを向上されることにより、在宅勤務が可能になったら、すばらしいことではないでしょうか?
他にもあるかもしれませんが、こういった、今まではセキュリティ上の理由から出来なかったことが、セキュリティを高めることによってできるようになる、という能動的(アクティブ)なセキュリティの考え方がこれからは重要だと考えます。
投稿日:2007年10月30日 作成者:yasunaka
セキュリティは重要だ、ということはみなさん頭ではわかっていると思います。でも実際にセキュリティに縛られる立場になると、あれはだめ、これもだめと、窮屈で、自由をうばられるもの、というイメージがありませんか?
一般にセキュリティを高めると自由度が奪われる方向にあるのは事実だと思います。ただし、場合によってはセキュリティを高めることによって逆に、いままで出来なかったことが出来るようになる場合もあるのではないかと最近気づきました。つまり、セキュリティ上の理由からあることが出来なかった場合、そのリスクを払拭するセキュリティの仕組みを実現できれば、今まで出来なかったことが出来るようになる、という話です。
例えば、ノートPCを持ち歩くことができるのは、セキュリティの仕組みをきちんと備えているから、とは考えられないでしょうか? いいや、昔はハードディスク・パスワードも掛けずにノートPCを持ち歩いていたよ、という意見もあると思いますが、それは本来認識すべきリスクに対して目をつぶっていた、というだけだと思います。
裸の王様は、一度自分が裸であるということを知ってしまった後は、もう裸のまま外を歩けませんよね。でもちゃんと着衣という一種のセキュリティを身にまとうことによって、また外出できるようになるのです。
セキュリティというと、どうも窮屈なイメージでしか捉えられない場合には、ぜひこのように、セキュリティによって逆に出来ないことが出来るようになっているのだ、と考えてみると良いのではないでしょうか? 受身(パッシブ)のセキュリティではなく、能動的(アクティブ)なセキュリティの考え方が、世の中を変えていくのだと私は思います。
投稿日:2007年10月26日 作成者:yasunaka
いまや誰でも当たり前のようにネットでお買い物する時代になってきました。Webでお買い物をする場合、個人情報やクレジットカード番号などの重要な情報をやり取りする場面ではSSLの仕組みを使って暗号化していますが、この仕組みが利用しているサーバ証明書ってどの程度信用できるものなのでしょうか?
つまり、Webブラウザ上でお金を振り込もうとしている相手が、本当に自分が想定している相手と同一であるということが、果たしてサーバ証明書で証明できるものなのでしょうか?
サーバ証明書を発行する場合でもいろいろとやり方があるようで、厳格に審査を経た上で発行されるものもあるようですが、あまり厳格なチェックを経ずに発行されるやり方もあるようです。商法が改正されて商号が比較的自由になった現在、相手を認証するための仕組みとしてはあまり信用してはいけない情報になっているように思えます。
一方で、一般のユーザは、とりあえずURLがhttps://で始まっていれば安心と思い込んでいる人が多いのではないでしょうか? https://で始まっているということは、通信がSSLにより暗号化されているため、第3者に盗み見されないということは言えます。でも通信している相手が本当に想定している相手かどうかを保障しているとは言い難い、というわけです。でも、このことを理解しているユーザは少ないのではないでしょうか?
どの会社の発行した、どのようなタイプの証明書だから信頼できる、なんてことを一般のユーザは理解していないと思いますし、インフラなのにも関わらず、いちいちそんなことをチェックしないと使えない仕組みというのも何か変です。
こういった部分にこそ、公的機関が監査できるような法整備がなされるべきだと思うのですが… 皆さんどう思いますか?
投稿日:2007年09月11日 作成者:yasunaka
間が空きましたが、デスクトップアプリの生き残り策 その3です。デスクトップアプリの生き残り策の最初のエントリーデスクトップアプリの生き残り策において、デスクトップアプリもできるだけインストール・レスにすべきだ、という話を書きました。ではどうやってそれを実現するか、ということを書いてみます。
そもそもなんでインストールが必要なのでしょうか? PCの世界ではアプリケーションはインストールして使うものだ、という思い込みがありますが、歴史を紐解く(?)と、昔は必ずしもそうではなかったということがわかります。
過去の大型コンピュータやミニコンの時代はアプリケーションの利用モデルが今のWebアプリと非常に良く似ています。TSS(Time Sharing System)端末やVT端末がWebブラウザになったようなものです。当然個々の端末にアプリケーションをインストールする必要はありませんでした。
次のUNIX全盛時代には個別のクライアントマシンにインストールする場合もありましたが、LAN上のNFSサーバにアプリケーションを置き、各クライアントマシンではNFS mountしてサーバ上のアプリケーションを利用する、ということが比較的良く行われました。(この場合、アプリケーションはクライアント・マシンで動きます) さらに自分のホームディレクトリのデータもNFSサーバに置く(フリーシーティング=どこの端末でも同じデスクトップ環境とすること)ことができたので、こうすることでクライアントにはアプリケーションを一切インストールはしないで使うこともできたのです。
ちなみにこの考え方はシンクライアントそのものです。
ただ、このUNIXのときに良く用いられたやり方は、LANの中ではうまくいくのですが、ノートPCのようにLANの外に持ち出して使う場合には役に立ちません。またWindows系のPCの場合、フリーシーティングの設定にすると、ホームディレクトリーをマウントするのではなく、プロファイルという単位で丸ごとコピーするという仕組みになっているので、ログイン、ログアウトが重くなる上、プログラムはインストールすることを前提に作られているために同様の方法が取りにくいという事情があります。(Windows Terminalはシンクライアントの一種と言われますが、アプリケーションの実行はサーバなので、むしろ大型コンピュータやミニコンのモデルに近い)
さて、話を戻してどうやったらインストール・レスでデスクトップアプリが使えるようになるかは、このシン・クライアント抜きには考えられないでしょう。特にUNIX的なシン・クライアントは管理が楽になる上、CPUは分散処理なのでスケーラビリティが良いというメリットもあります。ただ、現状ではシン・クライアントは閉じられたLANの世界を中心に考えられているので、ノートPCを中に組み込めるようなモデルに修正したいものです。ノートPCの場合、LANに接続したときにアプリケーションを同期するような仕組みです。
誰かこんな仕組みを作ってくれませんか?
投稿日:2007年09月07日 作成者:yasunaka
今日も昨日の続きで、デスクトップアプリの生き残り策について考えてみたいと思います。
二日前のブログWebアプリを選ぶ3つの理由において、Webアプリへ移行している理由の2番目として、「2.別なマシンからでも同じ環境で使うことができるから」というのを挙げました。
これは例えばWebメールの場合、例えば出先のノートPCと会社のデスクトップPCの両方で使った場合:
1.どちらで見てもメールボックスの中身を同じにすることができる。
2.どちらで見ても、未読・既読の管理が正しくおこなわれる。
3.例えばノートPCで作った未送信のメールを引き続いてデスクトップ側で作業することができる。
等といったことを意味しています。
デスクトップアプリケーションでは、データがマシンにローカル保存されるため、マシン毎に環境が異なることになります。もし、そういったデータをサーバに保存して利用したら、Webメールとほぼ同様に別なマシンからでも同じ環境で使うことができるようになります。
ところがデスクトップアプリケーションにおいてこれを実現するには、データを保存しておくためのサーバが別途必要なことを意味します。また当然のことながらデータがサーバに保存されるようにするには追加のプログラム開発が必要になります。技術的には不可能ではないにも関わらず、こういった現実的な理由から、デスクトップアプリケーションではデータをサーバに保存するということが無視されてきたのだと思います。
しかし、もしこの先もデスクトップアプリとして生き残りたいのであれば、このデータをサーバに保存する機能はぜひ提供すべき機能なのだと思います。これを実現すると、どこでも同じ状態で使えるというメリットに加え、さらに万が一、使っているPCが壊れて使えなくなったとしてもデータが必ずバックアップされるため、安心して利用できるようになるからです。
ちなみにcrossnoteでは、主要なデータについてはupdateボタンを押したタイミングでサーバ側に自動的に保存されるようにしています。主要な、という辺りがちょっと微妙なのですが、新着の修正点の判定やコメントの既読・未読の管理などはローカルPCに保存されたデータで行うようにしているためです。
投稿日:2007年09月06日 作成者:yasunaka
今日は、昨日のWebアプリの続きで、逆にどうしたらデスクトップアプリを生き残らせることができるかについて考えてみましょう。
デスクトップアプリがWebアプリに比べ、利用者の利便性から考えても不利な立場であることは昨日述べたのですが、ではデスクトップアプリがなくなってしまうかというと、そうも言い切れません。デスクトップアプリでなければ実用に耐えられないという分野があるからです。
例えば弊社のcrossnoteもそうなのですが、ワープロや表計算ソフトなど、反応速度などの点で本質的にクライアント側で動かさなければならない部分が多いアプリケーションはデスクトップアプリにせざるを得ないと思います。確かにGoogleはAjax版のワープロとスプレッドシートを提供していますが、MS Officeなどに比べるとかなり機能を絞り込んだものであり、今までWordやExcelで行ってきた仕事をそのまま移行できるものではありません。最近OpenOfficeをGoogle Appsに追加したようですが、この事実がそのことを物語っていると思います。
他にもローカルリソース(例えばCDなど)を使わなければならないアプリケーションも必然的にデスクトップアプリケーションにせざるを得ませんね。
では、デスクトップアプリとして存在し続けなければならないアプリケーションはどのように進化していくべきなのでしょうか?
私はそのキーワードの1つは、やはり「インストール」という点にあると思っています。ディスクトップアプリケーションの場合でも、できるだけインストールしない、もしくは非常に短時間でインストールが完了するようにすべきだと思うのです。デスクトップアプリケーションが忌み嫌われるのは、インストールやバージョンアップのために手間隙がかかり、いろいろなものが勝手にセットアップされてPCが「汚れる」からで、もしインストールしないで、もしくはほんの一瞬のインストールで使えるようになっていて、かつPCが汚れなければ、誰もそんなに文句を言わないと思うのです。
え、crossnoteがどうか、ですか? 残念ながら今時点ではインストール・レスとはいきません。ただ、ぜひ挑戦していきたい課題だと考えています。