2006年02月11日

Series60 GUIアプリケーションの構造

アプリケーションの起動シーケンス

 アプリケーションは、図2に記された起動シーケンスに沿って起動します。

■ 図2 出典:NRIラーニングネットワーク 「ノキア Series 60 C++開発入門コース」より

 図2に出てくる各関数は、実際にコードを確認することができます。以下の説明ではAppUIクラス、Containerクラスを中心に見ていきます。

注:起動シーケンスの最初のNewApplication関数は、正確にはAppクラスメンバではありません。最初にアプリケーション自身のインスタンスを生成するため、図2ではAppクラスのメンバであるかのように記述されています。

Containerクラス

 まずは、簡単にContainerクラスを概観してみましょう。

コンストラクション

 Containerクラスにおける初期化を担うメンバ関数はConstructLという関数になります。

void CSample1Container::ConstructL(const TRect& aRect)
{
CreateWindowL();

iLabel = new (ELeave) CEikLabel;
iLabel->SetContainerWindowL( *this );
iLabel->SetTextL( _L("Example View") );

iToDoLabel = new (ELeave) CEikLabel;
iToDoLabel->SetContainerWindowL( *this );
iToDoLabel->SetTextL( _L("Add Your controls\n here") );

SetRect(aRect);
ActivateL();
}

 このソースコードを読むに当たって、注意しなくてはいけない点がいくつかあります。列挙しますと、

1. 通常のC++コンストラクタは、一般に自身のインスタンス用のメモリ確保しか行わない。メンバの初期化は、ConstructLという関数で行う。このように、メモリの確保とメンバの初期化を2つに別けることを2フェーズコンストラクションと呼ぶ。

2. 文字列にはUnicodeを採用しているため、通常のダブルクオーテーション(“….”)文字列は使用しない。その代わり、変換用のマクロ(_Lマクロなど)が存在する。

3. 通常のANCI C++との例外処理機構の相違から、通常のnew演算子ではなく、new(ELeave)を使用する。

となります。以上の点に注意してください。以上で挙げた3点は、以降の連載で細かく触れて行きたいと思います。頭の片隅において置いてくだされば今回は結構です。

 上記のコードでは、アプリケーションの表示として二つのラベル

* iLabel
* iToDoLavel

の2つのインスタンスを生成して、各々が「Example View」と「Add Your contorols\n here」という文字列を貼り付けています。Series60ではUnicodeを採用していますので、例えば文字列を図3のように変更することもできます。

これは、単純に_Lマクロの中身を日本語に置き換え、再コンパイルするだけですので、是非お試しください。

描画されるコントロールの個数の管理

 Containerクラスは、自身の上で描画されるコントロールの個数とコントロールへのポインタをメンバー関数を通じて通知する必要があります。この処理を行うのがCountComponentControls関数とComponentControl関数です。

TInt CSample1Container::CountComponentControls() const
{
return 2; // return nbr of controls inside this container
}
CCoeControl* CSample1Container::ComponentControl(TInt aIndex) const
{
switch ( aIndex )
{
case 0:
return iLabel;
case 1:
return iToDoLabel;
default:
return NULL;
}
}

 CountComponentControls関数では、このContainer上で描画されるコントロールの総数(今回はラヴェルが2個)を返します。また、ComponentControl関数では、各々のコントロールのポインタを返却します。コントロールの個数や実体の変更を行う時は、合わせてこれらの関数の変更が必要になりますので、ご注意下さい。
posted by シンビアン at 08:00| Comment(0) | TrackBack(0) | Series60プログラミングテクニック | このブログの読者になる | 更新情報をチェックする

IDEのない環境でのビルド

第1回では紹介しませんでしたが、IDEのない環境でもSeries60用アプリケーションをビルドすることができます。この場合は、通常のテキストエディタを用いてソースを編集し、コンパイルをコマンドライン上で行う形になります。

 まずはコマンドプロンプト上のカレントディレクトリをプロジェクトのディレクトリの下にある Group ディレクトリに移動します。そこで、

> bldmake bldfiles と入力し、その後に

> abld build [wins|winscw] udeb と、コマンドを発行してください。

 この後、エミュレータの起動は[スタート]→[すべてのプログラム]→「Series60 Developer Tools]と進み、[Emulator(Debug)]を選択し起動します。

 上記のようにIDEなしの環境でもプログラムを作成することは可能です。もっとも、Forum NokiaのダウンロードサイトからSeries60用のCodeWarriorの期限付き評価版が入手できますので、IDEなしのビルドを実践する機会は多くないかもしれません。
posted by シンビアン at 07:48| Comment(0) | TrackBack(0) | Series60プログラミングテクニック | このブログの読者になる | 更新情報をチェックする

Series60 GUIアプリケーションの構造

Series60上でのUIのアーキテクチャは大別すると、

* 従来のUIアーキテクチャ
もっともシンプルなもの
* Viewアーキテクチャ
アプリケーションが複数の表示の方法をサポートするときに用いる
* ダイアログベースのアーキテクチャ

に大別されます。

 今回は、もっともベーシックな「従来のUIアーキテクチャ」を見て行きたいと思います。第1回の例題で作成したアプリケーションは、この「従来のUI アーキテクチャ」を使用しています。このアプリケーションの構造に言及する前に、「モデル−ビュー−コントローラ」(MVC)について簡単に触れましょう。

MVCとは

 MVCの考え方自体は広範囲に用いられているもので、プログラムの(役割としての)構成要素を大まかに以下の3つに大別しています。

