ユニケージ開発手法とその適用事例
有限会社ユニバーサル・シェル・プログラミング研究所
2013年07月16日© USP Lab. 20131

ユニケージ開発手法について
ユニケージ開発手法は「やすく、はやく、やわらく」情報システムを構築できる日本発のソフトウェア開発手法です。
ユニケージ開発手法は、２００８年、ＩＰＡ（独立行政法人情報処理推進機構）主催の「ソフトウェア・プロダクト・オブ・ザ・イヤー ２００８ 基盤ソフトウェア部門」を受賞しました。

■ユニケージ開発手法のメリット①安い・易しい

開発コストが１／４

・安価なＰＣサーバとＯＳ（Ｌｉｎｕｘ）
・データはテキスト、プログラムはシェルスクリプト、ミドルウェアは不要
・システム更新無し（ハードやＯＳが変わっても、ソフトとデータはそのまま）②早い・速い１／４の開発期間で１０倍以上の処理速度

・プログラムが非常に短い（ソースコードが１／５０）
・１人の技術者が設計～開発～運用をする多能工方式
・無駄な機能を削ぎ落とす＋ハード性能を最大に引き出す③柔らかい

１週間に１本のペースでアプリケーションを改善

・プログラムがシンプルでカスタマイズが容易
・ソフトの各機能が相互依存しておらず、簡単に変更が可能
・整理整頓されたデータから、アプリケーションに必要なデータを生成※㈱良品計画の開発プロジェクトにおける実績値です。

■特徴
ＯＳ
アプリケーション
データ管理
開発順序
サーバ配置方針
セキュリティ
ドキュメント© USP Lab. 2013

：：：：
：
：
：

Ｌｉｎｕｘ（ＵＮＩＸ系）の機能をフル活用する
ユニケージコマンド（usp Tukubai）を使用したシェルスクリプトで記述する
ＲＤＢを使わず、テキストファイルを整理整頓する
データを整理整頓するシステムを構築してから、アプリケーションを開発する
業務特化したサーバ同士のファイルのやり取りで全体のシステムを実現する
システム内部は自由度が高く、外部とのやり取りは強固にガードする開発の為のドキュメントは少なく、理解の為のドキュメントは充実している2ユニケージ開発手法の採用企業
ユニケージ開発手法は、以下の理由で多数の企業で採用されています①プログラム（シェルスクリプト）の習得が容易（講習１ヶ月＋ＯＪＴ３ヶ月）②データ構造が明快（構造化されたテキストファイル）③プログラムがとても短い（日本酒類販売様で１７分の１）④ＵＮＩＸ系ＯＳの最新機能でセキュリティを確保© USP Lab. 20133

ユニケージの考え方© USP Lab. 20134

ユニケージソフトウェアのアーキテクチャ
入力系スクリプト
POS
受発注
マスタ登録 など

３つのシステムをすべてシェルスクリプトで作成
３つの間はすべてファイル I/F

出力系スクリプト

更新・整理系スクリプト

画面
帳票 など

データ集配信
５Ｗ１Ｈ整理５Layerデータ管理 など一元化された技術とＩ／Ｆ ＝ システム開発非分業化の推進© USP Lab. 20135

ユニケージの考え方 （完全分散型）
業務で分ける 組織で分ける
データもプログラムもハードウェアも全部分ける①分けると無駄が減り、処理が速くなる。
②役割が分かると、メンテナンスがしやすい。

分かるとは分けること共有しないものは固有する
共有するものは全有する（元データを配る）© USP Lab. 2013

共有型（集中型）

全有型（分散型）

１つの仕様変更が他に影響１つの仕様変更が他に影響しない

高負荷・プログラムが複雑

低負荷・シンプルなプログラム6

ユニケージ開発手法の適用領域◎得意領域→大量データの高速処理 （集計・検索・帳票など）→受発注などのトランザクション処理→国際化にも対応（ＵＴＦ－８のテキストデータ）△向かない領域（＝内製化に向かない領域）→法律・制度等、社会一般的なルールが決まっているもの（例えば、財務会計や給与計算など）→パッケージ製品が充実している分野

