ユニケージ開発手法

ユニケージ開発手法 (ユニケージかいはつしゅほう、)とは業務システム用の商用開発手法の1つで、ベンチャー企業ユニバーサル・シェル・プログラミング研究所（USP研究所）が考案し独占的な権利を所有しライセンス販売を行っている。同社および開発パートナー契約を結んだユニケージ認定エンジニアが商用コマンドセットusp Tukubaiを使って開発を行う。一般的なプログラミング言語は非技術者には習得が困難であるという前提の元、非技術者でも習得が容易であるという理由でシェルスクリプトでシステム開発するのが特徴である。同社はシェルスクリプトを「もっとも歴史が長いローコードアプリケーションプラットフォーム」だと主張している。データベースの代わりやサーバー側の処理にしか適用できず、ユーザーインターフェースの開発にはHTML, Ruby, .NET Framework, Reactなどを使う。Pythonを目の敵としており、流行り物にを出すなと言っているが、Pythonが誕生した1991年に比べてユニケージは2005年生まれであり、むしろユニケージの方が流行りものである。さらにプロプライエタリなソフトウェアに依存するため寿命が短い。
特徴.
同社のビジネスモデルは、ユニケージコマンドセットやアプライアンス・パッケージのライセンス販売、ユニケージ開発手法の教育と初期構築とサポート業務である。システムの内製化を目指して初期システム構築のみをUSP研究所監修の元、ユニケージの基礎教育を行いながら開発パートナーやユーザー企業と連携して開発する。その後の機能追加に伴うメンテナンス自体は開発パートナーやユーザー企業自身で行うことも可能である。
ユニケージ開発手法は開発方法論とされているが無償で使えるものではない。利用するには独自コマンドセットなどを利用するための資格「ユニケージ認定エンジニア資格」に合格し、独自コマンドセットusp Tukubaiの使用ライセンス契約を結ぶことが必須である。
ソフトウェア開発の技術者（プログラマー）ではない現場の作業員（非エンジニア）が開発することを想定している。現場の作業員でもシェルスクリプト（bash）なら使える。ただし高度な書き方はしない。プログラマは次のようループを使った難しい書き方をする。
for i in 1 2 3 4 5 6 7 8 9; do
 echo "2×${i}＝$((2 * ${i}))"
done
しかし非エンジニアを対象としているユニケージ開発手法のユニケージエンジニアは、素人でも理解できるような次のような冗長な書き方をする。以下はユニケージエンジニアの作法その一 forやwhileなどの繰り返し構文の使用は控えるからの例である。
echo "2×1＝$((2 * 1))"
echo "2×2＝$((2 * 2))"
echo "2×3＝$((2 * 3))"
echo "2×4＝$((2 * 4))"
echo "2×5＝$((2 * 5))"
echo "2×6＝$((2 * 6))"
echo "2×7＝$((2 * 7))"
echo "2×8＝$((2 * 8))"
echo "2×9＝$((2 * 9))"
次のような例は
for i in 1 2 3 4 5 6 7 8 9 10; do
 rm a${i}.txt
 mv b${i}.txt B${i}.TXT
 touch c${i}.txt
done
ユニケージ開発手法の発想で記述すると次のようになる。
rm a1.txt ; mv b1.txt B1.TXT ; touch c1.txt
rm a2.txt ; mv b2.txt B2.TXT ; touch c2.txt
rm a3.txt ; mv b3.txt B3.TXT ; touch c3.txt
rm a4.txt ; mv b4.txt B4.TXT ; touch c4.txt
rm a5.txt ; mv b5.txt B5.TXT ; touch c5.txt
rm a6.txt ; mv b6.txt B6.TXT ; touch c6.txt
rm a7.txt ; mv b7.txt B7.TXT ; touch c7.txt
rm a8.txt ; mv b8.txt B8.TXT ; touch c8.txt
rm a9.txt ; mv b9.txt B9.TXT ; touch c9.txt
rm a10.txt; mv b10.txt B10.TXT; touch c10.txt
繰り返し構文を使わなければ記述できない場合には、繰り返しの終了判断をループの最後に記述する。通常、whileは次のように最初に繰り返し終了判定を記述することが多い。
i=1
while [ $i -le 10 ]; do # 10または10よりも小さければループ継続
 echo "${i}周目"
 i=$(( $i + 1 ))
done
ユニケージ開発手法では次のように終了判定を繰り返し構文の一番最後に書く。
i=1
while [ 1 ]; do
 echo "${i}周目"
 i=$(( $i + 1 ))
 [ $i -gt 10 ] && break; # 10よりも大きければループ終了
