20
第七回 カーネル/ VM 探検隊 2012/4/22 @東京 © usp lab. 2012 コマンドとシェルスクリプトで企業システムを作る USP 研究所の取り組み 有限会社ユニバーサル・シェル・プログラミング研究所 上田隆一

2012年4月22日 カーネル/VM探検隊

Embed Size (px)

DESCRIPTION

実際に使った発表資料を少しマイルドにしてあります。

Citation preview

Page 1: 2012年4月22日 カーネル/VM探検隊

第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

コマンドとシェルスクリプトで企業システムを作る

― USP 研究所の取り組み

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

上田隆一

Page 2: 2012年4月22日 カーネル/VM探検隊

2第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

本日の発表内容

1. 会社の話

ちゃんと仕事をしている

2. 技術の話

かなり独創的

3. お知らせ

「 かなり独創的な方法で、ちゃんと仕事をしている話」(そしてお知らせも聞いてください)

Page 3: 2012年4月22日 カーネル/VM探検隊

3第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

その前に自己紹介(誰?)

名前:上田隆一 USP 研究所社員 @ uecinfo USP 友の会

会長 @usptomo の中の人 bash で CGI を書く人

その他 連載:開眼シェルスクリプト( SD 誌) 「Ryuichi Ueda robotics」で検索

Page 4: 2012年4月22日 カーネル/VM探検隊

4第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

USP 研究所 シェルスクリプトでシステム開発する会社

社員数:20人++ 元受け・少人数で開発・自社開発指導

Page 5: 2012年4月22日 カーネル/VM探検隊

5第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

自社開発指導

顧客企業の情報システム部にて・・・ CUI で OS を使う講習 vim の講習 awk sed ・ の講習 シェルスクリプトの書き方講習 イントラ用 CGI の書き方講習 ・・・

Page 6: 2012年4月22日 カーネル/VM探検隊

6第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

「 いわゆる SI 業界」の常識

ウォーターフォール

「 どの RDBMS(以下 DB)を入れるか」から始まる

Page 7: 2012年4月22日 カーネル/VM探検隊

7第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

なぜそうなるか?

問い

A) 実績ある企業(見積もり1億円)

B) 知らない企業(見積もり3千万円)

最終的にどっちが選ばれるか分からないが、B は警戒される。

「 あなたは長年卵焼きを製造販売している会社の社長です。最近、1台の卵焼きマシーンがへたってきました。予算1億円、納期半年で新型マシーンを発注したいと考えています。どこに頼みますか?」

Page 8: 2012年4月22日 カーネル/VM探検隊

8第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

システム開発は(卵焼きマシーンより)厄介

見えない 「 安い」といわれても実物がどんなものになるか分からない

完成と同時に分かる

失敗リスク 抱える人・ものが多くなる

Page 9: 2012年4月22日 カーネル/VM探検隊

9第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

そんなに人がいない。どう戦うか?

実績をコツコツと 自分たちで作ってもらう

仲間作り 我々の取り組みを知ってもらう

失敗しない仕組みを 人 マニュアル 見通しのよいアーキテクチャ

Page 10: 2012年4月22日 カーネル/VM探検隊

10第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

USP手法(ユニケージ)

コマンド+シェルスクリプト

データをテキストファイルで持つ ファイルシステムを使う

余計なソフトウェアを入れない(ブラックボックスを作らない)

コマンド、 apache NFS、 、その他標準のもの

データを整理整頓するノウハウの塊 自由度の高いファイルシステムにデータ基盤を作る

Page 11: 2012年4月22日 カーネル/VM探検隊

11第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

データの整理整頓(レベル分け)

実社会でのデータの流れを意識 データ基盤の構築

受け取った伝票は捨てないで綴じておく →レベル1 綴じた伝票をノートに全部書き出して台帳とする →レベル2 台帳からなにか統計データを集計する →レベル3

データを利用するアプリケーション 統計データを加工、聞かれたら答えるデータを準備 →レベル4 (レベル5もある)

Page 12: 2012年4月22日 カーネル/VM探検隊

12第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

実物 ―ウェブサイトのアクセス解析

ごちゃごちゃしたログをグラフィカルに表示するまで レベル1→4のプロセスを踏む

生のログウェブ画面

Page 13: 2012年4月22日 カーネル/VM探検隊

13第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

レベル1

レベル2 キーを左に、キーの整形・ソート、 awk で扱える形式

$ tail -n 1 access_log1.2.3.4 - - [21/Apr/2012:06:15:10 +0900] "GET /TUKUBAI_MAN/CGI/TUKUBAI_MAN.CGI?POMPA=MAN1_yarr HTTP/1.1" 200 16814 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

$ tail -n 1 ACCESS_LOG.CURRENT20120421 062410 1.2.3.4 - - GET_/COMMON/HTML/rss20.xml_HTTP/1.1 304 - - Feedfetcher-Google;_(+http://www.google.com/feedfetcher.html;_6_subscribers;_feed-id=4796065779311373044)

Page 14: 2012年4月22日 カーネル/VM探検隊

14第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

レベル3 項目別に集計 様々な切り口で

有意な情報を作成

$ tail VISIT/VISIT_COUNT.HOUR20120420 18 620120420 19 520120420 20 420120420 21 520120420 22 420120420 23 2220120421 00 7820120421 01 2320120421 02 1020120421 03 7

例)時間ごとの訪問者数

Page 15: 2012年4月22日 カーネル/VM探検隊

15第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

レベル4 表示する形式にしておく

$ cat HIT.ACCUM89138$ cat UPDATE.TIME2012 年& nbsp; 4月& nbsp;21 日& nbsp;土曜日& nbsp;06:40:01 JST$ tail -n 5 VISIT_COUNT.HOUR.REV20120406 09 520120406 08 420120406 07 620120406 06 420120406 05 1

Page 16: 2012年4月22日 カーネル/VM探検隊

16第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

「DB を使う」方法との差異

DB v.s. テキスト という話ではない 「DB を使う」は道具の話 レベル1-5はアーキテクチャの話なのでもっと親切

データを整理して失敗を避ける仕組み

レベル1-5を実現する道具: DB よりも生の UNIX DB は木構造の概念が薄い→ディレクトリの方が便利 ファイルからファイルへの変換は伝統的な UNIX そのもの

ファイルの入力リダイレクト => コマンド => パイプ => コマンド => 出力リダイレクト

Page 17: 2012年4月22日 カーネル/VM探検隊

17第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

USP手法(ユニケージ)

コマンド+シェルスクリプト コマンド

C言語で爆速

シェルスクリプト プログラムというよりは、レベル間をつなぐ変換器

(データの方が大事)

データをテキストファイルで持つ 余計なソフトを入れない( black box を作らない)

データを整理整頓するノウハウの塊

Page 18: 2012年4月22日 カーネル/VM探検隊

18第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

デモ

ログファイル変換のシェルスクリプト 速いソート オープン版

Page 19: 2012年4月22日 カーネル/VM探検隊

19第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

もし興味があったら・・・

usp engineers' community (UEC) https://uec.usp-lab.com, @uecinfo

Open-usp-Tukubai オープン版で SQL ライクな処理をするコマンドを公開 GitHub, FreeBSD ports /usr/ports/devel/open-usp-tukubai/ ( )

SoftwareDesign 連載: 「開眼シェルスクリプト」

Page 20: 2012年4月22日 カーネル/VM探検隊

20第七回 カーネル/VM探検隊 2012/4/22 @東京               © usp lab. 2012

おわりに

USP 研究所は・・・ ファイルシステム上にデータを整理 UNIX系 OS を極限まで使用 爆速を目指す