2006年01月31日

リファレンスへのリファレンス

C++ では「リファレンスへのリファレンス」や「リファレンスへのポインタ」は禁止されています。これを読んで「え? 出来るんですけど…」と思った方、おそらく以下のような例を考えているのではないでしょうか。

001 void f() {
002 // リファレンスへのリファレンス?
003 int i; // int を用意
004 int& ri = i; // それを参照するリファレンス
005 int& ri2 = ri; // そのリファレンスを参照するリファレンス
006
007 // リファレンスへのポインタ?
008 int* pi = &ri; // リファレンスのポインタ
009 }

確かに「リファレンスへのリファレンス」や「リファレンスへのポインタ」と言えなくもないですが、これは単にリファレンスやポインタをリファレンスによって初期化しているだけです。C++ で禁止されている「リファレンスへのリファレンス」や「リファレンスへのポインタ」は以下のようなものです。

001 void f() {
002 // リファレンスへのリファレンス
003 int i; // int を用意
004 int& ri = i; // それを参照するリファレンス
005 int&& ri2 = ri; // おっと、&& は論理AND演算子だ!
006 int& & ri3 = ri; // リファレンスへのリファレンス(エラー!)
007
008 // リファレンスへのポインタ
009 int&* pi = &ri; // リファレンスへのポインタ(エラー!)
010 }

リファレンスは参照先の別名に過ぎず、実体はありません。実体のないリファレンスを指し示すことは出来ませんし、実体のないリファレンスのアドレスが存在しないことも納得できます。

しかし、テンプレートとリファレンスを併用すると、簡単に「リファレンスへのリファレンス」が生成されてしまいます。
これは bind1st や bind2nd と mem_fun, mem_fun_ref の組み合わせで発生する問題として有名です。Effective STL 50項でも取り上げられており「参照への参照問題」と訳されています。ここでは参照をリファレンスという用語で統一していますので、この問題は「リファレンスへのリファレンス問題」ということになるでしょう。

001 template struct A {
002 void f(const T& t) {} // T がリファレンスだとマズイ!
003 };
004
005 template void f1(void (*pf)(ArgType)) {
006 A a;
007 }
008 void f2(const int&) {}
009
010 void f() {
011 f1(f2); // ArgType が const int& ということは、T も const int& になってしまう。
012 }

標準化委員会はこの問題に対処するため、標準の変更を検討しているそうです。しかし、標準が改訂され、コンパイラベンダがそれに対応するまでにはもう少し時間がかかります。もし、今すぐにでもこの問題を解決したいならば Boost.org を参照しましょう。そこには、まさにこの問題を解決するための boost::call_traits というテンプレートが用意されています。
posted by シンビアン at 08:47| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

戻り値とリファレンス

戻り値とリファレンス

戻り値にリファレンスを用いる場合には、引数にリファレンスを用いる場合以上に注意が必要です。例えば、以下のようにうっかりローカル変数のリファレンスを返してしまうと、戻り値は関数呼び出しが終わった瞬間に不正な値となってしまいます。

001 struct test_obj
002 {
003 test_obj() { cout << "test_obj: construction" << endl; }
004 ~test_obj() { cout << "test_obj: destruction" << endl; }
005 int val_;
006 };
007
008 test_obj& f1()
009 {
010 test_obj obj;
011 obj.val_ = 1;
012 return obj; // おっと、ローカル変数を返してる。
013 }
014
015 void f()
016 {
017 test_obj& obj = f1(); // f1 の戻り値は関数の終わりで無効になっている。
018 cout << obj.val_ << endl; // もし動いても、それは偶然。
019 obj.val_ = 2; // これも危険。
020 cout << obj.val_ << endl; // やっぱり偶然。
021 }

メンバ変数を返すようにしていれば安心かというと、そうでもありません。例えば const なメンバ関数が const でないリファレンスメンバを返すと、以下のように奇妙な現象を引き起こします。(参照: Effective C++ 29項 内部データの「ハンドル」を返すのはやめよう)

001 class A {
002 int i_; // データ
003 int& r_; // そのリファレンス
004 public:
005 A() : i_(0), r_(i_) {}
006 int GetVal() const { return i_; } // データを返す
007 int& GetRef() const { return r_; } // あっ!
008 };
009
010 void f()
011 {
012 const A a; // a は const
013 cout << a.GetVal() << endl; // データは初期値
014 a.GetRef() = 1; // GetRef は const メンバ関数なので、この呼び出しはOK.
015 cout << a.GetVal() << endl; // const な a のデータが書き換わってしまう!
016 }

そもそも、リファレンスを返すインタフェースは実装に制限を加えてしまうという意見もあります。例えば、以下のように値を返すインタフェースであれば、その実装でメンバを返そうがテンポラリを返そうが問題ありません。

001 class Base {
002 public:
003 virtual ~Base() {}
004 virtual int GetVal() const = 0; // 値を返すインタフェースなら…
005 };
006
007 class A : public Base {
008 public:
009 virtual int GetVal() const { return 0; } // 定数でもOK.
010 };
011
012 class B : public Base {
013 public:
014 virtual int GetVal() const { return int(1); } // テンポラリもOK.
015 };
016
017 class C : public Base {
018 int i_;
019 public:
020 C() : i_(2) {}
021 virtual int GetVal() const { return i_; } // メンバ変数だってOK.
022 };

しかし、以下のようにリファレンスを返すインタフェースだったならば、その実装でテンポラリを返すことが出来なくなってしまいます。たとえ戻り値が const リファレンスであったとしても、「const なリファレンスの初期化によるテンポラリオブジェクトの延命」で述べたようにテンポラリオブジェクトの寿命が切れてしまうため、結果は悲惨なものとなってしまうでしょう。

