ＴＰＳ／Ａｇｉｌｅを具現化する

日本発の開発手法「ユニケージ」解説
有限会社ユニバーサル・シェル・プログラミング研究所© usp lab. 20111

ＴＰＳ＝Ｌｅａｎ開発方式とは「ジャストインタイム」「自働化」「改善」「かんばん」「あんどん」「現地現物」「平準化」…。
様々なキーワードあれど、その目的は…

改善し続ける活力ある人の集団づくり© usp lab. 20112

ＴＰＳ／Ａｇｉｌｅ⇒ソフトウェア開発におけるＴＰＳ
ユニケージがＴＰＳ／Ａｇｉｌｅ開発の技法として核心と捉えているテーマ。
①簡潔・明快なソフトウェア開発手法であること。
（Ｌｉｎｕｘ＋テキスト＋シェルスクリプト）②システムの効果に集中すること。
（経営、社員、顧客の三方よし）③自律と協働に至るプロセスであること。
（多能工指向）© usp lab. 20113

ユニケージ開発手法とは非常に短いプログラム（従来の1/10程度）で、短期間にシンプル／ロングライフな企業情報システムを構築する方法
特徴

メリット

①コンピュータの原理に基づくオープンな技術（Linux）を利用・流行りすたりに左右されず長く使える②小さくて単機能のソフト部品を組み合わせて作る（コマンド）・早く作れる・読みやすい・動作が軽快・プログラムの変更・修正が容易③コピーが簡単にできる（テキストデータ）・コストパフォーマンスが高い最新のマシンに簡単に移植できる

ユニケージ開発手法を使って、自社の情報システムの内製にチャレンジしている企業が増加中！
システムを自分たちで作れるようになると、業務改善が自力できるという自信がつく。

© usp lab. 2011

必要な情報を必要なときに入手できるようになり、スピーディーな意思決定が定着する。

人件費だけでシステム構築が進む。外注するときもコストや期間の予測がつくようになる。
4ユニケージの歴史と採用企業■これまでの歴史

１９９３年 ダイエー創業者中内功の業務改革プロジェクト内で着想
１９９８年 ダイエーでホストコンピュータを廃止し、大幅なコストダウンを実現
２００５年 ユニケージ開発手法の研究・教育・普及機関として、ＵＳＰ研究所設立
２００８年 ＩＰＡ主催「ソフトウェア・プロダクト・オブ・ザ・イヤー２００８」にてシステム・基盤分野を受賞
２０１０年 さらにオープンな技術を目指し、技術講習会を積極的に実施
書籍「ユニケージ原論」や「ユニケージコマンドセット評価版」をリリース■採用企業の一部© usp lab. 20115

経営者の直面する理想と現実
理想

経営戦略をいち早く実行し、売上を伸ばしたい、競争力をつけたい！！
例）新規事業の立ち上げ／新商品開発／組織変更／営業力強化等々

現実

経営戦略の実行に、想像以上にコストや時間がかかる現場に横たわる単純で深刻な問題

その背景
現 実

提案が出づらい風土に具体化必要となるシステムの議論

しかし、システムは高い・遅い・固い言ってもムダ、止めようというムードの蔓延

戦略立案

コスト高
固い仕組み

具体化パワー

武器となるデータやシステムがほしい

具体化パワー

新しい課題にチャレンジしたい

あるべき姿

システムを実現する
方式・技術※本来なら上から下へスムーズに進むが、システムを実現する方式や技術が硬直していて衝突がおきている

情報システムが経営スピードの足を引っ張っている！
© usp lab. 20116

あるべき情報システムのかたち→情報システムは「数値と事実で、合理的な経営判断をするための道具」
指標や標準を作りムリ・ムダを無くす↓
コストカット

世の中の変化を読み取り企業を変化させる↓センサー「ヒト・モノ・カネ」を律するための道具↓
ガバナンス実現→コンピュータの本質は「メモ＋電話＋電卓」
大量の情報の記録↓
メモ

離れた場所との情報のやりとり↓
電話

高速な計算処理↓電卓

これら情報システムの本質を理解した上でコンピュータを適用すれば持続的な競争優位の実現も可能になる© usp lab. 20117

情報システムが本来の力を発揮するために①仕事のどの部分にコンピュータを適用するのかを決める→システム（＝業務のつながり）とコンピュータはまったく別物→コンピュータを使うことで、一番効果が出るのはどの部分かの見極めが必要②本質的に優れた技術を選択する→優れた技術 =流行すたりに左右されない技術=短く書ける技術=移植性が高い技術③人材育成の道具として活用する→システムを作ることは、会社の仕組みをコンピュータ上にトレースすること→会社の仕組みをゼロから学べるシステム開発は、格好のエリート教育になる© usp lab. 20118

早く・短くプログラムを書くための工夫①「シェルスクリプト」でシステムを作る■帳票出力アプリケーションの一例#!/bin/bash
join0 key=1 master URE
self 2 3 4/NF-1
sm2 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|||||||||||仕様：
ﾏｽﾀｰと売上ﾃﾞｰﾀを商品ｺｰﾄﾞで合致させるプログラム：②会社の仕組みを表現する「動詞」の単位でコマンドを自作する■ユニケージオリジナルコマンドの例

