Hatena::ブログ(Diary)

メモてきなあれと,日記てきなあれ. このページをアンテナに追加 RSSフィード

2010-08-24

[]iSetTopBox(仮称)のブレスト

f:id:koichirohonda:20100825040148p:image

ご無沙汰です。iPadの次のデバイスは何か、という話を以前しましたが、その続きをブレストしてみましょう。あんまり裏付けられるソースはないので、妄想に過ぎません。(もう少し調べろよ!という指摘もごもっともですが・・・。)


イメージは、BD/HDDレコーダーを軸に、iPadWii/PS3DLNAサーバーを付加。

iPhoneが、スマートフォンiPodDSみたいな位置づけで、

iPadが、ネットブック(PC)+本+手帳みたいな位置づけだったみたいに、

iSetTopBoxも相当する(=競合する)デバイスがあるはず。

それは、BD/HDDレコーダー+iPadWii/PS3DLNAサーバーあたりが対応するところになるんじゃないかと。iPadっていうのは、OSのベースがiPadみたいな感じなるってことです。

これにAirport(Airmac)が併合されるかどうかは微妙ですが、設置が難しくなるので、ない。



発売時期は2011年後半もしくは2012年初頭。

全く噂がないので、今年はない。

iPadにとっては2世代が来年春先に出ると予想されるから、それに注力するだろう。

そして、少なくともKindleiPadの戦いが佳境に入り、iPadの評価が安定してくるのが2011年だと思うので、それまで新製品ラインは出さないと思われる。


国はアメリカをはじめとした数カ国が最初リリース、日本は1年程度遅れる可能性。

Huluみたいなサービスが存在しているアメリカと、規制が厳しい旧態依然とした日本のテレビ業界が同時にリリースできる見込みはまずないと思われる。各国でスタンダードになるか、業界に利する条件がそろえばリリースできる後押しになる。


お値段は、市販のブルーレイプラスアルファ、もしくはMac miniプラスアルファくらい

一番安いMac miniが700ドルなので、800ドル〜900ドルくらいかな?

ブルーレイレコーダーよりちょっと高めな感じかな。


形状はMac miniもしくはAirport(Airmac)と類似。

Appleは先に発売したデバイスのデザインをまねるの法則」より。←自分が勝手によんでるだけ。


BD対応

BDに対応してこなかったAppleだが、BDが使えないレコーダーなんてあり得ないので対応。

あわせてMacシリーズも対応になるかも。


レコーダー機能(HDD保存)とストリーミングサーバー

発売時期から1TBや2TBはあると考えていい。テレビ映像の直保存が可能。

保存した映像は、BonjourDLNAに準拠はしないと思う。)を通じて、ネットワーク内の各PC、MaciPadiPhoneに配信できるようになる。

※でも結局Mac以外のPCでは、H.264ハードウェアデコードが出来なくて実質ダメダメ〜みたいなことは平気でやりそうであります。


Apple Remote踏襲とハードウェアキーボード

ソフトウェアキーボードは難しそうだから現行のワイヤレスキーボードを採用。

リモコンは現行のApple Remoteの形状でジャイロ+加速度センサを搭載したもの。Wiiのような感じで操作できるようになる。←導入自体は簡単


iOS4.0ベースのOS

iOS4.0のiPad版がベース。だが押しやすいようにUIが大きめにデザインし直されるのと、リモコンのハンドリングが追加される。#でもこれはiPhone4のCore Motionがそのまま転用可。

マルチタスクはもちろん可能で、テレビやビデオ再生はおそらく2画面表示が出来るようになるのではないか。


もちろんアプリApp Storeも。

解像度が高い(フルHDな)のでiPad以上に自由度のある開発が出来そう。

さらにアプリ単価は上がるので、Appleにとっては売り上げが伸びそう。

移行期には例によって、iPadアプリは100%使える!となりそうだけど、結局あんま使えなくてソフトウェア開発者がUIアップデートするまでに1年くらいかかりそう。


GameKitの活用とOpenGL ES

ほとんど据え置き型ゲーム機としてもとらえることができるので、iOS4.0で導入したGameKitがかなり威力を発揮するだろう。

おそらく開発環境としてもXcodeiOSはかなり開発がしやすいと思うので(超主観)、iPad/iPhoneでのアプリ開発の蓄積は、他の据え置き型ゲーム機にとってはかなり脅威になり得る。

OpenGL ESもすでにiPhone3GSの時点で2.0に準拠しているからそれも強みになり得る。


iAdを収益源に。

アプリ内広告はもちろん、テレビ視聴中でも映像枠外に広告を表示できるようになる。

