第53回
プログラミングの現場感覚

 コンピュータにしろネットワークにしろ,ITはただの道具である.それを使ってナンボのものだというのは良くわかる.コンピュータの中の仮想空間と言ったところで,それを構成する現実社会のデータが存在することが多い.情報システムが使われる目的や現場の状況を理解しなければ,SE業は務まらないのである.

 学生が作っているソフトウェアや実験装置を見ていると,物理や現実社会の拘束条件をまったく無視しているので,びっくりすることがある.式から出てくる数値をまったく疑わないから,何かのまちがいでトランジスタのコレクタ電圧が1万Vになっても,何の疑問も持たない.それは変だと気がつくのは多少なりとも現実を知っているからなのだが,単体のトランジスタを見る機会もない今の学生には,もはや現実に触れる機会などないのである.

 ITも現実リアル・ワールドとつながってこそ意味があるのだが,リアル・ワールドはなかなか手ごわい.今回は最近私が経験した現場感覚のプログラミングよもやま話をしよう.

まだあった16ビットの壁

 ある企業との共同研究で,北海道と沖縄の大手スーパーマーケットのPOSデータを使うことになった.データの中身は,全商品について店舗ごとの1日単位の売り上げ個数と売上額を数年間分集計したもので,それがCSV形式になっている.大型スーパーになるとリストにある商品数は5万種以上,店舗数も100以上になる.1年間分としても,単純に計算すると18億レコード強になる.実際はすべての店舗がすべての商品を扱うわけではないから,それより小さいが,億単位のレコード数は確実にある.

 そこで,まずはデータを見てみようということで,1か月分だけExcelに読み込んだところ,16ビットの壁にぶつかった.このデータは1か月分でも1千万くらいはあるのだが,Excelの行数は最大65,536行に制限されているのである.Excelが想定しているのは人間が手入力できるようなレベルの行数ということで,切りの良い16ビットの行番号になっているらしい.ということで,現実のデータの中身を見るために小さなプログラムをVB6で作ることにした.

次は32ビットの壁

 提供された生データはCSV形式なので,VB6でスキャンするのは簡単なことである.ある商品の年間売り上げ集計や季節変動などをグラフ化するのは赤子の手をひねるようなものと思っていたら,ここにも壁があった.このデータベースは1500億円規模の系列スーパーの全売り上げである.このスーパーの事業規模を知りたくなって,売り上げ金額をすべて足してみようと思ったのだが,VB6の整数は16ビットと32ビットで,32ビット符号なしとしても,約40億円までしか積算できないではないか.VB.NETでは64ビット整数が使えるのだが,それだけのためにVB.NETに切り替えるのもつらい.VB6版の画像処理や表示のライブラリが手元にあることもあり,なんとかVB6の枠内でこなしたいところである.苦肉の策で,倍精度実数(64ビット IEEE753形式)を使うことを考えた.教科書的にはお金の計算には整数を使うのが常識なのだが,場合によっては実数を使うことができる.つまり,64ビットのIEEE754形式では仮数部が52ビットあり,計算法も規格化されているので,10進で15桁までの整数は誤差なく表現されているのである.もちろん一度でも端数が出る計算を行ったらアウトであるが,足し算,掛け算,割り切れる割り算しか行わなければ,約100兆円まで整数と同じように扱えることが保証されている.

 POS情報にはJANコードという13桁の商品コード(バーコード)も付随するのだが,これも32ビットの範囲を越えている.それでも15桁以内だから倍精度実数で取り扱うことができる.文字列扱いでも良いのだが,売り上げデータ構造体のサイズや一致比較の速度などが大きく違ってくるのである.

 もちろん,銀行や大規模流通の世界ではこういったデータを日常的に使っているわけで,今回私が経験したような事例はすべて織り込み済みなのである.COBOL言語はそういう現実の経理データを取り扱うために設計されていたわけで,私がCOBOLの現場感覚を知らなかったというだけのことなのだ.