join0 key=1 master URE
ユニケージ
オリジナルコマンド

業務処理の順番でプログラムが記述できる↓
人間の思考の順番に素直にプログラムを記述できる↓
早く書けて読みやすい

join1くっつける

keycut
分割する

sm2
足す

self
抽出する

awk
計算する

map
整形する

単機能だが、粒度が均一で標準化された道具で（＝使い回しがきく）あらゆる仕様を表現↓
短いプログラム

約50個のシンプルな道具※従来型のオブジェクト指向では、クラスの粒度を毎回設計する必要がある。
あれもこれもできるが、粒度もまちまちで使いまわしは…。

①仕様書とほぼ同じサイズでプログラムが記述できる②仕様書に書かれていることを実現するために、特別なアルゴリズムを必要としない© usp lab. 20119

データ中心主義

コンピュータシステムは、データの入出力をしているに過ぎない
入力系
３つをｼｪﾙｽｸﾘﾌﾟﾄで作成

ファイル

利用

出力系

発生

ファイル

ファイル

３つの間はすべてファイルＩ／Ｆ

整理

整理系
10

© usp lab. 2011

テキストファイル（Ｌ１－Ｌ５）
Ｌｅｖｅｌ１ （イベントデータ）

生データ

Ｌｅｖｅｌ２（確定データ）

確定データ

Ｌｅｖｅｌ３（５Ｗ１Ｈデータ）

整理・集計
データ

Ｌｅｖｅｌ４（アプリケーションデータ）

ＰＯＭＰＡ

Ｌｅｖｅｌ５（出力データ）

帳票データ等© usp lab. 201111

個性的なコマンド群例）tateyoko ：文字列の縦横変換
mojihame：テンプレートに文字をはめこむ
sem：セマフォ操作
システムコールをコマンド化
keycut :レコードをキー毎にファイル分割
paraawk ：並列処理
MapReduce日本版？

© usp lab. 201112

シェルスクリプトでシステムを作る
約40年間変わることのないUNIX/Linuxの基本的技術#!/bin/bash
join0 key=1 master URE|
self 2 3 4/NF-1|
sm2 1 2 3 4|sm4 1 1 2 2 3 4|
self 1 2 4 3 5|sm5 1 3 4 4|map num=1|
comma 4 5exit 0© usp lab. 2011

データのマッチング
フィールドのセレクト
サムアップ
中間計
フィールドのセレクト
合計
縦横変換
カンマ編集

13パイプを使ってマルチコアを味方にシェルスクリプトのパイプ処理
コマンド１ | コマンド２ | コマンド３ | コマンド４ | ・・・

コア１

コア２

コア３

コア４
プロセス単位にコア分散される

ＣＰＵ
キャッシュ

カーネルスケジューラの機能を素直に使う© usp lab. 201114

一休さん方式（データが先）第１フェーズ データ整理

第２フェーズ アプリ開発

Ｌｅｖｅｌ１（生データ）

Ｌｅｖｅｌ２
Ｌｅｖｅｌ３

Ｌｅｖｅｌ２

Ｌｅｖｅｌ４（確定データ）（アプリケーションデータ）

Ｌｅｖｅｌ３（５Ｗ１Ｈデータ）

Ｌｅｖｅｌ５
画面 帳票（出力データ）15© usp lab. 2011

床屋方式（２度開発方式）

１次設計
業務の骨格となる設計

１次開発
＋
リリース

短期間

少人月

業務重要度
７割
© usp lab. 2011

２次設計
便利機能
設計

２次開発＋
リリース

短期間

少人月

業務重要度
３割
16

ドキュメント
実用的かつ必要十分なもののみ

主なドキュメント：
業務フロー
Ｌ１、Ｌ３のレイアウト
各アプリケーションのＩ／Ｏ仕様
シェルスクリプト（コメントいっぱい）© usp lab. 201117

ユニケージのキャパシティ
小規模なシステムの（狭義の）Agile開発から、大規模基幹システム構築までカバー
小規模システムの（狭義の）Agile開発向き
大規模基幹システム向き© usp lab. 2011

・短いプログラム・Ｌｅｖｅｌ４データの作り捨て・旅芸人スタイル
・少ないコマンド・簡単なマニュアル
・豊富なドリル（→普通のプログラマでも習得可能）
・完全分散型（→大人数での手分けが可能）
18まとめ・ユニケージとは、非常に短くプログラムを書くことができる技術とお作法の集合。（Ｌｉｎｕｘ＋テキスト＋シェルスクリプト）⇒安正早楽 is beautiful
・モデル化をせず、データありきで発想。
（システムは業務にあり）・分散型のシステムを構築する。
（疎結合で柔軟性＋堅牢性ＵＰ）
・経営、社員、顧客の三方よしを指向。

お問い合わせは koho@usp-lab.com 宛にお願いします© usp lab. 201119