この枠や広告内容がビジネス上最も重要な箇所かと思われる。

ある意味「視聴率」を稼げることが分かれば、「媒体」として認められる(売上次第)。

そうなってくると、現行のTV広告のビジネスモデルに加えて、新しい戦いが始まる可能性。

#日本では大手代理店や総務省がどう取り入るかが焦点?


iTunesでの動画コンテンツ販売の拡充。

見逃したTV番組の販売。Appleコミッションをもらう。

アメリカでは確かもうあるけど、もっと充実するみたいな感じ?(適当・・・)

MacでTV番組みるのと、TVに丸々映せるのじゃ、結構売上が違いそう。

まあ・・・、それ以前に全部撮っちゃえば良くなるっていう話でもありますがね。


スカイプやFaceTimeなどのテレビ電話の公式サポート

推奨カメラをオプション品で発売するとともに、標準的にテレビ電話をサポートする。一般カメラも対応するが、互換性の問題から一部のカメラに限定することはありうる。

これ、どの家電メーカーも、コンセプト発表ではテレビ電話のデモしてるのにずっと実現しなかったんだけど、そりゃテレビだけ売ってるからですよね。AppleOSで売ってるから強いっす。


母艦問題

AppleデバイスはすべてPC/Macに同期しなければならない」問題はそろそろ解消されてほしい。

同期先にこのSTBも加えても良いと思う。

そして、長らく有線限定だった同期も、802.11nを使用したワイヤレス同期が可能になると思う(ていうか望む。)

ただ、そのためには同期元のiTunesデータベース(すなわちSTB内のiTunes)を自分で更新できる必要があるので、CDの読み込み等の機能が必要になるだろう。

元々MP3になってるデータはどうやって取り込むのかは謎だが、限定的にUSBからの読み込みを許可するのかもしれない。


Back to my iSetTopBox

mobilemeに入ると、Back to my macと同等の機能がついて、これに保存してある映像が見れる、とか。


オーディオシステムとの連携

今のAirport Expressの機能を拡張して、ワイヤレスでオーディオシステムに音声飛ばすようにとかできそう。



最後に

たくさん妄想を書いたが、そこまで外れてもいないような気がする。TVが高機能なOSを持つことはいつか必ず起こることだし、それに伴って起こりうる変化をAppleの現状に即してまとめただけである。

そしてこの、BDレコーダー+据え置き型ゲーム機ロケフリ・AVサーバー+PCっぽい機能が8万円で発売されたら、単純に安いと思えるけど、現行Mac miniの価格から考えると別に無理な価格設定ではないと思う。

ビジネスモデルとしては、「本体販売」、「iAdの売上」、「AppStoreの売上」、「動画コンテンツ販売のコミッション」、「mobilemeの販売」あたりで儲けるんだろう。

MacとかiPhoneの事業みたいに、利益率がすごいことになっちゃうのは、想像がつく。行かない手はないでしょう。

もしこのようなデバイスが出て、日韓の家電メーカーがどう対応するかはかなり楽しみだけど、これだけソリッドな戦略と資源とオペレーションを持ってるAppleに勝てる気は正直あんまりしないのですよね。

何を持って勝ちとするかは分からないけど。

ただ、こういうのが出てくると、テレビ本体がPCディスプレイと競合するようになっちゃう気もしますよね。


ではでは。

2010-05-05

[]Safariで検索バーに飛ぶショートカットを設定する。

macにしてからというもの、Firefox使ったりChrome使ったり色々ふらふらしてたんですが、Safariにしてみることにしました。理由はFirefoxは重い。Chromeは1passwordが使いにくいという理由です。

とりあえず、色々設定。

タブとマウスジェスチャプラグインインストール

SIMBLSnow Leopardに対応したのでインストールして各種プラグインを導入。プラグインに関しては、ここを参考に。僕は、SafariGesturesとSafariStand、あと、Glimsを入れました。

インストールの仕方は、SIMBLインストールした後、

/Library/Application Support/SIMBL/Plugins

もしくは

/Users/ユーザ名/Library/Application Support/SIMBL/Plugins

に、**.bundleを入れて、Safari再起動すればOKです。


検索バーに飛ぶショートカットをCmd+Kに設定

FirefoxはCmd+Lでアドレスバー、Cmd+KでGoogle検索バーに飛んでくれる。ChromeはCmd+Lでアドレスバーに飛べて、直打ちも検索も出来る。

