SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

直近開催のイベントはこちら!

EnterpriseZine編集部ではイベントを随時開催しております

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

EnterpriseZine Press

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

「やすい、はやい、やわらかい」が特徴の企業システムの開発手法である「ユニケージ開発手法」。シンプルなシェルスクリプトでハードウェアの性能をフル活用し、テキストファイルを処理するというこの手法は、先日発表された「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秒です。

次のページ
シェルスクリプトのトランザクション処理

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
EnterpriseZine Press連載記事一覧

もっと読む

この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/4579 2013/02/23 08:00

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング