ユニケージ開発手法

出典: フリー百科事典『ウィキペディア(Wikipedia)』

ユニケージ開発手法 (ユニケージかいはつしゅほう、: Unicage software development method)とは業務システム用の開発手法の1つで、有限会社ユニバーサル・シェル・プログラミング研究所(USP研究所)が開発したものである。同社および開発パートナー契約を結んだユニケージ認定エンジニアが商用コマンドセットusp Tukubaiを使って開発を行う。一般的なプログラミング言語は非技術者には習得が困難であるという前提の元、非技術者でも習得が容易であるという理由でシェルスクリプトをプログラミング言語として使うのが特徴である。

特徴[編集]

同社のビジネスモデルは、ユニケージコマンドセットやアプライアンス・パッケージのライセンス販売、ユニケージ開発手法の教育と初期構築とサポート業務である。システムの内製化を目指して初期システム構築のみをUSP研究所監修の元、ユニケージの基礎教育を行いながら開発パートナーやユーザー企業と連携して開発する。その後の機能追加に伴うメンテナンス自体は開発パートナーやユーザー企業自身で行うことも可能である。

ユニケージ開発手法は開発方法論とされているが無償で使えるものではない。利用するには独自コマンドセットなどを利用するための資格「ユニケージ認定エンジニア資格」に合格し、独自コマンドセットusp Tukubaiの使用ライセンス契約を結ぶことが必須である[1]

ソフトウェア開発の技術者(プログラマー)ではない現場の作業員が開発することを想定しており、非エンジニアでも比較的短期間で学習が可能なシェルスクリプト(bash)を採用している。

for i in 1 2 3 4 5 6 7 8 9; do
	echo "2×${i}$((2 * ${i}))"
done

しかし非エンジニアを対象としているユニケージ開発手法のユニケージエンジニアは次のような冗長な書き方をする。

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))"

業務システムの開発を担当する現場の作業員は非エンジニアであり、繰り返し構文がでてくると理解が及ばないことがあるためである。開発効率は悪くなるが、非エンジニアでも理解できる書き方をすることで、高コストなソフトウェア開発の専門技術者が不要となり、結果的に開発コストを下げることができる。バッチ処理用途がメインで継続的に開発を行うことが目的ではなく、ハードウェアやプラットフォームが変わったとしても一度開発したソフトウェアを何十年も修正することなく動かすことを重視している。

データをプレーンテキストをベースとしたタグ形式・ネーム形式・フィールド形式と呼ばれるユニケージ用データ形式でデータを保存し、この形式を扱うために開発された100種類程度フィルタコマンドシェルスクリプトから呼び出して利用することが技術の根幹となっている。

パイプで連結したコマンドは同時に起動するため、マルチプロセッサシステム上のカーネルで並列処理が行われることを期待してパイプを多用する。ただしソートや集計処理等の標準ストリームの入出力を遮るコマンドがパイプライン中にあったりパイプラインの個々のコマンドの処理速度が偏る場合は並列処理の効果は小さくなる。例えばパイプラインの途中にsortコマンドが存在する場合、sortコマンドの処理が完了するまでそれ以降のコマンドは処理を開始できず、またパイプでつないだコマンド中で一番遅いコマンドよりも速く処理を完了することはできない。パイプで連結するだけで十分な並列効果が得られない場合は同時に多数のプロセスを並列起動する必要がある。

心得三箇条[編集]

ユニケージ開発手法には、テキストとしてのデータ、シェルスクリプトによるプログラミング、いくつかの専用コマンドを使うという型があり、業務をシステム化したい現場の担当者に開発のノウハウを伝承するという目的のために次のような心得三箇条をもっている。

  • 人手の作業を模倣せよ。
  • 誰でも読めるコードに訳せ。
  • とっとと終わらせ、飲みに行け。

シェルスクリプトとの違い[編集]

ユニケージ開発手法ではシェルスクリプトを独自のコーディング規約にしたがって利用する。この作法はプログラミング言語の一般的な常識と全く異なるものであり、例えば条件分岐やループや変数や関数は非推奨である。そのためシェルスクリプトでありながら一般的なシェルスクリプトとは全く異なる書き方をする。これは非エンジニアにはプログラミング言語の習得は困難であるという独自の理論に基づき、シェルスクリプトをローコードアプリケーションプラットフォームとして再解釈し、シェルスクリプトとのサブセットとして利用しているからである。

ユニケージ開発手法ではコーディング規約に則った独自のディレクトリ構造やファイル形式を用い、独自の考え方や独自の専門用語を用い、ユニケージ専用コマンドを利用して業務システムを開発する独自のフレームワークである。同社固有のユニケージ開発手法の学習コストが必要となる。この独自コマンドの存在とこのノウハウに基づく「作法」により、大規模システムへのシェルスクリプト適用が可能であると主張している。

  • 作法の例[2]
    • ファイルを上書きしない。なるべく消去しない。
    • シェルスクリプトの相互呼び出しを行わない。
    • データベース管理システムではなくファイルを用いる。
    • ユニケージ開発手法で定められたデータファイル、シェルスクリプトの置き場所の標準化に従う。
    • forやwhile、関数や変数の使用を控える。
    • プロセス間通信にファイルを使う。
    • ファイルの冒頭に自ファイル名、日付・連絡先、処理の前提条件・結果、マジックナンバーの意味を書く。