001 class Base {
002 public:
003 virtual ~Base() {}
004 virtual const int& GetVal() const = 0; // リファレンスを返すインタフェースだと…
005 };
006
007 class A : public Base {
008 public:
009 virtual const int& GetVal() const { return 0; } // error.
010 };
011
012 class B : public Base {
013 public:
014 virtual const int& GetVal() const { return int(1); } // error.
015 };
016
017 class C : public Base {
018 int i_;
019 public:
020 C() : i_(2) {}
021 virtual const int& GetVal() const { return i_; } // メンバ変数ならOK.
022 };

確かにリファレンスを返せば効率は改善されるかも知れません。しかし、戻り値に限っていえば、不要なテンポラリオブジェクトを取り除くような最適化が規格によって許されています。この「戻り値最適化」に関しては「More Effective C++ 項目20: 戻り値最適化の促進」を参照していただくとして、まずは運命をコンパイラに委ね、値を返すような関数を基本としておきましょう。大抵の場合、効率が問題になって初めて戻り値をリファレンスにすべきかどうかで悩んでも遅くはないはずです。

これまで、効率の面だけに着目してきましたが、クラスの派生が絡んでくると状況は一変します。インタフェースを返す関数が値を返してしまうと「スライシング問題」を引き起こしてしまうため、そのような関数はポリモーフィズムが有効なリファレンスかポインタを返さなければなりません。

001 class Base {
002 public:
003 virtual ~Base() {}
004 virtual void Name() const { cout << "Base" << endl; }
005 };
006
007 class Sub : public Base { // Base から派生
008 public:
009 virtual void Name() const { cout << "Sub" << endl; }
010 };
011
012 Base GetSub1() { return Sub(); } // マズイ! Sub を返しているつもり。
013 const Base& GetSub2() { static Sub sub; return sub; } // これならOK.
014
015 void f() {
016 GetSub1().Name(); // Base と出力される。
017 GetSub2().Name(); // Sub と出力される。
018 }

つまり、関数の戻り値を「値渡し」にするか「参照渡し」にするかは、効率で決めるのではなく設計の一部ということです。チューニングの必要に迫られるまで、設計を歪めるほどの最適化は必要ありません
posted by シンビアン at 08:33| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

シンボリックリファレンス

一般的なリファレンスの使い方では、式 $$var はリファレンス変数 $var のデリファレンスを表しています。それでは、$var がリファレンスではない場合はどうなるのでしょうか。$var の値が文字列の場合、たとえば "foo" であれば、$$var は $foo という変数を表します。これが「シンボリックリファレンス」です。次の例を見てください。

$foo = 10;
$var = "foo";
$$var = 100; # $foo を表すシンボリックリファレンス
print $foo; # 100 を表示

$$var を評価するとき、まず $var がハードリファレンスかどうか調べます。$var は "foo" という文字列なので、foo という名前の変数 $foo を評価しようとします。その結果、$foo に 100 が代入されます。この例では変数にアクセスしましたが、@$var とすれば配列 @foo に、%$var とすればハッシュ %foo にアクセスすることができます。

ただし、シンボリックリファレンスは大域変数しかアクセスできません。次の例を見てください。

sub bar {
my $foo = 10;
my $var = "foo";
print "$$var\n";
}

$foo = 100;
&bar; # 100 を表示する

関数 barの中で局所変数 $foo と $var を定義しています。$$var はシンボリックリファレンスで変数 $foo を表しますが、局所変数 $foo にアクセスするのではなく、大域変数の $foo にアクセスします。その結果 100 を表示します。
posted by シンビアン at 08:21| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

リファレンスの「ツボ」 〜 ポインタとはチト違う 〜

リファレンス(参照と呼ばれることもあります)は C++ で新たに追加された機能の1つです。これは、他のインスタンスを(文字通り)参照するという意味では、C の時代から備わっていたポインタと非常に良く似た機能といえるでしょう。その気になればリファレンスの代わりにポインタを使っても、さほど問題になることはありません。それでは、ポインタとリファレンスの違いは何なのでしょうか。また、リファレンスを使う上で注意すべきことは何なのでしょうか。今回は、このリファレンスについて深く掘り下げ、リファレンスの「ツボ」を発見していきたいと思います。
posted by シンビアン at 08:09| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

リファレンスの「ツボ」

* リファレンスとはポインタに若干の制限を加えた存在である。
* const リファレンスとテンポラリオブジェクトの寿命は、いつでも必ず等しいというわけではない。
* リファレンスを用いて引数を変更するのはやめよう。
* 戻り値にリファレンスを用いる場合は慎重に。
* テンプレートとリファレンスを併用する場合には「リファレンスへのリファレンス問題」に注意しよう。
posted by シンビアン at 08:08| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

ポインタとリファレンス

リファレンスは、変数の別名として作用するものでした。
これは、ポインタの仕組みによって構成されています。

リファレンスの正体は、「自動的に間接参照される定数ポインタ」です。

簡単に言い換えると

   ・常に*演算子が適用される

   ・ポインタ演算ができない

上のような制約があるポインタということになります。


*演算子が自動的に適用されるということは、常に間接参照されていること
になります。
よって、代入されたり参照されている先は常に変数ということになるので
別名を扱っているかのように見えます。


また、リファレンスは定数ポインタです。
ということは、ポインタ演算は全くできません。
つまり、配列の先頭要素を指して、そこから任意の要素にアクセスしたり
する事もできません。

あくまでリファレンスは、変数単体を示すものだということを忘れないで
ください。
そのため、ポインタのように高度なデータ構造を作り上げることは
できません。


リファレンスの価値はむしろ、記述が簡単になるということにあります。

例えば、よくある2数を交換するという関数の場合、

【ポインタ版】
   void exchange(int* a,int* b){
    int t;
    t = *a;
    *a = *b;
    *b = t;
   }

【リファレンス版】
   void exchange(int& a,int& b){
    int t;
    t = a;
    a = b;
    b = t;
   }

の様に、遥かにシンプルな記述ができます。
posted by シンビアン at 08:06| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

