ホーム > President Blog : Sophia Cradle Incorporated

Sophia Cradle IncorporatedPresident Blog : Software Technology

2005 年 10 月 27 日 : モバイル FeliCa

FeliCa (フェリカ) とは、「偽造・変造が困難なため安全で、スピーディーにデータ通信できる、ソニーが開発した非接触 IC カード技術」である。FeliCa は、そういった性質を持つため、プリペイドカード、銀行カード、クレジットカード、学生証、定期券、チケットなどいろんな用途が想定されている。

この秋から、NTT ドコモ、KDDI、vodafone、全ての携帯電話キャリアがモバイル FeliCa のサービスをスタートする。今、ほとんどの人にとって身近な存在ではないけれども、10 年前に携帯電話がそんな存在であったように、モバイル FeliCa も 3 〜 5 年後には有って当たり前で誰もが日常生活で使うものとなるだろう。

それには、携帯電話にコンピューターとしてのハード的な能力が十分に備わって来たという背景がある。FeliCa は安全に情報を保存できるメディアに過ぎないというシンプルなモノであるだけに、ソフトの数だけ応用分野が新たに開拓されるだろう。

これまで、そのような未来潮流を意識して、携帯電話サイズのコンピューター向けソフトをスピーディーに開発するための、世界を革新するインフラの研究開発に 4 年の歳月を費やした。クオリティの水準を維持するために少数精鋭の開発にならざるを得ず多くの時間を要した。モバイル端末を使った人びとの生活品質向上の鍵を担うものは、多様な価値あるソフトを開発するための桁違いにクオリティの高いインフラだと考えたからである。

ようやく収穫の時期を迎えようとしている。過去には短期的な儲けの道を選択することもできたけれど、世界的インパクトある仕事を成し遂げるということを何よりも優先させた。それ故にこれまでの成果を着実にかたちあるものにするつもりでいる。

  

2005 年 10 月 10 日 : svHacker by Sophia Cradle

英国にある ARM 社をご存知だろうか。携帯電話やPDA、ゲーム機、デジカメなどの組込み機器向けマイクロプロセッサを製造販売している会社である。アップルのiPOD、ソニーのPSP、Nintendo DS のプロセッサも ARM 社製である。組込み機器の分野ではそのシェアは全世界が約 80 %を占めるほどメジャーな存在だ。

ソフィア・クレイドルでは、ARM 社が提供するマイクロプロセッサが携帯端末の急激な普及にともなって世界中にひろまると見込んでソフト事業を展開している。そのひとつのテクノロジーが近日中に発表を予定している"svHacker"なのだ。

それでは"svHacker"とは何なのだろうか?

AUの携帯電話には ARM 社のマイクロプロセッサが搭載されていて、その上に米国 Qualcomm 社の OS があり、BREW というソフトプラットフォームがその OS の上に載っている。携帯電話に ARM のマイクロプロセッサが載っていることは極めて魅力的である。何故ならば、iPOD、PDA、PSP、NintendoDSなどで動作するソフトが携帯電話で使えるようになるかもしれないからである。(NTTドコモや vodafone の携帯電話も大半の機種で ARM 社提供のマイクロプロセッサが利用されている)

それを阻む障害が AU の携帯電話の BREW の仕様にあり致命的なものであった。それは C 言語で利用が認められている大域変数(static variable)が使えないこと。それから ARM の浮動小数演算などの標準組込み関数が使えないのだ。

BREW の仕様を超えて大域変数を利用可能にするのがsvHackerである。ARM の標準組込み関数へのアクセスは SophiaFramework という製品によって実現された。

BREW の仕様の範囲外の話なのでソフィア・クレイドルとしては保証の限りではない。けれども iPOD、PDA、PSP、NintendoDSなどで動作するソフトが 携帯電話に移植され利用可能になれば携帯に新しい視界がひらけるような気がする。

  