×不得意な領域（＝チャレンジが必要な領域）→機器ドライバ×ドラッグ＆ドロップでアバターの着せ替え→複雑なUI

ポリゴンでの３Ｄ処理など

・http通信などでデータI/Fする仕組みは得意→iPadやAndoroid、RIAや.NET等のウェブアプリケーションと連携© USP Lab. 2013

7

データ管理の特色

レイヤーによるデータ管理
Level 1
（イベントデータ）

Level 2
（確定データ）Level 3
（5W1Hデータ）

Level 4
（アプリケーションデータ）

Level 5
（出力データ）

生データ（非同期）情報が発生した通りに作成するデータ（失うと困る→多重、多層、多角バックアップ)
明細データ（同期）
生データをあるタイミングでシステムに正式に取り込んだデータ
Ｌｅｖｅｌ２データを５Ｗ１Ｈ単位に整理・集計したデータ（よくある超整理術。アプリケーション非依存）

アプリケーションが利用しやすいフォーマットにしたデー（別名：ＰＯＭＰＡ…ポンと叩けばパッとでるの略）

帳票イメージデータ（Ｅｘｃｅｌ、ＰＤＦなど）やログ等

8© USP Lab. 2013

ユニケージ開発の作法①

開発の進め方 「一休さん方式」→第１フェーズ（データ基幹の構築）と第２フェーズ（アプリケーションの構築）を必ずこの順序で行う。
第１フェーズ
売上第２フェーズ

マスタ系

トラン系

仕入商品
マスタ

店舗
マスタ

Level3……

Level1（生ﾃﾞｰﾀ）同期取込
Level4,5（POMPA）

Level2
明細（集計無し）

明細（集計無し）

確定
ﾃﾞｰﾀ

日別 週別

日別 週別

名前 原価

確定
ﾃﾞｰﾀ

他ｼｽﾃﾑ

ﾕﾆｹｰｼﾞ

名称 ｵｰﾌﾟﾝ日

入出力画面

帳票

他ｼｽﾃﾑI/F

Level3
店別 ｴﾘｱ別

整理する© USP Lab. 2013

店別 ｴﾘｱ別５Ｗ１Ｈ集計取引先 売価

面積 立地ﾀｲﾌﾟ

項目分割＋履歴マスタ化

生データ取得→整理のシステムを作ってから（第１フェーズ）、アプリケーションシステムを構築する（第２フェーズ）。

9ユニケージ開発の作法②

アプリケーションの開発方法 「床屋方式」
業務重要度７割

業務の骨格となる設計＝早期に決定できる

業務重要度３割

１次開発
実データ入手開発・テスト・リリース
元データと入出力画面
設計のみで開発可能（設計負荷が小さい）

短期間

短いプログラム
早い開発© USP Lab. 2013

便利機能設計少人月

開発・テスト・リリース

動くアプリを目前にすると比較的短期に決まる

短期間＋ 現場重視 ＋ ２度開発 =ムダの無いコミュニケーション

２次開発
（仕上）

短いプログラム＋相互依存が無い↓
修正開発が容易

少人月

ローコスト
クイックレスポンス

的確な仕様の決定
10シェルスクリプトの記述例#!/bin/ush# 部品リードタイム計算表示## 指定親/手配日/手配数 のリードタイム計算# 1.LvNO 2.品目番号 3.品名 4.構成数 5.内外作区分 6.着手日
cat $hinmoku|
tagawk '%品目番号=="'$parent'"{print}’|
cjoin2 key=3 $tmp-hinmoku $tmp-data|
cjoin2 key=2/3 $tmp-kousei |maezero 1.2|
self 1 3 5 4 6 8|
awk '{print $1,$2,$3,$4,$5,'$day',-$6}'|
mdate -f 6 +7|
delf 6 7|
cat $tmp-head |dayslash yyyy/mm/dd 6 –rm $tmp-*exit 0© USP Lab. 201311

ユニケージ開発手法の適用例© USP Lab. 201312

生産管理システム

部品表管理デモ

想定システム

組立生産工場を想定
・１００万件の品目情報
製品品目が１０万件

・３６０万件の製品構成情報
１親子構成当たり有効期間が異なるデータが３件

