Open usp Tukubai ってなに? Open usp Tukubai は 売上データの処理や勘定系システムの構築に利用されているエンタープライズ向けの高性能コマンド群 usp Tukubai のオープンソース版です 業務で特によく使われるコマンドを選りすぐって Python で再実装したも

Similar documents
K-BASIC 1st: ユニケージ基礎編(前編)

シェルスクリプトマガジン Vol27

シェルスクリプトマガジン Vol.24

図 1: 場所をクリックし ホームフォルダーをクリックすると (上図) ホーム フォルダー下にあるファイルやディレクトリの一覧を見ることができる 下図 2

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード]

シェルスクリプトマガジン vol.30

住所録を整理しましょう

Microsoft Word - macマニュアル【 】.doc

1 ログインとログアウト 1.1 ログイン ログイン画面で [ password ] 欄にパスワードを入力します (図 1) 図 1 ログイン画面 正しくログインができると Ubuntu のデスクトップ画面 図2 が表示されます 図2 Ubuntu デスクトップ画面 2

TOMOYO Linuxを体験しよう

Microsoft PowerPoint - InfPro_I6.pptx

目次 1. ログイン ログアウト デスクトップ ( 例 :Word Excel 起動中 ) Dock( 例 :Word Excel 起動中 ) Finder ウィンドウ メニューバー ( 例 :Word 起動中 )...

情報処理概論(第二日目)

2) データの追加 一番下の行までスクロールしていき * のある行をクリックすると 新しいデータを入力できます その他の方法 Access では様々な使い方が用意されています その一例としては 右クリックを使用する方法もあります 画面の左端の部分にマウスを持っていくと が表示されます の上でクリック

CONTENTS マニュアルの表記... S01-02_01 1.DataNature Smart 全体概要図... S01-02_11 2. 基本操作... S01-02_ ジョブの作成... S01-02_21 加工条件設定... S01-02_21 Step1: 処理対象データの指

PowerPoint2003基礎編

USP MAGAZINE 2014 August

GrADS の使い方 GrADS(Grid Analysis and Display System) は おもに 客観解析データのような格子点データを地図上に作図するために使われるアプリケーションです 全球スケールの気象を扱う分野で広く使われています GrADS は Unix 系の OS 上でよく利

SILAND.JP テンプレート集

< 目次 > 1. 練習ファイルのダウンロード 表計算ソフト Excel の基本 Excel でできること Excel の画面 セル 行 列の選択 セルにデータを入力する ( 半角英数字の場合 )

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

PowerPoint プレゼンテーション

<4D F736F F F696E74202D E3F FC96E55F F554E CC8AEE D8EAF2E B8CDD8AB B83685D>

Microsoft Word - CygwinでPython.docx

無料で多機能な OSS の ETL ツール Kettle を使ってみよう! 情報政策課技術職員金森浩治 1. はじめにデータ処理を行うにあたって非常に便利なツール ETL 本稿では OSS の ETL Kettle の機能とその使用方法を紹介します 2. 用語説明 2.1 OSS とは? OSS と

やさしくPDFへ文字入力 v.2.0

PowerPoint Presentation

PowerPoint2007基礎編

作業環境カスタマイズ 機能ガイド(応用編)

マイクロソフト IT アカデミー E ラーニングセントラル簡単マニュアル ( 管理者用 ) 2014 年 11 月

シヤチハタ デジタルネーム 操作マニュアル

情報処理概論(第二日目)

PowerPoint プレゼンテーション - 物理学情報処理演習

BizBrowser SmartDevice Android開発用スタートアップガイド

3.Cygwin で日本語を使いたい Cygwin で以下のコマンドを実行すると それ以降 メッセージが日本語になります export LANG=ja_JP.UTF-8 これは 文字コードを日本語の UTF-8 に設定することを意味しています UTF-8 は Cygwin で標準の文字コードで, 多

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

Word2013基礎 基本操作

PDF Convertor for mac スタートアップガイド

Microsoft Word - P doc

