サーフィンや写真、ブログ・ネット技術、Macのブログ

2010年2月 9日

マイクロソフト戦記 (読書感想)

にっくさんからいただいた、『マイクロソフト戦記--世界標準の作られ方 (新潮新書)』を読み終わりました。1980年代後半から1990年代まで、MS-DOS、MSX、OS/2、そしてウィンドウズへと続くデファクトスタンダードを巡る戦い。マイクロソフト日本法人のマーケティング担当として、その真っ只中を駆け抜けた、著者の実体験が記されています。

マイクロソフトというと、最近は巨大企業、つねにチャレンジを受ける側、というイメージがありますが、本書の中心はウィンドウズの成功以前。特にMSXやOS/2での失敗体験にも、大きくページ数が割かれています。失敗の裏には、どのような原因があったのか。それを教訓に、次のプロジェクトではどのような手を打ったのか。現場の奔走劇を、克明に綴っている。現場の担当者の労力の大きさを考えると、これは果たして成功した物語なのか?と思ってしまうほどの紆余曲折ぶりです。

しかし、常にぎりぎりの選択を迫られ続けられることで、初めて見えてくるものもある。限られた情報を元に決断を下すためには、判断の指針を強くイメージする必要がある。そのための「最大多数の最大幸福」というシンプルな論理。また、限られたリソースで、最大多数に最大幸福を提供するためには、どのような仕組みが必要なのか。プロジェクトをスケールアウトさせていくためには、パートナーや開発者の協力が不可欠だが、そのためにはどのような技術情報、サポート体制が必要か。いつか来るテクノロジーの大波に備えるためには、「三回はバージョンアップするぐらいの資金力と開発担当者の体力が要る」という言葉にも、経験者の重みがあります。

実は今、『オープンソースソフトウェアの育て方』(オンラインで全文読めます)も同時に読んでいるのですが、プロジェクト運営における現場の経験則という面では、共通する部分も多々あり、興味深かったです。こちらは、また別の機会にまとめたいと思います。

マイクロソフト戦記--世界標準の作られ方 』 より

「ベンサムは、産業革命下の十八世紀から十九世紀にかけて活躍した哲学者です。彼は『最大幸福論』を唱え、国民全体が豊かになる政策が必要だと訴えました。ユニバーシティ・カレッジの創業者は、その考えをもとに宗教や階級、人種に関係なく、平等に教育を受けられる大学を設立したのです。ベンサムの遺言に従って亡骸はミイラにされ、その後、構内で展示されるようになりました。」(p.20)

(中略)

しかし将来的にはGUIの時代になると考えたゲイツは、「インタフェイス・マネージャ(IM)」構想を練り上げていた。この頃のIM構想は、マイクロソフトが開発していた表計算ソフト・マルチプランのように、画面下にメニューが並ぶシステムだったが、基本概念としてはディバイス・インディペンダンス、GUI、WYSIWYG(フォントがグラフィックスが画面で表示されたように印刷される機能)の三つがあった。

その中でゲイツが最も重要と考えたのは、ディバイス・インディペンダンス。どんなハードでも、ウィンドウズ用のソフトなら改変しなくても動くシステムである。ソフト開発者が機種対応する手間から開放され、どこのメーカーのPCでも動けば市場が大きく広がる。ベンサムが提唱した「最大多数の最大幸福」に通じるコンセプトである。(p.127)

(中略)

それでは、デファクトスタンダードを作り出す定石はないのだろうか。

私はその問いに対して、こう答えたい。絶対作り出せるというような魔法は存在しないが、デファクトスタンダードを作り出すことを可能にする条件を挙げることはできる、と。

最後に、少しまとめてみたいと思う。

まず、核となるテクノロジーを持っていることが大事だ。共同開発とかライセンスでは、アスキーやIBMのようになってしまう。テクノロジーをベースに「最大多数の最大幸福」の論理で、そのテクノロジーをディベロッパーに使ってもらえるように分け隔てなく、オープンにしなければならない。大勢が参加してデファクトとなることで、多数が利益を得られるような仕組みが不可欠である。胴元だけが儲かるようなシステムには、ディベロッパー達は集まることはない。

ディベロッパーズ・リレーション部隊を設立し、開発キットを提供する。内容は開発システムやデバッグツール、完全なAPI仕様書と開発チュートリアル、初心者向けのサンプルソースコードや練習用システムなどが含まれる。開発者が困った場合は、サポートするようなメカニズムが必要である。