親品目を指定しての順展開
有効日指定での展開
必要数量を指定した場合のリードタイム計算での手配日表示

子品目を指定しての最終的な親品目を逆展開© USP Lab. 2013

生産管理システム

部品表管理デモデータイメージ

NH-508-ASM 収納棚AS※１つの製品部品表構造を示します
同様な部品表構造が10万件存在します※１つの親子製品構成当たりで有効期間が異なるデータを３つ保持しています

MH-510-BO 棚箱

MH-510-L 左扉

MH-510-R 右扉

MH-510-BS 棚箱横板

MH-510-RT 取手T型

MH-510-RT 取手T型

MH-510-BU 棚箱底板

COM-BIS-23 汎用ビス

COM-BIS-23 汎用ビス

MH-510-BT 棚箱天板

ITA-509 扉板

ITA-509 扉板© USP Lab. 2013

部品表順展開表示
品目番号NH-508-ASM

Lv No

品目番号

有効期日
品名

2012/10/25

構成数

内外作

在庫数

00

NH-508-ASM

収納棚AS

1

内作023

01

MH-510-R

右扉

2

内作

02502

MH-510-RT

取手T型

1発注品

085

02

COM-BIS-23

汎用ビス

8発注品

17902

ITA-509

扉板

1外作

096

01

MH-510-L

左扉

2内作

025

02

MH-510-RT

取手T型

1発注品

08502

COM-BIS-23

汎用ビス

8発注品

17902

ITA-509

扉板

1外作

096

01

MH-510-BO

棚箱

1

内作

025

02

MH-510-BS

棚箱横板

3

外作

092

02

MH-510-BU

棚箱底板

1外作

061

02

MH-510-BT

棚箱天板

1外作

067

© USP Lab. 2013

品目マスタ表示
品目番号

COM-BIS-23

品名 汎用ビス

内外作区分

発注品

手配区分

発注点

出庫区分

自動品目更新日2011/10/25

在庫数

179

安全在庫

100

単価

2.25

発注単位

200

発注LT

3

© USP Lab. 2013

製品構成マスタ表示
親品目番号

有効期間

原単位

固定リードタイム

工程番号© USP Lab. 2013

子品目番号NH-508-ASM

0000/00/00

00002 / 00001

01.00

ASMB-002～

NH-510-R

2013/02/25

00002.0000

比例リードタイム

00.00

作業単価

200.00部品リードタイム計算表示
品目番号NH-508-ASM

Lv No

品目番号

手配日 2012/11/25
品名

手配数 50

構成数

内外作

手配日00

NH-508-ASM

収納棚AS

1

内作

11/25

01

MH-510-R

右扉

2

内作

11/15

02

MH-510-RT

取手T型

1

発注品

11/08

02

COM-BIS-23

汎用ビス

8

発注品

11/09

02

ITA-509

扉板

1

外作

11/01

01

MH-510-L

左扉

2

内作

11/15

02

MH-510-RT

取手T型

1

発注品

11/08

02

COM-BIS-23

汎用ビス8発注品

11/09

02

ITA-509

扉板

1外作

11/01

01

MH-510-BO

棚箱

1

内作

11/14

02

MH-510-BS

棚箱横板

3

外作

10/30

02

MH-510-BU

棚箱底板

1外作

11/04

02

MH-510-BT

棚箱天板

1外作

11/04

© USP Lab. 2013

部品表逆展開表示
品目番号

COM-BIS-23

品名

汎用ビス
品目番号

© USP Lab. 2013

有効期日

品名

2012/10/25

更新日

在庫数

NH-508-ASM

収納棚AS

2011/10/25

023

NH-408-ASM

収納棚AS4

2010/09/10

016

NH-518-ASM

収納棚AS

2011/10/26

022

NH-418-ASM

収納棚AS4

2010/09/11019

NH-528-ASM

収納棚AS

2011/10/27

033

NH-428-ASM

収納棚AS4

2010/09/10014

NH-538-ASM

収納棚AS2011/10/25

033

NH-438-ASM

収納棚AS4

2010/09/10026