でもSafariは、Cmd+Lでアドレスバー、Cmd+Option+Fでグーグル検索バーに飛ぶというちょっと微妙な感じになってます。なのでCmd+Kを追加します。

  1. 「システム環境設定」-「キーボード」内の「キーボードショートカット」タブを開く。
  2. +を押して、アプリケーションSafari、メニュータイトルに「Google 検索...」と正確に入力します。(Googleの後に半角スペース、最後はドット3つ。)
  3. キーボードショートカットの欄で、Cmd+Kを押す。
  4. 「追加」ボタンを押して終了。

ちなみに、もともとCmd+Kは割り当てられていないので、使ってしまって大丈夫です。

2010-04-27

[][]Mac向けにALUT.frameworkをソースからビルドする。

MacにはOpenALは入っているのですが、ALUTは入っていないため自前でビルドする必要があります。Xcodeで使いやすいフレームワーク形式がよかったので、それを作成しました。以下手順です。

なお、こちらのページを参考にしました。

ソースのダウンロード

ここからALUTのソースコードダウンロードする。

config.hを作る

展開したフォルダの中で、

./autogen.sh
./configure LIBS="-framework OpenAL"

する。これでconfig.hが出来る。このあとmake && make installすれば普通にインストールできるが、今回はXcodeを使ってframeworkを作るのでしない。

Xcodeビルド

新規プロジェクトを作り、Cocoa Frameworkを選ぶ。名前はALUT。

プロジェクトに追加するものは以下の通り。

  • 上で落としたzipのうち、src以下の.cファイルと.hファイル
  • 上で作成したconfig.hとinclude/AL以下のalut.h
  • OpenAL.framework

このあと、左カラムでターゲットのALUTを選択すると右側にビルドに使われるもの一覧が出るが、その中のヘッダファイルのうち、alut.hだけ、役割をpublicに変える。(他はproject)。

また、プロジェクト設定の編集で、プリプロセッサマクロに「HAVE_CONFIG_H」を追加。(もしくはalutInternal.hの初めで#defineしてもいいと思う。)

そしてビルド。あとは、できたALUT.frameworkを

/Library/Frameworks

などに移せばよし。

※ちなみに、Snow Leopardの人はi386とx86_64両方向けにバイナリを作っておくと吉。(作り方はプロジェクト設定の編集で「アクティブアーキテクチャのみビルド」のチェックを外し、「有効なアーキテクチャ」にi386 x86_64とか書いておけばOKなはず。)

使う。

フレームワークを追加で、ALUT.frameworkを追加します。お手軽ですね。そのときのヘッダファイルはALUT/alut.hになるはずです。

2010-04-22

[][]XcodeでのOpenALのリンクエラー

OpenALは、音の3次元定位をやってくれるローレベルAPIiPhoneにも実装されているが、Panningしか対応していない(左右の動きのみ)。

XcodeMac用に使おうと思ったらなぜかリンクでエラーが出る。「このバイナリppc用のものしかなく、x86_64向けのものはありませんよ」とのこと。普通にOpenAL.frameworkをプロジェクトに追加しただけなんだけど・・・。元々OSに標準でついているものなので、おかしいなと思ったら、なんかをインストールした拍子に、

/Developer/SDKs/MacOSX10.6.sdk/Library/Frameworks/OpenAL.framework

っていう、OS標準のものと違うやつが入ってたっぽい。これは

/Library/Frameworks/OpenAL.framework

シンボリックリンクになってるんだけど、それがppc向けしかなかった。(調べ方は、fileコマンドを使って、OpenAL.frameworkの内のバイナリ(Versions/Current/OpenAL)を調べます。)

[ koichiro /Library/Frameworks/OpenAL.framework ] file Versions/Current/OpenAL 
Versions/Current/OpenAL: Mach-O dynamically linked shared library ppc

なんじゃそりゃ、誰だ勝手に入れたの。ちなみにOS標準のものの場所は

/System/Library/Frameworks/OpenAL.framework

です。ややこしいね。これはちゃんと、x86_64, i386, ppcの全部あります。

[ koichiro /System/Library/Frameworks/OpenAL.framework ] file Versions/Current/OpenAL 
Versions/Current/OpenAL: Mach-O universal binary with 3 architectures
Versions/Current/OpenAL (for architecture x86_64):      Mach-O 64-bit dynamically linked shared library x86_64
Versions/Current/OpenAL (for architecture i386):        Mach-O dynamically linked shared library i386
Versions/Current/OpenAL (for architecture ppc7400):     Mach-O dynamically linked shared library ppc

ppcしかないframeworkを削除して一件落着。

[]Xcodeライブラリのリンクの順序

いまいちXcodeライブラリのリンクの順序がよくわからん。どっかにのってないのかな?

2010-04-20

[]execファミリーの解説

http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/function.html#execl

詳しい。ためになる。

execve関数がexec関数ファミリーの親。各関数引数を加工して execve関数を実行する。

execlとexeclpとexecle の l は listの略でコマンド引数を可変長引数で与える。

execvとexecvpとexecve の v は vectorの略でコマンド引数配列で与える。

execlpとexecvpの p は path の略で環境変数PATHを参照してコマンドを探してくれる。

execleとexecveのeは envirionment の略で環境変数を与える。

[][] Objective-C++を触ってみた。

本家のページを参考にObjective-CからC++のコードを呼んでみた。

ていうか、サンプルコード実装しただけだけど!注意は、ファイル名を.mmにすること。Xcodeはファイル名で区別しているみたい。

難しいのかと思ったらすごい簡単。すばらしいね!

class Hello {
private:
	id greeting_text;  // holds an NSString
public:
	Hello() {
		greeting_text = @"Hello, world!";
	}
	Hello(const char* initial_greeting_text) {
		greeting_text = [[NSString alloc] initWithUTF8String:initial_greeting_text];
	}
	void say_hello() {
		printf("%s\n", [greeting_text UTF8String]);
	}
};

@interface Greeting : NSObject {
@private
	Hello *hello;		// hold c++ object
}
- (id)init;
- (void)sayGreeting;
- (void)sayGreeting:(Hello*)greeting;
- (void)dealloc;
@end


@implementation Greeting
- (id)init {
    if (self = [super init]) {
        hello = new Hello();
    }
    return self;
}
- (void)sayGreeting {
    hello->say_hello();
}
- (void)sayGreeting:(Hello*)greeting {
    greeting->say_hello();
}
- (void)dealloc {
    delete hello;
    [super dealloc];
}
@end


int main (int argc, const char * argv[]) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
	
    Greeting *greeting = [[Greeting alloc] init];
    [greeting sayGreeting];                         // > Hello,  world!
	
    Hello *hello = new Hello("Bonjour, monde!");
    [greeting sayGreeting:hello];                   // > Bonjour,  monde!
	
    delete hello;
    [greeting release];
    [pool release];
    return 0;
}

