InfoPress

InfoPress

産業技術大学院大学(公立大学法人 首都大学東京) 情報アーキテクチャ専攻 Web版InfoPress [社会人大学院][東京都品川区][IT]

プログラミングウィザードの魔法

(テスト記事)

この記事はInfoPress#4(2012/6)からの転載です。

《ストレス耐性》

インターネット等のIT技術が普及し,一般利用者がソフトウェアを直接使う機会が増加している現在,ソフトウェアの実行速度は重要である。Webアプリケーションを例にあげれば,彼らは画面が表示されるまでに何秒待ってくれるだろうか。専門家であれば,裏側の処理を想像し,優しく待ってくれるかもしれないが,一般利用者が10秒待ってくれたら奇跡である。したがって,Webアプリケーションは数秒で処理を完了し,レスポンスを返す必要がある。これだけが理由では無いだろうが,GoogleのWebアプリケーション実行環境Google App Engineは,プログラムの実行時間を数十秒に制限していた。

《Moore's Law》

Moore's Lawは,Gordon E. MooreIntelの設立者)が1965年に発表した「半導体の集積密度」に関する経験則から始まり,CPUからIT機器の性能・値段まで各種の目標値として流用され,現在ではIT業界を支配する掟として知られる。実際,IT業界はこの掟を守るかのように,IT関係の性能は18〜24か月で継続的に倍増し(20年で約千倍,30年で約32千倍),これに追随できない企業は退場を余儀なくされてきた。40年間で数百万倍というCPU性能の爆発的向上は,理論的に10日間かかっていた処理を1秒未満に短縮する。これは暗号のように演算速度に依存する分野への影響が大きく,またプログラミング分野でも,CPU・RAM等の資源が潤沢にあるのだから,これらを贅沢に使うプログラミングのほうが実際は効率的であるという「富豪的プログラミング」が提唱されたりもしている。

《情報爆発》

CPUの性能は確かに爆発的に向上した。しかし,同時にストレージ容量・ディスプレイ解像度・ネットワーク帯域等が爆発的に増加し,「情報爆発」と呼ばれるトレンドを生み出している。またソフトウェアの規模・利用者数も増加している。システム性能があずかる,CPU性能向上からの恩恵は実は限定的であり,プログラミングのあらゆる贅沢を許してくれるほどでは無いことを理解していただきたい。

また,Google App Engineは昨年から課金が始まったが,課金条件はCPU,帯域,ストレージの順に厳しい。これは最も節約すべきはCPU資源であることを意味する。

《魔法のコード》

次の期待は,優れたプログラマにかかる。彼らはハッカーギーク・ウィザード等の称号を有し,「3倍速くコードを書ける,102以上速く動作するコードが書ける,難易度の高い仕事を喜んでしてくれる,Happy Hacking Partyで負けることは無い,魔法を使うことができる」等の逸話がある。しかし,彼らが書くことができるのは優れたコードであり,実際に実行するのはCPUである。実は魔法は無い。ギークが書いたコードであれ,シロウトコーダが書いたコードであれ,同じ演算に要するCPUの実行時間は同じである。高速に稼働するプログラムが欲しかったら,CPUが行う演算を極限まで減らすこと以外に無いのである。

これを実現するためには,先人の叡智であるデータ構造及びアルゴリズムを活用する必要があり,また演算のコストを意識する必要がある。アルゴリズムの効率の指標は計算量であり,漸近的時間計算量でO(log2n),O(n3)等で示される。このnはデータ数であり,アルゴリズムは反復を多用するため,時間計算量は指数関数で表現されることが多く,nが増加すると実行時間は指数関数的に増加する。先に触れた情報爆発はnの増加を意味し,実行時間の爆発的増加を生み出す恐れがある。従来はO(nlog22n)程度であれば許容できる計算量とされていたが,nが爆発的増加した場合,O(nlog2n)でも厳しい。

これらに関する話題は第2学期の「システムプログラミング特論」でも取り上げる。

情報アーキテクチャ専攻 小山 裕司 教授)