2006年01月30日

KDE ブラウザ『Konqueror』が ActiveX に対応、動画も OK

KDE は、Web ブラウザ『Konqueror』が Reaktivate モジュールを利用することによって、ブラウザに Shockwave などのマイクロソフトの ActiveX コントロールをインストールできるようになったことを明らかにした。

Reaktivate は、ActiveX コントロールを実行する際、Linux で Windows ソフトを実行する実行環境「WINE」ライブラリーに依存する。

Konqueror ブラウザは現在、KDE プラグインのほか、Microsoft Internet Explorer プラグイン、Linux 用 Netscape Communicator プラグインや Java アプレットを使ったページの閲覧を可能にしているが、Reactivate を実装することで、Konqueror はより多くの Web サイトに対応できるようになる。

Reaktivate を利用すれば、最終的にはあらゆる ActiveX コントロールを Konqueror ブラウザに取り入れることが可能になるが、今のところ対応しているのは、『Macromedia Shockwave Flash 5』や『LivePics』、『Macromedia Shockwave Player 8』などの一部に限られている。『Microsoft Windows Media Player』には対応していないが、将来的には、『Apple QuickTime 』プラグインにも対応しそうだ。

マイクロソフトの ActiveX はこれまで、セキュリティの脆弱性が批判されてきた。ActiveX コントロールのインストールは信頼できるサイトから行うことだ。

Reaktivate テクノロジーについても脆弱性が指摘されており、ActiveX のインストールの際にユーザー確認を行うものの、証明書や署名の確認ができないなどの問題がある。くれぐれも言うが、ActiveX のインストールは信頼できるサイトから行うことだ。
posted by シンビアン at 10:33| Comment(0) | TrackBack(0) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

S60 OSS Browser

About

The new Web browser for S60 is based on the WebCore and JavaScriptCore components of Apple’s Safari Web Kit that Apple uses in its Safari browser. Based on KHTML and KJS from KDE's Konqueror open source project, this software has enabled Nokia to achieve improvements in Web site usability on smartphones through the re-use of a proven desktop rendering engine that has been developed and optimized by a large open source community over many years.

This browser enables smartphone users to browse full Web pages on a smartphone screen with features such as:

* Preservation of the original page layout, presented just as the Web site designer intended;
* Easy navigation of Web pages through page miniatures, reducing the amount of scrolling;
* Pop-up blocking, enhanced start page, and simplified menus;
* Visual History, an easy-to-use back function, showing miniature views of previous pages;
* Text Search, which works as you type, taking you directly to the interesting part of the page;
* Dynamic HTML, supporting dynamic menus, rollovers, and scripted behavior such as AJAX applications;
* Extensive support of industry standards including W3C's HTML, XHTML 1.0, DOM, CSS and SVG-Tiny; other Web standards such as SSL and ECMAScript; and Netscape style plug-ins such as Flash Lite and audio.

Figure 1 explains the architecture for the new open source based Web Browser for S60. WebCore, JavaScript Core, and the Netscape Plugin API are all from open source. Blue items have been developed by S60 as part of the browser that is delivered to S60 licensees. Code in the blue items is not currently contributed to open source.

The WebCore and JavaScriptCore elements are from Apple Computer, which uses them in its popular Safari browser, and are covered by the LGPL open source license. These components in turn are based on KHTML and KJS from KDE's Konqueror open source project. See http://developer.apple.com/darwin/projects/webcore/ for details.

The Netscape Plug-in API is a ported version of the open source plug-in interface from Netscape Communications Corporation, covered by the Netscape Public License v1.1. See http://www.forum.nokia.com/browserapi/ for details. Nokia has added some extensions, also covered by that license.

The Browser Control API exists in current versions of the browser (starting with S60 2nd edition feature pack 2). It enables other S60 applications to use the browser as a control, for displaying HTML content within a defined region provided by the app. In the future this API will remain consistent with current versions of the browser.

The OS Abstraction Layer is partly defined by the existing open source browser components, and partly is the KWQ abstraction layer that was created by Apple. The KWQ layer that Nokia has ported to S60 will be published when it is complete, as part of the open source contribution.

For additional information, see our FAQ Sheet.

icense

The WebCore and JavaScriptCore elements are from Apple Computer, which uses them in its popular Safari browser. These components in turn are based on KHTML and KJS from KDE's Konqueror open source project. They are covered by the LGPL open source license.
posted by シンビアン at 10:28| Comment(0) | TrackBack(0) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

DoJaを超えるJava仕様を提供する──ドコモとサンの「スタープロジェクト」

