Shoeisha Technology Media

EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

シェルスクリプトでビッグデータ処理~ユニケージ開発手法とは~

2013/02/23 08:00

「やすい、はやい、やわらかい」が特徴の企業システムの開発手法である「ユニケージ開発手法」。シンプルなシェルスクリプトでハードウェアの性能をフル活用し、テキストファイルを処理するというこの手法は、先日発表された「usp BOA」でビッグデータの高速処理に応用され、さらに威力を増しています。本記事では、「ユニケージ開発手法」の基本、なぜビッグデータ処理が簡単にできるのか、などについて解説します。

ユニケージ開発手法とは

 ユニケージ開発手法とは、シェルスクリプトとテキストファイルだけで企業の基幹システムをやすく、はやく、やわらかく開発できる、日本発のシステム開発手法です。近年、大規模な企業の基幹システムやシステム内製化の手法として採用が進んでいます。( 導入事例:http://www.usp-lab.com/works.html )

 シェルスクリプトは40年以上前からある、ベーシックで入門者向きのスクリプト言語です。シェルスクリプトにおいては、簡単な「コマンド」を順次記述してプログラムを記述します。例えば、2つのテキストファイル "file1" "file2" の先頭10行と末尾10行をそれぞれ取り出し、その結果を横に連結し、さらにその結果できあがったファイルを行単位にソートする、といった一連の処理を行うのに、

 head file1 > work1 # file1 の先頭10行を取り出す
   tail file2 > work2 # file2 の末尾10行を取り出す
 paste -d' ' work1 work2 > work3 # 2つのファイルを横に連結する
   sort work3 # ファイルを行単位にソートする

 と記述します。シェルスクリプトはこのように、「~する」というデータ処理の基本的な要素に対応したコマンドを順番に記述するだけのプログラムです。

 ユニケージ開発手法においては、企業のシステムを構築するのに必要な基本「コマンド」群(usp Tukubai)を開発・提供しています。例えば、「usp Tukubai」コマンドを使って、販売データを部門毎に集計し、エクセルデータをつくるには、次のように記述します。

 join1 key=2 GENKA HANBAI |    # 販売データと商品原価ファイルを結合
   join1 key=2 BUMON - |    # さらに商品部門ファイルを結合
   lcalc '$3,$6,$7,$7-$4*$6' |    # 部門、売数、売上、粗利を計算
   msort -p4 key=1 |    # 部門コードでソート
   sm2 1 1 2 4 |          # 部門単位に、売数、売上、粗利を集計
   sm5 1 1 2 5 |    # 部門全合計行を付加
   lcalc '$0,100*$5/$4' |  # 粗利率を計算
   marume 6.1 |    # 粗利率を小数点1桁に四捨五入
   cjoin2 key=1 BUMON_NAME | # 部門名称を付加
   divsen 3 4 5 |    # 売数、売上、粗利を1000単位にする
   divsen 4 5 |    # 売上、粗利については100万単位にする
   wexcel a1 ExcelBook.xls - > Result.xls # エクセルシートにデータをはめ込む

 join1 lcalc sm2 sm5 marume cjoin2 divsen wexcel などが 「usp Tukubai」 コマンドになります。「usp Tukubai」のコマンド でよく使用されるのはせいぜい40個くらいで、覚えるのにさほど時間はかかりません。

 上記の例で、各コマンド行を結ぶ、「|」は「パイプ」と呼ばれ、前コマンドの結果出力を次コマンドの入力に結びつけるUNIXの基本機能の一つです。

 パイプで連結されたコマンド群は並列起動されます。処理されるデータは「バケツリレー」的に次々にコマンドに送られ、処理されていきます。

 シェルスクリプトにおいては、このような簡単な記述で、結果的に処理効率の高い「マルチスレッドプログラミング」を実現します。上記のプログラムで300万件の販売データをデスクトップパソコンで動かすと処理時間がたった5秒です。

※この続きは、会員の方のみお読みいただけます(登録無料)。


著者プロフィール

  • 當仲 寛哲(トウナカ ノブアキ)

       有限会社ユニバーサル・シェル・プログラミング研究所 代表取締役所長 1966年兵庫県生まれ。1992年、株式会社ダイエーに入社、システム改善により大幅なコストダウンを実現して社長賞受賞。2000年より流通科学大学非常勤講師(~2002年まで)、IPA助成事業実施主幹。2005年、ユ...

バックナンバー

連載:EZ Press

もっと読む

All contents copyright © 2007-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5