done
業務システムの開発を担当する現場の作業員は非エンジニアであり、繰り返し構文がでてくると理解が及ばないことがあるためである。開発効率は悪くなるが、非エンジニアでも理解できる書き方をすることで、高コストなソフトウェア開発の専門技術者が不要となり、結果的に開発コストを下げることができる。バッチ処理用途がメインで継続的に開発を行うことが目的ではなく、ハードウェアやプラットフォームが変わったとしても一度開発したソフトウェアを何十年も修正することなく動かすことを重視している。
データをプレーンテキストをベースとしたタグ形式・ネーム形式・フィールド形式と呼ばれるユニケージ用データ形式でデータを保存し、この形式を扱うために開発された100種類程度フィルタコマンドをシェルスクリプトから呼び出して利用することが技術の根幹となっている。
パイプで連結したコマンドは同時に起動するため、マルチプロセッサシステム上のカーネルで並列処理が行われることを期待してパイプを多用する。ただしソートや集計処理等の標準ストリームの入出力を遮るコマンドがパイプライン中にあったりパイプラインの個々のコマンドの処理速度が偏る場合は並列処理の効果は小さくなる。例えばパイプラインの途中にsortコマンドが存在する場合、sortコマンドの処理が完了するまでそれ以降のコマンドは処理を開始できず、またパイプでつないだコマンド中で一番遅いコマンドよりも速く処理を完了することはできない。パイプで連結するだけで十分な並列効果が得られない場合は同時に多数のプロセスを並列起動する必要がある。
心得三箇条.
ユニケージ開発手法には、テキストとしてのデータ、シェルスクリプトによるプログラミング、いくつかの専用コマンドを使うという型があり、業務をシステム化したい現場の担当者に開発のノウハウを伝承するという目的のために次のような心得三箇条をもっている。
シェルスクリプトとの違い.
ユニケージ開発手法では商用コマンドセットusp Tukubaiを使用することが前提で、一般的なシェルスクリプトの書き方とは異なる独自のコーディング規約にしたがって利用する。この作法はプログラミング言語の一般的な常識と全く異なるものであり、例えば条件分岐やループや変数や関数は非推奨である。そのためシェルスクリプトでありながら一般的なシェルスクリプトとは全く異なる書き方をする。これは非エンジニアにはプログラミング言語の習得は困難であるという独自の理論に基づき、シェルスクリプトをローコードアプリケーションプラットフォームとして再解釈し、シェルスクリプトのサブセットとして利用しているからである。
ユニケージ開発手法ではコーディング規約に則った独自のディレクトリ構造やファイル形式を用い、独自の考え方や独自の専門用語を用い、ユニケージ専用コマンドを利用して業務システムを開発する独自のフレームワークである。同社が独自で考案したユニケージ開発手法を習得し、ユニケージ認定エンジニアに育てるためのコストが必要となる。この独自コマンドの存在とこのノウハウに基づく「作法」により、大規模システムへのシェルスクリプト適用が可能であると主張している。
独自コマンドの種類や仕様についてはユニバーサル・シェル・プログラミング研究所が管理している。アプリケーション開発者は、コマンド作成や改変を行わない。既存のコマンドの組み合わせでは不可能であったり、時間的な費用（プログラマの作業時間、計算機の演算時間）が高くなる演算が見つかった場合、議論を経て新規コマンドを提供する。
新規コマンドの開発に慎重になることには、以下の理由がある。
製品.
製品ラインナップ
usp Tukubai.
usp Tukubaiは、ユニケージ開発手法を行うために開発された業務システム用の商用コマンド群である。データーベースの代わりとして使うミドルウェアの一種であり、高速に動作するようにC言語で作成されている。ターミナルから操作するインタラクティブなデータ処理作業から、業務システムの構築・業務用Webアプリケーションの構築まで、シェルスクリプトとUNIXの基本機能だけでは不足する機能を補うための開発コマンドである。ユニケージ開発手法を行うためには最低限uspTukubaiが必要となる。
基幹業務システム、情報分析システム、データバッチ処理、高速検索システム、勘定系システムなどにおける、シェルスクリプトが本来想定していない用途にシェルスクリプトを使えるようにするため開発されたUNIX環境用のコマンド群であり、開発パートナーや自社開発による内製化を目指すユーザー企業等にライセンス提供されている。
Open usp Tukubaiは上記エンタープライズ版usp Tukubaiコマンドの中から利用頻度の高いものをユニケージ普及のためにMITライセンスのもとでPythonを使って再実装されたオープンソースのコマンド群である。
usp STAT.
usp STATはユニケージ開発手法で統計解析処理を行うためのコマンドセットである。データ分析言語「R」と同様の約80種類の基本的な統計手法をコマンド化している。「usp Tukubai」と組み合わせて使用する。
ただし，「R」のような一般的な統計解析ソフトで標準的に用意されている主成分分析やクラスタリング，分散分析といったものはサポートされていない模様．
usp BOA.
usp BOAはビッグデータ処理を行う場合に必要なソフトウェアアプライアンスである。
アット・ア・グランス性.
アット・ア・グランス性とはUSP研究所の完全子会社であるBSDコンサルティング株式会社の取締役の後藤大地によって考え出された言葉である。