「JavaOne Tokyo 2005」の基調講演に登場したNTTドコモの夏野氏が、サンとドコモが携帯Javaの共同プロジェクト「スタープロジェクト」を立ち上げたことを明かした。

 11月10日に行われた「JavaOne Tokyo 2005」の基調講演に、ドコモ執行役員 プロダクト&サービス本部の夏野剛マルチメディアサービス部長が登場、携帯Javaに関する今後のドコモの計画を話した。

 現在ドコモは、iアプリのJava仕様として「DoJa」を開発・採用しているが、夏野氏はこれを超えるアプリ開発を目指してサン・マイクロシステムズとの共同プロジェクト「*プロジェト」(スタープロジェクト)を立ち上げたことを明らかにした。

 サンとドコモが共同で携帯Javaのプロジェクトを立ち上げるのは2度目となる。「最初にJavaの携帯電話『503i』を出したときにも2年くらいかかって、サンとの共同プロジェクトで商用化した。同じようなやり方でサンと2社でさらに一歩進めるようなものをやりたい。開発者やJavaをビジネスに利用する企業、ユーザー──皆が有効に携帯電話のJavaを使えるように、さらに質の高いものにする」(夏野氏)

 初期のiアプリは簡単なゲームなどが主流だったが、今ではゲームの表現力が「(902iでは)PSPっぽく見える」(同)ところまで向上。2004年には、おサイフケータイのアプリとしても使われるようになるなど用途も広がってきた(2004年6月の記事参照)。夏野氏は「2001年、最初にJava端末を商用化したときにJavaはゲームのためだけにあるのではなく、将来は金融アプリケーションにつなげていきたいと話した(2001年8月の記事参照)。これが今、実現できていることをうれしく思っている」と振り返った。

 「そうはいっても、これで満足していてはいけない」ことから、さらなるJavaの進化と開発環境の改善を目指して、*プロジェクトを立ち上げるという。

 *プロジェクトでは、ユーザーの使い勝手やパフォーマンスの向上、開発のしやすさ、エンタープライズ向けアプリケーションとの統合のしやすさについてさらなる強化を図る。「DoJaを超えるアプリにチャレンジしたい。今の携帯電話のJavaではやりにくいことをさらに進め、セキュリティを強固で柔軟なものにする」

 世界中にさまざまな携帯向けJavaの仕様がある中で、DoJaは作りやすさやアプリの品質の高さが特徴だと夏野氏。こうした良い部分を活かしながら次のステップに進むと話す。「これからJavaは、携帯電話のプラットフォームとしてますます重要性を増す。開発者の方と一緒に有用性を世の中に広げていきたい」
posted by シンビアン at 10:15| Comment(0) | TrackBack(0) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

MS・Symbianに対抗、Linux携帯の拡大目指す中国ベンダー

世界初のLinuxスマートフォンをリリースした中国ベンダーE28は、リファレンスデザインのライセンス供与により、Linuxスマートフォン市場を拡大しようとしている。(IDG)

 世界初のLinuxベーススマートフォン2機種を立ち上げた中国のE28が、今度は携帯端末メーカー向けに、Linuxを基盤としたソフト・ハード設計をライセンス供与する。

 「当社の技術を利用すれば、メーカーはわずか2カ月以内に独自のLinuxスマートフォンを投入できる」とE28のロジャー・カン会長兼CEO (最高経営責任者)は、先週独フランクフルトで開催されたLinuxWorldカンファレンスでの取材で語った。「われわれはLinuxを、 MicrosoftとSymbianのスマートフォンOSに対抗するかなり強力なOSと見ている」と同氏は言い添えた。

 E28は、スマートフォン端末、リファレンスデザイン、アプリケーションソフトの設計・開発を専門に手がける。スマートフォンは、携帯電話とPDAの機能を兼ね備えたデバイスを求めるビジネスユーザーの間で急速に人気が高まっている。

 2003年9月、上海に本拠を置くE28は「e2800」モデルを投入し、揺籃期のスマートフォン市場を驚かせた。カン氏によれば、同モデルは「世界初の商用向けLinuxベーススマートフォン」であり、新興企業のE28が米Motorolaに先行した格好となった。Motorolaは2003 年2月にLinuxフォン計画を発表、同年10月に「A760」を提供した。

 E28製品がMotorolaよりも若干早くユーザーの手に行き渡ったのは偶然ではない。カン氏は2002年にE28を立ち上げる前、Motorolaのアジア地域担当パーソナルコミュニケーション部門社長を務めていた。

 e2800モデルの後、ビデオ機能を備えた折り畳み型の「e2800+」モデルが今年7月に投入された。

 カン氏によれば、E28は自社のLinuxソフト・ハードのリファレンスデザインをライセンス供与すると決定、これらを採用した製品でLinuxスマートフォン市場の拡大を目指すとしている。

 もっとも、これを実現するのは難題かもしれない。Strategy Analyticsの上席アナリスト、ニール・モーストン氏は次のように話す。「Microsoftが(Windows Mobile)Smartphoneソフトで抱える問題と同様、Linuxをサポートする企業も、主要ベンダーの携帯機器に自分たちのOSを搭載する難しさに直面することだろう。Symbianはこの市場で既に極めて強固な足場を築いている。それは主にNokiaのおかげだ」

 世界最大の携帯電話機器メーカーNokiaは、Symbianの最大株主。Symbianには、韓国Samsung Electronics、独Siemens、Ericssonとソニーの合弁企業Sony Ericsson Mobile Communicationsなどの携帯大手が出資している。

 Strategy Analyticsの推定によれば、世界市場におけるLinuxスマートフォンのシェアは2009年までに約5%程度になる見込み。「少なくともあと数年、Linuxはニッチ市場であり続ける――比較的大きなニッチではあるが――中国、そしておそらく日本での普及率が最も高くなるだろう」とモーストン氏。

 今年に入って、NTTドコモは、LinuxおよびSymbianを基盤とする先進的な端末開発を支援する目的で、携帯電話機メーカー6社に援助金を提供すると語った。

 E28のプラットフォームはあらゆる規模のメーカーを対象としており、カン氏によれば、ある「大手ブランド」ベンダーが間もなくライセンス契約に署名するという。

 E28のソフトプラットフォームには、電話機能、メッセージング(ショートメッセージサービス、マルチメディアメッセージサービス、電子メール)、インターネットブラウザ、マルチメディアシステム(MP4、3GP、H.263など)、多言語手書き認識、Windows PCとMac OS Xシステムとのデータ同期化などのアプリケーションが含まれ、既に入手可能となっている。

 ハードリファレンスデザインは現行のE28製品に基づくもので、詳細な図解、部品表やその他の設計文書が提供される。具体的な製品については2005年1〜3月期に発表される予定。

 E28は年内に、Linuxベースの高性能マルチメディアスマートフォン「e2808」を米国と欧州市場で投入する計画だ。来年初めには、高度のセキュリティを求めるユーザー向けのLinuxスマートフォンを予定している。

 なぜLinuxなのか? カン氏はいくつかの理由を挙げた。まずLinuxはプロプライエタリではなく標準ベースのオープンシステムであるため、迅速かつ高度な革新が期待できるという。

 またLinuxは組み込みシステム用にカスタマイズすることも可能だ。「われわれ自身がコードを管理するため、自由にカスタマイズしてソフトを顧客の特定ニーズに最適化できる。これは、非公開のソースコードに対するオープンソースソフトの大きな優位点だ」とカン氏。

 このほか、開発コストが低いこと、セキュリティが優れている点をカン氏は利点として挙げた。

 なおE28は、組み込みLinuxを主要スマートフォンOSとして推進する新しい業界団体Linux Mobile Allianceの設立メンバーでもある。