2010-04-08

[]Roombaを使ってみた

ずっと前に書いたRoombaですが、eBay.comでポチったものの、いっこうに送られてこないので結局キャンセルして、ちょうどアメリカに行く友達に直で買ってきてもらいました。(Roomba560が350ドルくらいだった)

Roombaすごいです。家が綺麗になります。主な「効用」は下記の通り。

  • とにかくRoombaに掃除させたいがために、床に何も置かなくなる(自分・親)
    • そして家の中を整理しはじめる(自分・親)
  • うごいてるのがちょっと面白いので、掃除の頻度が上がる。(親)
  • やってるうちにどんどんいろんなところを掃除させたくなる。(親)
    • ちなみに「自分で掃除したくなる」ではないのがミソ。

能力については、結構良いです。あのダメそうなルックスからはわかりませんが、目に見えるゴミはほとんどなくなります。意外と出来る子です。

だめなところは、

  • 結構うるさい。掃除機と比べれば静か。#静かになったらなったでぶつかりそうな気がするけど。
  • 電源コードとかには見事に引っかかる。(前準備マスト)
  • 入るゴミの量が少ない。一回ごとにゴミ箱に捨てなきゃダメ。

思ってなかったことは、

  • 前準備するのだるいって思ってたけど、意外と前準備はそこまでだるいと感じない。
  • はじめ、うちの犬がすごいビビってたのが可愛かったw #もう慣れました

買う予定がある人は、アメリカで買うことをお勧めします(もしくはAmazon.comなど)。日本のストアの半額以下です。説明書は英語になりますが、結局SPOTボタンしか押さないのであんまり気になりません。

2010-04-07

[]OpenCV関係のリンク集

OpenCVはWillowGarageがホストしてから活発に開発が行われるようになっています。しかし、依然としてバグも多く、仕様の変更も頻繁にあるようです。使う方は、意味不明のバグに出会っても対処できるよう開発状況を把握しておくと良いかもしれません。

ただ、現在のOpenCV関連の情報はいろいろなページに点在していて、入念にチェックしないとわからないことも多いです・・・。

そこで、リンク集をこのエントリーにはっつけます。もう、多すぎるので自分のためのメモみたいな感じです。

いやー、多い・・・。

[][]OpenCV 2.1リリース

OpenCV 2.1がリリースされました。

https://code.ros.org/svn/opencv/trunk/opencv/doc/ChangeLog.htm

に変更履歴が書かれています。個人的に気になるところでは、

あたりでしょうか。

