Friday, November 28, 2008

adobe air

http://sites.google.com/site/shin1ogawa/adobe-air

Python 講習会 資料

http://www.unixuser.org/~euske/doc/python/tutorial0917.html

Python 講習会 資料

Version 1.0 (2004年 9月)

対象: ある程度プログラミングの経験がある Java あるいは Perl のユーザ。


概要

  • インタプリタ言語。覚えることは最小限。もとは教育用。
  • Java と Perl の中間? プロトタイプに最適。
  • オープンソース by Guido van Rossum、コミュニティで開発。
  • 高い互換性 - UNIX、Windows、MacOS で動作。
    (Linux 上で開発した cdb を使った検索プログラムや、 スレッド使用の http サーバなどが Windows、MacOSX でも無修正で動いた。)
  • 読みやすいコード、オブジェクト指向、安定動作、豊富なライブラリ。
  • 対話型重視の環境 (オンラインヘルプ、簡易IDE付)
  • 最新バージョンは Python ???. (2004年9月時点では 2.3.4 だったが、現在はもっと上)。
  • ホームページ: http://www.python.org/
  • Python用 IDE 一覧: http://c2.com/cgi/wiki?PythonIde (オープン:7、商用:3、Eclipseプラグイン:1)
  • Python Quick Reference: http://rgruet.free.fr/PQR2.3.html

ソースコード

  • インデントによってブロックを決定する。
  • # はコメント (行末まで)
    #!/usr/bin/env python

    a = 1
    b = 2
    c = a + b

    if c == 3:
    print "correct"
    else:
    print "wrong"

式と演算

  • Python の型:
    • 真理値型 … FalseTrue [2.3以降、それ以前は 0 と 1 で代用]
    • 整数 … 3
    • 実数 … 3.14159
    • 複素数 … 1+2j
    • 文字列 … "abc"
    • Unicode 文字列 … u"日本語"
    • リスト (配列)[1, 2, "z", [3,4]]
    • 辞書 (ハッシュ){"a":1, "b":2}
    • None型 (null)None
    • オブジェクト, 関数
    • Perl と違う: 数値型と文字列型は区別される。 3+"5" → エラー
  • 数値演算
    • C, Java とほぼ同じ: +, -, *, /, %, (), **
    • 三項演算子 ? : はない。
  • 代入文
    • 変数を宣言する必要はない。
    • x = 2
    • y += 1 (y++, y--はない)
    • (a,b) = (b,a) 多重代入