posted by シンビアン at 10:14| Comment(0) | TrackBack(1) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

MOAP(L)と互換性を持つミドルウェアフレームワーク

出資資金を使ってアプリックスが取り組むもう1つのプロジェクトが、携帯電話OSの補完的な役割を果たすソフトウェアだ。同社では「ミドルウェアフレームワーク」と呼んでいる。

 ドコモは「MOAP」(Mobile Oriented Applications Platform)の名称で、FOMA向けプラットフォームを定義しており、Linuxを使うMOAP(L)とSymbianを使うMOAP(S)の2つが用意されている(2004年11月18日の記事参照)。

 アプリックスは、MOAP(L)と関連づけてミドルウェアフレームワークを開発していく意向だ。「ミドルウェアフレームワークと、ドコモ資産の関わりについて確実にいえることはない。MORP(L)との互換性は考慮しながらの開発となる。採用を検討してもらえると思っている」

 またMOAP(L)以外にももう一種類のOSを想定していることも明らかにした。詳細は明かしていない。
posted by シンビアン at 10:12| Comment(0) | TrackBack(0) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

アプリックスも参加 ドコモの「スタープロジェクト」とは?

ドコモから130億円の出資を受けるアプリックス。新プロジェクトの1つは、ドコモとSunの「スタープロジェクト」。またMOAP(L)とも関わるミドルウェアフレームワークも開発していく。

 NTTドコモから130億円の出資を受け、新たなプロジェクトに乗り出すアプリックス(11月30日の記事参照)。11月30日に行われた説明会で、プロジェクトの一端が明かされた。
DoJaとMIDPのいいとこ取り──CDCベースの可能性も

 アプリックスが参加する新たなプロジェクトの1つが、次世代のJava仕様である「スタープロジェクト」だ(11月10日の記事参照)。これはドコモと米Sun Microsystemsが進めているもので、今後ドコモ端末への搭載が想定されている。

 スタープロジェクトの詳細は明らかになっていないが、アプリックスの郡山龍会長兼社長によると、従来のCLDCベースのものからCDCベースへの移行が、1つの案として視野に入っている。

 「現在のJavaは、携帯の上で1つのアプリを実行するという使われ方をされている。今から5〜6年前の携帯は複数のアプリを動かすだけのパフォーマンスがなかったため、1つのアプリを動かすだけだった。本来であれば、Javaが最も力を発揮するのは複数のアプリケーションを使える環境だ。そのためCLDCからCDCベースのものに移行するというのがスタープロジェクトの目標になっている」

 携帯向けJava仕様には、ドコモのDoJaや標準規格であるMIDPなどいくつかの規格があるが、そのベースになっているのがCLDC (Connected Limited Device Configuration)だ。これはパフォーマンスの低い携帯電話のハードウェア仕様に合わせて作られた仕様で、Javaバーチャルマシンの仕様と合わせ、CLDC/KVMとも呼ばれる。一方で家電などCPU性能やメモリが潤沢な機器向けに作られたのがCDC(Connected Device Configuration)だ。いずれも、組み込み機器向けJavaであるJ2MEの1つとして定められている。
posted by シンビアン at 10:11| Comment(0) | TrackBack(0) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

Symbian OS、そして「Series 60」とは何か(2/2)

Symbian OSのUIの中核──Series 60

 Symbian OSで少々ややこしいのは、OSとユーザーインタフェース(UI)が切り離されていることだ。WindowsやMac OSとは違い、Symbian OSには複数のUIが用意されている。

UI 画面解像度 特徴 採用端末
UIQ 240×320、208×320 両手操作。タッチパネル Sony Ericsson P800、BenQ P30
Series 60 176×208 片手操作 Nokia 7650、3650、N-Gage、Siemens SX1
Series 80 200×640 PDA向け Nokia 9210
その他 − − FOMA F2051など

 中でも最も大きなシェアを持つのが、Nokiaの「Series 60」というUIだ。「Nokia 7650」で初めて搭載されたこのUIは、他社にライセンスされているのが大きな特徴。

 Series 60は、Java VMなどのミドルウェアとUI、そしてドキュメントなどで構成される。ライセンスはソースコードという形で提供され、改変も可能だ。

アプリケーションの互換性というメリットを享受すべく、複数のメーカーがSeries 60のライセンスを受けて製品を投入する予定

 Siemens(SX1)とSamsung(SGH-D700)が既にSeries 60搭載端末を発表しており、パナソニック・モバイルもライセンスを発表している(2002年7月の記事参照)。Nokia自身も、「Nokia 3650」「Nokia 6600」「Nokia N-Gage」でSeries 60を採用した。

 実際のところ、アプリケーションソフトウェアの互換性には画面サイズが重要。Symbian OSと合わせてSeries 60を採用することで、互換性が圧倒的に高まる。

 「スマートフォンの中で、70%のシェアをSeries 60が取るだろう」とノキアモバイルソフトウェアアライアンス・アーキテクトの小林潔氏。Series 60を採用した端末は、2003年末までに1000万台を出荷する予定。Series 60向けのアプリケーションも、既に500以上が登録されているという。

 Series 60には複数のバージョンがあり、Symbian OS 6.1sに対応するのがSeries 60 v1.0−1.2、Symbian OS 7.0sに対応するのがSeries 60 v2.0となる。v2.0では、Java VMのミドルウェアがMIDP2.0をサポートするほか、UIテーマが設定可能。SyncMLも利用できるようになっている。