2005 年 10 月 06 日 : テレポーテーション

テレポーテーションとは物体がある地点から別のある地点へ距離の隔たりを超えて瞬間的に移動する現象のことをいう。このSFめいた話が現実のものと空想してみた時、私たちのビジネスの価値はまさしくこれじゃないのかと思った。

x,y,z軸から構成される3次元空間に状態s軸を導入して4次元空間へと拡張してみる。もしお客様がソフィア・クレイドルの製品を手にすれば、例えばプログラムの圧縮作業とかユーザーインターフェースの開発作業とかをショートカットして瞬間的に次の状態に移り変わる。

ある意味でこの状態遷移は一種のテレポーテーションというわけで、視点を変えれば夢のような出来事を私たちは実現しているんだと自負することもできる。

その時注意が必要なのは、テレポーテーションする際の安全性ではないだろうか。『ザ・フライ』ではテレポーテーションの際のささいなバグが悲劇を招いた。それは私たちの製品の未来にとって重要な教訓になりそうな気がする。

想像以上に便利なツールであるからこそ、安全性というものに細心の注意を払わなければならない。

  

2005 年 10 月 04 日 : 253倍のスピードアップ

従来、組込みソフトC++言語でプログラミングされることはほとんどなかった。何故ならCPUスピードやメモリ容量などのハードウェア的な制約があるからだ。しかしPCのソフトはどうだろうか?限りなく多くの人々が利用する製品レベルのソフトほどC++言語でプログラミングされている。

例えば、Javaシステムの核ともいえるJavaVMもC++言語で実装されているものが多い。Macromedia社の著名なあるソフトでもクラッシュ直後にC++のエラーメッセージが表示されるのを目撃したりする。

昨日、ソフィア・クレイドルが発表したSophiaFrameworkという製品は、組込みソフトが実用レベルでC++プログラミングできるという革新に最大の特長がある。試験的に速度の向上を計測したところ、下記レポートにあるように最大253倍のスピードアップが確認された。

飛行機の発明のおかげで人々は世界の大空を自由に駆け巡れるようになった。同じく、ハードウェア制約の厳しい組込みの世界で桁違いのスピードアップを狙うのならば何らかの抜本的なブレークスルーが必要である。前回のリリースからこの1年半以上に渡る期間というものは、ひたすらこのイノベーションに捧げられたといっても過言ではない。

スタッフの計測実験レポート。
---------------------------------------------------------------------------
SophiaFramework3.0の新旧の性能比較は以下の通りです。

文字列はどのアプリケーションでも多用される基本的なオブジェクトです。新バージョンのSophiaFrameworkでは文字列処理にかかるコストが大幅に削減されました。文字列以外のオブジェクトももちろん最適化されています。例えば、コレクションクラスなどは構造自体が変化しているので、単純な比較はできません。ここでは文字列クラスを取りあげ、どの程度速度が向上しているかを示します。


■例1:文字列の追加

void func1() {
int i, j, sum;
SFXAnsiString str; // 旧バージョンではSFUAnsiString

sum = 0;
for (i = 0; i < 10; i++) { // 10回計測
int startms = GETTIMEMS(); //計測開始
for (j = 0; j < 1000; j++) { // 1000回実行
str += "abcdef"; //文字列の追加(今までの文字列に"abcdef"を追加)
}
int endms = GETTIMEMS(); //計測終了
DBGPRINTF("%d", endms - startms);
sum += endms - startms;
}
DBGPRINTF("avarage = %d", sum / 10);
}

計測された時間(単位は ms)

旧バージョン 2.2
246
691
1161
1698
2269
2802
3348
3849
4364
4909
average = 2533

新バージョン 3.0
10
11
10
10
10
10
10
11
10
10
average = 10

解説

文字列 str に繰り返し "abcdef" 文字列 を追加していく動作です。
例えば、ネットワーク通信で受信した文字列を今ある文字列に次々に追加していく場合、このようなコードが出てきます。