文字列型と Unicode 文字列型

  • 文字列型はただのバイト列 (日本語を認識しない)
  • 文字列定数:
    • 'abc'
    • "abc"
    • """abc
      def"""
      (改行を含められる)
    • \ でエスケープ: '\n', '\020', '\x1a', "I'm \"quoted\"."
  • 演算:
    • "abc" + "def" * 3 → "abcdefdefdef"
    • 切り出し: a = "0 p 1 y 2 t 3 h 4 o 5 n 6"
      • a[0]"p"
      • a[-1]"n"
      • a[2:4]"th"
      • a[1:]"ython"
      • a[:-3]"pyt"
      • a[2:-1]"tho"
    • 変更は不可能 (ハッシュのキーに使えるように)
    • "abc" in s (包含の判定)
    • s.strip() → 先頭と末尾の空白・改行を削除した文字列が新たに返される。 (chomp)
    • s.replace("a", "b") → "a" を "b" に置換した文字列が新たに返される。
    • 正規表現は別の枠組みが必要 (→ 後述)
    • %演算子 (sprintf):
      "x=%d, y=%d" % (x,y) → "x=4, y=5"
  • 数値←→文字列の変換:
    • int("123") → 123 / str(123) → "123"
    • chr(65) → "A" / ord("A") → 65 (文字型と文字列型を区別しない)
  • Unicode型
    • 定数は u"abc"u"あいうえお" のように書く。
    • 内部表現は Unicode を使い、コーデック (codec) によって 入出力時に Unicode型と文字列型とを相互変換する。
      (日本語codec は http://www.python.jp/Zope/download で配布、 Python2.4 から日中韓国語の codec が標準装備)
    • 文字列型との相互変換: s.encode("shift_jis") → Shift JIS で表現したバイト列。
    • str() でも文字列に変換できる: EUC-JP がデフォルトなら、
      str(u"あ") → '\xa4\xa2' / unicode('\xa4\xa2') → u'あ'
    • ソースコードのエンコーディングは最初のコメントで判定される:
      #!/usr/bin/env python
      # encoding: shift_jis
      print u'この文字列定数はシフトJISとして解釈されます'

制御構造

  • if, for, while だけ。(break, continue)
  • 字下げが必要。
    if a == b:
    print "equal"
    else:
    print "not"

    n = 1
    while n < 100:
    print n
    n *= 2

    for i in [1,2,3,4,5,6,7,8,9,10]: Perl の foreach に相当する
    if i == 5:
    break
    print i
  • 比較演算子: ==, !=, <=, < , >=, >, in
  • Java と違うもの: &&, ||, ! → and, or, not
  • Java にないもの: in

入出力

  • ファイルオブジェクトを操作する:
    • fp = file("/etc/hosts", "r")
    • fp.read(n) → ファイル全部を文字列で返す。
    • fp.readline() → ファイル1行を返す。(終端は '')
    • fp.close()
    • fp2 = file("/tmp/x", "w")
    • fp2.write("write")
  • デバッグ用出力: print (改行する)
    • print x
    • print "x=", x, "y=", y
    • print >>fp, "write" (改行が入るので注意)
    • print "name=%s, age=%d" % (name, age)

例外処理

  • Perl と違う: ちょっとしたことでも頻繁に例外が出るのでキャッチしなければならない。
  • try: ~ except: でキャッチ。
    try:
    fp = file("/etc/nosuchafile")
    except IOError:
    print "cannot open"
  • raise で送出。
  • IndexError, KeyError, ValueError, IOError などがある。
  • 自作のクラスを例外として使用可。

リストと辞書

  • リスト (配列):
    • a = [1,2, "abc", 4]
    • b = [2, [3], [[4], []]]
    • a[0], a[-1], a[2:4], a[1:], a[:-3], a[2:-1] (文字列と同様)
    • a[:] (コピーされたリスト)
    • [1,2] + [3,4] * 2 → [1,2,3,4,3,4]
    • a.append(5) (末尾に要素 5 を追加)
    • a.extend([6,7]) (末尾に要素 6 と 7 を追加 - a.append([6,7]) とは異なる)
    • a.insert(0, 7) (先頭に要素 7 を追加)
    • del a[3] (3番目の要素を削除)
    • a.reverse() (反転、a は上書きされる)
    • a.sort() (ソート、a は上書きされる、自前の比較関数を書くやり方は → 後述)
    • x in y → x が y の要素に含まれているかどうか (線型探索)
    • range(10) → [0,1,2,3,4,5,6,7,8,9] (for で使用)
    • "a b c".split(" ") → ["a", "b", "c"]
    • ", ".join(["a", "b", "c"]) → "a, b, c"
  • 辞書 (ハッシュ)
    • d = {}
    • d = { "a":2, "b":4 }
    • d["a"] = 1
    • del d["a"]
    • "a" in d → "a" が d のキーに含まれているかどうか
    • d["x"] 該当するキーがない場合は KeyError 例外になる。
      try:
      x = d["x"]
      except KeyError:
      print "x is not found"
    • d.get("x", 0)
    • d.keys(), d.values()
    • 文字列以外の型でもキーにできる。(ただし変更不可能であること)

関数定義と呼び出し

  • 関数定義
    def func(x, y, z=0):
    return x*x+y*y+z*z
  • 呼び出し: func(3,4) → 25, func(3,4,5) → 50
  • 関数もオブジェクトである:
    def func(): ...
    print func(3,4,5)
    a = func
    print a(3,4,5)

    def loaddata(): ...
    def savedata(): ...
    def exitit(): ...
    menu = {"load":loaddata, "save":savedata, "exit":exitit}
    f = menu[choice]
    f()

    def mycompare(a,b):
    return cmp(len(a), len(b))
    a = ["abc", "de", "x", "yyyy"]
    a.sort(mycompare)

オブジェクト指向

  • Person オブジェクトの定義:
    class Person:

    # コンストラクタ: Person(name,age)
    def __init__(self, name, age):
    self.name = name
    self.age = age
    return

    def __repr__(self):
    return '' % (self.name, self.age)

    def display(self, out):
    out.write("Name: %s\n" % (self.name))
    out.write("Age: %d\n" % (self.age))
    return

    obj = Person("Shinyama", 29)
    print obj
    obj.age = 30
    obj.display(fp)
  • Java と違う: self が必要! (Java の this に相当する)
  • obj.method(a,b,c)method の第一引数 selfobj が渡される。
  • コンストラクタ: __init__(self)
  • 文字表現: __repr__(self) デバッグに便利

リスト操作いろいろ

  • 内包表現
    • a = [ n*n for n in range(5) ] → a = [1, 4, 9, 16, 25]
    • ", ".join([ "%s='%s'" % (k, d[k]) for k in d.keys() ])
  • イテレータ (リストのように扱えるがメモリ消費しない)
    • 整数: xrange(1000000)
    • 辞書: dic.iterkeys(), dic.itervalues()
    • ファイル: fp.xreadlines()

ライブラリ (モジュール) を使う

  • モジュールもオブジェクト: 関数や変数を格納した、単なる「でっかいクラス (構造体)」でしかない。
    アクセスする文法はクラスと一緒。
  • importfrom:
    import math
    print math.log(2)
    print math.pi

    from math import log
    print log(2)

    (from math import log はじつはこれと同じ)
    import math
    log = math.log

    (正規表現を使う)
    import re
    pat = re.compile("([a-zA-Z]+)=([0-9]+)")
    m = pat.search("a=123")
    print m.group(1), "=", m.group(2)

    (dbファイルを使う)
    import dbm
    mydb = dbm.open("mydb", "n")
    mydb["abc"] = "xyz"
    mydb["123"] = "456"
    mydb.close()
  • dbm、(g)zip、csv、base64、popen
  • http (クライアント/サーバ), ftp, smtp, pop3, imap, ssl 関連
  • htmlパーサ、xmldom、xmlrpc、email 処理

ライブラリ (モジュール) を作る

  • ファイル名 mylog.pymylog というモジュール名をもつ:
    #!/usr/bin/env python

    import math

    def log2(x):
    return math.log(x) / math.log(2)

    if __name__ == "__main__":
    print "log2(10)=", log2(10)
  • 使い方 :
    import mylog
    print mylog.log2(10)
    from mylog import log2
    print log2(10)
  • モジュール中のすべての文は実行され、def で関数定義される。
  • mylog.py が直接実行された場合、if __name__ == "__main__": の中が実行される。
  • ディレクトリもまた構造体と同じ扱い。mylibs/mylog.py 中にある log2 という関数 (または変数) は mylibs.mylog.log2 という名前でアクセスできる。
  • モジュール探索時に環境変数 PYTHONPATH をさがす。

すてきな機能

  • 補完機能 (tab)
  • オンラインヘルプ
    >>> import urllib
    >>> help(urllib)
    ...
    >>> help(urllib.urlopen)
    ...
  • pickle - オブジェクトを文字列表現に変換、ファイルに保存できる。
  • Tkinter - プラットフォーム独立の GUI
    import Tkinter

    def action1():
    print "boo!"
    b = Tkinter.Button()
    b["text"] = "Hit Me"
    b["command"] = action1
    b.pack()
    Tkinter.mainloop()
  • Jython - Java で動く Python 実装。Java のライブラリが使える。じつは CPython より速い
    from java.applet import Applet

    class HelloWorld(Applet):
    def paint(self, g):
    g.drawString("Hello from Jython!", 20, 30)
  • IronPython - .NET 上の実装。これも CPython より速い

結論

  • web クローラ: 100~500行
  • 形態素解析器: 150行
  • sample.py
  • Total Cost of Development: Python + Java <>

Wednesday, November 26, 2008

Squid underscore

http://www.squid-cache.org/mail-archive/squid-users/200208/0565.html
To make Squid allow any characters just comment out the block in url.c
starting by

if (strspn(host, valid_hostname_chars) != strlen(host)) {

To allow underscores, you can compile Squid with the
--enable-underscores option.

Some notes on the standards of hostnames, HTTP, DNS etc:

Note 1: The HTTP specification (RFC2616) is rather strict on the
characters allowed in HTTP URL:s:

From RFC2396 "URI" (referenced by RFC2616 "HTTP/1.1"):

URL schemes that involve the direct use of an IP-based protocol to a
specified server on the Internet use a common syntax for the server
component of the URI's scheme-specific data:

@:

...

hostport = host [ ":" port ]
host = hostname | IPv4address
hostname = *( domainlabel "." ) toplabel [ "." ]
domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum
toplabel = alpha | alpha *( alphanum | "-" ) alphanum

as seen this does not allow underscores in Internet URL host names. Only
A-Z 0-9 and - (case insensitive).

Note 2: What restricts hostnames is not the DNS specification, but the
"Requirements for Internet hosts" specification Internet STD 0003,
specifically RFC1123 section 2.1. This too does not allow underscores,
and is from what I can tell identical to the rules above.

Note 3: DNS as such allows any characters in the DNS protocol and from
what I understand has always done so even if the specification has been
a bit ambigous on this. To DNS a "domain name label" is just a binary
sequence. What RFC2181 clarifies is that the DNS protocol does not by
itself put any restrictions on the labels used within DNS. DNS is just a
protocol for resolving namespaces, not a namespace definition. DNS does
not define the namespace of Internet hosts, only a protocol that can be
used to resolve names within the Internet host namespace and optionally
other namespaces. The fact that DNS allows for "any kind of data" does
not say that it is allowed to use "any kind of data" for Internet host
names.

Note 4: There is an ongoing task within IETF to standardise how to use
national characters etc in Internet hostnames, but there still is lots
to define before the goal is reached. The long term goal has been
defined to move to use UTF8 in all Internet protocols, and I think also
a intermediary wrapper in the application layer has finally been defined
transforming "national host names" to/from "current hostname syntax
conformant names" to be used until the transition to UTF8 can be done.
As the HTTP specification has not yet been revised to support UTF8
applications wishing to use "national host names" SHOULD use such
translation layer when using such host names within HTTP. Also, I am
uncertain on the fate of underscores in this context..

Note 5: Other standard Internet applications such as E-Mail also puts
restrictions on allowable syntax for hostnames within the protocol in
addition to STD 0003. HTTP is not alone.

Monday, November 24, 2008

Flash Chart

http://www.amcharts.com/

VNC Various Clients

VNC SSH-SSL Proxy
http://www.karlrunge.com/x11vnc/ssvnc-proxies.html
Flash VNC
http://osflash.org/fvnc
(http://gigazine.net/index.php?/news/comments/20070127_flashvnc/)

Sunday, November 23, 2008

手びら大きいさのプロジェクターが誕生した

http://www.pocket-pj.com/
iPod, 携帯, ハンディーカメラと一緒に使う目的だそうだ

Wednesday, November 19, 2008

DSP Benchmarks

Sample benchmark results

BDTI's Real Block FIR Filter Benchmark - Execution Time in microseconds.
(lower is faster)


Inside the ARM ARM7, ARM9, and ARM9E includes 100 pages of benchmark data, in tables and graphs, showing results on each of the 12 BDTI DSP Kernel Benchmarks for the ARM cores and competitors.


スーパーコン500傑で1位はIBM社製1PFLOPSの「Roadrunner」,Cellを1万2240個搭載

http://techon.nikkeibp.co.jp/article/NEWS/20080618/153461/?ref=RL1

スーパーコン500傑で1位はIBM社製1PFLOPSの「Roadrunner」,Cellを1万2240個搭載
コンピュータ システム・レベル設計 ソフトウエア マイクロプロセサ 企業・市場動向 半導体
2008/06/18 19:40
 世界の高性能コンピュータ(HPC)システムのランキングである「TOP500」の2008年前半期のランキングが発表された。今回の1位は,米IBM Corp.製の「Roadrunner」。ランキングでの浮動小数点演算速度は実効で1.026P(ペタ)FLOPSと,世界で初めて1PFLOPSを超えた。

 同システムは,米ニューメキシコ州にある米エネルギー省の研究所「Los Alamos National Laboratory(LANL)」に導入されたもの。LANLによれば2008年6月には,単精度計算ながら1.144PFLOPSの実効演算速度を記録したという。「PetaVision」というLANLとIBM社が共同開発した,人間の視覚情報に関する神経組織の働きを再現するためのソフトウエアを動作させて確認した。

 Roadrunnerには,IBM社と東芝,ソニーが共同開発したマイクロプロセサ「Cell Broadband Engine」の最新版である「PowerXCell 8i」を計1万2240個同時に動作させた(関連記事)。動作周波数は3.2GHzである。さらに,米Advanced Micro Devices,Inc.(AMD社)の1.8GHz動作でデュアルコア型のマイクロプロセサ「Opteron」を6562個以上搭載する。

 今回のランキングでは,1~3位がIBM社製のHPCシステム,4位が米University of Texasが導入した米Sun Microsystems,Inc.製の「Ranger」。5位が米Oak Ridge National Laboratoryが導入した米Cray Inc製の「Jaguar」など,5位までを米国のシステムが占めた。12位までが実効性能100TFLOPS以上となるなど,全体的な高速化が目立つ。


インドTataの子会社が8位にランクイン

 米国以外ではドイツのForschungszentrum Juelich(FZJ)が導入したIBM社製「JUGENE」が6位,自動車などで知られるインドTata Groupの子会社Computational Research Laboratoriesが導入したHewlett-Packard Co.製「EKA」が8位に入った。

 日本勢では,東京大学が2008年6月に発表したばかりの日立製作所製「T2K」が82.98TFLOPSで16位に入ったのが最高。T2Kは,東京大学,筑波大学,京都大学の3大学(頭文字TTKでT2K)が2006年にスタートさせた「オープンスパコン計画」に基づいて開発されたHPCシステム(関連記事)。AMD社の2.3GHz動作でクアッドコア型Opteronを1万2288個用いている。

インテルのAtom+Moblinに対抗 MID向けLinux混戦、UbuntuがARM対応へ

So it means we can run desktop linux on GBASP?

インテルのAtom+Moblinに対抗
MID向けLinux混戦、UbuntuがARM対応へ
2008/11/14

 英ARMと英カノニカルは11月13日、デスクトップ向けLinuxディストリビューションの「Ubuntu Desktop」をARMv7アーキテクチャに対応させると発表した。ARM Cortex-A8と、マルチコア対応のCortex-A9プロセッサベースのシステムに対応する。この決定はデバイスメーカーからのニーズに応えるもので、ARMを使って小型のネット端末でバッテリ稼働時間を犠牲にすることなく通信環境を提供できるようしていくという。

 ARM対応版のUbuntuは2009年4月に、従来のデスクトップ版同様にWebサイトやCD-ROM配布によってリリースしていく。

 UbuntuはこれまでMID端末向けとして「Ubuntu Mobile Internet Device (MID) Edition」をOEM向けとしてリリースしていた。Ubuntu MIDはインテルのAtomファミリーをターゲットとしており、カーネルもインテルが中心となって省電力機能などを強化したMoblinベースのものを使用していた。

 インテルはAtomとMoblinの組み合わせで今後成長が見込まれるUPMC市場で攻勢をかけたい構えだったが、組み込み市場で先行するARMはUbuntuと手を組むことで、この流れに対抗した形だ。

カーネル以外でも進むARMへの移植
 UbuntuのARM対応は、組み込み市場でARMの牙城を崩したいインテルにとっては強力なカウンターパンチだ。インテルが主張するAtomプラットフォームの優位性の1つは、x86アーキテクチャをターゲットとしたソフトウェアの豊富さにあるからだ。

 Linuxカーネル以外のソフトウェアやディストリビューション自体をARMアーキテクチャに対応させることは容易ではない。しかし、ノキアがスポンサーする「Maemoプロジェクト」や「Handheld Mojoプロジェクト」はWebブラウザやFlashをはじめとする主要なアプリケーションをARM上へ移植しつつある。例えばノキアのインターネット端末「Nokia N800」はARMベースのプロセッサを採用するが、MozillaベースのWebブラウザであるMicroBやFlashプラグイン、Skypeなどのアプリケーションが稼働している。

 また、Handheld Mojoは、Debian/GNU Linuxの1万以上のパッケージを、最小限の変更でそのままARM上でビルドし直すという野心的プロジェクトだ(参考リンク)。スマートフォンの処理能力やストレージ容量は、もはやそれ専用の“小さな”ディストリビューションを作るほど小さくない、というわけだ。ただ、x86プラットフォーム用Debianのパッケージはクロス・コンパイルを意識して作成されていないものがあるため、PC上でリコンパイルしようとすると多くの手作業が発生してしまう。このためHandheld Mojoでは、ARM上で何日もかけてビルドするという作業を行っているという。

 つまり、GNOMEに含まれる多言語ライブラリ、仮想ファイルシステムや画像・マルチメディア関連のライブラリ、HTMLレンダリングエンジン、SQLライブラリ、ウィンドウマネージャなどを含むパッケージの全体となると、ARMへの完全移植のめどが付いたばかりだ。こうしたタイミングでUbuntuがARMプラットフォームへのコミットメントを表明し、2009年4月にフルバージョンのARM向けUbuntuディストリビューションを提供すると発表したわけで、この意味は小さくない。

 GNOME関連で、もう1つ見逃せない動きがあった。Androidプロジェクトを立ち上げて今も中心的立場にあるグーグルだが、同社はその一方でGNOMEプロジェクトへの参加を最近表明している。グーグルはモトローラとともに11月3日、GNOMEファウンデーションにボードメンバーとしての参加すると発表した(プレスリリース)。GNOMEプロジェクトはモバイル向けとしてGNOME Mobile Platformの開発に取り組んでいる。

 UbuntuのARM対応や、グーグル、モトローラらのGNOMEプロジェクトへの参加は、カーネルだけではなくLinuxプラットフォーム全体のモバイル機器への普及を後押しすることなるかもしれない。

SSH通信でデータ漏えいの可能性--32ビットの平文が取り出し可能に

ちょっと怖い。これからCTRモードを使おう。
http://japan.zdnet.com/news/sec/story/0,2000056194,20383843,00.htm?tag=zdnw
有限責任中間法人JPCERTコーディネーションセンター(JPCERT/CC)と独立行政法人 情報処理推進機構セキュリティセンター(IPA/ISEC)は11月17日、SSH通信において一部のデータが漏えいする可能性があると発表した。

 SSH(Secure Shell)は、インターネット上に置かれているサーバにネットワークを介してログインしたり、コマンドを実行したりするためのプログラムおよび通信プロトコル。データが暗号化された状態で通信されることが特徴となっている。

 JPCERT/CCとIPA/ISECによると、SSHで使用される通信方式の一部に対する攻撃方法が報告されたという。この攻撃によって、SSHを実装する製品が影響を受ける可能性がある。報告された攻撃方法では、SSHがデフォルトで使用する通信方式において、ひとつの暗号化ブロックから32ビットの平文を取り出すことができるとのことだ。

 この攻撃がされると、SSHセッションが切れることがある。通信エラーが発生した際に、自動的に再接続する設定がされている場合、攻撃による被害の影響が大きくなる可能性がある。ただし、攻撃が成立する可能性は低いとしている。

 この問題の対策方法としては、CBC(Cipher Block Chaining)モードではなくCTR(CounTR)モードを使用することを推奨している。OpenSSH 3.7以降ではCTRモードがサポートされている。

Monday, November 17, 2008

CMMI

http://itpro.nikkeibp.co.jp/article/lecture/20070405/267507/

CMMIって何だろう

CMMI(Capability Maturity Model Integration,能力成熟度モデル統合)は,能力成熟度モデルの一つであり,システム開発を行う組織がプロセス改善を行うためのガイドラインで す。この講座では,CMMIの歴史や概要,CMMIを利用したプロセス改善のポイントなどを解説します。

 CMMI(Capability Maturity Model Integration,能力成熟度モデル統合)は,能力成熟度モデルの一つであり,システム開発を行う組織がプロセス改善を行うためのガイドラインとなるものです。米国国防総省(Department of Defense)が米国カーネギーメロン大学(CMU)に設置した,ソフトウェア工学研究所(SEI)で考案されました。CMMIでは,組織の製品,サービスの開発,調達能力などを5または6段階のレベルで評価します(後述する「段階表現」では5段階)。組織のプロセスの改善度合いが,このレベルにより表わされます。

 2006年8月にCMMI for Development (CMMI-DEV), V1.2 model(開発用CMMI V1.2)がリリースされ,現在「CMMI」という場合は,このV1.2を示します。

 CMMI V.1.1は,日本語訳がリリースされており,IPAまたはSEIのWebページから無料で入手することができます。日本語の書籍CMMI標準教本も出版されています。CMMI-DEV V1.2の日本語訳も発行される予定です(2007年3月時点ではまだ発行されていません)。

CMMIの5段階の成熟度レベル

 CMMIには,「段階表現」と「連続表現」という2つの表現方法があります。ソフトウエア開発の組織では,一般に段階表現を使う場合が多いので, ここでは段階表現の場合の成熟度レベルについて解説します。段階表現と連続表現の違い,それぞれの詳細については,先述したWebページのCMMI V.1.1の日本語訳を参照してください。この部分については,V1.1とV1.2の違いはありません。

 段階表現では,組織の成熟度を表1に示すように5つの段階に分けて評価します。各段階はプロセス改善における改善の段階を定義したものです。CMMIを利用したプロセス改善では,はじめに,現状のプロセスの状況を診断し,不十分な部分を改善し,より高いレベルに到達するように継続して改善を続けます。

表1●段階表現における5つの段階の概要
表1●段階表現における5つの段階の概要
[画像のクリックで拡大表示]

CMMI開発の経緯

 冒頭でご説明したように,CMMIは,米国国防総省(DOD)がスポンサーとなって開発したものです。DODがCMMIを開発した経緯を理解することで,CMMIの効果や,CMMIがプロセス改善に役立つ理由を知るヒントとなります。開発の経緯は以下のとおりです。

 DODは大量のソフトウエアの開発・保守を発注していましたが,ソフトウエアの品質,納期,費用の増加が課題となっていました。

 1980年代のはじめ,ソフトウエアの品質,納期,費用の増加という問題を認識したDODは,その解決策を公募しました。そしてカーネギーメロン 大学の解決策が採用され,その結果,ソフトウェア工学研究所(SEI)がカーネギーメロン大学に設置されました。同時に,Watts S. Humphrey博士をSEIに迎え入れ,SEIがソフトウエアエンジニアリング向けのプロセス改善モデルの開発を開始しました。

 SEIは「システムや成果物の品質は,それを開発し保守するために用いられるプロセスの品質によって大きく影響される」という前提に立って,プロ セスの改善のための研究を進め,1991年にソフトウエア向けCMM(Capability Maturity Model for Software: SW-CMM)の最初の版をリリースしました。

 この能力成熟度モデルが役に立つことが分かり,表2のような能力成熟度モデルが各所で開発されました。

表2●様々な能力成熟度モデル
表2●様々な能力成熟度モデル
[画像のクリックで拡大表示]

 各種の能力成熟度モデルが多くの組織に役立つことが分かってきましたが,別々に開発された複数のモデルを同時に適用するのは,一貫性に欠けるだけ でなく,トレーニングやアプレイザル(プロセスの状況診断),改善活動に手間がかかるなどの問題がありました。そこでSEIが,以下に示す3つのモデルを 統合して,CMMI(Capability Maturity Model Integration,能力成熟度モデル統合)を開発しました。

(1) ソフトウェア能力成熟度モデル(SW-CMM) V2.0草稿(The Capability Maturity Model for Software v2.0 draft C)
(2) システムエンジニアリング能力モデル(SECM,The Systems Engineering Capability Model)
(3) 統合成果物開発能力成熟度モデル(IPD-CMM) V0.98(The Integrated Product Development Capability Maturity Model V0.98)

 CMMIは,2000年の11月にV1.02がリリースされ,その後改善が続き,2002年1月に,V1.1がリリースされました。現在は,2006年8月にリリースされたV1.2が最新版となっています。

 以上のようにCMMIは,DODがスポンサーとなり,SEIが開発した能力成熟度モデルです。その元々の目的は,DODが発注するシステムの開 発,保守を行う組織の成熟度を評価し,向上させることで,より良い品質のシステムを納期どおりに,より安価に調達することにあります。この目的から分かる ように,CMMIに基づいて,組織のプロセス改善を行うことは,組織で開発,保守するシステムの品質の向上,原価低減,納期の短縮に役立つと考えられま す。現在では,このプロセス改善の考え方は民間企業でも広く利用されています。

 実際に民間の企業でどの程度使われているのかを,SEIの報告である「Process Maturity Profile」で知ることができます。ここには,CMMIの適用状況が,統計データとして報告されていて,民間,政府からの受注組織,政府関連組織での適用状況の報告も含まれています。

 これによれば,CMMI V1.02がリリースされてから,2006年6月までにCMMIを利用してプロセスを評価し,結果をSEIに報告したプロジェクトの68%が 「Commercial/In-house」に分類されています。つまり,政府系よりも民間に多く利用されているのです。


CMMI V1.2の概要

●構成

 CMMIは,CMMI標準教本モデルな どに記述されているモデルに加え,プロセス改善に必要なプロセスの評価方法(アプレイザル方法),トレーニングなどから成り立っています。これらの CMMI関連の成果物一式をまとめたものを「CMMIプロダクト一式」(CMMI Product Suite)と言います。以下,それぞれについて,概要を紹介します。

●モデルの概要

 CMMIV1.2には,以下の表に示すように3種類があります。従来のCMMI V1.1は,「CMMI for Development」と名前を変え,「CMMI for Acquisition」と「CMMI for Services」が今後追加されることになっています。この3つは,共通の基本部分にそれぞれに固有な部分を追加した形となっており,まとめて利用でき るよう配慮されています。

分類
内容
入手方法
CMMI for Development 開発用CMMI。
プロダクトおよびサービスの開発と保守が対象範囲。以下の3つの専門分野がある。
・ハードウェアエンジニアリング
・システムエンジニアリング
・ソフトウェアエンジニアリング
英語版はSEIのWebから無償で入手できる。
ADDISON WESLEYから書籍も発行されている。
V1.2の邦訳は,2007年3月時点では発行されていない
CMMI for Acquisition 調達を行う組織のプロセス改善のガイド 以下のドラフト版がSEIのwebから入手できる。
(1)CMMI Acquisition Module,Version 1.1
(2)Adapting CMMI for Acquisition Organizations: A Preliminary Report
まだ,正式版は発行されていない
CMMI for Services サービスを行う組織のプロセス改善のガイド まだ発行されていない
表3●CMMIV1.2の種類

●トレーニングの概要

 CMMIV1.2の正式なトレーニングの種類と概要は以下のとおりです。CMMI入門コースを日本のSEIパートナーが実施する場合には,日本語を使うのが普通です。

コース名
概要
期間
実施

CMMI入門
(Introduction to CMMI Version 1.2)

CMMIの基本的なコンセプトについてについて概要を説明する。
システムの開発担当者,改善の担当者,アプレイザルのメンバーとなる方が主な対象。
アプレイザルのチームメンバーになるには必須
3日間 SEI
SEIパートナー
CMMI中級
(Intermediate Concepts of CMMI Version 1.2)
CMMIのコンセプト,モデルの詳細を説明する。
リードアプレイザ,インストラクタの候補者が主な対象
5日間 SEI
CMMI入門インストラクターコース
(CMMI Version 1.2 Instructor Training)
CMMI入門コースのインストラクタ養成コース
このコースの終了試験に合格した後,実際に教育をしているところを試験官が観察,合格するとインストラクタとなることができる
3日間 SEI
SCAMPIリードアプレイザコース
(SCAMPI Lead Appraiser Training)
リードアプレイザ養成コース。リードアプレイザは,CMMIのもっとも正確なアプレイザルを実施できる資格。 このコースの終了試験に合格した後,実際にアプレイザルをしているところを試験官が観察,合格するとリードアプレイザとなることができる 5日 SEI
SCAMI B Cチームリーダコース
(SCAMPI B and C Team Leader Training)
チームリーダー養成コース。チームリーダーはクラスB,Cという簡易的なアプレイザルを実施できる資格。 このコースの終了試験に合格した後,実際に教育をしているところを試験官が観察,合格するとチームリーダーとなることができる 4.5日 SEI
表4●CMMIV1.2の正式なトレーニングの種類と概要

●アプレイザルの概要

 CMMIのモデルを使って,組織のプロセスの状況を診断することを「アプレイザル」と言います。客観的で,ばらつきのない結果を得るために,アプ レイザルの方法,レベル判定の基準などが,明確に決められています。また,正式なアプレイザルをするには,SEIの認定を受けた「アプレイザ」が診断する 必要があります。

 アプレイザルは,以下の表に示すように3種類あります。完全で,最も正確なのがクラスAのアプレイザルです。クラスCは期間も短く,手間も少ない のですが,正確さの面ではクラスAに劣ります。クラスBがその中間です。CMMIのレベル判定ができるのはクラスAのアプレイザルだけです。


クラスA
クラスB
クラスC
調査方法 ドキュメント確認およびインタビュ- ドキュメント確認およびインタビュ- ドキュメント確認およびインタビュ-
調査量
レベル判定 不可 不可
責任者の資格 リードアプレイザ チームリーダー チームリーダー
アプレイザルのチーム人数 通常7~8人程度。
(規定での最少:4人)
通常6人程度。
(規定での最少:2人)
通常3人程度。
(規定での最少:1人)
診断期間の例 2~4週間以上 2週間程度 1週間程度
実施規定 Standard CMMI Appraisal Method for Process Improvement (SCAMPI), Version 1.2: Method Definition Document Handbook for Conducting Standard CMMI Appraisal Method for Process Improvement (SCAMPI) B and C Appraisals, Version 1.1
表5●アプレイザルの種類

CMMIの適用状況

 各社のCMMIの導入状況は,新聞,ホームページなどでの発表,SEIからの発表により,知ることができます。

 また,正式なアプレイザルを実施した場合,結果をSEIに報告する義務があります。SEIはこの結果を集計し,報告資料であるMaturity Profileなどを作ります。これらは,Published CMMI Appraisal Resultsとして公表されています。さらに,個々の報告結果を公開することを承認した会社のデータもPublished Appraisal Results Listとして,公開しています。

 2006年9月発行のProcess Maturity Profileによると,各国のアプレイザル件数は表6のとおりです。アプレイザルはプロセスの診断であることから,この件数は各国のCMMIを用いたプロセス改善への取り組みの状況をほぼ表していると考えられます。

表6●各国のアプレイザル件数
表6●各国のアプレイザル件数
●日本の状況

 2001年に経済産業省から,「日本版CMM構想」が発表されました。各社はCMMのレベルを満足しないと公共関連の仕事ができなくなる可能性が あると考え,一挙に広まりました。2007年3月現在,CMMIのレベル達成は,国内では調達時の必須条件とはなっていませんが,プロセス改善のために導 入する企業は増えています。

 各社のCMMIの導入状況は,新聞,ホームページなどでの発表,SEIからの発表により,知ることができます。前述のように,正式なアプレイザル を実施した場合,結果をSEIに報告する義務があります。これをベースとしたSEIの報告や,各種の発表によれば,国内では,大手コンピュータ・メー カー,ソフトハウスなどがレベル3を達成し,レベル5の組織も増えつつあります。

CMMIの効果

 プロセス改善関連の学会などで,CMMIを適用した結果が論文やプレゼンテーションで報告されています。これをまとめた,Performance Results of CMMI-Based Process Improvementが,SEIのテクニカルレポートとして公開されています。このレポートによると,コスト,スケジュールなどの改善度合いは次の表のとおりです。

表7●CMMIによるコスト,スケジュールなどの改善度合い
表7●CMMIによるコスト,スケジュールなどの改善度合い

CMMIを適用したプロセス改善

 CMMIは,プロセス改善のためのガイドなので,効果的に適用することでプロセスをQCD(品質,コスト,納期)の改善に役立てることができます。一方,「CMMIを採用したけれど手間ばかりかかって効果がない」という声も聞きます。

 この違いは,CMMIをプロセスの改善のガイドとして利用しているのか,レベル達成を目的としているのか,にあるようです。

 CMMIをプロセス改善のガイドとして利用する場合,はじめにCMMIのモデルと,現状の組織のプロセス状況との違いを調べます。これを「ギャッ プ分析」と言い,実際にアプレイザルを行うのが効果的です。資格のあるアプレイザを見つけ,コンサルテーションやギャップ分析のためのアプレイザルを依頼 するのがよいでしょう。資格のあるアプレイザは,SEIのwebで公開されているSEI Partner Network Directory: SEI Partner Directory Searchで見つけることができます。

 次にギャップ分析で見つけた不十分な部分を改善します。

 ここで重要なことは,分析の結果見つかったギャップを埋めるための変更が,“本当の改善”であることです。CMMIのモデルをよく理解していない 場合,CMMIを誤解して,“改善にならない変更”を行ってしまう恐れがあります。特に,レベル達成を目的とした場合,過大に解釈した必要のないプロセス を導入する可能性が高くなります。

 改善し,それが定着したら,再度アプレイザルをして改善の状況を確認します。そして新しく見つかったギャップの改善に取り組みます。これを繰り返します。

●ISOなどとの関連

 CMMIのモデルは,プロセスを見る“一つの見方(ビュー)”に過ぎません。ほかにも,ISO9000,ISO10554,ISO16949などの,いろいろな見方があります。

 これらのどれを使って評価するにしても,開発プロセス自体をモデルや規格に合わせる必要は全くありません。各規格,モデルの見方で評価し,不十分 な点を見つけ出し,対策は,各組織で最良と考える方法で行えばよいのです。また,これらの規格は互いに背反するものではなく,同時に適用することが可能で す。

●コンサルタントの活用

 CMMIのモデルには,非常にたくさんのことが書かれています。この中には必須の部分だけでなく,参考として書かれている部分もあります。この中 から,自分の組織に役立つ部分を採用して必要十分なレベルでプロセスを規定し,実施します。CMMIの理解が足りない場合,モデルを過大に解釈して,実施 の負荷が高い,重いプロセスを作ることが多いようです。このようなことを避けるためには,経験のあるコンサルタントに依頼するのが効果的です。

■変更履歴
内容を変更・更新しました。本文は修正済みです。 [2007/04/12]

Sunday, November 16, 2008

Asus EeePCビデオカメラの使えない問題を解決した

下記の方法で解決できた
http://eeepc.asus.com/jp/faq4g.htm
WebカメラがWindows XPで認識されていないようです。
下記のBIOS設定を確認してください。

1. 起動時に「F2」を押して、BIOSの設定画面に入ります。
2. 「Advanced」の項目の「Onboard Devices Configuration」を選び、「Enter」を押すと設定画面が開きます。
3. 「Onboard Camera」が「Disabled」となっている場合は「Enabled」に変更してから「F10」を押します。
4. 「Save configuration changes and exit now?」と表示されたら、「OK」をクリックするとEee PCが再起動します。
5. Windows XPが起動すると、Webカメラが自動で認識されます。

Saturday, November 15, 2008

Evaluator on .Net Framework

http://www.codeproject.com/KB/recipes/eval3.aspx

Reflection support for generic types in .NET Compact Framework

http://blogs.msdn.com/nazimms/archive/2005/01/25/360324.aspx

Reflection support for generic types in .NET Compact Framework

Version 2 of .NET Compact Framework (NETCF) will provide support for parametric polymorphism aka Generics. You can get a good feel for the feature support from blog posts by Seth Demsey and Roman Batoukov. It would also be useful to go over Generics terminology as presented in this article in section 1.1.



Evidently since this language feature adds to the very nature of types in the CLR, one could safely assume need for special support when reflecting on these types … and such is the case. Below is a list of new Reflection APIs provided to assist in discovering information about a generic type/method through reflection. It should be noted however that previously existent reflection APIs like Type.GetMethods() etc would also discover generic methods and the like.







I. New Reflection APIs for generic support.



(Note: This list is current as of .NET Framework 2.0 Beta 1 and may change henceforth.)



1. System.Type



Properties

ContainsGenericParameters

HasGenericArguments

IsGenericParameter

IsGenericTypeDefinition



Methods

BindGenericParameters

GetGenericArguments

GetGenericTypeDefinition





2. System.Reflection.MethodInfo



Properties

ContainsGenericParameters

HasGenericArguments

IsGenericMethodDefinition



Methods

BindGenericParameters

GetGenericArguments

GetGenericMethodDefinition







II. How and where would I use it?



1. Creating generic types via reflection.



NETCF does not have runtime IL verification and metadata validation and hence cannot validate generic parameter constraints for normal execution scenarios (if the compiler did not catch the error at compile time). However, if one were to use reflection, i.e. get an open generic type and the bind parameters to it via BindGenericParameters() API, constraint validation would be performed. So if constraint validation is important to you, use the reflection API to bind parameters (if the compiler would not catch the error). Here is an example:



Say I have a generic type:



public class MyGenericType

where T: IFormattable

where U: IConvertible

{}



Something like MyGenericType should not be allowed, since System.Object does not implement IConvertible. However if you were to write code that looked as below, we would validate the constraints on MyGenericType and throw an exception.



Type foo = Type.GetType("MyGenericType`2");

Type[] params = new Type[] {typeof(Int32), typeof(Object)};

Type bar = foo.BindGenericParameters(params); // This will throw an exception because constraints are not met.



Type foo above denotes the open type for MyGenericType, meaning no generic parameters have been bound to it yet. The open type is also referred to as the Generic Type Definition. The "`2" (back-tick) notation refers to the number of generic parameters on the type. So a class like



public class GenType2



would have an open type notation of



Type foo2 = Type.GetType("GenType2`4");



Creating a bound type for GenType2 would look something like what is shown below. As one would guess, the types foo3, foo4 and foo5 are identical.



Type foo3 = Type.GetType("GenType2`4[System.Int32, System.Int32, System.Int32, System.Int32]");

GenType2 bar2 = new GenType2();

Type foo4 = bar2.GetType();

Type foo5 = typeof(GenType2);



What would the type string look like if one of the generic parameters above was a type in a different assembly? Well it would look something like what is shown below.



Type foo6 = Type.GetType("MyGenericClass`2[System.Int32, [MyNameSpace.MyExternType, MyExternAssemblyName]]");



Of course you could also go ahead and provide more information like the public key token if you wanted.





2. Invoking generic methods and methods with generic arguments using reflection



Say I have the following type definition.



public class MyGenericType

{

public void Method1 (T x) {}

public void Method2 () {}

}



Method1 is a method which has a generic argument and Method2 would be a generic method. Hopefully this example helped untangling your brain from the topic being discussed. In Method1, the first argument x happens to be of the same type as the first generic parameter that MyGenericType was created with (T). In Method2 however, V is a generic type and has no relation to the generic parameters used to create MyGenericType. Here's how these methods would be called in the normal execution scenario.



MyGenericType mgt = new MyGenericType();

Int32 i = 0;

mgt.Method1( i );

mgt.Method2();



Here's how you would do it using reflection.



MethodInfo mi1 = typeof(mgt).GetMethod("Method1");

MethodInfo mi2 = typeof(mgt).GetMethod("Method2");

mi1.Invoke(mgt, new object[] {5}); // The method argument has to be castable to an Int32.

MethodInfo mi2_bound = mi2.BindGenericParameters(typeof(System.DateTime));

mi2_bound.Invoke(mgt, new object[] {});

MethodInfo mi2_unbound = mi2_bound.GetGenericMethodDefinition();



As you noticed we had to first bind a generic parameter to Method2 before we could Invoke it. In the code above, mi2_unbound would be the same as mi2.







III. Limitations



1. Getting members of open generic types



Getting members, methods or interfaces of open generic types is not supported in NETCF. You will get a NotSupportedException thrown when you attempt to do something similar to what is shown below.



Type t = Type.GetType("MyGenericType`2");

Type[] InterfaceList = t.GetInterfaces() // This will throw a NotSupportedException

MethodInfo mi = t.GetMethod("Method1"); // This will throw a NotSupportedException



What you would need to do to work around this is to simply bind some type parameters to your generic type (instantiate it) and then attempt to get its members.



Type t = Type.GetType("MyGenericType`2[System.Int32, System.Int32]");

MethodInfo mi = t.GetMethod("Method1"); // This will work.





2. Methods/Properties not supported on formal types



If you were to call GetGenericArguments() on an open generic type, you would get the generic parameter list ... also called formal parameters.



Type t = Type.GetType("MyGenericType`2");

Type[] genargs = t.GetGenericArguments();



The array genargs would actually contain the type T and U as defined in the class definition. You are limited to what you can actually call on this formal type. Attempting to access BaseType, DeclaringType, ReflectedType etc. would result in a NotSupportedException being thrown. This is also true if you attempt to get interfaces, methods or members on it.





3. Discovering constraints on parameters through reflection.



NETCF does not support the GetGenericParameterConstraints() API and as such you will not be able to look up the constraints on generic parameters of any generic type/method through reflection. Another mechanism that the full .NET framework provides for discovering this is through discovery on formal parameters, but the restrictions on formal parameters stated above in III.2 would prevent you from doing this on NETCF. This restriction is further elaborated in IV.2.





4. Can't resolve method signature ambiguities because of lack of reflection on open types.



Say I have a type definition that looks something as shown below.



public class Generic2P

{

public void method (T x) {}

public void method (U y) {}

}



public class Generic1P

{

public void method(S s)

{

Generic2P foo = new Generi2P();

foo.method(s);

}

}



If for the instantiation of Generic1P's method has the same type used for both its generic parameters R and S, then it would result in ambiguity as to which method would be called on Generic2P. For example if I have



Generic1P bar = new Generic1P();

bar.method(5);



Then this would result in Generic2P getting created and Generic2P.method(int) being called. However there will be two methods with this exact same signature. Both NETCF and the full .NET framework will default to the same method, but what if that is not the method you want to call?



On the full .NET framework one could get methods on the open type Generic2P and based on the formal parameter used as the argument in the method, you could fetch the right method and bind parameters/arguments to it and invoke it. However since we can not get methods or members on open types in NETCF we would not be able to do this and you would not be able to manually resolve signature ambiguities.







IV. Differences with the full .NET Framework



1. Lack of TargetException, TargetInvocationException, TargetParameterCountException.



NETCF does not support the above mentioned exceptions that are thrown on the full .NET framework when one attempts to call BindGenericParameters() with illegal arguments. On NETCF the following substitutions occur.



TargetException -> ArgumentNullException, InvalidProgramException

TargetInvocationException -> MissingMethodException

TargetParameterCountException -> ArgumentException.





2. Constraint hierarchy vs. Derivation hierarchy.



Consider the following type definitions.



public interface InterfaceA {}

public interface InterfaceB {}

public class BaseA: InterfaceA {}

public class InheritedA: BaseA, InterfaceB {}



public class BaseB

where T: InterfaceA

{}



public class InheritedB

where T: BaseB, InterfaceB

{}



In the case of InheritedA, it inherits from BaseA that implements InterfaceA. This hierarchy would constitute the derivation hierarchy. In the case of InheritedB, its generic parameter is constrained to inheriting from BaseB, whose generic parameter is constrained to implementing InterfaceA. This hierarchy would constitute the constraint hierarchy.



On the full .NET framework, if we were to get the formal type T via a call to GetGenericArguments() on the open type InheritedB; we could traverse the constraint hierarchy as if it were a derivation hierarch by using the BaseType property and calling GetInterfaces() method on it. In NETCF however we distinguish between the two and do not allow you to treat constraint hierarchy as if it were a derivation hierarchy. So you cannot use the BaseType property and the GetInterfaces() method to peruse the constraint hierarchy. Instead you would get a NotSupportedException thrown at you.







3. Differences in exceptions thrown.



There are many places where we throw MissingMethodExceptions instead of ArgumentExceptions and the like. Hopefully this will be addressed in another blog post that will be soon to come.

WindowsMobileSMSSync.exe

WindowsMobileSMSSync.exe
NullReferenceException

場所 BrianHama.WindowsMobile.PocketOutlook.MailStore..ctor()
場所 BrianHama.WindowsMobile.PocketOutlook.Utilities.get_MessageStore()
場所 BrianHama.WindowsMobile.PocketOutlook.Account.Dispose(Boolean disposing)
場所 BrianHama.WindowsMobile.PocketOutlook.Account.Finalize()
http://www.brianhama.com/Software/SMSSync.aspx

http://www.handster.com/download.php?id=29
spb

http://forum.xda-developers.com/forumdisplay.php?f=254

MyMobiler

Windows Mobile 5.0/6.0/2003 のリモートデスクトップ(ターミナル) - My Mobiler
Windows Mobile Remote Desktop (Terminal)
http://www.mymobiler.com/

Tuesday, November 11, 2008

クラウド時代をリードするモバイルSaaS【第1回】

http://techtarget.itmedia.co.jp/tt/news/0811/06/news03.html

クラウド時代をリードするモバイルSaaS【第1回】

ケータイ活用の進化形「モバイルSaaS」がウケる訳

ASP/SaaSビジネスは黎明(れいめい)期を過ぎ発展の段階に入った。特に「モバイルSaaS」市場の盛り上がりが顕著だ。法人市場で新しいSaaSも登場する中、制約の多い携帯端末で利用するSaaSの可能性とは?

[井上猛雄]

携帯端末がSaaSに利用される理由

 最近、企業で急速に広まってきたSaaS(Software as a Service)の利用に、新しい動きが起きている。サービスの利便性や効率性を一層高めるために、社内のPCだけでなく、社外で(ノートPC以外の)携帯端末からアクセスが可能な「モバイルSaaS」だ。

 モバイルSaaSの活用として考えられる事例を幾つか挙げてみよう。フロントオフィス業務(CRM、販売管理)では、携帯端末から顧客データベースに安全にアクセスし、情報リソースを有効活用するシーンがあるだろう(図1)。一方、バックオフィス業務(販売管理・売掛管理、在庫管理)でも、オフィス側から倉庫の在庫状況を、逆に倉庫側から営業の受注内容をリアルタイムに把握し、商品情報をダウンロードすることで、システムを物流を中心にしたものに変えられる(図2)。

図1 図1●モバイルSaaS活用事例:フロントオフィス業務(CRM、販売支援)に活用
図2 図2●モバイルSaaS活用事例:バックオフィス業務(販売管理、売掛管理、在庫管理)に活用

 また、保険業や医療・介護・福祉などの分野でも、業種に特化したサービスでの活用が考えられる。モバイルSaaSによって、保険業では見積もり情 報を外出先から取得する支援システムを提供できる。また、医療・介護・福祉では携帯端末による診察予約、予約状況確認のサービスなどが可能だ。

 さまざまな活用シーンが想定されるSaaSだが、携帯端末を利用しようという背景の1つには、いつでも、どこでも利用できる携帯電話や スマートフォンなどの機器が高性能化し、業務用端末として活用する企業が増えてきた点が挙げられる。実際に経済産業省の調査(出典:「平成18年情報処理 実態調査結果報告書」)によれば、業務に携帯端末を利用している企業の割合は、2004年には36.9%だったものが、2005年には46.9%に上昇し ており、ノートPCに次いで利用率が高いという。

 さらに現在では端末の通信速度も高速化している。携帯電話も3.5G携帯が市場のメインストリームとなり、十数Mbpsクラスのデータ通信に対応 できるようになった。インターネットに接続する場合でも、従来の固定ブロードバンドと遜色(そんしょく)のないハイスピードでWebを閲覧できるように なった点は大きいだろう。実際に利用するWebブラウザやアプリケーションの起動時間も短く、操作面でもストレスがほとんどない。

 ではセキュリティ面はどうか。従来、外回りをする営業マンなどがノートPCを持ち出して利用することもあったが、どうしても盗難・紛失といったセ キュリティに対するリスクが付きまとう。利便性を取るか、あるいはセキュリティを取るかという問題のはざまで、社外での利用に規制を掛けたり、持ち出しに 二の足を踏む企業も少なくなかった。その点モバイルSaaSでは、無線ネットワーク経由で携帯電話やスマートフォンなどの携帯端末をシンクライアント的に利用し、端末にデータが残らないような使い方が可能だ。また万が一端末を紛失してしまっても、管理者側から端末にアカウントロックやデータ消去といった機能を適用できるため、第三者に悪用される危険性を抑え、セキュリティ面の心配からは解放される。

モバイルSaaSに利用するために考えておくべきこと

 このようにSaaSへのアクセスについては、ノートPCに比べても携帯端末が引けを取ることはないのだが、弱点がないわけではない。それは機能面 において、PC向けのあらゆるSaaSサービスを利用できるわけではないということだ。また携帯端末ではキャリア(通信事業者)、機種ごとの依存問題もあ る。SaaS事業者は、それぞれの規格に合ったアプリケーションやサービスを、技術から運用までを含めて提供しなければならない。

 もちろん携帯端末であるが故のスペック上の制約もある。例えば、CPUやメモリの性能もノートPCよりは低いし、そもそも携帯電話は画面サイズが 小さく縦長になっているため、専用アプリケーションやサービスの画面構成を変えて見やすくしたり、操作面でもインタフェースを使いやすく工夫する必要があ る。このような操作面での対応は既に進んでいる。

 モバイルSaaSでは「携帯端末側でデータを閲覧しやすいように縦に並べて一覧表示する」「グラフィカルでリッチな画面表示はできるだけ省く」 「入力・編集などのインタフェースを簡易的なものにする」など、端末の仕様に合わせ、それぞれ最適化された形でアプリケーションが提供されることが多い。 主な利用目的としてデータの閲覧や編集にウエートが置かれることが大きいため、いかに早くデータを取り出せるかということがポイントになるのだ。

 さらに、モバイルSaaSは常時接続で利用するのではなく、ユーザーが必要に応じてアクセスする形態だ。オフラインで利用できる機能が必要になる ことも多い。実利用では必ずしも通信状態が良好な場所とは限らず、電波の届かないところで利用するケースもある。そこで、あらかじめネットワーク越しにあ るデータを携帯端末にキャッシュしておき、端末側で編集作業を行い、必要なときにサービスにアクセスして最新データを取得したり、編集済みのデータを更新 に反映させるといった運用も可能だ。端末側にデータを残すという点でセキュリティレベルを下げる可能性があるが、こうした仕組みも必要だろう。モバイル SaaSの利用で考慮したい点を列挙したが、現時点でこういった点はある程度解決されている。

大手通信事業者がこぞって参入

 さて、ここからは具体的なサービスを提供するベンダーや通信事業者の動きについて見ていこう。モバイルSaaSへの対応は、先行するセールスフォース・ドットコムやネットスイートといった海外勢のSaaS事業者だけでなく、国内のSaaS事業者や通信事業者にも広がりつつある。特に重要な動向としては、KDDI、NTTグループ、ソフトバンクグループなどの通信事業者が、こぞってモバイルSaaS市場に参入、本腰を入れ始めたことが挙げられるだろう。

 通信事業者は今後、回線サービスだけでは大幅な収益拡大を期待できないと考えており、携帯電話やスマートフォンなどの携帯端末やアプリケーション を一体化し、付加価値を加えたサービスとしてユーザーに提供する戦略を練っているようだ。最近では、SaaSからPaaS(Platform as a Service)という概念も生まれてきたが、利用アプリケーションの数を増やし、魅力あるサービスのラインアップを取りそろえることで、モバイル SaaSの需要を喚起させようという狙いがある。そこで、信頼性の高いデータセンターに加え、認証・課金・決済、マッシュアップ機能などを事業者がプラッ トフォームとして提供することで、外部のソフトウェアベンダー各社がビジネスに素早く参入しやすい環境を整備しているわけだ。

 例えばKDDIは、マイクロソフトとアライアンスを組み、モバイルも含めた本格的なSaaSを提供するプラットフォームとして「Business Port」をいち早くスタートさせた(図3)。その第一弾として、マイクロソフトの「Microsoft Office Outlook」のSaaS版として「KDDI Business Outlook」を提供した。このサービスは、ビジネスに必要不可欠なコミュニケーションツールをPCとau携帯電話の双方からシームレスに利用できるもので、初期導入費用やランニングコストを抑えられる。

図3 図3●モバイルSaaSを実現するプラットフォームとしての「Business Port」。第一弾のサービスではOffice Outlookの機能を提供する

 携帯電話からはメール、アドレス帳、スケジューラを使用できるが、これらのサービスに加えて、PCでは簡易ワークフロー、文書共有、ポータル機能にも対応する。月額料金は1ID当たり980円と安価だ。今後はGCT研究所のERPサー ビス「Just-iS」や、ビー・シー・エーの会計ソフト「PCA for SaaS」、ソフトブレーンの業務プロセス管理ソフト「ビジネスクロス」、OBCの業務ソフト「奉行シリーズ」など、このプラットフォームを他ベンダーに 利用してもらい、さまざまなサービスを提供していく方向である。

 一方、NTTグループではNGN(次 世代ネットワーク)を利用した「SaaS over NGN」を推進しており、通信回線、データセンター、認証プラットフォームなどをグループ内で分担して、SaaSプラットフォームやアプリケーションサー ビスを提供しようとしている。このような流れの中で、例えばNTTPCコミュニケーションズでは、モバイルSaaSサービスとして 「Master'sONEモバイルオフィスサービス」を提供している。これは、独自の接続環境であるモバイルオフィスゲートウェイとオンデマンド型アプリ ケーションを組み合わせて提供するサービスだ。ユーザーは、携帯電話やスマートフォン、外出先/自宅のPCから、グループウェアやWeb会議などの業務アプリケーションを必要に応じて利用できる(図4)。

図4 図4●モバイルオフィスゲートウェイとオンデマンド型アプリケーションを組み合わせた「Master'sONEモバイルオフィスサービス」。NTTドコモ以外の端末にも対応予定だ

 携帯電話からのアクセスは、ID/パスワードによる認証に加えて、携帯電話の個体番号認証に対応しているほか、ユーザー/グループ単位、企業のセ キュリティポリシーに合わせたアクセス制御、SSO(シングルサインオン)にも対応し、セキュリティ面でも万全を期している。このほかにもモバイル向け ポータルを提供したり、既存アプリケーションを携帯電話用の画面に変換するなど、エンタープライズマッシュアップとしての機能も提供される。

 ソフトバンクグループも法人需要としてiPhone 3Gに活路を見いだそうとしており、モバイルSaaSへの傾注ぶりが伝わってくる。「Salesforce Mobile」や「IBM Lotus Notes/Domino」 「Oracle Business Indicators」などは、既にiPhoneで利用できるようになっている。携帯電話のカメラで撮影した名刺情報をSalesforceに格納する写 名刺や、携帯電話のカメラ越しに見たものにタグを張り付け、さまざまな情報を得られる新サービスも登場しており、このような既成概念を超えたサービスが、 さらにモバイルSaaSの普及を加速させていくものとみているようだ。

 次回は、さらに具体的なサービスに踏み込み、現時点あるいは近くサービンインするモバイルSaaSの代表例について、分野別に分けて紹介する。

通信ネットワーク:注目の情報

会員限定モニター&プレゼント

会員限定モニター&プレゼント

TechTargetジャパン会員限定のプレゼントコーナーです。会員であればどなたでも応募できます。

新着記事

  • Microsoft、仮想化をプライベートクラウドの基盤と位置付け
    Microsoftは、ITマネジャーのマインドセットを変えるという困難な仕事に挑戦している。仮想化は、サーバの統合や管理の簡素化のためだけのものではないというのが同社のスタンスだ。
  • Delphi 2009で追加された3つの便利な機能をコードで検証
    Delphi 2007と比べて、Delphi 2009では大きく3つの注目すべき要素が追加された。開発するに当たって何が便利になったのか。どこが使いやすくなったのか、見ていこう。
  • 普及拡大する無線IP電話 ただし導入には対応準備が必要
    今日、企業に配備されている無線LANの大多数は、シームレスな音声通信をサポートするのに必要な通話可能エリアをカバーしていない。
  • オペレーターの在宅勤務でコールセンターのグリーン化を推進
    近年、コールセンターインフラのベンダーは、オペレーターの在宅勤務のメリットとして環境保護を説くようになっている。
  • ストレージ仮想化の実現方式とそれぞれのメリット/デメリット
    ストレージ仮想化の実現方式は複数あり、それぞれにメリットとデメリットが存在する。また、導入を検討するに当たっては実現方式以外にも注意すべきポイントが幾つかある。

Monday, November 10, 2008

MIDデバイスのウェルコムのシャープD4が面白い

http://www.sharp.co.jp/d4/function/performance.html

Wednesday, November 5, 2008

信息化应用新的热点——商业智能

信息化应用新的热点——商业智能 [收藏] [打印] [推荐]

作者:  2008-10-30 02:43:47


商业智能(Business Intelligence,简称BI)是20世纪90年代末首先在国外企业界出现的一个术语,其表示为提高企业运营性能而采用的一系列方法、技术和软件,简而言之,它是能够帮助用户对自身业务经营做出正确明智决定的工具。现代化的业务操作,通常都会产生大量的数据,如订单、库存、交易账目、通话记录、客户和供应商资料、来自企业所处行业和竞争对手的数据以及来自企业所处的其他外部环境中的各种数据。如何利用这些数据增进对业务情况的了解,帮助我们在业务管理及发展上做出及时、正确的判断,也就是说,怎样从业务数据中提取有用的信息,然后根据这些信息来采用明智的行动,最终帮助企业达到经营目标。

1 BI的技术体系

BI的技术体系主要有数据仓库(DW:Data Warehouse)、联机分析处理(OLAP)以及数据挖掘(DM)三部分组成。数据仓库是BI的基础,许多基本报表可以由此生成,但它更大的用处是作为进一步分析的数据源。所谓数据仓库(DW)就是面向主题的、集成的、稳定的、随时间不断变化的数据集合,用以支持经营管理中的决策制定过程。多维分析和数据挖掘是最常听到的例子,数据仓库能供给它们所需要的、整齐一致的数据。

联机分析处理(OLAP)是以海量数据为基础的复杂分析技术。它支持各级管理决策人员从不同的角度、快速灵活地对数据仓库中的数据进行复杂查询和多维分析处理,并且能以直观易懂的形式将查询和分析结果展现给决策人员。

数据挖掘(Data Mining)是从海量数据中,提取隐含在其中的、人们事先不知道的但又可能有用的信息和知识的过程。数据挖掘的数据有多种来源,包括数据仓库、数据库或其他数据源。所有的数据都需要再次进行选择,具体的选择方式与任务相关,挖掘的结果需要进行评价才能最终成为有用的信息,按照评价结果的不同,数据可能需要反馈到不同的阶段,重新进行分析计算。数据挖掘的常用方法包括关联分析、分类和预测、聚类、检测离群点、趋势和演变分析等,可以说,联机分析处理和数据挖掘是数据仓库之上的增值技术。

目前,BI通常被理解为将企业中现有的数据转化为知识,帮助企业做出明智的业务经营决策的工具。BI能够辅助的业务经营决策,既可以是操作层的,也可以是战术层和战略层的决策,为此,把BI看成是一种解决方案应该比较恰当。商业智能的关键是从许多来自不同的企业运作系统的数据中,提取出有用的数据,进行清理以保证数据的正确性,然后经过抽取(Extraction)、转换(Transformation)和装载(Load),即ETL过程,合并到一个企业级的数据仓库里,从而得到企业数据的一个全局视图(见图1)。在此基础上利用合适的查询和分析工具、数据挖掘工具、OLAP 工具等对其进行分析和处理(这时信息变为辅助决策的知识),最后将知识呈现给管理者,为管理者的决策过程提供支持。



图1


因此,BI是涉及一个很宽领域的集收集、合并、分析和提供信息存取功能为一身的解决方案,包括ETL软件、数据仓库、数据集市、数据查询和报告、多维/联机数据分析、数据挖掘和可视化工具。

2 BI的应用

2.1 客户分类和特点分析

根据客户历年来的大量消费记录以及客户的档案资料,对客户进行分类,并分析每类客户的消费能力、消费习惯、消费周期、需求倾向、信誉度,确定哪类顾客给企业带来最大的利润、哪类顾客仅给企业带来最少的利润同时又要求最多的回报,然后针对不同类型的客户给予不同的服务及优惠。

2.2 市场营销策略分析

利用数据仓库技术实现市场营销策略在模型上的仿真,其仿真结果将提示所制定的市场营销策略是否合适,企业可以据此调整和优化其市场营销策略,使其获得最大的成功。

2.3 经营成本与收入分析

对各种类型的经济活动进行成本核算,比较可能的业务收入与各种费用之间的收支差额,分析经济活动的曲线,得到相应的改进措施和办法,从而降低成本、减少开支、提高收入。

2.4 欺诈行为分析和预防

利用联机分析和数据挖掘技术,总结各种骗费、欠费行为的内在规律后,在数据仓库的基础上建立一套欺骗行为和欠费行为规则库,就可以及时预警各种骗费、欠费,尽量减少企业损失。

2.5 企业内部更为广泛的应用

网络为BI软件的广泛应用提供了基础平台。从BI软件受益的将不仅仅是管理者,还包括所有员工。如销售人员将通过移动设备或其他PDA设备获得客户关系管理(CRM)数据并快速做出决策;所有员工将可以轻松的查阅与自身职业生涯相关的人力资源分析报告。

2.6 企业外部的应用也将得到快速发展

企业将通过BI软件向他们的供应商、客户、股东、政府提供相关数据的访问。如企业允许供应商访问企业的供货数据,供应商可以获得诸如准时发货情况、发货差错情况和产品质量等信息;政府机构通过访问企业运作信息,可更深刻了解该企业。

3 BI与各种企业信息化系统的关系

BI作为一种企业信息集成解决方案,为企业不同的应用系统,如企业资源规划(ERP)、客户关系管理(CRM)、供应链管理(SCM)、办公自动化(OA)、电子商务(E-Commerce)以及外部环境扫描(Environmental Scanning)等系统之间架起了互通的桥梁。同时,这些信息化系统也为BI提供了数据源,离开了它们,BI就会成为无源之水,无本之木,但BI的价值又在这些系统之上,因为它可以发现数据背后隐藏的商机或威胁,获得洞察力,了解企业和市场的现状,把握趋势,识别异常情况,理解企业业务的推动力量,认清正在对企业的业务产生影响的行为及影响程度如何等。

4 BI的应用实施

企业在实施BI技术时,有两种方法可供选择:一种较稳妥的方法是从企业中某一个局部的商业需求开始,尝试着进行BI的实施。这种方法容易实现,回报快,三年ROI(投资回报率)较高;另一种方法则是在企业所有领域全面实施BI,以支持企业的所有业务过程,满足跨企业的决策支持。这种方法较前一种方法更具挑战性,三年ROI较低,收回投资的平均年限也较长。

无论采用哪一种方法,企业要建立自己的BI 系统,都需要经历BI 系统分析、系统设计和系统维护与管理三个阶段。

4.1 BI系统分析

BI系统分析又可分为企业需求分析、信息来源分析、逻辑信息模型设计、BI 系统结构设计等步骤。

企业需求分析可包含CRM分析、经营分析、产品组合分析、产品促销推广分析、财务风险分析与电子商务分析等等。

信息来源分析要对可能的信息来源进行调查,包括从顾客服务、商品销售、存货采购、会计财务、人力资源、推广促销、市场调查与电子商务等相关系统中考察可以收集的信息源。

逻辑信息模型设计主要的工作是从已经联机的信息系统中,找寻可用于信息分析的相关资料档案,并且与企业各项业务分析中的系统需求功能相比照,设计与汇集可符合企业需要的逻辑信息模型。

BI系统结构设计包括确定硬件与软件组成,设计信息从来源系统到BI 系统数据库的处理流程。通常采用OLAP与数据挖掘工具进行分析预测,使终端用户存取数据更有效率。

4.2 BI系统设计

BI系统设计,包括实体数据模型设计、ETL设计、数据挖掘方法设计、终端程序设计(OLAP或EIS)等步骤。

BI系统必须具备抽取各种类型信息的能力,并且依照资料的特性与决策者的需求,能够自动、定时地到来源数据库中抽取信息。数据转换则是将不一致的数据,根据规则转换为具有一致性的数据,装载在BI的转换程序服务器上自动进行。装载程序需要考虑自上一次资料抽取之后,来源数据库内发生改变的项目,并对装载时产生的错误进行处理。数据挖掘方法设计即根据系统数据的特点,选择适用的挖掘算法,如可采用货篮分析、时间序列分析、聚类分析、决策树方法、遗传算法等。终端用户应用系统设计用于确定以何种形式将联机分析处理、数据挖掘分析的结果呈现给用户。

4.3 BI系统维护与管理

BI系统维护与管理,包括BI整合性系统建立、数据库管理、安全管理与效率管理等步骤。这里涉及两个层面:第一是维持与管理BI系统与其支持结构(数据库管理、安全管理、效能管理)所需的基本功能;第二是从技术及商业的角度来探讨BI系统配置是否达到最佳。从技术的角度而言,包括检查逻辑与实体数据库设计,以及所需工作效率调整是否合适;从商业的角度而言,包括数据库稽核,亦即访问商业使用者,以考察他们的需求是否获得满足,以及获得的投资报酬。

在欧美发达国家,以数据仓库、联机分析处理和数据挖掘为基础的BI应用首先在金融、保险、证券、电信、税务等传统数据密集型行业取得成功。由于经济全球化,打破了国际上存在的种种壁垒,消除了国家保护,卓有成效地驱动了国外数据仓库的增长,随着知识经济的发展,企业的数据量剧增,企业亟需从庞大的数据仓库中获知隐含的信息和知识,制定相适应的政策,增强企业的竞争力,这些都极大促进了其BI的发展。

国内BI起步不久,但电信、金融、证券、税务、零售业等已有大量操作型数据积累的企业都出现了迫切的应用需求,BI正在从部门级应用进化成为企业级应用,从企业内部应用进化为向全局应用。因此可以预计,在二十一世纪,BI在我国会有广阔的应用前景,它将成为信息应用的新热点。(万方数据)

Opensource Video Chat Service

http://www.red5chat.com/red5chat-flex-edition/
Support WebCam

http://swik.net/webcam+Flash

Tuesday, November 4, 2008

モバイルCPUの調査


携帯向けDSP/CPU
http://d.hatena.ne.jp/handoutai/20070706

最近の携帯電話に採用されるCPUやDSPは非常に進化を遂げ、CPUを幾つも搭載した1chipソリューションが出ている。

現在携帯電話に採用中のプロセッサには、『ベースバンド・エンジン』『アプリケーション・プロセッサ』と呼ばれるプロセッサがある。分かりやすく言えば、W-CDMAのモデムチップ(ベースバンド)はQualcomm、アプリケーションプロセッサはTIのOMAPプロセッサを使うケースが多い。

『ベースバンド・エンジン』は、携帯電話のマイクやスピーカで扱えるような通話音声の符号化/復号化、プロトコル制御などを行うプロセッサを指す。物理的な電波そのものを発したり、音声帯域の低い周波数の信号を扱い、通話にかかわる制御を行う中核のロジックとなっている。また、ローエンドの携帯にとっては、唯一のプロセッサであり、電話帳の管理から写真の伸長/圧縮まですべてをこなしているのがベースバンド・エンジンとなっている。現在の仕様では「デジタル信号処理を行うDSP」と「制御を行う汎用プロセッサ」というマルチプロセッサが主流となっている。ベースバンド・エンジンはビット・レートの低い通話音声の伸張圧縮が主体なので、比較的性能の低いDSPで済むが、アプリケーション・プロセッサ側は非常に負荷の重い動画向けに高速なDSPが必要になる。また、ベースバンド・エンジンのコア・プロセッサは非力だが電力消費の小さいARM7クラス、アプリケーション・プロセッサ側ではARM9や、ARM11クラスの高速コアを搭載するといった違いがある。

『アプリケーション・プロセッサ』は、カメラで撮影した動画や静止画などを圧縮して送信可能なデータにし、ベースバンド・エンジンに渡す。逆に圧縮して送信されてきた動画や静止画などをベースバンド・エンジン経由で受け取り、伸張して液晶パネルに表示するといった作業を担当する。こういうものが存在していれば、複雑化しているユーザー・インターフェイスなどの作業のほとんどをアプリケーション・プロセッサに任せられるようになるので、ベースバンド・エンジンは本来業務の通信に専念できる。

■Texas Instruments製のアプリケーション・プロセッサ「OMAP」

TIといえばDSP。DSPといえばTIという程にTIのDSPは優秀ではあるが、ここ最近の動向では、NECが非常に頑張っている。いまや全世界のベースバンド・エンジンで採用されているコア・プロセッサのほとんどが、ARMベースとなっている。そしてベースバンド・エンジン向けDSPの代表は、Texas Instruments(TI)製である。ARM9系コアにTI製のDSPを組み合わせることで高い処理能力と低消費電力を実現している。特に欧米の携帯電話での採用が多く、高いシェアを誇っている。シェアが大きいことから、サードベンダなどが供給するゲームやブラウザなどのアプリケーションも必然的に両者向けが充実することになる。そのため、アプリケーション・プロセッサが必要とされるような段階へ移行するときに先行することになった。その代表がTIのOMAPシリーズである。ドコモのFOMA端末のほとんどは、これまでQUALCOMMのW-CDMAのモデムチップ(ベースバンドチップ)に加え、TIのOMAPプロセッサをアプリケーションプロセッサとして搭載する2チップ構成を取っていた。こうした分離型の構成は、最新機能への搭載がたやすくハイエンド端末には向くが、コスト面からは安価な統合型チップも求められていた。OMAPV2230はその答えとなるTI最初の統合型チップだ。W-CDMAおよびGSM/GPRSに加え「HSDPAもサポートする」としている。プロセッサ部分はARM11コアを使ったOMAP2アーキテクチャーをベースとしており、FOMA端末メーカーがこれまで使ってきたソフトウェア資産をそのまま利用できる。OMAP2プロセッサは、FOMA902iシリーズのパナソニック モバイル、NEC、シャープ、ソニー・エリクソンなどが搭載している。統合型チップのOMAPV2230は、OMAP2430の次世代のOMAPコアをベースとする。OMAPシリーズは、ARM9系コアにTI製の強力なDSPを組み合わせている。NTTドコモのFOMA携帯電話のほとんどにTIのOMAPプロセッサが搭載されとともに、NTTドコモとTIとの長期に渡る関係に基づく3Gチップセットの共同開発も行う。ワールドワイドで見ると、特に欧米の携帯電話での採用が多い。一方、ARMコアは広く普及しているだけに、TI以外にも多くのベンダがARM系コアに独自のDSP機能を結合したようなアプリケーション・プロセッサを販売している。STMicroelectronicsが発表した「Nomadikファミリ」や、無名のベンチャー企業の製品までさまざまである。第2世代(2G)の携帯電話ではベースバンド・エンジン単独処理であったが、2.5Gではベースバンド・エンジンにアプリケーション・プロセッサか、それに近いような機能を持つ専用の画像表示系のICが追加されることが多くなった。そして、第3世代(3G)ではアプリケーション・プロセッサが必須となる。携帯電話は、中国でも急速に立ち上がっており、その出荷台数は年間数億台になろうかという市場規模になっている。

◎OMAP2の製品ラインナップと採用事例(★はプロセッサを示す)

・OMAP1610 FOMA 900iなど

★TMS320C55x DSP core subsystem Up to 204 MHz (maximum frequency) ★Video hardware accelerators for DCT, iDCT, pixel interpolation, and motion estimation for video compression ★ARM926TEJ core subsystem Up to 204 MHz ARM926TEJ V5 architecture (maximum frequency) ・USB On-the-Go (OTG) Two SD/MMC/SDIO ports・Fast IrDA (FIR)

・OMAP2420 FOMA 902iなど

★ARM1136 processor (330 MHz), ★TMS320C55x?DSP (TI製220 MHz),★2D/3D graphics accelerator,★imaging and video accelerator,high-performance system interconnects and industry-standard peripherals.

・OMAP2430(ビデオ性能などが向上。2006年第3四半期~量産)

★ARM1136 RISC processor(330MHz)★2D/3D graphics hardware acceleration (OMAP2430 only)★IVA 2が追加(boost mobile video playback performance to DVD quality)

・OMAPV2230(モデムとの統合チップ。2430の次世代コアを統合したUMTS Solution)

・OMAPV1035 ("eCosto") GSM/GPRS/EDGE Single-chip Solution

・OMAPV1030 GSM/GPRS/EDGE Solution

■ARM

OMAPの話ばかりになってしまったが、ARMコアとして捉えると、日本でのARM採用事例(OMAP、Qualcommのライセンスコアを含む)としては、NEC N902i、Sharp 900i、Nokia 5300、okia 7610、Samsungの約20機種、Sony Ericsson K600i、T610 & T616、W800i等がARMを採用している。GSMベースの場合は、最近であれば低価格1chipベースバンド(InfineonのS-GOLD2など)が一般的に使われるが、現時点で日本の場合はCDMA/W-CDMAベースなので、高価格(高機能?)なQualcommを使う事となるケースが非常に多い。Qualcommの採用状況を言えば、KDDIのau端末が2つのCPUコアを内蔵したEV-DO Rev.A対応チップセット「MSM7500」を搭載。自社製のBREW(BREW Client 4)は当然搭載される。「EV-DO Rev.A」は、第3世代の移動体通信方式である「CDMA2000」に属する高速なデータ通信規格のひとつ。正式には「CDMA2000 1xEV-DO Revision A(IS-856-A)」 Rev.Aの前には、「CDMA2000 1xEV-DO」という規格があり、Rev.Aはその後継規格。日本では、auがEV-DO Rev.Aを利用して、2006年中に導入する考えを発表している。「CDMA2000 1xEV-DO」については、2003年10月からKDDI(au)が「CDMA 1X WIN」というサービスブランドを展開している。EV-DOの“DO”は、「Data Only」の意味。データのみをやり取りして、音声のやり取りはしないという意味で、高速にデータ通信を行う。EV-DO Rev.Aでは、EV-DOで使われていた設備、特に地上系のネットワーク設備の多くが流用可能である。これまでEV-DOでサービスを行なっていた事業者にとっては低いコストで始めることができるWAN(Wide Area Network)サービスであり、他事業者との競争のために強力な武器となる規格である。なお、従来規格のEV-DOは、Rev.Aと区別するためにRev.0と呼ばれることもある。

■Qualcommの「EV-DO Rev.A」

「EV-DO Rev.A」の特徴は「速度の向上」「マルチキャスト」「QoS」

●速度の向上:EV-DO Rev.Aは、EV-DOと比較して、端末から基地局への上り速度、基地局から端末への下り速度とも増速。その前のRev.であるEV-DOでは、下り最大2.4Mbps、上り最大144kbpsだったが、Ev-DO Rev.Aでは下り最大3.1Mbps、上り最大1.8Mbpsになった。

●マルチキャストに対応:EV-DO Rev.Aでは、「マルチキャスト」(1対多の通信、またはブロードキャスト)が可能になった。「ブロードキャスト=放送」だけでなく、チャンネルを合わせた複数の端末が“放送しているデータ”を受け取れる。このような技術を使って行なうサービスのことをBCMCS(Broadcast/Multicast Services)と呼ぶ。マルチキャストのメリットは、大きなデータを複数の人に送信するために、帯域をそれほど利用しない。マルチキャストであればデータ帯域×1で済む。ただし、無線通信の場合、複数の受信者がいると「基地局から近くて電波状況のいい人」や「基地局から遠くて電波状況の悪い人」がいることになります。環境が異なる、その両者がデータを受信できるようにするには、遠い人でも受信できるようにしなければなりません、そのため、マルチキャストを利用した場合は、全体の通信速度が遅くなってしまうという弱点も持ち合わせる。

●QoS対応:「QoS」とは、サービスの品質を意味する「Quality of Service」の略。通信の場合にはある一定の品質、つまり通信速度やデータの品質を保証することを意味する。これまでのEV-DOでは、サービスの種類にも利用者の種類にもよらず、通信で取り交わされるデータがベストエフォートとされており、速度や品質は保証されていませんでした。EV-DO Rev.Aでは、ネットワーク上で特定のユーザーに帯域を優先的に割り当てることで、それぞれの用途に対して一定の通信品質、速度を確保する(Qosを保証する)ようになった。これによって、EV-DO Rev.Aでは、「VoIPによる音声通話」にも利用できるようになっている。2011年以降に始まるとされているマルチメディア放送においても、「MediaFLO」という規格で名乗りを上げている。au向けのチップセットとBREWの能力を高めて、商品力のあるプロダクトを早く立ち上げられるという戦略である。携帯電話端末における音声・データ通信を司るプロセッサで、CPUとしての機能のほかに、GPSやマルチメディアの機能を搭載している。

■Qualcommの「ベースバンドチップ」のラインナップ

・MSM7500:★Integrated 400 MHz ARM11 applications processor/★133MHzARM9 microprocessor delivers accelerated★applications processing speeds; the dual-core-based implementation provides hardware-based security domains・Open BREW api software to run uiOne? and BREW applications・QVM JavaR envionment platform with multitasking virtual machine (MVM) and ARM’s Jazelle(Java acceleration)※Jazeleとは、JVNに比べ、JAVAの実行速度を8倍にするアクセラレータ。

MSM5000シリーズはARM7ベース(CDMA2000 1x準拠の仕様に対応。ハイエンドのMSM5500はCDMA2000 1xEV-DO対応)、MSM6000シリーズは、大きくCDMA2000 1x用、CDMA2000+GSM/GPRS用、W-CDMA/UMTS用に分類される。

MSM5K/6k:★ARM926EJ-S microprocessor core★Two QDSP4000 high-performance digital signal processors (DSP)★225 MHz ARMR Jazelle JavaR hardware acceleration

・MSM7600(CDMA2000 1xEV-DO Rel. 0 and Rev. A, WCDMA/HSDPA and EGPRS networks)

★ARM11 applications processor and ARM9 modem★QDSP4000 and QDSP5000 high-performance digital signal processors (DSP)★400 MHz ARM11 Jazelle? JavaR hardware acceleration

■SH-Mobile

ARM優位の市場の中で、唯一といっていいくらい健闘しているのが、ルネサス テクノロジのSH-Mobileシリーズである。多くのメーカーは、自社製の携帯電話がどこのアプリケーション・プロセッサを採用しているのかなどを明らかにしていない。NTTドコモの「ムーバ N505i(NEC製)」やauのCDMA 1X WIN(cdma2000 1xEV-DO)の第1世代機である。「W11H(日立製作所製)」「W11K(京セラ製)」が、SH-Mobileシリーズを採用。2005年からNTTドコモとルネサスが共同開発した「SH-Mobile G1」は、2006年10月以降のモデルで富士通、三菱電機、シャープの3社がFOMA端末に採用した。この「SH-Mobile G1」は、1チップ版という意味でGシリーズとして続く。G1はW-CDMAとGSM/GPRS両方のベースバンドLSIと、312MHz動作のSH-Mobileを1チップに集積し、トランジスタ数は1億8000万に達する。

2007年秋モデルに搭載予定の第2弾「SH-Mobile G2」は、W-CDMAとGSM/GPRSに加え、海外需要をにらんでEDGEと、次世代方式のHSDPAにも対応。OSはSymbian。(NTTドコモとルネサステクノロジの他にも富士通、三菱電機、シャープが参加)「SH-Mobile G3」は、ソニー・エリクソン・モバイルコミュニケーションが5社に加え開発に参加。

HSDPA1(cat.81)/W-CDMA(3G)とGSM/GPRS/EDGE(2G)に対応したデュアルモード端末向け携帯電話プラットフォーム2 を2008年度第2四半期(7月~9月)を目処に共同開発。「SH-Mobile G3」と、オーディオ・電源LSI、RF LSIなどの推奨周辺チップセットLSIを含むリファレンスデザインを共同開発し、基本ソフトウェアとして、シンビアンOSTMを搭載、ミドルウェア・ドライバなどの基本ソフトウェア群を一体化。因みにNECとPanasonicはTIとの合弁会社「アドコアテック株式会社」で共同プラットフォームを開発。5社の出資総額は120億円。比率はNECグループ(NEC・NECEL)、とパナソニックグループ(松下電器とパナソニックモバイル)がそれぞれが約44%(約52億8000万円)、TIが約12%(約14億4000万円)を出資。

■NECエレクトロニクスの1chip(アプリケーションプロセッサ+ベースバンドエンジン)ソリューション

NECエレが健闘しているという話をしたが、下記の情報を追加しておく。

今年1月の発表であるが、NECエレクトロニクスのシステムLSI 「M1(S)」がNEC製「SIMPURE(R)N1」に採用された。W-CDMAデジタルベースバンド処理機能とアプリケーションプロセッサを1チップ上に集積したM1(S)が搭載されている。http://www.n-keitai.com/simpure_n1/

・アプリケーションプロセッサ機能部には、最大250MHzで動作するCPU(ARM926EJ-S)

・DSP、多彩な機能をもつ画像処理プロセッサ、3Dグラフィック・アクセラレータを搭載

・デジタルベースバンド機能とアプリケーションプロセッサ機能を1チップ上に集積。

また、先週の7月4日にM1の後継品種である「M2」が発表された。

・ARM926EJ-STMにかわってARM1176JZF-STMを搭載(2倍の周波数性能、50%程度の低消費電力化)プロセスは65nm。

「M2」の主な仕様:

◎[アプリケーションプロセッサ]

・CPU:ARM1176JZF-STM(~500 MHz)

・DSP:K701(~500 MHz)

・DMA コントローラ:メモリ⇔メモリ間、メモリ⇔周辺インタフェース間

・セキュリティ・エンジン搭載

・2D/3Dグラフィックアクセラレータ

・H.264 エンコード/デコード:D1 30 fps

◎[デジタルベースバンド]

・3GPP Release6 (2005/06版) 対応

・3GPP 仕様Mandatory 全項目 対応

・Up-Link:384 Kbps、Down-Link:384 Kbps

・HSDPA >内蔵コア:~3.6 Mbps(Category6) >外付けコア:~7.2Mbps(Category8)

・GSM/GPRS/EGPRS対応

■AMDの今後は?

前回の結論でもあるが、AMDのHester氏はこう話す。

「AMDは、カメラプロセッサ+DSPに内蔵、3CPU+1DSPのマルチコア・プロセッサ、音声&画像のA/D変換・D/A変換に特化したDSPを発表した。今後はデジタル家電での需要が増え、その結果、複雑なソフトウェア層が必要となる。すると、x86アーキテクチャが、家電でも価値を持ち始める。x86の開発環境は、ソフトウェア開発者にとって、組み込み向けのそれよりも、ずっと汎用で生産的だからだ。膨大な量のx86のコード資産を活かすこともできる。そのため、デバイスにx86プロセッサが実装されるのが理にかなうようになると信じている。我々は、2~3年前までにそうした結論に達していた」(AMD Hester氏)

確かにオープン系のWINDOWS MOBILE、WINDOWS AUTOMOTIVE、WINDOWS CE等の状況を考えると、後発メーカーであればあるほど参入障壁は低くなり、携帯電話であればWindows Mobileのライセンス料を気にしなければ開発期間も短期間で済む。但し最先端のデバイスを使うと、バグが大量にあるのでそれほど簡単な話では無い事は事実だが、x86系のモバイル向けCPUが出てくればその問題も少なくて済むだろう。

Monday, November 3, 2008

Atom Usage

MID


Netbook
ASUS
Acer
HP
Dell
...

PDA

Rival
ARM
VIA Eden

Intel Atom Wikipedia

Intel Atom

出典: フリー百科事典『ウィキペディア(Wikipedia)』

Atom(アトム)は、米国時間2008年3月2日に発表されたインテルが開発製造するマイクロプロセッサで、LPIAと呼ばれる低消費電力でIA-32命令セットアーキテクチャに基づくカテゴリの製品。LPIA製品としてマイクロアーキテクチャから新規に開発された初めての製品となる。2008年夏から順次出荷される。

目次

[非表示]

[編集] 概要

過去にインテルのモバイル・組込向けプロセッサはIA-32製品ではなく、DEC (Digital Equipment Corporation) から買収したStrongARM部門の製品と、それを発展させた製品をXScaleブランドで販売されていた。XScaleは携帯情報端末組み込みシステムのプロセッサとして採用された(多くのPocket PCに採用された)。

当時のIA-32製品は競合していたSuperHARMと 比べ、回路規模やクロック周波数の高さから、フットプリントが大きい上に消費電力が多く、モバイル・組込機器への小型化とバッテリ駆動での長い稼働時間の 要求に応えられなかった。 しかし、IA-32プロセッサ向けの豊富なソフトウェア開発ツールやソフトウェア開発技術者の多さなどから、半導体プロセスやマイクロアーキテクチャの改 良などの技術的なブレークスルーで、前述の問題が克服されさえすれば、モバイル・組込製品に於いてもIA-32製品が受け入れられる環境は整っていた。

このような背景の中、インテルは2007年4月に、新しいプロセッサカテゴリとして、低消費電力でIA-32に基づくカテゴリの製品「LPIA」を提唱し、第一弾の製品としてIntel A100を発表した[1]。 これは専用に開発されたものでなく、既に販売されていたPentium Mマイクロアーキテクチャの第二世代にあたるCeleron M(コードネーム「Dothan-512K」、90nmプロセス)の流用であり、周辺チップも既存のICH7から消費電力の多いPCI Expressインターフェースを取り除くなどしたICH7Uが使われるなど、新規性には乏しいが、XScale部門がMarvell社に売却された事[2] などから、インテルがIA-32製品のモバイル・組込機器市場における競争力に自信を持った表れである、との指摘する向きもある。

[編集] 搭載される機能など

CPUに実装されている命令セットはIntel Core 2と互換であるとされ、x86命令、x87命令、そしてMMXSSESSE2SSE3SSSE3などの拡張命令のみならず、Intel 64Intel VTハイパースレッディング・テクノロジーEISTNXビットにも対応している。しかし、その機能が全ての製品で利用可能ではなく、製品によっては無効化されている機能も存在する。また、新しくディープパワーダウン (C6)、スレッド別の低電力状態 (TCx)、CMOSバスモードなど電力管理機能が強化された[3]

最初の製品は、細長いI/Oパッドを両サイドに配置した長方形のダイレイアウトで、製造効率が最も高いとされる正方形のダイ形状ではない。低コスト でのマルチコア化は、I/Oパッドで複数のコアを挟むこのレイアウトが有利なことから、近い将来的にマルチコア製品が発売されることを示唆しているとの意 見も有る。

[編集] 回路仕様

約4,700万個のトランジスタにより構成されており、これは現在のインテルのIA-32プロセッサの中では最も少ない。ダイサイズ25平方mm未満であり、インテル史上最小のx86プロセッサとして登場した。製造にはリーク電流低減に有効とされるハフニウム注入によるHigh-k(高誘電率)ゲート絶縁膜とメタルゲートによる45nmプロセスルールが採用されるなど省電力化が徹底されており、インテルのCPU史上最も低い動作電圧で動作し、消費電力でVIA Edenに比肩する。電圧を高くすることで当面最大で1.8GHz程度の動作周波数を予定し、それに応じてTDPは0.6から2.5W程度と抑制される[4]

[編集] ターゲット市場

[編集] Centrino Atom (Menlow)

移動端末などの低消費電力が求められる小型機に採用される予定。インテルは自身のホームページでUMPCノートパソコンPDAとの中間)や組み込み機器向けとしている。CPUコアはコードネーム「Bonnell」と呼ばれている。Bonnellを採用した製品は複数公表されており、それぞれ対象とする市場が異なる[5]

Silverhorneと統合チップセット(コードネーム「Poulsbo」、System Controller Hub - SCH)を組み合わせたプラットホーム(コードネーム「Menlow」)には、インテル Centrino Atom プロセッサー・テクノロジー (Intel Centrino Atom processor technology) というブランドネームが与えられた。

[編集] Embedded Menlow

組込機器向けの、コードネーム「Embedded Menlow」もSilverhorneとPoulsboで構成されるが、ライフサイクルサポートを7年としている点が異なる。組込機器に於いては「同じものが長期間に渡り調達可能であり続ける事」が重要となる。

[編集] Canmore

セットトップボックステレビ向けのシステム・オン・チップ。2008年後半に出荷予定[6]

以下の機能を持つ。

[編集] Sodaville

家電向けシステムオンチップ (System on a Chip - SoC) としてコードネーム「Sodaville」が2009年に計画されている[7]

[編集] Moorestown

Menlowに続くプラットホームとしてコードネーム「Moorestown」が2009年 - 2010年に予定されている[8]。Moorestownでは待機時消費電力を10分の1にするとしているので、スマートフォンのアプリケーションプロセッサなどへの採用が想定されている。

[編集] 製品群一覧

IDF Spring 2008(上海)にて、Intel Atom の製品群についての公式な発表が行われた[9]

2008年4月に最初に発表された製品群
SKU[10] 動作周波数 ハイパースレッディング FSB 2次キャッシュ TDP(HT)
Z540 1.86 GHz 533MHz 512KB 2.4W(2.64W)
Z530 1.6 GHz 533MHz 512KB 2W(2.2W)
Z520 1.33 GHz 533MHz 512KB 2W(2.2W)
Z510 1.1 GHz × 400MHz 512KB 2W
Z500 800 MHz × 400MHz 512KB 0.65W
2008年内に発表の予定されている製品[11]
SKU[12] 動作周波数 ハイパースレッディング FSB 2次キャッシュ TDP
N270 1.6 GHz 533MHz 512KB 2.5W
230 1.6 GHz 533MHz 512KB 4W
330 1.6 GHz x2 533MHz 512KB x2 8W

[編集] 補足

2次キャッシュの容量やFSBの速度はPentium 4と同程度。実質的な処理速度でも、Willamette・NorthwoodのPentium 4やNorthwood-256kのモバイルCeleronと同程度であるが、同クロックのZ530(FSB533MHz 1.6GHz TDP2.2W(HT))とPentium 4(Northwood FSB400MHz 1.6GHz TDP46.8W)とで比較した場合、TDPは後者の約4.7%となり、エネルギー効率は格段に向上した。

なお、2008年9月より出荷された330は、CPUパッケージに230を2個搭載させたモデルである[13]

[編集] 脚注

  1. ^ インテル (2008年1月19日). "Intel Processor A100 and A110 on 90 nm Process with 512-KB L2 Cache Datasheet" (PDF) (英語). 2008年4月5日 閲覧。
  2. ^ インテル (2006年6月27日). "Marvell To Purchase Intel’s Communications And Application Processor Business For $600 Million" (英語). 2008年4月5日 閲覧。
  3. ^ Intel Atom Processor Z5xx Series Datasheet - Apr 2008 Intel
  4. ^ IEEE Spectrum: The High-k Solution - Mark T. Bohr, Robert S. Chau, Tahir Ghani, and Kaizad Mistry - 2008
  5. ^ Technology@Intel · Deciphering Intel codewords for Mobile Internet Devices (MIDs)
  6. ^ 日経BP
  7. ^ 日経BP
  8. ^ PC Watch
  9. ^ intel - New IntelR CentrinoR Atom? Processor Technology Ushers in 'Best Internet Experience in Your Pocket']
  10. ^ SKU - Stock Keeping Unit; Intel Atom Z5xxシリーズは、CPU+SCHを出荷単位とする。
  11. ^ "Netbooks and Nettops" (PDF) (英語) (2008年4月3日). 2008年4月8日 閲覧。
  12. ^ SKU - Stock Keeping Unit; Intel Atom N270 はCPU+i975GSE+ICH7Mを出荷単位とする。
  13. ^ 疑似クアッドコアのAtom 330、消費電力が上昇:ニュース

[編集] 関連項目

[編集] 外部リンク