ユニケージ開発手法
ユニケージ開発手法 (ユニケージかいはつしゅほう、 Unicage software development method)とは業務システム用の商用開発手法の1つで、ベンチャー企業ユニバーサル・シェル・プログラミング研究所(USP研究所)が考案し独占的な権利を所有しライセンス販売を行っている。同社および開発パートナー契約を結んだユニケージ認定エンジニアが商用コマンドセットusp Tukubaiを使って開発を行う。一般的なプログラミング言語は非技術者には習得が困難であるという前提の元、非技術者でも習得が容易であるという理由でシェルスクリプトでシステム開発するのが特徴である。同社はシェルスクリプトを「もっとも歴史が長いローコードアプリケーションプラットフォーム」だと主張している。データベースの代わりやサーバー側の処理にしか適用できず、ユーザーインターフェースの開発にはHTML, Ruby, .NET Framework, Reactなどを使う。Pythonを目の敵としており、流行り物にを出すなと言っているが、Pythonが誕生した1991年に比べてユニケージは2005年生まれであり、むしろユニケージの方が流行りものである。さらにプロプライエタリなソフトウェアに依存するため寿命が短い。
同社のビジネスモデルは、ユニケージコマンドセットやアプライアンス・パッケージのライセンス販売、ユニケージ開発手法の教育と初期構築とサポート業務である。システムの内製化を目指して初期システム構築のみをUSP研究所監修の元、ユニケージの基礎教育を行いながら開発パートナーやユーザー企業と連携して開発する。その後の機能追加に伴うメンテナンス自体は開発パートナーやユーザー企業自身で行うことも可能である。
ユニケージ開発手法は開発方法論とされているが無償で使えるものではない。利用するには独自コマンドセットなどを利用するための資格「ユニケージ認定エンジニア資格」に合格し、独自コマンドセットusp Tukubaiの使用ライセンス契約を結ぶことが必須である。
ソフトウェア開発の技術者(プログラマー)ではない現場の作業員(非エンジニア)が開発することを想定している。現場の作業員でもシェルスクリプト(bash)なら使える。ただし高度な書き方はしない。プログラマは次のようループを使った難しい書き方をする。
しかし非エンジニアを対象としているユニケージ開発手法のユニケージエンジニアは、素人でも理解できるような次のような冗長な書き方をする。以下はからの例である。
ユニケージ開発手法の発想で記述すると次のようになる。
繰り返し構文を使わなければ記述できない場合には、繰り返しの終了判断をループの最後に記述する。通常、whileは次のように最初に繰り返し終了判定を記述することが多い。
ユニケージ開発手法では次のように終了判定を繰り返し構文の一番最後に書く。
業務システムの開発を担当する現場の作業員は非エンジニアであり、繰り返し構文がでてくると理解が及ばないことがあるためである。開発効率は悪くなるが、非エンジニアでも理解できる書き方をすることで、高コストなソフトウェア開発の専門技術者が不要となり、結果的に開発コストを下げることができる。バッチ処理用途がメインで継続的に開発を行うことが目的ではなく、ハードウェアやプラットフォームが変わったとしても一度開発したソフトウェアを何十年も修正することなく動かすことを重視している。
データをプレーンテキストをベースとしたタグ形式・ネーム形式・フィールド形式と呼ばれるユニケージ用データ形式でデータを保存し、この形式を扱うために開発された100種類程度フィルタコマンドをシェルスクリプトから呼び出して利用することが技術の根幹となっている。
パイプで連結したコマンドは同時に起動するため、マルチプロセッサシステム上のカーネルで並列処理が行われることを期待してパイプを多用する。ただしソートや集計処理等の標準ストリームの入出力を遮るコマンドがパイプライン中にあったりパイプラインの個々のコマンドの処理速度が偏る場合は並列処理の効果は小さくなる。例えばパイプラインの途中にsortコマンドが存在する場合、sortコマンドの処理が完了するまでそれ以降のコマンドは処理を開始できず、またパイプでつないだコマンド中で一番遅いコマンドよりも速く処理を完了することはできない。パイプで連結するだけで十分な並列効果が得られない場合は同時に多数のプロセスを並列起動する必要がある。
ユニケージ開発手法には、テキストとしてのデータ、シェルスクリプトによるプログラミング、いくつかの専用コマンドを使うという型があり、業務をシステム化したい現場の担当者に開発のノウハウを伝承するという目的のために次のような心得三箇条をもっている。
人手の作業を模倣せよ。
誰でも読めるコードに訳せ。
とっとと終わらせ、飲みに行け。
ユニケージ開発手法では商用コマンドセットusp Tukubaiを使用することが前提で、一般的なシェルスクリプトの書き方とは異なる独自のコーディング規約にしたがって利用する。この作法はプログラミング言語の一般的な常識と全く異なるものであり、例えば条件分岐やループや変数や関数は非推奨である。そのためシェルスクリプトでありながら一般的なシェルスクリプトとは全く異なる書き方をする。これは非エンジニアにはプログラミング言語の習得は困難であるという独自の理論に基づき、シェルスクリプトをローコードアプリケーションプラットフォームとして再解釈し、シェルスクリプトのサブセットとして利用しているからである。
ユニケージ開発手法ではコーディング規約に則った独自のディレクトリ構造やファイル形式を用い、独自の考え方や独自の専門用語を用い、ユニケージ専用コマンドを利用して業務システムを開発する独自のフレームワークである。同社が独自で考案したユニケージ開発手法を習得し、ユニケージ認定エンジニアに育てるためのコストが必要となる。この独自コマンドの存在とこのノウハウに基づく「作法」により、大規模システムへのシェルスクリプト適用が可能であると主張している。
ファイルを上書きしない。なるべく消去しない。
シェルスクリプトの相互呼び出しを行わない。
データベース管理システムではなくファイルを用いる。
ユニケージ開発手法で定められたデータファイル、シェルスクリプトの置き場所の標準化に従う。
forやwhile、関数や変数の使用を控える。
プロセス間通信にファイルを使う。
ファイルの冒頭に自ファイル名、日付・連絡先、処理の前提条件・結果、マジックナンバーの意味を書く。
独自コマンドの種類や仕様についてはユニバーサル・シェル・プログラミング研究所が管理している。アプリケーション開発者は、コマンド作成や改変を行わない。既存のコマンドの組み合わせでは不可能であったり、時間的な費用(プログラマの作業時間、計算機の演算時間)が高くなる演算が見つかった場合、議論を経て新規コマンドを提供する。
新規コマンドの開発に慎重になることには、以下の理由がある。
コマンドの種類や仕様を各システムで画一化することで、管理費用が増大することを防ぐ。
自作コマンドの作成は時間がかかるため、コマンドの組み合わせ技を考えたり人に聞いたりする方が、結果としてアプリケーションプログラマの仕事が早く終わる。
usp Tukubaiは、ユニケージ開発手法を行うために開発された業務システム用の商用コマンド群である。データーベースの代わりとして使うミドルウェアの一種であり、高速に動作するようにC言語で作成されている。ターミナルから操作するインタラクティブなデータ処理作業から、業務システムの構築・業務用Webアプリケーションの構築まで、シェルスクリプトとUNIXの基本機能だけでは不足する機能を補うための開発コマンドである。ユニケージ開発手法を行うためには最低限uspTukubaiが必要となる。
基幹業務システム、情報分析システム、データバッチ処理、高速検索システム、勘定系システムなどにおける、シェルスクリプトが本来想定していない用途にシェルスクリプトを使えるようにするため開発されたUNIX環境用のコマンド群であり、開発パートナーや自社開発による内製化を目指すユーザー企業等にライセンス提供されている。
は上記エンタープライズ版usp Tukubaiコマンドの中から利用頻度の高いものをユニケージ普及のためにMITライセンスのもとでPythonを使って再実装されたオープンソースのコマンド群である。
usp STATはユニケージ開発手法で統計解析処理を行うためのコマンドセットである。データ分析言語「R」と同様の約80種類の基本的な統計手法をコマンド化している。「usp Tukubai」と組み合わせて使用する。
ただし,「R」のような一般的な統計解析ソフトで標準的に用意されている主成分分析やクラスタリング,分散分析といったものはサポートされていない模様.
usp BOAはビッグデータ処理を行う場合に必要なソフトウェアアプライアンスである。
シェルスクリプトは単純な処理の自動化のためのもので、ミッションクリティカルな大規模システム開発やIoTやAI用途に使うことを想定しておらず極めて適していない。
シェルスクリプトの移植性は低く、OSの基本的な機能だけを使うと、生産性が大幅に低くなる上に、異なるOSへの移行が困難になる。
ユニケージはOSに近い所で動くから速いという謎理論を主張しているが、OS標準コマンドを含めユーザーアプリケーションの一つでしかなく、速いとする根拠とならない。
一般的なミドルウェアを使わないがそのメリットが示されていない。
保存するデータ量が多くなる。もっとも近年のストレージ容量の劇的な増大で十分カバーできる。
一台のコンピュータでの利用を前提しているため、多数のコンピュータを活用するクラウドとの相性が悪い
可読性を考慮せずコマンドを書き連ねるだけなので大規模・長期的な保守が難しい
1980年代のUNIX時代の古臭い手法、SIer、COBOL、そういった臭いで満たされた技術を、最新技術に見せかけるために新しい用語でごまかす宣伝的手法
正直主張している内容が技術的に荒唐無稽かつ意味不明であるため、USP研究所全体の技術力の低さしか感じられない
成城石井、良品計画などで、自社システムの内製用ツールとして2009年に導入された。
「ユニケージ開発手法および同開発コマンドセット」がIPA主催、「ソフトウェア・プロダクト・オブ・ザ・イヤー 2008 システム・基盤 分野」を受賞している。
東急ハンズにおいてハンズラボの技術の中核として採用されていた。
ただし、2019年時点の同社開発部では「技術的負債」との評価がなされている。
(広告記事)では、USP研究所の代表取締役「當仲寛哲」とオープンソースOSコミッターとして」の取締役「後藤大地」の対談が掲載されている。このBSDコンサルティング株式会社はUSP研究所の完全子会社であり當仲寛哲はBSDコンサルティング株式会社の代表取締役でもある。BSDコンサルティング株式会社からみると代表取締役と取締役の対談ということになるが、その事実は対談では伏せられている。
とはUSP研究所の完全子会社であるBSDコンサルティング株式会社の取締役の後藤大地によって考え出された言葉である。