生産管理システムへの適用
・部品表のような階層構造を含んだポインタ構造データのシステム構築にはユニケージ開発手法は特に向いている•••

データがすべてテキスト、分散した管理テキストファイル
ファイル配置で構造表現、関係付けはシェルスクリプト
データ（ファイル）とソフト（シェルスクリプト）の明確で明快な分離：完全分離：テキストファイル：シェルスクリプト・大量データ（BigData）処理でも、同じユニケージ開発手法を使ったソフトウェアアプライアンス商品uspBOAを追加すれば、ユニケージ開発手法で統一された開発が可能© USP Lab. 2013

生産管理システム

ビッグデータ 適用領域

工作機械が出力する大量ログの分析処理

ユニケージ開発手法＋（ユニケージ開発手法ベースのソフトウェアアプライアンス）

品質保証での大量の検査データの分析処理
原価計算シミュレーション
有効日指定し、特定部品を有効にして展開し計算
工程外作先、発注先ごとに展開し計算
さらに実績原価との照合しての表示などの ビッグデータ処理向けには、複数サーバーでスケールアウトできるソフトウェアアプライアンス製品「uspBOA」を追加提供© USP Lab. 2013

(usp BigData Oriented Architecture)22

製品コンセプト

usp BOA(Bigdata Oriented Architecture) とは
ユニケージ開発手法をベースにしたビッグデータ処理専用ソフトウェア
アプライアンスです

双方の長所をあわせ持つ

Hadoop・ＯＳＳベース
・廉価なＨ／Ｗ・スケールアウト

Appliance ・高速性能
商用製品 ・保守サポート
・安定性© USP Lab. 2013

・ＯＳＳベース
・スケールアウト・高速性能
・廉価なＨ／Ｗ・保守サポート・安定性

ユニケージ開発手法とはシェルスクリプトとテキストファイルで企業の基幹システムを安く、早く、柔らかく構築する開発手法です23

製品の特長特長

説明

ＯＳＳベース

UNIX系 OS（Linux/FreeBSD）であれば動作

スケールアウト

Hadoopと同様にスケールアウトが可能
負荷に応じて、動的に処理ノードを変更可能

高速性能

高速コマンド（usp Tukubai）と効率的な分散処理
DBやHadoopのフロント処理の高速化にも適用可能

廉価なＨ／Ｗ

エントリクラスのサーバで動作

保守サポートＯＳのカーネルに精通した技術で安心保守サポート

安定性

40年前からあるUNIXの安定した機能のみを活用© USP Lab. 201324

デモ環境の構成図
デモ① 10億件 トランザクション処理

マスタサーバ

CPU: Xeon E5-2687W 3.10GHz x2
Memory: 128GB
HDD: SATA 1TB

シェルスクリプトはここだけに記述

boam

スレーブサーバ

10Gbps Network

５台
大量データの保持
boas001

20億件

boas002

20億件

boas003boas004

20億件

20億件

boas005

20億件

実際の処理
CPU: Core i7-3960X 3.30GHz
Memory: 32GB
HDD: SATA 1TB

適切なデータ配置設計を行います

デモ② 100億件BigData (分散 Text Files)© USP Lab. 2013

処理

データ量の増加に合わせてスケールアウト可能
25

デモ①：トランザクション処理(10億件)

概要説明

処理

処理速度

１０億レコードから１０並列処理で１２３から始まるレコードを抽出する３秒

２．ソート：clust-qsort

ランダムな１０億レコードを5台のスレーブサーバで４０並列処理で昇順ソートする

９７秒

３．集計

：clust-sm2

ランダムな１０億レコードを５台のスレーブサーバで４０並列処理でキー毎にサムアップする

３５秒

４．演算

：clust-awk

１０億レコードを５台のスレーブサーバで４０並列処理で項目間演算をする

２２秒: clust-lcalc

多倍長精度演算を行う

６７秒：clust-join1

１０億レコードを５台のスレーブサーバで４０並列処理で結合処理を行う、マスターは比較的小さい

３７秒

１０億レコードを５台のスレーブサーバにキーブロック単位に分割し、指定した処理（キーサムアップ、平均値、丸め、リテラル処理）を４０並列処理させる