Symbian OS+Series 60、国内での展開は?

 ワールドワイドで標準的なOS+UIの地位を固めようとしているSymbian OS+Series 60。しかし日本国内での展開は、今のところ富士通がFOMAでSymbian OS+独自UIを採用したに留まっている。

 理由の1つは解像度にありそうだ。スマートフォンに分類されるドコモの「505iシリーズ」や、J-フォンの「J-SH53」などは、軒並みディスプレイの解像度をQVGA(240×320)まで上げてきている。Series 60が低解像度を保つ限り、Symbian OSは搭載してもSeries 60の採用は難しい。

 NOKIAのSeries 60アライアンスパートナーディレクターのジェラルド・ブルーエン氏はQVGA対応も考えていると話すが、Series 60全体の戦略は「ハイエンドからミドルレンジへ」だ。日本以外ではまだカラーディスプレイが普及してきたばかり。まずは海外での普及価格帯の端末に Symbian+Series 60の搭載を目指す。

posted by シンビアン at 08:57| Comment(0) | TrackBack(0) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

Symbian OS、そして「Series 60」とは何か(1/2)

Symbian OSとNokiaのUI、Series 60の組み合わせが、世界のスマートフォン市場で急速にシェアを伸ばそうとしている。Symbian OSそしてSeries 60とは何か。

 次世代携帯電話向けのOSを巡って、競争が激化してきた。中でも、最有力と見られているのが、SymbianのSymbian OS(用語)だ。6月25日、都内で「Forum Nokia Symbian・S60アプリケーション開発セミナー」が開催され、Symbian OS、そしてSeries 60プラットフォームの最新動向が紹介された。

オープンプラットフォームとしてのSymbian OS

 Symbian OSは、「カーナビで使うためではなく、携帯で使うために開発されたOSだ」とシンビアンのテクニカルディレクターである小西一弘氏は説明する。

 「単にPDAのOSを持ってきても、ちょっと変な携帯になる」(小西氏)。元々はSymbian OSもPSIONというPDA向けのOSだったが、現在は携帯電話に特化したOSとして地位を確立した。

Symbian OSの構造。PDA向けのOSと最も異なるのは「TSYと呼ばれる部分だ。ベースバンドとアプリケーションプロセッサをつなぐ役割をするもので、電話らしい動きをさせている」(小西氏)

広くライセンスされる標準的なOSとしては、Symbian OSのシェアは大きい。携帯電話メーカー各社のジョイントベンチャーとして生まれたSymbianの株主には、Nokia、Motorolaをはじめ、 Sony Ericsson、Siemens、Panasonic、Samsungなど大手海外メーカーが名を連ねる。Symbian OSのライセンス先にも大メーカーが並び、各社のシェアを合計すると、世界シェアで8割にも達する

 Symbian OSの特徴の1つは、「一種のPCのような世界」(小西氏)をもたらすオープンプラットフォームであることだ。将来に渡ってサポートする標準APIを定め、ソフトウェアの互換性を保持する。「Symbian OSは、きっちりAPIを守ればどの端末でも動く」(小西氏)。

 現在の携帯電話のOSのほとんどはカスタムメイド──そのメーカー独自のものだ。ところが端末の高機能化が進むにつれ、開発期間とコスト、そしてリスクの多くはソフトウェアが負うようになってきている。標準的なOSを使うことで、バグも減らせるし、世界中のアプリケーションを利用できるようになる。携帯電話メーカーがSymbian OSに注目する理由の1つはそこにある。

※ネイティブアプリケーションをダウンロードして実行できるのが Symbian OSの最大の特徴と言えるが、「ドコモさんは、まだオープンプラットフォームという考え方をお持ちになっていない。ダウンロードして楽しむという考え方は日本にはない。(Symbian OS搭載の)F2051もダウンロードできるのはJavaだけだ」(小西氏)。

 実際、Symbian OS採用端末の数は急拡大している。2000年にEricssonが「R380」がSymbian製OSを搭載したのを皮切りに、「Nokia 9210」「Nokia 7650」Sony Ericssonの「P800」などが登場。日本でも、富士通製の「F2051」、もうじき登場する「F2102V」(6月16日の記事参照)がSymbian OSを搭載する。

※初出で「R380]がSymbian OS v6.0搭載としましたが、最初のv6.0搭載端末は「Nokia 9210」になります。お詫びして訂正させていただきます。

 出荷台数もうなぎ登りだ。Nokiaのミドルレンジ「Nokia 3650」は、「月産で軽く100万台。これがうなぎ登りの貢献機種」(小西氏)。現在、出荷済みの製品は4社15製品。その後も開発中のものが10社21製品、仕様策定中のものは9社17製品があると小西氏は言う。
posted by シンビアン at 08:55| Comment(0) | TrackBack(1) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

Nokia、Series 60の名称を「S60」に変更

11月1日、Nokiaは同社のスマートフォン向けアプリケーションソフトの共通プラットフォーム「Series 60」の名称を「S60」に変更することを発表した。またS60のポータルサイト、http://www.s60.com/も開設した。

 Nokia製端末のプラットフォームは、Series 40/60/80の3ラインになっている。Series 40、Series 80については名称変更を行っていない。
posted by シンビアン at 08:54| Comment(0) | TrackBack(1) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

NokiaにとってS60/Series 60の位置づけとは?

