» www.Giftbox.Az - Bir birindən gözəl hədiyyə satışı
ウィキペディアランダム
毎日カテゴリ
共有: WhatsappFacebookTwitterVK

ユニケージ開発手法

ユニケージ開発手法 (ユニケージかいはつしゅほう、: Unicage software development method)とは業務システム用の商用開発手法の1つで、ベンチャー企業ユニバーサル・シェル・プログラミング研究所(USP研究所)が考案し独占的な権利を所有しライセンス販売を行っている。同社および開発パートナー契約を結んだユニケージ認定エンジニアが商用コマンドセットusp Tukubaiを使って開発を行う。一般的なプログラミング言語は非技術者には習得が困難であるという前提の元、非技術者でも習得が容易であるという理由でシェルスクリプトでシステム開発するのが特徴である。同社はシェルスクリプトを「もっとも歴史が長いローコードアプリケーションプラットフォーム」だと主張している[1]。データベースの代わりやサーバー側の処理にしか適用できず、ユーザーインターフェースの開発にはHTML, Ruby, .NET Framework, Reactなどを使う[2]。Pythonを目の敵としており、流行り物にを出すなと言っているが、Pythonが誕生した1991年に比べてユニケージは2005年生まれであり、むしろユニケージの方が流行りものである[1]。さらにプロプライエタリなソフトウェアに依存するため寿命が短い。

特徴

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

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