2 / 16 ページ 第 7 講データ処理 ブック ( ファイル ) を開く第 6 講で保存したブック internet.xlsx を開きましょう 1. [Office ボタン ] から [ 開く ] をクリックします 2. [ ファイルの場所 ] がデータを保存している場所になっている

引き算アフィリ ASP 登録用の日記サイトを 作成しよう Copyright 株式会社アリウープ, All Rights Reserved. 1

目次 1 文字数や行数を指定する 段組み 文書全体に段組みを設定する 文書の途中から段組みを設定する 段の幅 ( 文字数 ) や間隔を設定する ページ番号 ページ番号をつける 先頭ペ

中綴じ3・4級.ren

6 シート見出しブックに入っている各シート名の名前が表示されます シートとは 表を作るための作業エリア 単にシートという場合はワークシートのことを指します シート上のセルにデータを入力しながら表を作っていきます シートには他にグラフシートもあります 7 数式バー現在操作の対象となっているセル内のデー

やってみようINFINITY-写真管理 編-

処理手順 1) 健康保険組合から受領した 賞与支払届ターンアラウンド CD を パソコンの CD ドライ ブにセットします 2) マイコンピュータ CD ドライブ の順にダブルクリックして オープンしたウィン ドウにある KPFD0006.txt というアイコンをダブルクリックします すると CD