スマートフォン向けプラットフォームとして、S60(Series 60)の展開に力を入れるNokia。Vodafone 702NK IIとしてNokia 6680を日本市場へ投入目前の同社に、日本市場参入の手応えやS60のメリットについて尋ねた。

 「Nokia 6630」を、ボーダフォン端末「Vodafone 702NK」としてリリースしてから半年以上が経ったNokia。この秋からはNokia 6680をボーダフォン端末「702NK II」として日本市場に投入する。

 現在Nokia製端末のアプリケーションプラットフォームは、Series 40/S60/Series 80(S60はSeries 60の旧名称、11月1日の記事参照)という3種類のラインアップからなっている。S60/Series 80はいずれもSymbian OSであり、日本市場に投入されているNokiaの高機能端末、Nokia 6630/6680ではS60が採用されている。

 NokiaはS60プラットフォームをどのように位置づけているのか。Nokiaでテクノロジー・プラットフォーム部門の販売・営業を担当するマッティ・バンスカ氏に、NokiaのS60プラットフォームのメリット、動向などについて訊ねた。

S60はスマートフォンに最適化したプラットフォーム

――Nokia 6630(Vodafone 702NK)を日本でリリースして半年以上が経ちました。手応えはいかがですか。

マッティ・バンスカ「Nokiaは日本市場を重視しており、本来ならもっと存在感を示したいと考えていましたが、これまでは(我々が望むよりも存在感が)下回っていました。S60を採用した製品を投入することで、日本市場での存在感をもっと高められると考えています。6630を出したことで、日本市場への理解が深まったと思います」

――Nokia 6630について「日本で初めてのスマートフォンだ」と表現する人も多かったのですが、スマートフォンにS60を採用する意義は何だとお考えですか。

マッティ・バンスカ「“2ちゃんねる”では、『黒船が来た!』と書かれていたそうですね?(笑)。『スマートフォン=PDA』と考えている人が多いように思いますが、スマートフォンとPDAはまったく違うものです。PDAとしての使い道は、スマートフォンの1つの姿に過ぎません。音楽に特化したもの、カメラ機能に特化したもの、ビジネスユースに特化したもの……スマートフォンには、さまざまな姿があります。オールラウンドにいろいろ使えるもの、それがスマートフォンだと考えています。そして、それを実現するのにS60は適している、そういうことです」

――2ちゃんねるもチェックされているのですか(笑)。日本参入に際し、S60を採用することのメリットは何だと考えていらっしゃいますか。

マッティ・バンスカ「我々にとっては、これまでの携帯電話とは違う、新しいやり方での参入が可能になることです。ニーズに合わせてさまざまなカスタマイズが可能であり、しかもオペレータの要求に対してよりよく応えることができます。オペレータは、S60を採用することで、あまりコストをかけることなく差別化ができます」

――初のS60採用端末「Nokia 7650」が出たのが2002年、Series 60がリリースされてからも2〜3年が経ったことになります。S60上で動くアプリケーションは、初期の頃と比べて、今は変わってきていると感じますか?

マッティ・バンスカ「コアとなるアプリが、メッセージングやパーソナルインフォメーションの管理のためのものである、という基本的な部分は変わりませんが、デベロッパーが作っているアプリケーションを俯瞰すると、いくつか変化はありますね。1つに、プレーンなJavaゲームではなくなってきており、オペレータとの連携や、アプリ間でシームレスに相互リンクを図れるものが求められてきています。もう1つは、専門的なアプリが提供されるようになってきたことです。例えば医者向けの医学用語を収めた専門辞書とか、ムスリム向けのコーランアプリといった、高度で専門的な使われ方がされるようになってきている、という実感があります」
ビジネス向けの機能を強化

――ビジネスユース向けの端末に採用されるプラットフォームとして、S60は適していると思います。ビジネス向け用途で、何か気をつけている点はありますか。

マッティ・バンスカ「まずセキュリティを強化すること。2番目はEメールソリューションの充実です。ビジネスユースを考えるとき、Eメールの使いやすさは必須ですから。3つ目はJavaを新たなレベルへ導くことです。Javaコミュニティの『JCP』と連携し、CDC Java(2001年8月30日の記事参照)のマネージャビリティを高めようと努力しています。これによって、デバイスとJavaアプリケーションをもっと簡単に管理できるようになります」

――デバイスとJavaアプリケーションの管理とはどういうことでしょうか?

マッティ・バンスカ「今まではJavaアプリケーションをダウンロードすることはできても、そのアプリを管理することは難しかった。そこでCDC Javaに対応し、ダウンロードしたあとのJavaアプリケーションを管理できるようにしようということになりました。特に企業ユースの場合、(管理者にとって)端末やアプリのマネージメントが行いやすいことは非常に重要ですから」

――ビジネスユースということでは、遠隔ロックやリモートでのデータ消去といった機能が重要になるのではないかと思います。S60ではこのような機能をサポートしていますか?

マッティ・バンスカ「現在はサポートしていません。しかしそういった機能がセキュリティ上非常に重要だという認識は持っていますので、将来的なプランには入れています」
拡大するS60

――もうすぐNokia 6680が、Vodafone 702NK IIとして日本でもリリースされますね。Nokia 6630/6680で、S60は変わっていますか?

マッティ・バンスカ「マイナーチェンジくらいで、大きくは変わっていません。どちらもS60の2nd Editionを採用しています」

――現在S60の最新版は3rd Editionですね。どんな特徴があるのでしょうか?

マッティ・バンスカ「3rd Editionでは、高解像度(注:QVGA)とスケーラブルなUIをサポートしています。また、タッチパネル端末を想定して、ペンベースのユーザーインタフェースにも対応しますし、今後フルキーボードにも対応する予定です」

――フルキーボード端末をサポートするSymbian OSというと、Communicatorに搭載されているSeries 80とバッティングしませんか?

マッティ・バンスカ「Series 80の特徴をまとめれば、Symbianプラットフォームで、フルキーボードをサポートしているOS、ということになります。Series 80はライセンスをしていないといった違いはありますが、確かにS60がその範囲を広げることによって、『S60がSeries 80に近づいてきている』とは言えますね」
posted by シンビアン at 08:53| Comment(0) | TrackBack(1) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