現実のデータから見える現実

 なんだかんだと苦労して,総額5000億円分のPOSデータがPCで閲覧できるようになったのだが,これが明らかにする現実もいろいろと興味深いものなのである.

 チョコレートといえばバレンタイン・デーということで,その代表的な板チョコの1月,2月の売り上げを北海道と沖縄で比べてみたら,おもしろい傾向を見つけた.北海道ではバレンタイン・デーの3週間前から週末にピークを作りながら徐々に売り上げが上がってくるが,沖縄では2月14日直前の週末に一度だけ鋭いピークを作るのである.北海道の中にも地域性があって,港町のスーパーほど早期から売れ出す傾向がある.身近な女性たちにこの話をしたら,スーパーで買うチョコレートは加工用原材料のチョコレートであり,それは溶かされて別な形になって彼氏のところに届くので,事前の加工の時間があるということらしい.ということは,北海道の女性は数週間前にターゲットの彼氏を想定して行動しているが,沖縄の女性は直前に贈る相手を決めているのだろうか.

 来年のバレンタイン・デーのデータ分析が楽しみである.

やまもと・つよし

北海道大学大学院情報科学研究科

メディアネットワーク専攻

情報メディア学講座


「移り気な情報工学」のトップへ戻る

Interfaceのホームページへ戻る

コラム目次
New

移り気な情報工学 第62回 地震をきっかけにリアルタイム・システム再考

Back Number

移り気な情報工学
第62回  地震をきっかけにリアルタイム・システム再考
第61回  海を渡って卵を産む北京の「海亀族」
第60回  超遠距離通信とソフトウェア無線
第59回  IT先進国フィンランドの計画性
第58回  物理的に正しいITの環境対応
第57回  年金,e-チケットに見るディジタル時代の情報原本
第56回  「着るコンピュータ」から「進化した布地」へ
第55回  技術を楽しむネットの文化
第54回  情報爆発2.0
第53回  プログラミングの現場感覚
第52回  GPS+LBS(Location Based Service)がおもしろい
第51回  技術の格差社会
第50回  フィンランドに見る,高齢化社会を支える技術
第49回  たかが技術倫理,されど技術倫理
第48回  若者の理科離れ,2007年問題から「浮遊」せよ
第47回  機械のためのWWW――Google Maps APIから考える
第46回 網羅と完備で考えるユビキタスの視点 ―― u-Japan構想
第45回 青年よ,ITを志してくれ
第44回 Looking Glassに見るデスクトップの次世代化
第43回 CMSはブログに終わらない
第42回 二つの2010年問題
第41回 持続型技術――サスティナブル・テクノロジ
第40回 ICカード付き携帯電話が作る新しい文化
第39回 ユーザビリティの視点
第38回 性善説と性悪説で考えるRFID
第37回 時代間通信アーキテクチャ
第36回 ITもの作りの原点
第35回 ビットの化石
第34回 ユビキタスなエネルギー
第33回 ロゼッタストーンとWWW
第32回 情報家電のリテラシー
第31回 草の根グリッドの心理学
第30回 自分自身を語るオブジェクト指向「物」
第29回 電子キットから始まるエレクトロニクス
第28回 映画に見る,できそうでできないIT
第27回 ITも歴史を学ぶ時代
第26回 1テラバイトで作る完全なる記憶
第25回 日本はそんなにIT環境の悪い国なのか
第24回 10年後にも生きている技術の法則
第23回 ITなギズモ
第22回 ブロードバンドネットワークに関する三つの質問

Engineering Life in Silicon Valley
第93回 「だれでも参加できるシリコン・バレー」はどうなる
第92回 チャレンジするためにシリコン・バレーへ 対談編
第91回 テクノロジと教育学の融合
第90回 日本でシリコン・バレーを伝える活動
第89回 営業からベンチャ企業設立までの道のり(第二部)
第88回 営業からベンチャ企業設立までの道のり(第一部)
第87回 エンジニアを相手にビジネスを展開するプロ第三部
第86回 エンジニアを相手にビジネスを展開するプロ第二部
第85回 エンジニアを相手にビジネスを展開するプロ第一部
第84回 出会いには不向きのシリコンバレー
第83回 めざせIPO!
第82回 シリコンバレーでの人脈作り
第81回 フリー・エンジニアという仕事(第三部)
第80回 フリー・エンジニアという仕事(第二部)
第79回 フリー・エンジニアという仕事(第一部)
第78回 インドに流れ出るシリコンバレーエンジニアの仕事
第77回 エンジニア達の健康管理・健康への努力(第二部)
第76回 エンジニア達の健康管理・なぜエンジニア達は太る?(第一部)
第75回 ユーザーインターフェースのスペシャリスト(第二部)
第74回 ユーザーインターフェースのスペシャリスト(第一部)
第73回 放浪の旅を経てエンジニアに……
第72回 凄腕女性エンジニアリングマネージャ(第二部)
第71回 凄腕女性エンジニアリングマネージャ(第一部)
第70回 ビジネススキルを修行しながらエンジニアを続ける
第69回 専門分野の第一線で活躍するエンジニア
第68回 シリコンバレーに夫婦で出向(第二部)
第67回 シリコンバレーに夫婦で出向(第一部)
第66回 目に見えないシリコンバレーの成功要因
第65回 起業・独立のステップ
第64回 インターネットバブルの前と後の比較
第63回 日本でシリコンバレースタートアップを体験する(第四部)
第62回 日本でシリコンバレースタートアップを体験する(第三部)
第61回 日本でシリコンバレースタートアップを体験する(第二部)
第60回 日本でシリコンバレースタートアップを体験する(第一部)