SophiaFramework 旧バージョンでは文字列の追加のたびに新しいインスタンスを生成したため、大幅な時間のロスとなっていました。新バージョンではこのようなロスをなくし、時間短縮がなされています。


■例2:文字列の検索

void func2() {
int i, j, sum, temp;
SFXAnsiString str; // 旧バージョンではSFUAnsiString

sum = 0;
for (i = 0; i < 10000; i++) { // 文字列の準備(abcabc... と続く文字列を用意し、途中に"SophiaFramework3.0"の文字列を挿入したものを用意する)
if (i == 5000) str += "SophiaFramework3.0";
else str += "abc";
}
for (i = 0; i < 3; i++) { // 3回計測
int startms = GETTIMEMS(); //計測開始
for (j = 0; j < 100; j++) { // 100回実行
temp += str.IndexOf("SophiaFramework3.0"); //文字列の検索(何文字目にあるか)
}
int endms = GETTIMEMS(); //計測終了
DBGPRINTF("%d %d", endms - startms, temp);
sum += endms - startms;
}

DBGPRINTF("avarage = %d", sum / 3);
}

計測された時間(単位は ms)

旧バージョン 2.2
7019
6998
7008
average = 7008

新バージョン 3.0
1281
1299
1280
average = 1286

解説

長い文字列から"SophiaFramework3.0"の文字列が何番目にあるかを探しています。
こちらも効率化により時間が短縮されています。

■例3:文字列の置き換え

void func3() {
int i, j, sum;
SFUAnsiString str; // 旧バージョンではSFUAnsiString
SFUAnsiString temp_str;

sum = 0;
for (i = 0; i < 10000; i++) { // 文字列の準備
if (i == 5000) str += "SophiaFramework2.2";
else str += "abc";
}
for (i = 0; i < 3; i++) { // 3回計測
int startms = GETTIMEMS(); //計測開始
for (j = 0; j < 10; j++) { // 10回実行
temp_str = str.Replace("SophiaFramework2.2", "SophiaFramework3.0"); //文字列の置換
}
int endms = GETTIMEMS(); //計測終了
DBGPRINTF("%d %d", endms - startms, temp_str.Length());
sum += endms - startms;
}

DBGPRINTF("avarage = %d", sum / 3);
}

計測された時間(単位は ms)

旧バージョン 2.2
3741
3741
3724
average = 3735

新バージョン 3.0
626
626
626
average = 626

解説

長い文字列から"SophiaFramework2.2"の文字列を見つけ出し、"SophiaFramework3.0"に置換しています。

以上

  

2005 年 09 月 28 日 : +∞ のソフト技術

SF 作家の George Johnson 氏の的を射たコメントからもうひとつ。

"コンピューターは自分自身をてこにして進化発展を遂げる性質を持つ。言い換えれば、未来のコンピューターは現代の進化したコンピューターを使って創られるということだ。このサイクルは停止することなく永遠であり無限にポジティブフィードバックのスパイラル曲線を描く。"

過去の歴史を紐解けば、George Johnson 氏が述べるプロセスを経てコンピューターは進化発展し今日に至っている。職人によって施される幾重にも重層的に漆塗りされた漆器に味わい深さを覚えるあのフィーリングに近いかもしれない。そんな無限大"+∞"に通じる流れに身をゆだねる姿勢から未来への理想の結果が生じるのではないだろうか。

未来にタイムトリップして世界を展望した時。多層的な構造を織り成すユビキタスなソフトウェアについて願うこと。そのソフトを構成するいくつかの層は、ソフィア・クレイドルのソフト技術によるものであってほしい。

携帯電話向けソフト技術で重層的な構造を持つものはほとんどないが、過去のコンピューターの潮流から洞察すればそうなることは自明のことのように思われる。何年先かと時期を特定することは叶わない。けれども早かれ遅かれそんな時代は自ずとやってくるだろう。

  