独自コマンドの種類や仕様についてはユニバーサル・シェル・プログラミング研究所が管理している。アプリケーション開発者は、コマンド作成や改変を行わない。既存のコマンドの組み合わせでは不可能であったり、時間的な費用(プログラマの作業時間、計算機の演算時間)が高くなる演算が見つかった場合、議論を経て新規コマンドを提供する。

新規コマンドの開発に慎重になることには、以下の理由がある。

  • コマンドの種類や仕様を各システムで画一化することで、管理費用が増大することを防ぐ。
  • 自作コマンドの作成は時間がかかるため、コマンドの組み合わせ技を考えたり人に聞いたりする方が、結果としてアプリケーションプログラマの仕事が早く終わる。

製品[編集]

製品ラインナップ

usp Tukubai[編集]

usp Tukubaiは、ユニケージ開発手法を行うために開発された業務システム用の商用コマンド群である。データーベースの代わりとして使うミドルウェアの一種であり、高速に動作するようにC言語で作成されている。ターミナルから操作するインタラクティブなデータ処理作業から、業務システムの構築・業務用Webアプリケーションの構築まで、シェルスクリプトとUNIXの基本機能だけでは不足する機能を補うための開発コマンドである。ユニケージ開発手法を行うためには最低限uspTukubaiが必要となる。

基幹業務システム、情報分析システム、データバッチ処理、高速検索システム、勘定系システムなどにおける、シェルスクリプトが本来想定していない用途にシェルスクリプトを使えるようにするため開発されたUNIX環境用のコマンド群であり、開発パートナーや自社開発による内製化を目指すユーザー企業等にライセンス提供されている。

Open usp Tukubaiは上記エンタープライズ版usp Tukubaiコマンドの中から利用頻度の高いものをユニケージ普及のためにMITライセンスのもとでPythonを使って再実装されたオープンソースのコマンド群である。

usp STAT[編集]

usp STATはユニケージ開発手法で統計解析処理を行うためのコマンドセットである。データ分析言語「R」と同様の約80種類の基本的な統計手法をコマンド化している。「usp Tukubai」と組み合わせて使用する。

usp BOA[編集]

usp BOAはビッグデータ処理を行う場合に必要なソフトウェアアプライアンスである。

批判[編集]

  • 速いと主張しているが、UNIXではOS標準の含めユーザーアプリケーションの一つでしかなく、速いとする根拠とならない。
  • 一般的なミドルウェアを使わないがそのメリットが示されていない。[3]
  • バッチ処理が比較的得意でリアルタイムトランザクションに向いていない。
  • 保存するデータ量が多くなる。もっとも近年のストレージ容量の劇的な増大で十分カバーできる。[4]
  • クラウドとの相性が悪い[5]
  • 長期的な保守が難しい[5]
  • サーバ負荷に弱い[5]
  • 扱える人材を確保しにくい[5]
  • 開発者体験が悪い[5]

実績と評価[編集]

脚注[編集]

[脚注の使い方]
  1. ^ IT Leaders 2011年1月号 主要な業務アプリケーションの“ 特急開発”を想定したツール・方法論”. IT Leaders (2021年12月9日). 2021年12月9日閲覧。
  2. ^ USP研究所 | ユニバーサル・シェル・プログラミング研究所” (日本語). USP研究所 | ユニバーサル・シェル・プログラミング研究所. 2022年7月27日閲覧。
  3. ^ https://www.usp-lab.com/qa.html
  4. ^ https://www.usp-lab.com/methodology.html#method2
  5. ^ a b c d e f ハンズラボが採用しているユニケージという謎テクノロジーについて 第4回”. ハンズラボ (2016年4月18日). 2020年10月8日閲覧。
  6. ^ 森英信 (2009年4月20日). “情シス、ベンダーがそれぞれの仕事を全うすることがベストな関係を生む~良品* 計画がシステムを内製する理由”. EnterprizeZine. 株式会社翔泳社. 2013年3月28日閲覧。
  7. ^ 目次康男 (2009年7月17日). “独自の手法で10倍速開発 7割主義で変化対応力を高める 良品計画”. 株式会社 日経BP. 2013年3月28日閲覧。
  8. ^ 清嶋直樹 (2010年7月16日). “[IT Japan 2010]「経費や人を減らさなくても利益は出せる」---成城石井の大久保恒夫社長”. 株式会社 日経BP. 2013年3月28日閲覧。
  9. ^ ソフトウェア・プロダクト・オブ・ザ・イヤー2008 を決定 (PDF)”. 独立行政法人 情報処理推進機構 (2008年10月9日). 2013年7月12日閲覧。
  10. ^ ハンズラボが採用しているユニケージという謎テクノロジーについて 第1回”. ハンズラボ (2015年2月25日). 2020年10月8日閲覧。
  11. ^ a b ハンズラボとユニケージのあゆみ”. ハンズラボ (2020年1月28日). 2020年10月8日閲覧。

外部リンク[編集]