電脳事情にし・ひがし
第14回 韓国インターネット社会の光と陰

第13回 ドイツのソフトウェア産業とヨーロッパ気質〜優秀なソフトウェア技術者は現代のマイスター
第12回 開発現場から見た,最新ロシアВоронежのソフトウェア開発事情
第11回 新しい組み込みチップはCaliforniaから ―― SuperHやPowerPCは駆逐されるか ――
第10回  昔懐かしい秋葉原の雰囲気 ── 取り壊し予定の台北の電脳街 ──
第9回 あえて台湾で製造するPCサーバ――新漢電脳製青龍刀の切れ味
第8回 日本がだめなら国外があるか――台湾で中小企業を経営する人
第7回 ベトナムとタイのコンピュータ事情
第6回 ヨーロッパ/ポルトガルのエンジニア事情〜インターネット通信〜
第5回 ヨーロッパ/ポルトガルのエンジニア事情〜ポルトガルのプチ秋葉原でハードウェア作り〜
第4回 ヨーロッパ/ポルトガルでのエンジニア事情〜市場と就職編〜
第3回 タイ王国でハードウェア設計・開発会社を立ち上げる
第2回 国内外に見る研究学園都市とハイテク産業の集中化…中国編(下)
第1回 国内外に見る研究学園都市とハイテク産業の集中化…中国編(上)

フリーソフトウェア徹底活用講座
第24回 Intel386およびAMD x86-64オプション
第23回 これまでの補足とIntel386およびAMD x86-64オプション
第22回 静的単一代入形式による最適化
第21回 GCC2.95から追加変更のあったオプションの補足と検証(その9)
第20回 GCC2.95から追加変更のあったオプションの補足と検証(その8)
第19回 GCC2.95から追加変更のあったオプションの補足と検証(その7)
第18回 GCC2.95から追加変更のあったオプションの補足と検証(その6)
第17回 GCC2.95から追加変更のあったオプションの補足と検証(その5)
第16回 GCC2.95から追加変更のあったオプションの補足と検証(その4)
第15回 GCCにおけるマルチスレッドへの対応
第14回 GCC2.95から追加変更のあったオプションの補足と検証(その3)
第13回 続々・GCC2.95から追加変更のあったオプションの補足と検証
第12回 続・GCC2.95から追加変更のあったオプションの補足と検証
第11回 GCC2.95から追加変更のあったオプションの補足と検証
第10回 続・C99規格についての説明と検証
第9回 C99規格についての説明と検証
第8回 C言語におけるGCCの拡張機能(3)
第7回 C言語におけるGCCの拡張機能(2)
第6回 GCCのインストールとC言語におけるGCCの拡張機能
第5回 続・C言語をコンパイルする際に指定するオプション
第4回 C言語をコンパイルする際に指定するオプション
第3回 GCCのC言語最適化以外のオプション
第2回 GCCの最適化オプション ――Cとアセンブラの比較
第1回 GCCの最適化オプション

フジワラヒロタツの現場検証
第72回 現場検証,最後の挨拶
第71回 マイブーム
第70回 OSぼやき放談
第69回 技術者生存戦略
第68回 読書案内(2)
第67回 周期
第66回 歳を重ねるということ
第65回 雑誌いろいろ
第64回 となりの芝生は
第63回 夏休み
第62回 雑用三昧
第61回 ドリームウェア
第60回 再び人月の神話
第59回 300回目の昔語り
第58回 温泉紀行
第57回 人材ジャンク
第56回 知らない強さ
第55回 プレゼン現場にて


Copyright 1997-2005 CQ Publishing Co.,Ltd.


Copyright 1997-2006 CQ Publishing Co.,Ltd.