* モデル:アプリケーションで扱うべきデータを管理するオブジェクト(クラス)
* ビュー:ユーザーにデータを表示するオブジェクト(クラス)
* コントローラ:ユーザの入力の処理としての窓口になり、ビューとモデルの間の調整を行うオブジェクト(クラス)

 前回の連載で作成したスケルトンも、このMVCの考え方に基づいて作られています。それでは、前回のスケルトンのクラス構成を見てみましょう。

図1では、

* CSample1App(クラス名がApp で終わるもの。以下Appクラスと呼びます)
アプリケーションそれ自体を表すクラス
* CSample1AppUi(クラス名がAppUi で終わるもの。以下AppUiクラスと呼びます)
アプリケーションのコントローラとなるクラス
* CSample1AppContainer(クラス名がContainer で終わるもの。以下Containerクラスと呼びます)
アプリケーションのビューとなるクラス
* CSample1AppDocument(クラス名がDocument で終わるもの。以下Documentクラスと呼びます)
アプリケーションで処理するデータを管理するモデルとなるクラス

と、なります。

posted by シンビアン at 07:46| Comment(0) | TrackBack(0) | Series60プログラミングテクニック | このブログの読者になる | 更新情報をチェックする

Symbian(Series 60)上でのC++によるアプリケーション開発

講習ではSymbian OS上の代表的なAPIであり、NOKIA社の端末などで採用されているSeries 60を用いたスタンドアロンアプリケーションを構築する際に必要となる知識を獲得する事を目的とします。Series 60用のSDK、開発環境の概要からスタンドアローンのアプリケーション開発で必要となるUI、グラフィックス処理、ファイル管理までを3日間のコースでみていきます。

 コース情報
講座スタイル :講習会
開催期間/開催日

:3日間

4/26(火)〜4/28(木)
6/1(水)〜6/3((金)
7/6(水)〜 7/8(金)
9/20(火)〜 9/22(木)
11/9(水)〜11/11(金)

開催時間 :10:00〜17:00
開催会場 :東京会場
受講料 :\189,000(税込み)                           

 ご提供対象

Symbian OS上でのアプリケーション開発に興味がある方

 カリキュラム

●Symbian と Series60
●Series 60 SDK(可能であれば05306「ふたたびSeries 60」の内容をあわせる)
●Symbian OS の基本
●メモリ管理
●ディスクリプタ
●アプリケーション構造の概要
●リソースファイルとローカライズファイル
●UIコントロール
●クライアント/サーバフレームワーク
●アクティブオブジェクトフレームワーク
●Series 60 UI概要
●グラフィックス
●データ永続性
  付録:05313展開(Symbianマシンへのアプリケーションのインストール方法)

 注意事項

C++言語の知識があることを 前提とした講座になります。
posted by シンビアン at 07:43| Comment(0) | TrackBack(0) | Series60プログラミングテクニック | このブログの読者になる | 更新情報をチェックする

IDE上でのビルドとエミュレータでの実行

Application Wizardでプロジェクトを作成したので、後は適切なIDEを用いて開発やビルドを行います。

IDE上でのビルドとエミュレータでの実行

 Application Wizardでプロジェクトを作成したので、後は適切なIDEを用いて開発やビルドを行います。

Microsoft Visual C++ の場合

 先のApplication wizard でIDEを指定してプロジェクトファイルを作成した場合は指定したディレクトリにプロジェクトファイル(.dsw)が作成されていると思います。

 作成されていない場合(もしくは作成し忘れた場合)はコマンドプロンプト上で作業をします。

 まずはコマンドプロンプト上のカレントディレクトリをプロジェクトのディレクトリの下にある Group ディレクトリに移動します。そこで、

> bldmake bldfiles

と入力し、その後に

> abld makefile vc6

と入力します。これでプロジェクトファイルができあがります。

注)実際にプロジェクトファイルができあがるのは、
-----
[SDKをインストールしたディレクトリ]\ epoc32\BUILD
-----
の下に、プロジェクトが格納されているファイル構造を反映した形でディレクトリが作られ、その中にプロジェクトファイルが格納されます。

 ビルドした後、IDE上でエミュレータを起動する場合は、エミュレータの位置を聞かれます。エミュレータ本体は[スタート]→[すべてのプログラム]→ [Series60 Developer Tools]と進んで、「Emulator(Debug)」を選択すると起動しますが、今回はエミュレータの位置が重要なので、右クリックをしてプロパティを参照してみてください。

■ 画面5

 後は実際にデバックセッションを開始すれば、エミュレータでの動作が確認できます。

■ 画面6

Metroworks CodeWarrior の場合

 基本的には同じ手順を踏みます。ただし、abld コマンドを入力する際のコマンドライン引数を、

> abld makefile cw_ide

とします。

バイナリの作成

 実機へのインストールのためには、ARM用にコンパイルする必要があります。このコンパイルを行うためにはビルド用のスクリプトを作成しておく必要があります。Groupディレクトリにおいて

> abld build [thumb|armi] urel

 とコマンドを発行します。thumbと指定した時はthumb用にビルドし、armiとした時は通常のARM用のバイナリを作成します。thumb用のビルドは、バイナリのサイズが小さくなりますが、実行速度が若干遅くなります。

 この後は、Series60のインストールファイルであるSISファイルを作成します。SISファイルはインストールスクリプトであるpackage ファイル(.pkg)の記述を元にmakesisコマンドで作成していきます。コマンドプロンプト上で

> cd パッケージファイルのあるディレクトリ
> makesis パッケージファイル.pkg

とコマンドを発行してください。

