CodeZine(コードジン)

特集ページ一覧

早く、安く、うまくシステムを刷新! 驚異的なパフォーマンスを誇るユニケージ開発手法【デブサミ2019夏】

【C-8】はやい・やすい・うまく動くシェルスクリプトの極意

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2019/10/18 12:00

 ユニケージ開発手法は、Unix系OSにおいてコマンドとシェルスクリプトでシステムを開発する手法である。Unix系OSの基本機能のみを使用して、高速にデータ処理を実行できる。ユニバーサル・シェル・プログラミング研究所はこの手法の商標権を持ち、かつ独自コマンドの開発を続けている企業だ。同社 SI統括部長の井上祐一氏が、ユニケージ開発技法の持つ利点をデモンストレーションを交えながら解説した。

有限会社ユニバーサル・シェル・プログラミング研究所 SI統括部長 井上祐一氏
有限会社ユニバーサル・シェル・プログラミング研究所 SI統括部長 井上祐一氏

実装が用意。かつパフォーマンスに優れるユニケージ開発手法

 ユニケージ開発手法は、データをテキストファイルで持ち、単機能のコマンドをパイプラインやリダイレクトなどと組み合わせてデータ処理を行うことに特徴がある。

 Unix系OSが持つ既存コマンドでは処理ができなかったり、コンピューターの計算コストが高くなったりしてしまう場合には、新規の独自コマンドが作成される。独自コマンドの種類や仕様の管理を行っているのが、ユニバーサル・シェル・プログラミング研究所である。

 「データを扱いながら実際にコマンドを打って実演するほうが、会場のみなさまにユニケージ開発手法の利点が伝わりやすいでしょう。まずはデモンストレーションを実施します」

 内容は「全国にチェーン展開しているスーパーマーケットの運営本部に、30店舗から売上データが集められたと仮定。それらのデータから、商品カテゴリーごとに売数、売上、粗利を集計して、帳票を作成する。売上データは1000万件および1億件」というものだ。

デモンストレーションで示されたユニケージ開発の例
デモンストレーションで示されたユニケージ開発の例

 この条件だけを聞くと「プログラムの実装は複雑になるのでは」「データ件数が多いため、処理完了までに時間がかかるのでは」と考える方もいるかもしれない。しかし、ユニケージ開発手法を用いれば、上図のようにわずか15行でプログラムを記述できる。そして、デモンストレーション内で1億件のデータに対してかかった処理時間はわずか6.7秒程度。驚異的なパフォーマンスの良さだ。

 「過去にユニケージ開発手法を導入してくださったお客さまのシステムでも、かなりの処理高速化が実現できています」

 そう語り、井上氏は導入事例を提示する。例えば同社の顧客であるテプコシステムズ(東京電力グループ)は、メーターデータ管理システムと営業料金システムの接続部分のバッチ処理において、ユニケージ開発手法を導入したことで従来の56倍の高速化を達成。また、稼働統計処理は従来の720倍の高速化を達成したという。目をみはる改善である。

 「レガシーなプログラムは、歴史があるからこそデータ量が多かったり、プログラムの書き方が良くなかったりして、処理に時間がかかってしまうことがあります。

 コンピューターのハード部分を置き換えるのは簡単ですが、それによって改善できるパフォーマンスには限界があるでしょう。だからこそ『ユニケージ開発手法を用いてもっと速くしませんか』という提案をお客さまにはさせていただいております」

ユニケージ開発手法の基本思想

 ユニケージ開発手法は、以下のようなUNIXの思想に大きな影響を受けている。

  1. スモール・イズ・ビューティフル
  2. 一つのプログラムには一つのことだけをやらせる(コマンド)
  3. できるだけ早く試作する
  4. 効率より移植性を優先する
  5. データはテキスト形式で保存する
  6. コマンドを梃子(てこ)として使う(再利用性)
  7. シェルスクリプトでアプリケーションを記述する
  8. すべてのプログラムをフィルタとして設計する(パイプ)
  • 出典:Mike Gancarz(著)、芳尾 桂(監訳)『UNIXという考え方―その設計思想と哲学』(オーム社開発局、2001年)

 こうした設計思想が、どのような特徴に結実しているのかを見ていきたい。まず、「データが命である」ことをユニケージ開発手法では信条とする。発生データは棄てず、すべて貯めておく。かつ実データを入手してから開発を始めることに特徴がある。

 「効率よりも移植性を重視する」というのも要点だ。コンピューターは時代の変化とともに処理性能が良くなるため、ソフトウェアを他のサーバーに移植するケースは頻繁に発生する。移植性の悪いプログラムでは、そうしたユースケースに耐えられない。ユニケージ開発手法ではシェルスクリプトを活用するため、移植性は極めて高い。シェルスクリプトはほぼすべてのUnix系OSでも動くうえに、基本仕様の変化が50年間ほとんどないからだ。

 さまざまな技術を混在させないことで「プログラムをできるだけ簡単にする」という特徴もある。技術的な制約を少なくし、ユーザーが多種多様なシステムを構築できるようにするためだ。

 こうした特徴が「システムは生き物」という設計思想に結びついている。見栄えや操作性を良くすることよりも、システムが柔軟に変化できることが大事だという哲学のもと、ユニケージ開発手法は成り立っているのだ。

 こうした利点から、数多くの企業がこの手法を採用している。

ユニケージ開発手法は多くの企業で採用されている
ユニケージ開発手法は多くの企業で採用されている

 製品ラインナップも豊富だ。OS標準のコマンドと組み合わせて使用するUSP研究所製のコマンドセット「usp Tukubai」や、クラスタシステムを開発するためのコマンドセット「usp BOA」、統計解析処理を行うためのコマンドセット「usp STAT」、Windows10/Windows Server 2016 WSL(Windows Subsystem for Linux)対応の「usp Tukubai for Windows」、macOS対応の「usp Tukubai for Mac」などがある。

 また、国内外に数多くの開発・研究パートナーや販売代理店を有している。「日本から発信した技術で世界と戦えることは、ユニバーサル・シェル・プログラミング研究所の事業が持つ大きな魅力です」と井上氏は力説する。

 「ユニケージ開発手法を導入することで、かつて何日もかかっていた処理を1日で完了させられるようになれば、企業の経営に大きなインパクトが生じるでしょう。だからこそ、私はこの開発手法に多大なる可能性を感じています。

 人の仕事を楽にするにはどうしたらいいのか。より良い方向にお客さまの事業が発展するにはどんなコマンドをつくるべきなのか。そうした課題と日々向き合いながら、私たちは活動を続けています」

お問い合わせ

 有限会社ユニバーサル・シェル・プログラミング研究所

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • CodeZine編集部(コードジンヘンシュウブ)

    CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5