ソフトウェア開発の技術者(プログラマー)ではない現場の作業員(非エンジニア)が開発することを想定している。現場の作業員でもシェルスクリプト(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を使用することが前提で、一般的なシェルスクリプトの書き方とは異なる独自のコーディング規約にしたがって利用する。この作法はプログラミング言語の一般的な常識と全く異なるものであり、例えば条件分岐やループや変数や関数は非推奨である。そのためシェルスクリプトでありながら一般的なシェルスクリプトとは全く異なる書き方をする。これは非エンジニアにはプログラミング言語の習得は困難であるという独自の理論に基づき、シェルスクリプトをローコードアプリケーションプラットフォームとして再解釈し、シェルスクリプトのサブセットとして利用しているからである。

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

  • 作法の例[4]
    • ファイルを上書きしない。なるべく消去しない。
    • シェルスクリプトの相互呼び出しを行わない。
    • データベース管理システムではなくファイルを用いる。
    • ユニケージ開発手法で定められたデータファイル、シェルスクリプトの置き場所の標準化に従う。
    • 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」と組み合わせて使用する。

ただし,「R」のような一般的な統計解析ソフトで標準的に用意されている主成分分析やクラスタリング,分散分析といったものはサポートされていない模様[5]

usp BOA

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

批判

  • シェルスクリプトは単純な処理の自動化のためのもので、ミッションクリティカルな大規模システム開発やIoTやAI用途に使うことを想定しておらず極めて適していない。
  • シェルスクリプトの移植性は低く、OSの基本的な機能だけを使うと、生産性が大幅に低くなる上に、異なるOSへの移行が困難になる。
  • ユニケージはOSに近い所で動くから速いという謎理論を主張しているが、OS標準コマンドを含めユーザーアプリケーションの一つでしかなく、速いとする根拠とならない。
  • 一般的なミドルウェアを使わないがそのメリットが示されていない。[6]
  • ミドルウェアを使用しないためメモリを活用できず応答速度が悪くなりコンピュータの性能を引き出せない
  • バッチ処理は比較的得意だがリアルタイムトランザクションに向いていない
  • 保存するデータ量が多くなる。もっとも近年のストレージ容量の劇的な増大で十分カバーできる。[7]
  • 一台のコンピュータでの利用を前提しているため、多数のコンピュータを活用するクラウドとの相性が悪い[8]
  • 可読性を考慮せずコマンドを書き連ねるだけなので大規模・長期的な保守が難しい[8]
  • パイプとコマンド呼び出しを多用するためパフォーマンスが悪くスケールせずサーバ負荷に弱い[8]
  • ユニケージ開発手法を習得したユニケージ認定エンジニアを確保しにくい[8]
  • 言語機能が劣るシェルスクリプトをさらに制限した方法で使用するため開発者体験が極めて悪い[8]
  • データベースを使わず独自のファイルの配置場所や形式を使用するため他のソフトウェアとの連携がしづらい
  • 独占された商用開発手法なのでオープンソースを使う場合に比べてベンダーロックインになりやすい
  • 1980年代のUNIX時代の古臭い手法、SIer、COBOL、そういった臭いで満たされた技術を、最新技術に見せかけるために新しい用語でごまかす宣伝的手法
  • 正直主張している内容が技術的に荒唐無稽かつ意味不明であるため、USP研究所全体の技術力の低さしか感じられない

実績と評価

  • 成城石井良品計画などで、自社システムの内製用ツールとして2009年に導入された[9][10][11]
  • 「ユニケージ開発手法および同開発コマンドセット」がIPA主催、「ソフトウェア・プロダクト・オブ・ザ・イヤー 2008 システム・基盤 分野」を受賞している[12]
  • 東急ハンズにおいてハンズラボの技術の中核として採用されていた[13][14][8]
    • ただし、2019年時点の同社開発部では「技術的負債」との評価がなされている[14]
  • 今、ユニケージ開発手法にギークが熱狂するワケ【USP研究所代表&オープンソースOSコミッター対談】(広告記事)では、USP研究所の代表取締役「當仲寛哲」とオープンソースOSコミッターとしてBSDコンサルティング株式会社」の取締役「後藤大地」の対談が掲載されている。このBSDコンサルティング株式会社はUSP研究所の完全子会社であり當仲寛哲はBSDコンサルティング株式会社の代表取締役でもある。BSDコンサルティング株式会社からみると代表取締役と取締役の対談ということになるが、その事実は対談では伏せられている。

アット・ア・グランス性

アット・ア・グランス性とはUSP研究所の完全子会社であるBSDコンサルティング株式会社の取締役の後藤大地によって考え出された言葉である。

  • パイプで処理する
  • 関数を使わない
  • 分岐は避ける
  • 繰り返しは避ける
  • 処理はその場所で完結させる
  • 上から下へ読めるようにする
  • 論理的な美しさよりも書き換えやすさを重視する
  • ほかのファイルはインクルードしない

脚注

[脚注の使い方]
  1. ^ “ユニケージにおいては、UNIX のシェルスクリプトを使いますが、シェルスクリプトは、現在、世界の主流になりつつあるローコードアプリケーションプラットフォームの中で、もっとも歴史が長く、シンプルで、拡張性や移植性が富むものです。”. 2022年9月9日閲覧。
  2. ^ “UIを作る手段にこだわりはありません。HTML, Ruby, .NET Framework, React など様々な手法で開発が可能です。ユニケージはデータベースの代わりや、サーバ側の処理のためなどに使います。”. 2022年9月12日閲覧。
  3. ^ “IT Leaders 2011年1月号 主要な業務アプリケーションの“ 特急開発”を想定したツール・方法論”. IT Leaders (2021年12月9日). 2021年12月9日閲覧。
  4. ^ “USP研究所 | ユニバーサル・シェル・プログラミング研究所”. USP研究所 | ユニバーサル・シェル・プログラミング研究所. 2022年7月27日閲覧。
  5. ^ “usp Tukubai 統計コマンド(usp STAT)”. ユニバーサル・シェル・プログラミング研究所. 2022年12月18日閲覧。
  6. ^ https://www.usp-lab.com/qa.html
  7. ^ https://www.usp-lab.com/methodology.html#method2
  8. ^ a b c d e f “ハンズラボが採用しているユニケージという謎テクノロジーについて 第4回”. ハンズラボ (2016年4月18日). 2020年10月8日閲覧。
  9. ^ “情シス、ベンダーがそれぞれの仕事を全うすることがベストな関係を生む~良品* 計画がシステムを内製する理由”. EnterprizeZine. 株式会社翔泳社 (2009年4月20日). 2013年3月28日閲覧。
  10. ^ “独自の手法で10倍速開発 7割主義で変化対応力を高める 良品計画”. 株式会社 日経BP (2009年7月17日). 2013年3月28日閲覧。
  11. ^ “[IT Japan 2010]「経費や人を減らさなくても利益は出せる」---成城石井の大久保恒夫社長”. 株式会社 日経BP (2010年7月16日). 2013年3月28日閲覧。
  12. ^ “ソフトウェア・プロダクト・オブ・ザ・イヤー2008 を決定” (PDF). 独立行政法人 情報処理推進機構 (2008年10月9日). 2013年7月12日閲覧。
  13. ^ “ハンズラボが採用しているユニケージという謎テクノロジーについて 第1回”. ハンズラボ (2015年2月25日). 2020年10月8日閲覧。
  14. ^ a b “ハンズラボとユニケージのあゆみ”. ハンズラボ (2020年1月28日). 2020年10月8日閲覧。

外部リンク

  • 有限会社ユニバーサル・シェル・プログラミング研究所
  • ユニケージ開発手法とは
  • Unicage Development Method - Its Philosophy and Technologies (Japanese Audio) - YouTube
ウィキペディア、ウィキ、本、library、論文、読んだ、ダウンロード、自由、無料ダウンロード、mp3、video、mp4、3gp、 jpg、jpeg、gif、png、画像、音楽、歌、映画、本、ゲーム、ゲーム。