実機へのインストール

 エミュレータで実行を確認した後は、実機で確認することになるかと思います。現在、日本国内向けに出ている端末に関してはインストールに制限(インストールコントロール)がかかっています。ですから、いわゆる「勝手アプリ」というのはインストールできない設定になっております。

 実機へのインストール可能にするためには認証を受ける必要があります。認証は「SymbianSigned」が提供しています。認証プロセスはSymbianSignedのWebサイト(http://www.symbiansigned.com/)をご覧下さい。

 次回はより細かく、プログラムの中身に踏み込んで話を進めていきます。ご期待下さい。
posted by シンビアン at 07:41| Comment(0) | TrackBack(0) | Series60プログラミングテクニック | このブログの読者になる | 更新情報をチェックする

SDKを用いたビルドの方法

 SDKをインストールすれば、後は実際に何か作ってみようというのは人間の心理だと思います。そこで、簡単にSDKを用いての開発の流れを見て行きましょう。

 アプリケーションの雛形(スケルトン)の作成はSDKに付属しているApplication Wizard(画面1)から行えます。

■ 画面1

 ここで「Series 60 Application Wizard」を選択し、「project name」に適当な名前を入れます(スナップショットでは「sample1」になっています)。その後に「create」のボタンを押すと、次の画面が現れます。

ここでは、いくつかのタブがありますが、各々を簡単に見ますと


■ 画面2
Generalタブ(画面2)

* アプリケーションのタイプ
* EIKONベースのUI(通常のもの)
* ダイアログベースのUI
* Viewアーキテクチャ(一つのアプリケーションが複数のView を持つときに便利)
* アプリケーションのタイトル
* アプリケーションの識別子(最終的にリリースする時は一意である必要がある。今回はサンプルとして動作を確認するので、デフォルトで入った値をそのまま使う)


Otherタブ

* 必要であればコピーライトとアプリケーションの著者を入力する。


■ 画面3
classesタブ(画面3)

アプリケーションの主要なクラスとそのファイル名。基本的にはModel-View-Controller (MVC)の考え方にのっとっている。各々のクラスを簡単に説明すると

* ……Appクラス:アプリケーションそれ自体を表すクラス
* ……AppUiクラス:コントローラとなるクラス
* ……Containerクラス:実際に描画対象となるコンポーネントのクラス
* ……Document クラス:アプリケーションが扱うデータ(ドキュメント)を管理するクラス。

と見ていただければよいかと思います。この部分の詳細は次回以降の回で細かく触れようと思います。



■ 画面4
Foldersタブ(画面4)

プロジェクトの各種ファイルを管理するディレクトリを指定します。ディレクトリ名と、どのような情報が格納されるのかをあわせて確認してください。

* Include:各クラスのヘッダファイルを格納するディレクトリ
* Source:ソースファイルを格納するディレクトリ
* Group:プロジェクトの設定ファイル(.mmpファイル)などを格納するディレクトリ
* Data:メニューのためのリソース、
* Aif:アプリケーションに関連図けられたビットマップなどが配置されます。
* Package:実機へのインストールファイルを作成するディレクトリ。インストール情報であるpkgファイルが格納されます。実機へのインストーラであるsisファイルを作成はこのpkgファイルから行われます。


IDE Optionsタブ

* Microsoft Visual C++ 6.0 のプロジェクトファイルなどIDEの設定ファイルをSeries 60 SDK のプロジェクト設定ファイル(.mmp)の内容から作成します。


 以上を設定することでアプリケーションのスケルトンを作成してくれます。あとは、ここからIDE(Microsoft Visual C++またはMetoroworks CodeWorrior)を立ち上げます。
posted by シンビアン at 07:37| Comment(0) | TrackBack(1) | Series60プログラミングテクニック | このブログの読者になる | 更新情報をチェックする

Series60とは?

プログラムというからには、スマートフォンには携帯電話メーカーが策定したAPIが搭載されてます。この APIのひとつである「Series60」は、Nokiaが策定したC++上でのAPIです。キャリアなどが制定したAPIと異なり、ヨーロッパでも日本でも同じバイナリがSeries60を搭載した端末上で動作します。Series60は、携帯電話向けのOS「Symbian OS」上で実装されたAPIです。今回の主題であり、先ほどの触れさせていただいた702NKもSeries60を搭載しています。

 Series60は、まさに「スマートフォンのためのAPIセット」ということができ、これまでの携帯電話では考えられないようなAPIが用意されています。主だったものを列挙していくと次のようになります。

* GUIに関連したAPI群
o 各種UIのコントロール
o グラフィックス

* ファイル入出力に関係したAPI群
o 通常のバイナリファイルの入出力
o 端末組み込みのデータベースへの入出力

* Symbian OS提供のサービスを利用するAPI群
o 通信に関連したAPI群
o IP v4 / v6
o 赤外線通信
o Bluetooth

* マルチメディア(音声、映像)を処理するためのAPI群

* アプリケーションエンジンAPI
o 端末の電話帳、カレンダーなどへアクセスするためのAPI

………


Series60とC++

 Series60は開発言語としてC++を採用しています。しかし、いわゆるANCIのC++ではないことにご注意下さい。以降の連載では、いくつかのサンプルプログラムが掲載されると思いますが、その中に出てくるコードに若干の違和感を覚える方が居るかもしれません。これは、Series60ではC+ +言語を組み込み端末向けにカスタマイズをしているためです。

 まずは目に付くところを2点挙げると、

* 実行時型情報を持たない
* try-catchによる例外処理はサポートしない(ただし、try-catch以外の方法での例外処理を提供)


となるでしょうか。

Series60の対象ハードウェア

 このSeries60が対象とするユーザインターフェース(UI)の物理的なデバイスとしては、

* 176×206ドットのカラー液晶
* 片手で操作をすることを前提とした物理的なUI


を想定しています。これらの制限はあくまでも現在のものです。したがって、例えば液晶のサイズなどもより大きいものをサポートする拡張がこれからなされるようです。

 もちろん、個性豊かなNokiaの端末ですから、上記以外の物理的なUIデバイスをもつ端末も存在しますし、そのためのAPIも存在します。例えば「Series80」(キーボードを持ったもので、640×200ドットの液晶画面を持ったもの)や「Series90」(ペン入力、640×320ドットの液晶画面)といったものもあります。一見すると「これが携帯電話?」と思うような端末が多数あります。興味がある方は探してみてはいかがでしょうか?

 Series60はSymbian OS v6.1以降のいくつかのバージョン上で実装されています。あくまでもSeries60はSymbian上でビルドされた「APIとUIのデザインのひとつ」ということになります。したがって、Series60以外にも、前述のSeries80やSeries90、Motorolaが開発した「UIQ」などのUIデザイン、APIが存在します。Series60に限っても、時を経るごとにいくつかのバージョンが出てきました。
posted by シンビアン at 07:34| Comment(0) | TrackBack(1) | Series60プログラミングテクニック | このブログの読者になる | 更新情報をチェックする

スマートフォンって何?

さて、この「スマートフォン」とは何なのでしょうか? ハードウェアの進化や省電力化によって、これまで PDAと呼ばれていた端末と同程度のことが携帯電話のサイズの端末で行えるようになってきました。日本国内の端末でも豊富な機能を組み込むものが出てきています。ただし「個別のツールの追加」というニュアンスが強く、「汎用的なPCやPDAに近い環境」とはなっていない状態であると思えます。

 これに対して、スマートフォンと呼ばれる端末は、PCやPDAに近い感覚で、PCとのデータの連携はもちろん、携帯電話に目的別のアプリケーションを自由にインストールしたり、もちろん自分でアプリケーションを作成することが可能です。恐らく、今回の連載をお読みの方の中には「アプリケーションを作成する」ことを職業としている方が多いのではないでしょうか?

 単にプログラムを作成するだけならば、例えば国内での携帯Java環境でも可能です。ただし、作成できるアプリケーションの自由度が大きく違います。このSeries60 の端末と他の国内で出ている端末の大きな違いのひとつは、まさに「プログラム作成の自由度の差」にあるといえます。

 もし、標準搭載のWebブラウザが気に入らなければ、例えばOperaのインストールパッケージをダウンロードし、携帯電話側にインストールすればよいのです。もちろん、その気になれば自分でWebブラウザを作ることも可能です。それだけではなく、電話帳をカスタマイズしたり、Bluetooth上で IPプロトコルを利用することも可能です。

 「何ができるのですか?」と聞かれれば、「おそらく想像できることは全てできます」というのが答えになると思います。しかも仮想マシンなどを介すのではなく、ネイティブのコードです。
posted by シンビアン at 07:30| Comment(0) | TrackBack(0) | Series60プログラミングテクニック | このブログの読者になる | 更新情報をチェックする

Vodafone 702NK

2004年12月に「Vodafone 702NK」というNokiaの携帯端末が発売されました。もしかしたら、この連載をお読みの読者の中にも、すでにお持ちの方がいるかもしれません。この 702NKは、海外では「NOKIA 6630」という名称で発売されています。そして、この端末は一般に「スマートフォン」というカテゴリの携帯電話であるといわれています。
posted by シンビアン at 07:29| Comment(0) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

SDKの入手とインストール

SDKはNokiaの開発者向けサイト「Forum Nokia」(http://www.forum.nokia.com)から入手可能です。Forum Nokiaには、開発情報や多数のプログラム例も掲載されていますので、有益な情報が多数あるかと思います。是非一度ご覧下さい。

 SDKのインストールは簡単に行えるのですが、これ以外に

# Perlインタプリタ:Active Perl 5.18以降
# Java実行環境:Java2 Runtime Environment v.1.3.1以降

が必要になります。これらはインストール前に別途用意しておいてください。

 インストールを開始するにはダウンロードしたzipアーカイブに含まれるSetUp.exeを実行します。
posted by シンビアン at 07:26| Comment(0) | TrackBack(0) | Series60プログラミングテクニック | このブログの読者になる | 更新情報をチェックする

2006年02月08日

シンボリックリンク 【symbolic link】

読み方 : シンボリックリンク
分野 : OS > 技術 > ファイルシステム

 あるファイルやディレクトリに別の名前を与え、ユーザやアプリケーションがその名前をファイル本体と同様に扱えるようにする仕組み。UNIX系OSのファイルシステムの機能として定着している。

 UNIXでは「ln」コマンドでシンボリックリンクを作成することができ、ファイルシステム上にはリンク情報が格納された0バイトのファイルが出現する。元のファイルを扱うのと同じ感覚でシンボリックリンクと通してファイルやディレクトリにアクセスすることができる。

 似た機能に「ハードリンク」がある。シンボリックリンクはデバイスやファイルシステムにまたがって自由にリンクを張ることができるが、ハードリンクではファイルシステムを管理するファイルエントリに複数の名前を登録するため、異なるファイルシステムへリンクできないなどの制限がある。ハードリンクでは実体ファイルの削除ができるが、シンボリックリンクを通じて実体を削除することはできない。

 ファイルやディレクトリに仮想的な別の名前を与えるという点ではWindowsの「ショートカット」やMac OSの「エイリアス」に近いが、これらはリンク先のファイルを実体と同じようには扱えないため、実装や機能の面では大きく異なる。

2006年02月06日

Symbian OS とは

「Symbian OS」は英Symbian社が開発し、様々なメーカーにライセンスしているOSです。同社は、携帯電話関連においてはノキア、モトローラ、サムスン、ソニー・エリクソン・モバイルコミュニケーションズといった世界の主要な携帯電話メーカーに「Symbian OS」をライセンスしており、海外では「スマートフォン」と呼ばれる多機能携帯電話に搭載されています。ちなみにSymbian自体は、エリクソン、ノキア、サイオン、モトローラ、松下通信工業などによって設立されたPSION Groupの1企業です。

 2002年現在、ソニー・エリクソン「P800」や、ノキア「Nokia 7650」「Nokia 3650」、そして「N-Gage」を含む20機種の携帯電話がSymbian OSを使って現在開発中であると公式にアナウンスされています。また、日本市場向けの端末では、富士通製の「F2051」がはじめてSymbian OSを採用しています。
posted by シンビアン at 07:15| Comment(0) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

Symbian OSTM開発環境 WATCHPOINTとCodeWarriorTM for Symbian OSTMの連携

■特長

1. 従来は、CodeWarrior(TM)とターゲットが、シリアルで接続され、ターゲット上のSymbian OSと通信を行い、アプリケーションデバッグを提供していますが、カーネル、デバイスドライバなどはデバッグできないという弱点があります。
   
2. CodeWarriorTMとWATCHPOINTを接続することによって、ICE経由でのデバッグを可能にします。
・ これにより、カーネル、ドライバなどもCodeWarriorTMでデバッグできるようになります。
・ また、エミュレーションメモリやトレースなど、CodeWarriorTMには無いICEの機能を使うことができるため、結果、デバッグ方法の幅を広げることになります。
・ Symbian OSTMのカーネルやドライバなど、ICEを使ってソースレベルデバッグ出来ます。
ただし、CodeWarriorTMの仕様に依存します。
   
3. CodeWarriorTM側の主な機能
・GO実行
・ブレーク
・ステップ実行:ステップイン/ステップアウト等
・変数インスペクト
・ブレークポイント:ハードウェア/ソフトウェアブレークポイント  
   
4. WATCHPOINT側の主な機能
・エミュレーションメモリの設定※1
・トレース/トリガ(逆アセンブラレベル)※1
・外部フラッシュメモリへのダウンロード
・内部レジスタの参照および変更
・ラインアセンブル
・リセット
  ※1 フルICE接続時に有効
※  CodeWarriorTM for Symbian OSTMは、OEM Edition Ver.3.0.2以降をお使いください。
※ 各製品は、各社の商標または登録商標です。製品の仕様は予告なく変更する場合があります。  
posted by シンビアン at 07:14| Comment(0) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

PDA化する携帯電話

「Symbian OS」が採用されているソニー・エリクソン「P800」、ノキア「N-Gage」などは、いずれもスマートフォンと呼ばれるタイプの携帯電話です。一般的に“スマートフォン”とは、大きめのカラーディスプレイを備え、音声通話の機能以外にインターネットコンテンツを閲覧したりメールを送ったりできるほか、メッセンジャー機能といったネットワークコンピュータ的な機能を利用できる携帯電話のことを言います。

 また、今までの電話機にはない電子マネー機能やスケジュール管理、メモ機能など、PDAが持っているような機能を備え、さらにインテリジェント化したものを指して言う場合もあるようです。広い意味では、日本のiモード端末などもこのカテゴリーに含まれるようです。

 「Symbian OS」はPSION Groupの前身であるPSIONがPDA用に開発したOS「EPOC(エポック)」をベースにし、アプリケーションをセットして、携帯電話がPDA的な利用法も可能になるソフトウェアです。

 Symbian OSを利用し、既に市場に出ている携帯電話としては、たとえばGSM端末である「Nokia 9210」などがあります。同端末は、そのまま使うと携帯電話、開くとキーボード付のPDAという変わった形状の携帯電話なのですが、その見かけの通り、開かずに声で電話をかけることができますし、開けばPDAとして、あらかじめインストールされている文書作成用アプリケーション「Word」や、表計算アプリケーション「Sheet」を使ったり、あるいは新たにサードパーティ製のアプリケーションをインストールすることも可能と、電話というよりは小さなパソコンのように使うこともできるようになっています。

 ちなみに「Nokia 9210」では、それまでのPSION端末にはなかった動画を再生するアプリケーション「Movie Player」なども使えますし、コンピュータとして使いながらハンズフリーで電話として通話することすら可能なため、それまでのPDAよりもさらに高性能ということもできるかもしれません。

 既存のGSM携帯電話の通信網をそのまま利用しつつ、より高速なデータ転送が可能な「GPRS方式」が利用できるようになったためか、GSM方式が利用されている地域では、音声通話だけではなくPDAのような機能も含んだ「Nokia 7650」のようなスマートフォンが流行しつつあります。そのため、このようなPDAの機能をそのまま持ってきたような「Symbian OS」が採用されるようになったのでしょう。また今後は、さらにデータ通信速度の早い3G方式「UMTS(Universal Mobile Telecommunication Systems)」も控えています。

 同様のケースとして、たとえば以前とりあげたマイクロソフトのSmartPhone 2002(Stinger)やPalm OSなどPDA向けOSが、スマートフォン用に採用されるようになっているようです。

32bit OS、文字コードはUTF-8
 その他のSymbian OSの特徴としては、

* 32bit OS
* マイクロカーネルアーキテクチャ
* マルチタスク、マルチスレッドに対応
* 開発環境を安価に揃えられる
* 内部文字コードはUnicode(UTF-8)で国際化が容易
* キー入力、ペン入力をサポート

といった点が挙げられます。



 最新のSymbian OS v7.0では、

* 3G、2G双方に対応
* ショートメッセージとしてSMS、EMS、MMSが利用可能
* MIDP対応Java VMを搭載
* IPv6、IPSEC対応

などの機能が新たに追加されています。


 ちなみに、EPOCは、PSION Groupの前身であるPSION社から発売された「SERIES5」というARM CPU搭載のPDAから利用され、ER(EPOC Releaseの略)3、ER5、ER6…とバージョンが上がっていきました。

 携帯電話では、エリクソン製「R380 mobile phone」が初めてER5をベースにしたバージョンを採用しています。現行機種では、「Nokia 9210」がSymbian OS 6.0(ER6ベース)、ソニー・エリクソン製「P800」がSymbian OS 7.0(ER7)といったあたりが使われています。

 なお、Symbian OSに対応している携帯電話用チップセットとしては、Intel製「XScale」やTexas Instruments製「OMAP」、Motorola製「DragonBall MX1」など、いずれもARMコアのチップセットが公式にリリースされています。
posted by シンビアン at 07:11| Comment(0) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

2006年02月05日

参照カウント

参照カウント(さんしょうカウント)は、ガベージコレクタの動作方法の一つ。

* すべてのオブジェクト(メモリ上におかれているデータの単位)に対して、参照カウントと呼ばれる整数値を付加しておく。これは、このオブジェクトへのポインタがシステム全体にいくつ存在しているかを数えるものである

* オブジェクトへの参照が変化するたびにこの値は随時書き換わる。
* 参照カウントが0になったものについては破棄が許される。

この方法は処理が高速であり、オブジェクトを多数生成し、すぐに参照を切るような処理においても迅速に破棄が起きる。ただ、不要になったオブジェクト同士が循環参照してる場合、参照カウントが0にならないために破棄がおきないという問題がある。

また、参照カウントが頻繁に書き変わる場合には書き換え負荷そのものが問題になる場合もある。さらに、単純な実装の場合、大量のオブジェクトが一斉に解放になる場合があり、 CPUの空き時間を利用してガベージコレクションを行う方法と比べると、メモリの解放で処理が遅くなってしまう場合もある。

class A {
public B b;
}
class B {
public A a;
}
public class Test{
public static void main(String[]arg) {
A a=new A(); // *1*
a.b=new B();
b.a=a;
a=null;
// *1*で作成したAのオブジェクト は到達不可能にもかかわらず、参照カウントは1
}
}

例2

ウィキペディアの「孤立した記事」は、参照カウントが0のものを表示しているだけなので、孤立した記事だけから参照されている記事は孤立した記事と見なされていない。

上で述べた問題を回避する方法としてマーク・アンド・スイープがある。
[編集]

実用例

* マイクロソフトのComponent Object ModelにおけるCOMオブジェクトは参照カウント方式で管理される。
* プログラミング言語Pythonのガベージコレクタは主に参照カウント方式を用いている。
* Boost C++ Library の smart_ptr
posted by シンビアン at 08:42| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

参照カウンタ

概要

アクセス不可能オブジェクトを決定する方法の1つに、参照カウンタ (reference counting) を使う方法があります。これは非常にシンプルな GC で、実装が容易であるが、後で述べるように致命的な欠点があるため、通常は他の GC 手法と併用する必要がある。

【注意】参照カウント法を GC 手法と見なさない人々もいる。

実装

1. GC 管理されるすべてのオブジェクトに、参照カウンタを付随させます。
2. オブジェクトへの参照が作成されると、参照カウンタを 1 つ増やします。
3. オブジェクトへの参照が削除されると、参照カウンタを 1 つ減らします。
4. 参照カウンタを減らしたときに参照カウンタが 0 になれば、 オブジェクトを回収する。

サンプル

次のような擬似 Java コードを考えてみよう。

SomeObject obj1, obj2, obj3;

// ここで作成されるオブジェクトは、作成と同時に変数にバインドされるので、
// 参照カウントが 1 になる。
obj1 = new SomeObject("A"); // オブジェクト A を作成
obj2 = new SomeObject("B"); // オブジェクト B を作成

// オブジェクト A は obj3 変数により参照されるので、参照カウントが増えて 2 になる。
obj3 = obj1;

// オブジェクト A は obj2 により参照されるので、参照カウントが 3 になる。
// それと同時にオブジェクト B の参照は減らされて 0 になり、
// オブジェクト B は回収されることになる。
obj2 = obj3;

利点
GC 実行時間が極めて短い

オブジェクトの回収はオブジェクト毎に行われるため、GC の実行時間はきわめて短い。

そのため、リアルタイム用途に適しています。
欠点
参照カウンタの増減によるオーバーヘッド

オブジェクトの大半は寿命が非常に短いという一般法則があります。参照カウント法では、すぐに不要になるオブジェクトに対しても参照カウントを増減させるというオーバーヘッドが伴います。

このようなオーバーヘッドはコンパイラによる最適化によって大きく軽減できる可能性があります。

[執筆注: もう少し精密な議論ができるはず。]
オブジェクト毎に参照カウンタ用のストレージが必要

十分な大きさの参照カウントを保持しようとすると、そのためのストレージのオーバーヘッドが大きくなる (通常の 32 bit システムでは、参照カウントを 32 bit にとることが多いであろう。) また、参照カウンタようのストレージを小さく取ると、次に述べるオーバーフローの問題が出てくる。
参照カウンタのオーバーフローの問題

たとえば、参照カウント用に 8 bit のストレージを使うとすると、参照カウントは 255 までしか使えない。参照カウントのオーバーフローを許すと、実際には 256 の参照があるにも関わらずオブジェクトが回収されてしまうことが起こりかねない。

このような問題を避けるため、参照カウントの最大値に達したオブジェクトに対しては、もはやカウントの増加も減少も行わないように、参照カウントのロックが行われる。これにより、参照されているオブジェクトが回収されてしまうという問題を回避することはできるが、ロックされたオブジェクトは永遠に回収されないという問題が起きる。

ロックされたオブジェクトを回収するためには、参照カウント法を別の GC 手法と組み合わせることが多い。
循環参照を行うオブジェクトを回収できない

2 つのオブジェクトが互いに相互参照を行う場合、両オブジェクトが不要になっても参照カウントが 0 にならないため、決して回収されない。

注意すべきは、相互参照をしている当該のオブジェクトだけでなく、そのオブジェクトから直接・間接に参照されているオブジェクトも、決して回収されないことである。

この問題は参照カウント GC だけでは解決することは不可能であり、別の GC 手法を併用することで回収を行う。
サンプル

次の Java コードでは、Mike と Cathy は相互参照をしており、両オブジェクトが不要になった後でも参照カウントは 0 にならない。

obj1 = new Person( "Mike" );
obj2 = new Person( "Cathy" );
obj1.wife = obj1;
obj2.husband = obj2;
obj1 = null;
obj2 = null;
posted by シンビアン at 08:40| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする

2006年02月04日

CodeTEST Software Analysis Tools for Symbian OS

Symbian OS用ソフトウェア検証ツール「CodeTEST for Symbian OS」により、Symbian OSプロジェクトの開発にかかる時間とコストの削減を実現いたします。リファレンスボードを使用した開発の初期段階から、エミュレータや実製品を使用した最終的なアプリケーションテストの段階まで、CodeTESTを利用してソフトウェアの実行とパフォーマンスを詳細に解析することができます。

フリースケールでは、航空宇宙産業におけるミッションクリティカルなソフトウェアの検証ツールとしてCodeTESTを開発して参りました。このCodeTESTをSymbian OS向けに提供することは、Symbianのマーケットにおけるソフトウェアの検証と品質保証の要求が増加していることを示しています。

CodeTEST を利用して開発プロセスに多くの時間を追加することなく、コードの品質と効率を改善することができます。他のソフトウェア検証ツールとは異なり、「CodeTEST for Symbian OS」は、Symbian OSアウェアなオンターゲットでのプロファイリング、解析およびトレース機能を提供いたします。CodeTESTが提供するレベルの質と精密さで解析を実現するツールは他にはありません。CodeTESTは、ディプロイの前に問題を特定し、解決するのに役立ちます。

特長

* Time to Marketの実現
「CodeTEST for Symbian OS」により、開発、テストおよびディプロイを遅らせるような問題に早い段階で気づくことができます。これにより開発スケジュールに沿って、競合他社に先駆け製品をリリースすることが可能になります。
* 信頼性の高いコード
「CodeTEST for Symbian OS」により、コードの信頼性を向上することができます。設計から開発、テスト、ディプロイまで、開発サイクルの中で発生する問題が解決したか、していないかを明確にし、コミュニケーションを効率化します。製品のパフォーマンスと信頼性が鍵となる分野において、CodeTESTは差別化を実現します。
* CodeTESTインスツルメンテーションテクノロジ
CodeTESTの特許を取得したインスツルメンテーションテクノロジは、今日ではもっともシステムに影響を与えないリアルタイムエンベデッドソフトウェア解析ソリューションです。CodeTESTは、コードをモニタするインスツルメンテーションテクノロジを採用しています。インスツルメンテーションのためのタグは、元のソースコードに影響を与えず、ビルドのプロセス中にコンパイラによって挿入されます。ファイルが実行されたとき、タグがデータコレクションモジュール(ハードウェアまたはソフトウェア)に送られ、その後データはホストアプリケーションに送られます。このテクノロジにより、CodeTEST はパフォーマンス解析、カバレッジ解析、メモリ解析およびソフトウェア実行トレース解析機能を提供します。

主な機能

* CodeTEST for Symbian OS トレース解析
トレース解析機能はSymbian OSアプリケーションの実行履歴を詳細に記録し、エラーとなるルートの特定をより容易に行うことができます。

* CodeTEST for Symbian OS コードカバレッジ解析
総合的なカバレッジ解析が可能で、実施しているソフトウェアテストの有効性を測定、改善するのに有効です。

* CodeTEST for Symbian OS メモリ解析
メモリ解析機能は、メモリリークやエラーによるシステムのバグを特定し時間とリソースの削減に役立ちます。

* CodeTEST for Symbian OSパフォーマンス解析
パフォーマンス解析機能は、詳細なソフトウェアのボトルネックを特定することで生産性を向上します。また、関数コールペアを表示し、I-キャッシュミスのような問題を容易に特定することができます。

プロダクトライン

プロジェクトにあわせた5つのエディション
フリースケールでは、開発環境や携帯電話の開発ライフサイクルのステージにあわせ5つのエディションのCodeTEST for Symbian OSを提供いたします。ソフトウェアのみ、ソフトウェアエージェントまたはハードウェアプローブのいずれを使用している場合でも、CodeTESTを提供可能です。

* CodeTEST for Symbian OS エミュレータエディション
エミュレータベースの開発用。ハードウェア入手前でも開発を始めることができます。エミュレータエディションには、Windows上で動作するSymbian EPOCエミュレータとともに使用するトレース、ステートメントカバレッジ、メモリおよびパフォーマンス解析の各機能が含まれます。

* CodeTEST for Symbian OS プロフェッショナルエディション
携帯電話機上でのアプリケーションソフトウェアの統合や検証期間用のオンターゲットプロファイリングとコード解析が可能です。プロフェッショナルエディションには、エミュレータと実際の電話機上でのトレース、ステートメントカバレッジ、メモリおよびパフォーマンス解析の各機能が含まれています。

* CodeTEST for Symbian OS デベロッパエディション
デベロッパエディションは、プロフェッショナルエディションのコストを抑えたサブセット版です。エミュレータと実際の電話機上でのトレース機能を提供します。

* CodeTEST for Symbian OS OEMソフトウェアインサーキット(SWIC)エディション
OEM SWICエディションは、リファレンスボードやプロトタイプ機上でローレベルのアプリケーションとシステムソフトウェアのインテグレーションを行うOEM メーカに最適なソリューションです。OEM SWICエディションには、エミュレータとハードウェアターゲット用のステートメントカバレッジ、メモリおよびパフォーマンス解析の各機能と、 CodeTESターゲットエージェントアプリケーションのすべてのソースコードが含まれています。これにより、Symbian OS DevKitやCustKitを使用する際に自由にカスタマイズを行うことができます。さらに、OEM SWICエディションは、ホストマシンとの接続に幅広い範囲のコミュニケーションメディアを提供します。SWIC2Fileは、ホストマシンと接続せずにデバイス上のデータのキャプチャが可能で、実環境でのアプリケーションのテストと解析に大きなメリットを提供します。

* CodeTEST for Symbian OS OEMハードウェアインサーキット(HWIC)エディション
OEM HWICエディションは、リファレンスボードやプロトタイプ機にシステムバスで接続しコード解析が可能です。システムへの侵入を最小限におさえ、最大限に精密で正確な解析を実現します。OEM HWICエディションには、リアルタイムで継続してソフトウェアの解析が可能なハードウェアプローブが含まれ、実行システムへの侵入は最小限に抑え、リアルタイムでの正確な測定が可能な環境を提供いたします。
posted by シンビアン at 18:25| Comment(0) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

Symbian OS 【カテゴリー】モバイル・携帯電話

【よみ】しんびあんおーえす
英Symbian社が開発する携帯電話向けの高機能OS。元々は英Psion社のPDA向けOSであるEPOC OSをベースにしたもので、マルチタスク、マルチスレッドに対応しスマートフォンと呼ばれるPDA並に多機能な携帯電話で採用されている。現在では NokiaがSymbian社の筆頭株主で、他の株主も複数の携帯電話メーカーが占めている。
Nokia が開発したSymbian OS用のユーザーインターフェイス「Series 60」は、APIとSDKを公開しており、アプリケーションの開発が事実上自由に行える。このため、海外ではSeries 60/Symbian OS向けのフリーソフトウェアが数多く流通している。
posted by シンビアン at 18:00| Comment(0) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

ノルウェーOpera,Symbian OS向けブラウザの新版をリリース

ノルウェーのOpera Softwareは現地時間7月13日に,モバイル・デバイス向けOS「Symbian OS」に対応したブラウザの新版「Opera 8 for Symbian S60」を発表した。パソコン向けブラウザ「Opera 8」(Windows,Linux,Mac OS版)と同様のブラウザ・エンジンをベースにする。

 Opera 8 for Symbian S60では,JavaScriptとDocument Object Model(DOM)へのサポートを強化しており,モバイル向けアプリケーション開発の強力な技術プラットフォームを提供する。「エンド・ユーザーはより高速で優れた機能を利用でき,モバイル事業者は高度なモバイル・サービスを展開できる」(同社)

 また,Webサイトを携帯電話のスクリーンに合わせてレンダリングする同社独自の技術「Small-Screen Rendering(SSR)」を大幅に向上した。Webサイトのカラーやレイアウトをよりオリジナルに近い状態で表示する「Quality」モードと,基本的な情報のWebページを25%高速で表示する「Speed」モードを備える。

 Opera 8 for Symbian S60は,同社Webサイトから入手可能。「Opera 6.20」のユーザーは無償でアップグレードできる。
posted by シンビアン at 17:49| Comment(0) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

ノキア、Vodafone 702NKII(Nokia 6680)にSymbian OSを採用

シンビアンは12圧19日、ボーダフォンが2005年12月17日に発売したノキア・ジャパン製の 「Vodafone 702NKII(Nokia 6680)」に、シンビアンのオープン標準オペレーティングシステムである「Symbian OS」が採用されたことを発表した。

 Vodafone 702NKII(Nokia 6680)の発売により、現在日本で発売されているSymbian OS搭載携帯電話は合計21機種となっている。シンビアンでは、Symbian OSの搭載により、高機能かつ高品質な3G携帯電話をより短期間で市場に投入することが可能になるとしている。

 2005年第3四半期には、世界で2300万台以上のSymbian OS搭載携帯電話が200以上のネットワーク事業者向けに出荷され、累計出荷台数は4800万台に上っている。
posted by シンビアン at 17:37| Comment(2) | TrackBack(0) | NOKIA SMARTPHONE HACKS | このブログの読者になる | 更新情報をチェックする

広告


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

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

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


×

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