2005 年 09 月 27 日 : +0 のソフト技術

無限小 Infinitesimal の値 +0 は、0 よりは大きいけれども如何なる正の実数よりも小さな数として数学的に定義される。

SF 作家の George Johnson 氏が興味深い発言をしている。

"情報には質量や重さといった概念がない。だからコンピューターは実体のあるモノを扱う従来の機械とは違い何処までも無限に小さくできる。"

ムーアの法則は「半導体の集積密度は 18 〜 24 ヶ月で倍増する」という法則である。換言すれば"同じ機能のコンピューター"が 18 〜 24 ヶ月ごとに 2 分の 1 だけ小さくなるということだ。

ムーアの法則が永遠に成り立つとは一般には思われていない。いつか限界が来るとほとんどの人は思い、そこに思考の壁を自ら作っている。半導体を前提としたコンピューターについては当てはまるかもしれない。しかし"コンピューター"と"半導体"は独立した事象と捉えた方が思考そのものが自由に解き放たれ発想がひろがる。

ソフィア・クレイドルの究極のビジョンは、George Johnson 氏がいう無限小の値 +0 のサイズにまで超小型化されたコンピューターにおけるソフトウェア技術面でのブレークスルーである。だからこそ" +0 のコンピューター"向けソフトを記述するためのプログラミング言語とその言語によって記述されたソフトを圧縮する技術に非常にこだわりがある。

肉眼では見えないほど微細な生物細胞の核にあるといわれる遺伝子 "DNA" には、現代のコンピューターでも瞬時に解読できないほどの情報が内在する。

無限小 +0 コンピューターの謎を解く鍵はあらゆる生命が持つ玄妙な本質にあるのかもしれない。

続きを読む "+0 のソフト技術" »

  

2005 年 09 月 24 日 : Blog検索エンジン考

BLOGを書く人が増えている。

それに伴って膨大なBLOG情報がインターネットに溢れるようになってきた。自分にとって価値のあるBLOGを見つけ出せないジレンマに陥る傾向に拍車がかかる。BLOG 検索エンジンが次のビジネスチャンスになりそうだ

BLOG 自体はシステム的に複雑でなくて、それなりの人が取り組めば実現可能なソフトウェア技術である。その証拠に世界中でいろんな人が様々なBLOGシステムを開発し発表している。

しかしBLOG 検索エンジンに関しては従来のソフトウェア技術をブレークスルーするものをいまだ知らない。自分のフィーリングに合ったBLOGを検索する術がない。

新しいBLOG検索エンジンに関してひとつ思うことがある。BLOGというのはひとつの著作であり、一般的な傾向としては自分にとって読む価値のあるものは、文体や言葉、その連なり、その音の響きが自分のとって何処となく心地よいものではないか。

SPAMメールを排除するシステムには学習させることによってメールの内容からSPAMと判別するものがある。個人的に利用しているSPAMメールフィルターにはこの"ベイズ理論"という数学の確率理論が使われている。その精度に満足している。

ネットで調べると、Thomas Bayes氏は18世紀に生きた、聖職者兼数学者のイギリス人だったらしい。何百年も前の数学的理論が現在のコンピュータに応用されているだけに、Thomas Bayes氏の偉大さが窺い知れる。

"ベイズ理論"によれば、ある事象が発生する確率は過去の同じ事象の発生頻度によって概ね予測できるという。言い換えれば、その原因から起こる結果についての確率が分かれば、その結果を引き起こす原因が分かり未来を見渡せるということである。

この理論を応用し、自分のフィーリングの尺度でBLOGを数値化できれば、その人にとって心地よい新しいBLOG検索エンジンが創造できるかもとふと閃いた。

続きを読む "Blog検索エンジン考" »

  
<前のページ |  1 | 2 | 3 | 4 | 5 | 6 | 7 | 8  |  次のページ>