CocoaとQTKitの対応は、OpenCVの開発のTracを見ると、ビデオ画像の取得のところでバグがあるらしく、#253

cvQueryFrame() with QTKit causes serious memory leak on Mac 10.6 x86_64

というバグが報告されてます。個人的にはObjective-Cよくわかんないので、これが直ったら2.1にするつもりです。

以下、原文をコピペします。

OpenCV 2.1 is basically a stabilized OpenCV 2.0, yet there are a few new features. 

>>> General modifications

  - SVN repository has been migrated from SourceForge to https://code.ros.org/svn/opencv.
    The bug tracker has been moved to https://code.ros.org/trac/opencv/.
    And we also have OpenCV twitter! http://twitter.com/opencvlibrary 

  - The whole OpenCV is now using exceptions instead of the old libc-style mechanism.
    That is, instead of checking error code with cvGetErrStatus() (which currently always returns 0)
    you can now just call OpenCV functions inside C++ try-catch statements,
    cv::Exception is now derived from std::exception.
  
  - OpenCV does not support autotools-based build scripts,
    CMake (www.cmake.org) is the only way to build OpenCV on any OS.
    See http://opencv.willowgarage.com/wiki/InstallGuide.
    
  - All the parallel loops in OpenCV have been converted from OpenMP
    to Intel TBB (http://www.threadingbuildingblocks.org/). Thus parallel version of OpenCV
    can now be built using MSVC 2008 Express Edition or using earlier than 4.2 versions of GCC.
    
  - SWIG-based Python wrappers are still included,
    but they are not built by default and it's generally preferable to use the new wrappers.
    The python samples have been rewritten by James Bowman to use the new-style Python wrappers,
    which have been also created by James.
    
  - OpenCV can now be built and run in 64-bit mode on MacOSX 10.6 and Windows (see HighGUI and known problems below).
    On Windows both MSVC 2008 and mingw64 are known to work.
    
  - In theory OpenCV is now able to determine the host CPU on-fly and make use of SSE/SSE2/... instructions,
    if they are available. That is, it should be more safe to use WITH_SSE* flags in CMake.
    However, if you want maximum portability, it's recommended to turn on just WITH_SSE and WITH_SSE2
    and leave other SSE* turned off, as we found that using WITH_SSE3, WITH_SSSE3 and WITH_SSE4_1 can yield
    the code incompatible with Intel's pre-Penryn or AMD chips.

  - Experimental "static" OpenCV configuration in CMake was contributed by Jose Luis Blanco.
    Pass "BUILD_SHARED_LIBS=OFF" to CMake to build OpenCV statically.   

>>> New functionality, features:

  - cxcore, cv, cvaux:
  
    * Grabcut (http://en.wikipedia.org/wiki/GrabCut) image segmentation algorithm has been implemented.
      See opencv/samples/c/grabcut.cpp
  
    * new improved version of one-way descriptor is added. See opencv/samples/c/one_way_sample.cpp
    
    * modified version of H. Hirschmuller semi-global stereo matching algorithm that we call SGBM
      (semi-global block matching) has been created. It is much faster than Kolmogorov's graph
      cuts-based algorithm and yet it's usually better than the block matching StereoBM algorithm.
      See opencv/samples/c/stereo_matching.cpp.
      
    * existing StereoBM stereo correspondence algorithm by K. Konolige was noticeably improved:
      added the optional left-right consistency check and speckle filtering,
      improved performance (by ~20%).
      
    * User can now control the image areas visible after the stereo rectification
      (see the extended stereoRectify/cvStereoRectify), and also limit the region
      where the disparity is computed (see CvStereoBMState::roi1, roi2; getValidDisparityROI).
      
    * Mixture-of-Gaussian based background subtraction algorithm has been rewritten for better performance
      and better accuracy. Alternative C++ interface BackgroundSubtractor has been provided,
      along with the possibility to use the trained background model to segment the foreground
      without updating the model. See opencv/samples/c/bgfg_segm.cpp.    
      
  - highgui:
    
    * MacOSX: OpenCV now includes Cocoa and QTKit backends, in addition to Carbon and Quicktime.
      Therefore you can build OpenCV as 64-bit library. Thanks to Andre Cohen and Nicolas Butko, which components 
      
      Note however that the backend are now in the alpha state, they can crash or leak memory,
      so for anything more serious than quick experiments you may prefer to use Carbon and Quicktime.
      To do that, pass USE_CARBON=ON and USE_QUICKTIME=ON to CMake and build OpenCV in 32-bit mode
      (i.e. select i386 architecture in Xcode).
      
    * Windows. OpenCV can now be built in 64-bit mode with MSVC 2008 and also mingw64.
      
    * Fullscreen has been added (thanks to Yannick Verdie).
      Call cvSetWindowProperty(window_name, CV_WINDOW_FULLSCREEN, 1) to make the particular window
      to fill the whole screen. This feature is not supported in the Cocoa bindings yet.     
     
    * gstreamer backend has been improved a lot (thanks to Stefano Fabri)     

>>> New tests:

  - A few dozens of new tests have been written and many existing tests have been extended
    to verify OpenCV correctness thoroughly. As a result, we brought the test coverage from
    rather mediocre numbers to pretty impressive ones (especially for cxcore and cv)!
    
    Module                 OpenCV 2.0 coverage                 OpenCV 2.1
                         (functions/conditions)          (functions/conditions)     
    cxcore                      65/54                            91/73
    cv                          52/46                            80/68
    ml                          66/47                            73/52
    highgui                     17/3                             54/27
    cvaux                        0/0                              5/12

  - Many new regression tests have been written in Python that check both OpenCV and the new-style bindings.

  - The test data moved to the separate repository: https://code.ros.org/svn/opencv/trunk/opencv_extra/testdata.
    And it is not included into the package, thus some tests from the cvtest and mltest will report about the missing data.
    You can download the directory to your hard drive and run cvtest like:
    ./cvtest -d <path_to_opencv_extra>/testdata/cv
    ./mltest -d <path_to_opencv_extra>/testdata/ml  
    
  - The test engine has been improved:
     added flags -tn, -seed, -r
     the detailed information about failed tests is displayed right in the console.

>>> Bug fixes:

  - about 200 bugs have been fixed. For the list of closed and still open bugs, please look at
    https://code.ros.org/trac/opencv/report and
    http://sourceforge.net/tracker/?group_id=22870&atid=376677.    
  
>>> Known problems/limitations.

  - there are some sporadic test failures on different platforms.
    Most probably they are caused by some very special test cases
    (that are usually generated randomly on each test run) and the test cases
    are not properly handled by the functions or by the tests.
    Some of the tests have been reproduced and reported here:
    
    https://code.ros.org/trac/opencv/ticket/29
    https://code.ros.org/trac/opencv/ticket/113
    https://code.ros.org/trac/opencv/ticket/114
    
  - the new Python bindings do not include interface for the new C++ functionality and MLL.
    this is going to be addressed in some special intermediate OpenCV release
  
  - documentation is also incomplete at the moment and there are occasional formatting,
    grammar and semantical errors.
    We continue to improve it on a regular basis. Please, check the up-to-date online
    documentation at:
    
    http://opencv.willowgarage.com/documentation/c/index.html (C)
    http://opencv.willowgarage.com/documentation/cpp/index.html (C++)
    http://opencv.willowgarage.com/documentation/python/index.html (Python)
    
  - please also check the list of open bugs at
    https://code.ros.org/trac/opencv/report and
    http://sourceforge.net/tracker/?group_id=22870&atid=376677. 

2010-04-05

[][]iPadとその先

iPad発売されましたね。個人的にはiPadiPhone以上に売れると思っています。 長いスパンで見れば(10年くらい)、PCの主要な一形態としてデファクトスタンダードになるくらい流行るんじゃないかと。

1月にiPadが発表される前日、とある記事が公開されました(下の記事)。1年前に、パソコンの父アランケイにインタビューしたもので、この記事の翌日発表されるはずのデバイス(=iPad)にこんな感じでコメントを寄せてます。

“When the Mac first came out, Newsweek asked me what I [thought] of it. I said: Well, it’s the first personal computer worth criticizing. So at the end of the presentation (the first iPhone announcement in 2007), Steve came up to me and said: Is the iPhone worth criticizing? And I said: Make the screen five inches by eight inches, and you’ll rule the world.” 
http://gigaom.com/2010/01/26/alan-kay-with-the-tablet-apple-will-rule-the-world/ 

読んですげーと思いましたw 最後の文、まさにiPadそのものだったりします。(少しだけサイズは違いますが)つまり、アップルアランケイの予言(助言)どおりの、まったく言われたとおりのデバイスを発表したというわけです。

そして、このアランケイのアドバイス。 彼が1970年代に出した論文で、コンピュータとしてあるべき姿として語ったデバイスそのものであったりします。

Alan Kay. Personal Dynamic Media. IEEE Computer, 1977. 

全くパソコンなんてなかった時代に (というかPersonal Computerという言葉は彼が作った) あるべき計算機の姿というのを語るだけでどれだけすごいかわかりますが、 それが30年以上かけてようやく実現されたというわけです。

という、自分的にはこっそり興奮しているデバイスだったりします。



で、iPadはあと数週間で触れるようになるとして、iPadの次は何がくるのだろうかと考えてみました。 ちなみに、一切どこからも情報を得てないですし、何も確証はありません。思考実験です。妄想です。w 以下、つらつらとその妄想を書いてみます。

次にAppleが作ってくるのは、個人的にはやっぱりテレビまわりなんじゃないかと思います。すなわち、今で言うところのHDDプレーヤーに当たるところですね。 ホームネットワークベースステーションとして。

簡潔に言えば、iPad OSによるAppleTVのリバイバルです。

その際、使いやすいワイヤレスキーボードと(リモコン的な)ポインティングデバイスを作って、TVスクリーンアプリ、動画販売の市場をさらに切り開くんじゃないかと。iTunesは他社にはない絶対的な強みですから、iTunesを中心にセグメントの水平展開をはかるというのは非常に堅実かつ現実的な選択肢なはずでしょう。

Podcastのテレビ版を作っても良いかもしれません。放送局ですね。また、もちろんテレビの録画ができ、ブルーレイHDDも見れるようにして、DLNAApple的には名前違うんだっけ?)で家中のiPadiPhone、PCにも送れるようになると思います。同時にHDMIにも対応するでしょう。

ただ、今までずっと保ってきたPCのiTunesによるSync元の一元管理というのを、このデバイスでも保つかどうかはわかりません。ほとんどPCのような扱いになるのであれば、こちらも母艦扱いしてもいいでしょう。

この製品ですが、Appleの最近の傾向から言うと、ただ単に同じ商品カテゴリに切り込んでくる感じはしないというか、新しいカテゴリを作るような形で出してくると思いますが、ミックスされる現行の近いデバイスとしてはWii、AppleTV、HDDレコーダー、メディアサーバー、あと入れてもTime Capsuleあたりでしょうか。 入らない感じもするけど・・・。

外観としては現行のAppleTVやMac miniとあまり変わらない感じだと思います。Appleの特徴として、うまくできた外観は2,3サイクル保って使うというのは結構よくやる手な気がします。iPhoneiPod touch, iPadや、iMacMacbook Pro, Cinema Displayなどでしょうか。ブランディングとしても良い手段ですし、効率も良いですね。

OSはベースはiPadOSになると思います。iPadが流行る頃には、今のWindowsMacのような細かいボタンや繊細な操作を要求するようなインタフェースをTVに求めるなんてこと自体ありえなくなっているでしょう。iPadOSを大きくするだけで十分かと思います。(Landscape modeだけになっちゃいますけどね。)

プロセッサAppleの自社のやつになるでしょう(iPadのやつも速いみたいだし)。HDDは出る時期によりますが1TBと2TBくらいでは。

一番ネックになるのが多分リモコンだと思います。UIST、CHIなどのHCI系の学会発表待ちかもしれません。でも今のところで言えば、入力スタイルはWii方式ですかねぇ・・・やっぱり。精度としてはソニーのモーションコントローラの方式を使えば十分な感じもあるので、それになる可能性は高いと思っています。本体の前面にも目立たない程度にセンサがつく感じですね。iPadの黒い帯みたいなのでセンサを隠すかもしれません。

ただ、リモコンの方はデザイン的に薄さや、流線型のフォルムを作れない限り、発表しないと思いますから、形状の試行錯誤を繰り返したりするんだと思います。

キーボードについては、ワイヤレスキーボードできれいなのwを作成するか、リモコン全面に静電センサーなどをつけて新しい入力方式を作ってしまうかになるでしょうか。いずれにしても従来のようなボタンをはめ込んだキーボードではないと思います。(ただの予想です。) 個人的には現行のワイヤレスキーボードをベースに、静電センサ+超音波触覚フィードバックあたりで作ってほしいところです。

ゲーム用のリモコンを作れば、このデバイスだけでさらにTVゲーム市場まで食えるという美味しい話でもありますが、その辺はわかりません。ただ開発者にとっての開発効率はかなりいいはずです。iPhone開発とPS3開発で言ったらiPhone開発の方が圧倒的に楽でしょうから。もちろんPS3のゲーム開発に金がかかりすぎてWiiで発売するメーカーが増えたっていう話を思い出させます。

こんなところでしょうか・・・。(当たったら嬉しいなー。)


割と、このブログを読んでくれてる方は技術者ばかりだと思うので、技術的には何も真新しい内容が入っていない、ベーシックすぎる妄想wで、つまらないと感じる方も多いと思います。w

個人的にはAppleの良さは、自社のビジネスの中核を伸張することを大前提に、今すでにある技術や製品を「ユーザエクスペリエンス」の観点から徹底的にハードソフトともに作り直して、市場に打ち出すというのがうまい会社だと思っています。

技術的にも機能的にも新しいところはありません。iPodiPhoneiPadも参考となる製品がすで市場にあり、機能を取捨選択して一つのプロダクトとしてまとめ、洗練されたUIを提供したということに過ぎません。その背景にあるものがユーザエクスペリエンスであり、製品製作の全ての判断基準がユーザエクスペリエンスであるということでしかありません。

そういう意味で、ジョブズプレゼンは、後から付与された物語ではなく、製品のコンセプトから販売に至るまで守ってきた思想を、報告しているというように感じます。

願わくばこのようなGame-changingな製品を日本企業から出してほしいと願いたいですが、日本の家電メーカーの中で、ユーザエクスペリエンスを意思決定の第一義に置くような会社は、今のところないのではないかと感じてしまう今日この頃です。

2010-03-30

[]ドリー、パン、ティルト

本当にいつも忘れるので書いておく。

ドリー(Dolly)
カメラが被写体と一緒に動く。平行移動。
パン(Pan)
カメラを横に振る。パノラマのpan
ティルト(Tilt)
カメラを縦に振る。

ちなみに、被写体に従ってパンすることを、つけパンというらしい。F1とか。

[][]"Is that make sense?"

iTunes Uとかを聞いてると頻繁に

"Is that make sense?"

って聞こえるフレーズが出てきます。ずっとDoesじゃねーの?って思ってたんだけど、このページによると、アメリカ英語ではDoesをsだけしか言わなかったりするらしい。それがIsに聞こえてたってことでした。解決。

2010-03-29

[][]Mac OSX Snow LeopardOpenCV 2.0をCarbon非依存(つまりCocoa)で64ビットでちゃんとカメラ(iSight)も使えるようにインストールする方法。


タイトルが長い・・・。

以前の日記Snow Leopardだと、カメラやHighGUIをきちんと全部使うにはCMakeで32ビットコンパイルするしかないと書きましたが、実は64ビットで使える方法がありました。(dandelionさんがコメント欄で教えてくれました)なんと、OpenCV2.0のHighGUIをCocoaで書き直している人がいて(!)、それをCMakeでデフォルトコンパイラ(GCC4.2)でビルドすればオッケーっぽいです。というか動きました。

http://code.google.com/p/opencv-cocoa/

以下、インストールのしかたを書きます。だいたい普通のOpenCV2.0と一緒です。


svnでチェックアウト

svn checkout http://opencv-cocoa.googlecode.com/svn/trunk/ opencv-cocoa-read-only

適当なフォルダにソースを落としてきます。


CMake2.6でMakefile作成

2.6が推奨らしいので、CMake2.6-patch4を使いました。

Where is the source code: 先ほどのチェックアウトしたフォルダ
Where to build the binaries: 上のフォルダ/build など(好み)

Configureを押すと、Specify the generator for the projectと出るので、Unix Makefilesを指定します。コンパイラの指定はUse default native compilersでOKです。

オプションで指定するのは、

  • CMAKE_OSX_ARCHITECTURESの欄をi386;x86_64と書き換える
  • ENABLE_X86_64にチェックを入れる
  • ENABLE_OPENMPにチェックを入れる
  • WITH_CARBONにチェックがはずれているのを確認する
  • CMAKE_INSTALL_DIRを変えたかったら変える。

くらいでしょうか。あとは、Configureを押し、Generatorを押します。


make && make install

あとは、Makefileが出来上がったフォルダに移動して、make && make installです。

make
sudo make install

使い方

使い方が特殊です。そんなに手間ではないですが。

http://code.google.com/p/opencv-cocoa/wiki/UsingCocoaWithOpenCV

ここに書いてあるとおりにやってください。

#include <opencv/cv.h>
#include <opencv/highgui.h>

int myCode(int argc, char *argv[]) {
  // ここにほんとのmainを書く。
}
int main(int argc, char *argv[]) {
  return cvInitSystem(argc, argv, myCode);
}

ただ、注意しなければならないのは、Xcodeで新しいプロジェクトを作るときにCocoa Applicationを選べとのことです。

いつも使う用のスケルトンとしては、一つ一つフレームワークをプロジェクトに追加したりするのは面倒なので、はじめにチェックアウトしたソースファイルのsamples/MacOS-Cocoa/にあるサンプルプログラムをそのまま改編して使うのが良さそうです。

以上です。僕の環境ではいまいちHaarが動かないんですが、今のところ機械学習は使わない予定なので一応スルーしてます。