DrugstarPrime アップデート手順書 DrugstarPrime アップデート手順書 DrugstarPrime のアップデート手順をご案内いたします 本書は DrugstarPrime2 DrugstarPrime に共通の手順書です 手順内の画面は Prime2 を使用しています [

「平成20年障害福祉サービス等経営実態調査」

エクセルの基礎を学びながら、金額を入力すると自動的に計算され、1年分の集計も表示される「おこづかい帳」を作りしょう

Microsoft Word - Python利用環境構築ガイド_ docx

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL:

Microsoft Word A02

再起動した状態になり パスワードを入力すると 図 2 のように DEXCS2011 のアイコ ンがデスクトップ上に表示される 2 端末を準備する メニューバーにある端末の形を左クリック 図 2 デスクトップ メニューバーに端末の形がない場合 図 3 メニューバー アプリケーション アクセサリー 端末

正誤表(FPT1004)

QLabセットアップガイド for CL/QL/TFシリーズ

ユーティリティ 管理番号 内容 対象バージョン 157 管理情報バッチ登録コマンド (utliupdt) のメッセージ出力に対し リダイレクトまたはパイプを使用すると メッセージが途中までしか出 力されないことがある 267 転送集計コマンド (utllogcnt) でファイル ID とホスト名の組

分析のステップ Step 1: Y( 目的変数 ) に対する値の順序を確認 Step 2: モデルのあてはめ を実行 適切なモデルの指定 Step 3: オプションを指定し オッズ比とその信頼区間を表示 以下 このステップに沿って JMP の操作をご説明します Step 1: Y( 目的変数 ) の

PowerPoint プレゼンテーション

Transcription:

使ってみよう Open usp Tukubai!! 初心者のためのチュートリアル 2012 年 8 月 24 日 ユニバーサル シェル プログラミング研究所

Open usp Tukubai ってなに? Open usp Tukubai は 売上データの処理や勘定系システムの構築に利用されているエンタープライズ向けの高性能コマンド群 usp Tukubai のオープンソース版です 業務で特によく使われるコマンドを選りすぐって Python で再実装したものです 多くの方々に usp Tukubai の便利さを知ってもらいたいという願いから公開をはじめました usp Tukubai は短期間低コストで企業システムを構築することができるユニケージ開発手法で使われています ユニケージ開発手法は東急ハンズさまや成城石井さま ローソンさまなど数々の企業さまでシステム構築の方法として採用されています ユニケージ開発手法はデータの整理方法からシステムのデプロイ 人材教 育まで含めた包括的な開発手法です 学習が容易で 現場の担当者をシステ ム開発者まで引き上げることができます Tukubai on FreeBSD はこうした開発手法を知っていただきたいと すぐに Open usp Tukubai を利用できるようにセットアップされたプラットフォームです VirtualBox の仮想環境として提供されています FreeBSD は Open usp Tukubai を簡単に試すことができるプラットフォームです 2

Open usp Tukubai に関する情報は UEC - usp engineers' community site にまとまっています UEC - UNIX を深く理解し シェルプログラミングを極めるコミュニティサイト https://uec.usp-lab.com/ 本チュートリアルを実践しながら ぜひ UEC のサイトを訪れてみてください ユニケージ開発手法や Open usp Tukubai に関するもっと深い情報がまとまっています オンラインのコマンドマニュアルが提供されているほか プログラミングのサンプルや面白い話が満載です 3

ターミナルでの操作 Open usp Tukubai は業務データを処理するためのコマンドです 操作は ターミナルからコマンドを実行したり 作成したシェルスクリプトを実行す ることでおこないます Tukubai on FreeBSD を起動して立ち上がってくる黒いウィンドウが ターミナルです ここにコマンドを入力して操作します 4

ためしに ls と入力してエンターキーを押してみましょう ホームディレ クトリにあるファイルやディレクトリの一覧が表示されます ホームディレクトリにある TUKUBAI-TUTORIAL というディレクト リに サンプルのスクリプトやデータが格納されています ファイル名やディレクトリ名が大文字なのは ユニケージ開発手法でこう した名前規則を採用しているためです 別に強制するようなものではありま せんので 気になる場合には小文字を使ってもかまいません 5

ターミナルに表示されている /home/tukubai% や /home/tukubai/tukubai-tutorial% はプロンプトと呼ばれています ここにコマンドを入力してエンターキーを押します プロンプトにはカレントディレクトリが表示されています カレントディ レクトリは ユーザが操作の対象とするディレクトリのことです cd コマ ンドで移動することで変更できます Tukubai on FreeBSD でいろいろ試す前に Tukubai on FreeBSD から抜ける方法を覚えておきましょう Windows では右 Ctrl キーで Mac OS X では左 Command キーを押すことで Tukubai on FreeBSD を抜けることができます 操作がよくわからなくなったら このキーを押して Tukubai on FreeBSD を抜けてみてください 6

Open usp Tukubai 初仕事 ターミナルで次のようにコマンドを入力してみましょう 最初のコマンド printf 1\n2\n3\n4\n5\n は 5 行分のデータを出力するコマンドです \n が改行を意味しています 日本語キーボードでは と印字されているかもしれません \ と \ は同じものだと思っておいてください 2 つ目のコマンドは 1 つ目のコマンドの出力を gyo(1) という Open usp Tukubai のコマンドに流し込んでいます gyo(1) は行数をカウントするコマンドです 5 行なので 5 と出力されていることがわかります Open usp Tukubai は基本的にこのようなコマンドを組み合わせてデータを加工していきます 簡単ですよね それでは 以降 サンプルスクリプトを読みながら Open usp Tukubai でどういった処理をするのか追っていきましょう 7

チュートリアルデータの説明 チュートリアル向けのデータとして 野菜の売上データから 特定の日付の野菜別の売上合計を求める処理 を想定して サンプルを用意しました ホームディレクトリにある TUKUBAI-TUTORIAL ディレクトリ以下にまとめてあります $ cd $ tree TUKUBAI-TUTORIAL/ TUKUBAI-TUTORIAL/ SHOUHIN_MEI.MASTER SHOUHIN_TANKA.TRAN SHOUHIN_URIAGE_SUU.TRAN URIAGE_20120902.UNICAGE 商品番号と商品名商品と単価データ商品と売上数データ集計プログラム 0 directories, 4 files $ データ処理は URIAGE_20120902.UNICAGE ファイルにまとまっています 特に使われることが多い sm2(1) join1(2) self(1) delf(1) comma(1) keta(1) といった Open usp Tukubai コマンドを使用しています 8

SHOUHIN_MEI.MASTER 商品番号と商品名を格納したマスタファイルです 次のようなデータが 入っています 001 カイワレダイコン 002 タマネギ 003 ホウレンソウ 004 チンゲンサイ 005 キャベツ 006 レタス 007 トマト 008 ニンジン 009 ダイコン 010 ゴボウ マスタファイルは第 1 フィールドがキーフィールドとして sort(1) で整列 されている必要があります キーの重複は許可されません 9

SHOUHIN_TANKA.TRAN 商品番号と日付 その日付の商品の単価が格納されたファイルです 次の ようなデータが格納されています 001 20120901 120 002 20120901 110 003 20120901 150 004 20120901 120 005 20120901 180 006 20120901 110 007 20120901 130 008 20120901 170 009 20120901 180 010 20120901 130 001 20120902 160 002 20120902 120 003 20120902 180 004 20120902 110 005 20120902 180 006 20120902 130 007 20120902 130 008 20120902 160 009 20120902 180 010 20120902 120 第 1 フィールドが商品番号 第 2 フィールドが日付 第 3 フィールドが商 品単価です 10

SHOUHIN_URIAGE_SUU.TRAN 商品番号 日付 商品の売上数が格納されたファイルです レジで販売し た時点でデータが随時追加されていくファイルのようなものだと想像してく ださい たとえば玉ねぎを 2 つ購入すると 002 日付 2 というレコー ドがこのファイルに追加されます 007 20120901 3 001 20120901 3 005 20120901 2 009 20120901 2 001 20120901 2 007 20120901 5 007 20120901 4 003 20120901 5 009 20120901 5 006 20120901 4 001 20120901 3 010 20120901 5 000 20120901 5 006 20120901 5 001 20120901 2 010 20120901 5 010 20120901 3 000 20120901 5 005 20120901 2 001 20120901 4 これらデータのファイルを Open usp Tukubai のコマンドを組み合 わせることで 特定の日付の売上金額を求めるといったことが簡単に実現で きます 11

URIAGE_20120902.UNICAGE 2 段階の処理を経てデータを処理しています まず 個々の売上数データ を加算して 9 月 2 日における商品ごとの総売上数を計算します スクリプトの最初で定義しているのは 一時ファイル用の変数です ユニ ケージ開発手法ではこのように変数を設定し 一時ファイルの出力先として 利用します まず処理の対象となるレコードを SHOUHIN_URIAGE_SUU.TRAN から日付で grep(1) することで取り出します cd ~/TUKUBAI-TUTORIAL; cat URIAGE_20120902.UNICAGE とコマンドを実行してスクリプトの中身を表示させてみましょう #!/bin/sh tmp=/tmp/$$ # 2012 年 9 月 2 日の売上データを抽出 # 1: 商品番号 2: 日付 3: 個別売上数 grep 20120902 SHOUHIN_URIAGE_SUU.TRAN # 商品番号で整列 sort -k1 # 商品番号をキーにして第 3 フィールドの売上数を加算 sm2 1 1 3 # 1: 商品番号 2: 総売上数 # 商品番号をキーにして商品名をマージ join1 key=1 SHOUHIN_MEI.MASTER - # 1: 商品番号 2: 商品名 3: 総売上数 > $tmp-1 12

取り出したデータは sort(1) で整列をかけたあとで sm2(1) コマンドで商品ごとに加算しています usp Tukubai のコマンドはデータが整列されていることを前提にしたものが多く そうすることで実行速度の高速化を実現しています マスタファイルとトランザクションファイルを join1(1) を使って結合します この処理で商品番号のあとに商品名が挿入されることになります この段階で出力される一時ファイルには次のようなデータが書き込まれています 001 カイワレダイコン 2778 002 タマネギ 2697 003 ホウレンソウ 2763 004 チンゲンサイ 2830 005 キャベツ 2685 006 レタス 2911 007 トマト 2679 008 ニンジン 2763 009 ダイコン 2668 010 ゴボウ 2879 ユニケージ開発手法では 途中経過のデータをファイルへ出力します 問題が発生したときに問題をトレースしやすくする効果があるほか データが重複するため 万が一 操作を誤ってファイルを削除した場合などでも データの復旧がやりやすくなります 13

スクリプトのコメントに どのフィールドが何を意味しているのか書き込まれている点に注目してください usp Tukubai のコマンドや UNIX コマンドを経由して出力されるフィールドの意味が変わったら その段階でどのフィールドが何のデータになっているのかをコメントに記載します こうすることで あとから処理を変更する場合などに編集しやすくなりま す 14

次に 9 月 2 日の商品単価を取り出し 先ほど出力した一時ファイルに マージします 先ほどと同じように grep(1) で対象となるデータを取り出し て 念のため sort(1) したあとで join1(1) を使ってマージします # 2012 年 9 月 2 日の商品単価データを抽出 # 1: 商品番号 2: 日付 3: 商品単価 grep 20120902 SHOUHIN_TANKA.TRAN # 商品番号で整列 sort -k1 # 商品番号をキーにして売上数と単価をマージ join1 key=1 $tmp-1 - # 1: 商品番号 2: 商品名 3: 総売上数 4: 日付 5: 商品単価 # 不要なフィールドを削除 delf 1 4 # 1: 商品名 2: 総売上数 3: 商品単価 # 売上数と単価の積算から売上額を出力 awk '{print $1, $2*$3}' # 1: 商品名 2: 売上額合計 # 売上額をコンマ区切りへ変更 comma 2 > $tmp-2 売上数と単価のデータがマージされましたので awk(1) を使って双方の 値の積算をとって出力します これで売上額が求まります データとして不要なフィールドは delf(1) で取り除きます 売上額は comma(1) を使って 3 桁ごとに区切り文字を追加させます 15

この段階で出力される一時ファイルには次のようなデータが書き込まれて います カイワレダイコン 444,480 タマネギ 323,640 ホウレンソウ 497,340 チンゲンサイ 311,300 キャベツ 483,300 レタス 378,430 トマト 348,270 ニンジン 442,080 ダイコン 480,240 ゴボウ 345,480 この段階で最終的にほしいデータがすでにそろっています 16

最後に 体裁を整えてデータを出力します keta(1) は出力の桁をそろえ るコマンドです # 体裁を整えてデータを表示 # タイトルを表示 echo "2012 年 9 月 2 日の売上データ " echo # ヘッダを表示 echo " 商品売上額 ( 円 )" # 売上額データを出力 cat - $tmp-2 # 桁を揃えて表示 keta -- # 一時ファイルを削除 rm $tmp-* スクリプトの一番最後に一時ファイルを削除して処理完了です デバッグ する場合 一時ファイルの削除をコメントアウトして 随所々々のデータを 調べます 17

サンプルスクリプトの実行 サンプルのスクリプトを実行すると 次のような結果が得られます $ cd ~/TUKUBAI-TUTORIAL $./URIAGE_20120902.UNICAGE 2012 年 9 月 2 日の売上データ 商品売上額 ( 円 ) カイワレダイコン 444,480 タマネギ 323,640 ホウレンソウ 497,340 チンゲンサイ 311,300 キャベツ 483,300 レタス 378,430 トマト 348,270 ニンジン 442,080 ダイコン 480,240 ゴボウ 345,480 $ スクリプトを実行するだけではなく スクリプトの内容を参考にして自分 で手動で入力して一行づつコマンドを実行してみてください どのように データが変換されていくのかがよくわかります 18

このサンプルでは 50,000 レコード処理しているだけですが 実際の業 務システムでは数億レコード 店舗商品マスタが 10 万件といったレベルの データを処理します Open usp Tukubai で提供されているコマンドを組み合わせるだけで も 多種多様なデータを高速に変換し 目的とするデータを得ることができ ます データは L1 から L5 まで 5 段階に区別され それぞれどういった形式に データを揃えるかが定められています 今回取り上げたデータは L3 形式の データです ユニバーサル シェル プログラミング研究所ではユニケージエンジニアを育成するための教育講座を開講しています 本チュートリアルだけではよくわからない もっと詳しくユニケージ開発手法や usp Tukubai のことを知りたいという場合には ぜひ一度 uecinfo@usp-lab.com またはユニバーサル シェル プログラミング研究所 03-3432-1174 までご連絡ください 教育講座は毎月開講しています 19