Nokia、UPnP対応携帯の「N80」

Nokiaは11月2日、家庭内のワイヤレスLANとの親和性が高い携帯「N80」を発表した。UPnPを使い、無線ネットワークに接続されたPCやオーディオシステム、テレビなどとビデオ、静止画、オーディオなどを共有することができる。

 N71と同様にデジタル音楽機能を持つほか、ステレオFMチューナーも備える。PCとの音楽連携はUSB 2.0により可能。Mini Map対応のWebブラウザも搭載される。

 N80は134グラムの3G携帯で、Symbian OSを採用している。内部メモリは40Mバイトで、miniSDカード(最大2Gバイト)で拡張も可能。ディスプレイはQVGAよりも表示領域が90%多い352×416の約26万色。300万画素デジカメを搭載している。

 N80は2006年第1四半期に出荷予定。価格は約500ユーロ。
posted by シンビアン at 08:51| Comment(0) | TrackBack(0) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

Nokia、ビデオや写真を共有できるマルチメディア携帯「N71」

Nokiaは11月2日、最新マルチメディア携帯電話「N71」を発表した。

 N71は320×240ピクセルの高解像度カラーディスプレイと2メガピクセルカメラを搭載する。デジタル音楽機能を備え、最大2Gバイトの MiniSDカードをサポートし、最高で1500曲を格納できる。またビデオや写真、音声をメールやマルチメディアメッセージング(MMS)、 Bluetoothを介して共有する「Nokia XpressShare」機能も搭載する。

 同端末には、「Mini Map」機能を備えた「Nokia Web Browser」が搭載される。Mini Map機能はWebページを半透明の形でズームアウトでき、小さな画面での迅速なナビゲーションが可能になる。またこのブラウザはRSSフィードにも対応している。

 さらにN71は電子メール、IM、MMS、ショートメッセージサービス(SMS)のほか、サードパーティーから手早くコンテンツやサービスを検索、購入できるモバイルショッピングアプリケーション「Catalogs Client」も搭載する。

 同端末は2006年第1四半期に発売される。価格はおよそ400ユーロ。
posted by シンビアン at 08:48| Comment(0) | TrackBack(0) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

Nokia、Safariと同じブラウザコアをSeries 60携帯に採用

NokiaはAppleのWebレンダリングエンジンを自社の携帯ブラウザに採用すると発表した。このエンジンはSafariブラウザにも使われている。

 Nokiaの新製品Series 60 Platformには、Appleが自社ブラウザSafariに採用しているオープンソースのブラウザコアが使われる。同社が6月13日、明らかにした。

 AppleのSafariブラウザはオープンソースプロジェクトのブラウザコアであるKHTMLを使っており、同じ技術はKDEのKonquerorブラウザにも使われている。Appleはその成果をレンダリングエンジンのWebCoreとして公開している。

 NokiaがSymbian OSベースのSeries 60で採用するのはこのWebCoreとJavaScriptCoreコンポーネント。AppleはWebCoreとJavaScriptCoreなどを含め、WebKit Open Source Projectとしてオープンソース公開している。

 NokiaはAppleとのコラボレーションにより、このオープンソースコミュニティーに参加し、特にモビリティ分野での開発に寄与する計画だという。

 Nokiaの最高技術責任者であるペルティ・コルホネン氏は「NokiaはSeries 60で最適化されたモバイルWebブラウジングを提供できることを喜んでいる。オープンソースソフトウェアは開発に理想的なもので、ソフトウェアの革新と進展を素早くソフトウェアに反映できる」と述べている。

 Appleのワールドワイド製品マーケティング担当上級副社長であるフィル・シラー氏は「Safari Web Kitは素晴らしい性能、効率的なコードベースとオープンソース標準サポートを提供しており、Nokiaの新製品であるSeries 60などのプロジェクトにとって理想的なオープンソース技術だ」とコメントしている。

 新しいSeries 60ブラウザはすべてのSeries 60ライセンシーに対し、2006年前半に標準アプリケーションとして提供される。このブラウザは既存のSeries 60ブラウザの全機能をサポートし、パフォーマンスの向上、新機能の追加が図られている。
posted by シンビアン at 08:44| Comment(0) | TrackBack(0) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

2006年01月29日

Nokiaのオープンソース・プロジェクト

Nokiaのオープンソース・プロジェクトのサイト。公開されたばかりらしい。
Aboutページにもある通り、このサイトはPlone / Debianベースでできているようだ。

プロジェクトのページを見ると、なんか面白そうなものが目白押し。

maemo
An open development environment for creating applications for handhelds, such as Nokia 770.
(Nokia770などのハンドヘルド用アプリケーションを開発するためのオープンソース開発環境)

MobileNews
An application that allows you to browse and read your favorite NNTP newsgroups right on your mobile phone.
(携帯電話であなたの好きなNNTPニュースグループをブラウズして読むためのアプリケーション)

Python for S60
Python programming port to Symbian OS.
(SymbianOSへのPythonプログラミング言語の移植版)

Sofia-SIP
An open-source SIP User-Agent library, compliant with the IETF RFC3261 specification.
(IETF RFC3261標準に準拠したオープンソースのSIPユーザエージェントライブラリ)

SWS-URIQA
A Semantic Web-Enabled Web Site Infrastructure.
(セマンティックウェブ・ベースのWebサイト基盤)

S60 OSS Browser
Uses WebCore and JavaScriptCore components.
(WebCoreとJavaScriptCoreコンポーネントを使った、S60用オープンソースブラウザ)

Wilbur
A Semantic Web toolkit written in Common Lisp.
(Common Lispで書かれたセマンティックウェブのツールキット)

xmlpatch
An XML Patch Operations Framework Utilizing XPath Selectors.
(XPathセレクタを使ったXMLパッチ操作フレームワーク)

posted by シンビアン at 18:49| Comment(0) | TrackBack(0) | Forum Nokia | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。