１７秒

１．抽出

５．結合

：para-grep

６．複雑な処理：clust-shell© USP Lab. 201326

デモ②：ビックデータ処理(100億件)

処理

概要説明

処理速度

１．ビックデータ抽出：
apli-selectスレーブサーバに分散配置された100億レコードのデータに、1万トランザクションのマッチングセレクト（結合と排他）を行う

４.５秒

２．ビックデータ更新

スレーブサーバに分散配置された100億レコードのデータに、1万トランザクションの更新（新規＋変更）、削除、演算を行う

５.５秒

スレーブサーバに分散配置された100億レコードの会員データから、ランク、性別、出身地、年代、登録期間、最低平均スコアを指定して検索する

１.２秒(新規＋変更、削除、演算):

apli-update
apli-delete
apli-sumup
３．ビックデータ検索：
apli-search© USP Lab. 201327

シェルスクリプトの記述例
uspBOA を利用したシェルスクリプトの例

シェルスクリプトにおいて、大量データ処理が必要な部分にclustコマンド群やparaコマンド群を使用します#!/bin/ush -x#大量データを集計してレポートを出力するシェルスクリプトの例
clust-join1 slavefile1 key=1 master URE
para-self 10 2/NF-1
clust-sm2 slavefile2 1 2 3 4
sm4 1 1 2 2 3 4
self 1 2 4 3 5
sm5 1 3 4 4map num=1
sed 's/A/Sales/g'
sed 's/B/Profit/g'keta 4 6@NF-1
comma 4 5
cat header -> result
exit 0© USP Lab. 2013

|
|
|
|
|
|
|
|
|
|
|

slavefileにスレーブサーバ名と並列処理数を列記# データの結合 (Bigdata)# 列選択(Bigdata)
# 集計
# 中間計
# 列選択
# 合計
# 縦横変換# 文字列置換# 桁揃え# カンマ編集# ヘッダー付けて出力

28

価格体系

uspBOAソフトウェアアプライアンス(uspBOA-SWAP)

希望標準価格：2,000万円（税別）

uspBOAusp Tukubai コマンド群

OS/OSSH/W

FreeBSD/Linux/OSS…
…

© USP Lab. 2013

usp Tukubai
1cpu 1万5千円～（月額）uspBOA専用設定作業（有償）

ハードウェア選定、サイジングの御相談も弊社にて対応致します

お気軽に御相談下さい29

TPS／アジャイルとユニケージ© USP Lab. 201330

TPS/アジャイル・ソフト開発とユニケージ「お客様第一」を理念に、あるべき姿に向けて改善し続ける
TPS/アジャイル開発

ユニケージでの実践

ジタャ
イス
ムトイン

・リードタイム短縮
・連続した流れの構築
・平準化、小ロット化
・お客様の注文（要求）によるPULL方式

自働化

・品質を自工程で作り込む

・短いスクリプトで早く開発
・床屋方式（段階的な開発）・冗長とムダの違いの理解
・L1～L5 のデータ整理（アプリで必要なデータを用意＝pull）
・「分ける」ことは「わかる」こと
・少数のシンプルな部品・スクリプト≒仕様書

人改と善組
織の・見える化・現地現物・標準づくり
・多能工、セル生産・学習する組織© USP Lab. 2013

・ホワイトボックス（データもスクリプトもテキスト）
・一休さん方式（実データで開発）
・お作法とルール
・多能工、スクラム・ユーザーとの対話
31

システムの導入効果を上げる
メーカー視点

ユーザー視点

プログラム
要求仕様

システム効果
業務ニーズ

スキルアップ

コミュニケーション
シェルスクリプトを選択する意味

提案力
＋行動力

© USP Lab. 2013

業務の理解

32

お問い合わせユニケージ開発手法、uspBOA の内容についてのご相談はお気軽にお問合せ下さい。

Mail-to：Tel：sales@usp-lab.com
03-3432-1174

担当：

小林、長壁(おさかべ)

有限会社ユニバーサル・シェル・プログラミング研究所
東京都港区西新橋３－４－２ ＳＳビル３Ｆ

http://www.usp-lab.com© USP Lab. 201333