第二に必要なのは、ネットワークを正確に把握することだ。デファクトスタンダードは、市場のコンセンサスなくしては実現しない。だから、市場に受け入れられるような個別の戦略が必要だ。その市場を見渡して理解し、市場参加者の人間関係やニーズを把握する。人間関係のネットワークの形を理解し、どこの誰を巻き込んで、どこのハブを取り込めば良いのかを知っておく。そして最終的には、デファクトのホルダーとして、市場の中心として収まるのを常に忘れないことである。

そして、テクノロジーの波を理解し、少なくとも三波前から準備をしておくことも重要だ。初期からの市場参加者として知名度を得ることは重要だし、長い時間で経験を積むことで、大波が来たときに、一気に市場普及へと動けるようにしておかないといけない。テクノロジーの進歩と普及の度合いを敏感に感じ取り、的確なスペックの商品を出荷する。そのためには、三回はバージョンアップするぐらいの資金力と開発担当者の体力が要る。

ネットのみならず目に見えるイベントで、人間関係を構築しておくことも大切である。満場の人だかりを確認して初めて、市場関係者はテクノロジーの流行を確信する。

だから、イベントには市場のメジャープレイヤーを取り込んでおくことが不可欠である。一方、意識的に市場でのバズ(騒ぎ)を発生させる、メイブンのような人材を集めておき、ここぞというときに流行を起爆させることも重要だ。

そして最後に、自分のテクノロジーには、人を魅惑し引きつけることができる特徴を持たせる必要がある。テクノロジーとは何もパソコンでもネットにもかぎらない。

はっきりしているのは、そのテクノロジーが、あるいは商品が「最大多数の最大幸福」をもたらすものでなくてはならないということである。(p.248)

2010年2月 7日

jQuery の oEmbed プラグインで、FlickrやYouTubeなどのコンテンツを取得する

今日は MT Hackathon だったので、oEmbed を試しに使ってみた。oEmbedは、Flickr、YouTubeなどの対応サービスのURLから、コンテンツの内容をXMLやJSON形式で取得するためのAPI仕様です。ブログなどに貼付けるためのHTMLを、共通のAPIコールで取得できるのがメリットですね。

oEmbedを利用するためのライブラリも、Perl, Ruby, php などそろっていますが、手軽なjquery-oembed プラグインを使ってみた。動作サンプルがこちら。

使うのは非常に簡単。こんなフォームに対して、

<form action="" id="oembed_form">
  <label>oEmbed対応URL</label>
  <input id="oembed_url" type="text" value="" style="width: 300px;" />
  <input id="oembed_load" type="submit" value="コンテンツ取得" />
</form> 

以下のようなjavascriptで、oEmbedライブラリを利用する。

$(document).ready(function(){

  // oembed ライブラリの設定。コンテンツの最大表示サイズや、
  // コンテンツをDomエレメントに追加する方法を選ぶ。
  $.fn.oembed.defaults = {
        maxWidth: 500, maxHeight: 400,
        embedMethod: "append" // "replace", "auto", "append", "fill"
  };

  // 指定したHTMLエレメントにoEmbedで取得したHTMLコンテンツをappendする
  $("form#oembed_form").submit( function () {
  
    $("#oembed_contents").oembed($("#oembed_url").attr("value"));
    return false;
  });
}); 

プラグインのファンクションは、oembed(url, options, callback) の三つの引数を指定できます。url は oEmbed 対応ウェブサイトのURL。オプションは前述の maxWidth, maxHeight, embedMethod の三つ。callback を指定して、oEmbed API から取得したデータを自由に整形、表示できます。ブックマークレットなどにも応用できそうですね。

2010年2月 3日

Mac OSXの Java セキュリティアップデートでJuniper Network Connect がつながらなくなる問題の対処

前にもMac OSX のセキュリティアップデートでPerlの環境をブチ壊れた記憶がありますが、、、再びやってきましたよ。12月のJava のセキュリティ アップデート以降に、Juniper SSL VPN の Network Connect がつながらなくなった。「いくつかのネットワークコンポーネントが見つかりません」的なエラーで起動しない。色々検索したらありました。

上記ページに問題の詳細と、ワークアラウンドが記載されていました。具体的には、ターミナルで以下のコマンドを入力する。その後、ネットワークコネクトを接続したら、正常につながりました。

$ sudo keytool -storepasswd -new changeit -keystore /System/Library/Frameworks/JavaVM.framework/Resources/Deploy.bundle/Contents/Home/lib/security/cacerts -storepass changeme