SlideShare a Scribd company logo
1 of 20
Download to read offline
コマンドとシェルスクリプトで企業システムを作る
          ― USP 研究所の取り組み



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



第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
本日の発表内容
    1.    会社の話
          ちゃんと仕事をしている
    2.    技術の話
          かなり独創的
    3.    お知らせ



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




第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
その前に自己紹介(誰?)
     名前:上田隆一
         USP 研究所社員 @ uecinfo
         USP 友の会
           
               会長
           
               @usptomo の中の人
           
               bash で CGI を書く人
         その他
           
               連載:開眼シェルスクリプト( SD 誌)
           
               「Ryuichi Ueda robotics」で検索



第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
USP 研究所
      シェルスクリプトでシステム開発する会社
          社員数:20人++
          元受け・少人数で開発・自社開発指導




第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
自社開発指導
        顧客企業の情報システム部にて・・・
            CUI で OS を使う講習
            vim の講習
            awk・ sed の講習
            シェルスクリプトの書き方講習
            イントラ用 CGI の書き方講習
            ・・・




第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
「 いわゆる SI 業界」の常識

         ウォーターフォール

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




第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
なぜそうなるか?
         問い
        「 あなたは長年卵焼きを製造販売している会社の社長です。
        最近、1台の卵焼きマシーンがへたってきました。
        予算1億円、納期半年で新型マシーンを
        発注したいと考えています。どこに頼みますか?」

             A)   実績ある企業(見積もり1億円)
             B)   知らない企業(見積もり3千万円)


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

第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
システム開発は(卵焼きマシーンより)厄介
      見えない
          「 安い」といわれても実物がどんなものになるか分からない
            
                完成と同時に分かる


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




第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
そんなに人がいない。どう戦うか?
        実績をコツコツと
        自分たちで作ってもらう

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


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

第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
USP 手法(ユニケージ)
         コマンド+シェルスクリプト

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

         余計なソフトウェアを入れない (ブラックボックスを作らない)
             コマンド、 apache、NFS、その他標準のもの


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



第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
データの整理整頓(レベル分け)
     実社会でのデータの流れを意識
         データ基盤の構築
           
               受け取った伝票は捨てないで綴じておく                              →レベル1
           
               綴じた伝票をノートに全部書き出して台帳とする                          →レベル2
           
               台帳からなにか統計データを集計する                               →レベル3

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




第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
実物        ―ウェブサイトのアクセス解析
        ごちゃごちゃしたログをグラフィカルに
         表示するまで
            レベル1→4のプロセスを踏む




             生のログ
                                                               ウェブ画面


第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
    レベル1
      $ tail -n 1 access_log
      1.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)"

     レベル2
         キーを左に、キーの整形・ソート、 awk で扱える形式
      $ tail -n 1 ACCESS_LOG.CURRENT
      20120421 062410 1.2.3.4 - - GET_/COMMON/HTML/
      rss20.xml_HTTP/1.1 304 - - Feedfetcher-Google;
      _(+http://www.google.com/feedfetcher.html;_6_subscri
      bers;_feed-id=4796065779311373044)


第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
    レベル3
            項目別に集計
                                        $ tail VISIT/VISIT_COUNT.HOUR
            様々な切り口で                    20120420 18 6
             有意な情報を作成                   20120420 19 5
                                        20120420 20 4
                                        20120420 21 5
                                        20120420 22 4
                                        20120420 23 22
                                        20120421 00 78
                                        20120421 01 23
                                        20120421 02 10
                                        20120421 03 7

                                                  例)時間ごとの訪問者数


第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
    レベル4
            表示する形式にしておく

        $ cat HIT.ACCUM
        89138
        $ cat UPDATE.TIME
        2012 年& nbsp; 4 月& nbsp;21 日& nbsp; 土曜日
        & nbsp;06:40:01 JST
        $ tail -n 5 VISIT_COUNT.HOUR.REV
        20120406 09 5
        20120406 08 4
        20120406 07 6
        20120406 06 4
        20120406 05 1



第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
「DB を使う」方法との差異
      DB v.s. テキスト という話ではない
          「DB を使う」は道具の話
          レベル1-5はアーキテクチャの話なのでもっと親切
            
                データを整理して失敗を避ける仕組み


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




第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
USP 手法(ユニケージ)
         コマンド+シェルスクリプト
             コマンド
              
                  C 言語で爆速
             シェルスクリプト
              
                  プログラムというよりは、レベル間をつなぐ変換器
                  (データの方が大事)


         データをテキストファイルで持つ
         余計なソフトを入れない( black box を作らない)
         データを整理整頓するノウハウの塊

第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
デモ
      ログファイル変換のシェルスクリプト
      速いソート
      オープン版




第七回 カーネル/ 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 連載: 「開眼シェルスクリプト」




第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
おわりに
        USP 研究所は・・・
            ファイルシステム上にデータを整理
            UNIX 系 OS を極限まで使用
            爆速を目指す




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

More Related Content

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

OpenDocument interoperability test workshop after story
OpenDocument interoperability test workshop after storyOpenDocument interoperability test workshop after story
OpenDocument interoperability test workshop after storyMakoto Takizawa
 
プロ文.com 勉強会 Phase 1
プロ文.com 勉強会 Phase 1プロ文.com 勉強会 Phase 1
プロ文.com 勉強会 Phase 1Hiroki Toyokawa
 
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたYasuharu Seki
 
future-study on 2012.09.22 #metacon
future-study on 2012.09.22 #metaconfuture-study on 2012.09.22 #metacon
future-study on 2012.09.22 #metaconTaro Hirose
 
Nseg第32回勉強会
Nseg第32回勉強会Nseg第32回勉強会
Nseg第32回勉強会ko ty
 
EclipseCon Europe 2019 modeling report
EclipseCon Europe 2019 modeling reportEclipseCon Europe 2019 modeling report
EclipseCon Europe 2019 modeling reportAkira Tanaka
 
Lync でできる? 仕事効率化
Lync でできる? 仕事効率化Lync でできる? 仕事効率化
Lync でできる? 仕事効率化Manato KAMEYA
 
テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化Yukei Wachi
 
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべてApple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべてMasaru Gushiken
 
スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果Koichiro Sumi
 
そろそろレガシーな.Net開発をやめなイカ?
そろそろレガシーな.Net開発をやめなイカ?そろそろレガシーな.Net開発をやめなイカ?
そろそろレガシーな.Net開発をやめなイカ?Yuta Matsumura
 
オープンデータとWordPress
オープンデータとWordPressオープンデータとWordPress
オープンデータとWordPressKouji Kozaki
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜Hideki Takase
 
Code4Lib 2011 参加報告会 ONO Haruki
Code4Lib 2011 参加報告会 ONO HarukiCode4Lib 2011 参加報告会 ONO Haruki
Code4Lib 2011 参加報告会 ONO HarukiCode4Lib JAPAN
 
ROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+αROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+αHideki Takase
 
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組みKouji Matsui
 
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合dstn
 
コンソールゲームを世界展開してみた - JAWS DAYS 2015
コンソールゲームを世界展開してみた - JAWS DAYS 2015コンソールゲームを世界展開してみた - JAWS DAYS 2015
コンソールゲームを世界展開してみた - JAWS DAYS 2015Ryo Nakamaru
 

Similar to 2012年4月22日 カーネル/VM探検隊 (20)

OpenDocument interoperability test workshop after story
OpenDocument interoperability test workshop after storyOpenDocument interoperability test workshop after story
OpenDocument interoperability test workshop after story
 
プロ文.com 勉強会 Phase 1
プロ文.com 勉強会 Phase 1プロ文.com 勉強会 Phase 1
プロ文.com 勉強会 Phase 1
 
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみた
 
future-study on 2012.09.22 #metacon
future-study on 2012.09.22 #metaconfuture-study on 2012.09.22 #metacon
future-study on 2012.09.22 #metacon
 
Nseg第32回勉強会
Nseg第32回勉強会Nseg第32回勉強会
Nseg第32回勉強会
 
20120907 osc-lt-docja
20120907 osc-lt-docja20120907 osc-lt-docja
20120907 osc-lt-docja
 
EclipseCon Europe 2019 modeling report
EclipseCon Europe 2019 modeling reportEclipseCon Europe 2019 modeling report
EclipseCon Europe 2019 modeling report
 
Lync でできる? 仕事効率化
Lync でできる? 仕事効率化Lync でできる? 仕事効率化
Lync でできる? 仕事効率化
 
テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化
 
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべてApple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
 
スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果
 
Odl intro20141029
Odl intro20141029Odl intro20141029
Odl intro20141029
 
そろそろレガシーな.Net開発をやめなイカ?
そろそろレガシーな.Net開発をやめなイカ?そろそろレガシーな.Net開発をやめなイカ?
そろそろレガシーな.Net開発をやめなイカ?
 
オープンデータとWordPress
オープンデータとWordPressオープンデータとWordPress
オープンデータとWordPress
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
Code4Lib 2011 参加報告会 ONO Haruki
Code4Lib 2011 参加報告会 ONO HarukiCode4Lib 2011 参加報告会 ONO Haruki
Code4Lib 2011 参加報告会 ONO Haruki
 
ROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+αROSCon2019 参加報告:オーバビュー+α
ROSCon2019 参加報告:オーバビュー+α
 
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
 
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
 
コンソールゲームを世界展開してみた - JAWS DAYS 2015
コンソールゲームを世界展開してみた - JAWS DAYS 2015コンソールゲームを世界展開してみた - JAWS DAYS 2015
コンソールゲームを世界展開してみた - JAWS DAYS 2015
 

More from Ryuichi Ueda

第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライドRyuichi Ueda
 
シェル・ワンライナー160本ノック
シェル・ワンライナー160本ノックシェル・ワンライナー160本ノック
シェル・ワンライナー160本ノックRyuichi Ueda
 
日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナーRyuichi Ueda
 
シェル芸勉強会と会場の話
シェル芸勉強会と会場の話シェル芸勉強会と会場の話
シェル芸勉強会と会場の話Ryuichi Ueda
 
移動ロボットのナビゲーション
移動ロボットのナビゲーション移動ロボットのナビゲーション
移動ロボットのナビゲーションRyuichi Ueda
 
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆Ryuichi Ueda
 
第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライド第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライドRyuichi Ueda
 
bash(の変な使い方)update
bash(の変な使い方)updatebash(の変な使い方)update
bash(の変な使い方)updateRyuichi Ueda
 
第41回シェル芸勉強会 午後オープニング
第41回シェル芸勉強会 午後オープニング第41回シェル芸勉強会 午後オープニング
第41回シェル芸勉強会 午後オープニングRyuichi Ueda
 
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...Ryuichi Ueda
 
20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トーク20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トークRyuichi Ueda
 
第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロ第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロRyuichi Ueda
 
シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習Ryuichi Ueda
 
ROSチュートリアル ROBOMECH2018
ROSチュートリアル ROBOMECH2018ROSチュートリアル ROBOMECH2018
ROSチュートリアル ROBOMECH2018Ryuichi Ueda
 
poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018Ryuichi Ueda
 
Robot frontier lesson3 2018
Robot frontier lesson3 2018Robot frontier lesson3 2018
Robot frontier lesson3 2018Ryuichi Ueda
 
Robot frontier lesson2 2018
Robot frontier lesson2 2018Robot frontier lesson2 2018
Robot frontier lesson2 2018Ryuichi Ueda
 
Robot frontier lesson1 2018
Robot frontier lesson1 2018Robot frontier lesson1 2018
Robot frontier lesson1 2018Ryuichi Ueda
 
第34回シェル芸勉強会
第34回シェル芸勉強会第34回シェル芸勉強会
第34回シェル芸勉強会Ryuichi Ueda
 
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」Ryuichi Ueda
 

More from Ryuichi Ueda (20)

第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド
 
シェル・ワンライナー160本ノック
シェル・ワンライナー160本ノックシェル・ワンライナー160本ノック
シェル・ワンライナー160本ノック
 
日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー日本ロボット学会第139回ロボット工学セミナー
日本ロボット学会第139回ロボット工学セミナー
 
シェル芸勉強会と会場の話
シェル芸勉強会と会場の話シェル芸勉強会と会場の話
シェル芸勉強会と会場の話
 
移動ロボットのナビゲーション
移動ロボットのナビゲーション移動ロボットのナビゲーション
移動ロボットのナビゲーション
 
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
 
第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライド第45回シェル芸勉強会オープニングスライド
第45回シェル芸勉強会オープニングスライド
 
bash(の変な使い方)update
bash(の変な使い方)updatebash(の変な使い方)update
bash(の変な使い方)update
 
第41回シェル芸勉強会 午後オープニング
第41回シェル芸勉強会 午後オープニング第41回シェル芸勉強会 午後オープニング
第41回シェル芸勉強会 午後オープニング
 
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
 
20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トーク20181113_子ども夢ロボット&トーク
20181113_子ども夢ロボット&トーク
 
第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロ第37回シェル芸勉強会イントロ
第37回シェル芸勉強会イントロ
 
シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習シェル芸勉強会にみる、コミュニティを通じたIT学習
シェル芸勉強会にみる、コミュニティを通じたIT学習
 
ROSチュートリアル ROBOMECH2018
ROSチュートリアル ROBOMECH2018ROSチュートリアル ROBOMECH2018
ROSチュートリアル ROBOMECH2018
 
poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018poster of PFoE used in ICRA 2018
poster of PFoE used in ICRA 2018
 
Robot frontier lesson3 2018
Robot frontier lesson3 2018Robot frontier lesson3 2018
Robot frontier lesson3 2018
 
Robot frontier lesson2 2018
Robot frontier lesson2 2018Robot frontier lesson2 2018
Robot frontier lesson2 2018
 
Robot frontier lesson1 2018
Robot frontier lesson1 2018Robot frontier lesson1 2018
Robot frontier lesson1 2018
 
第34回シェル芸勉強会
第34回シェル芸勉強会第34回シェル芸勉強会
第34回シェル芸勉強会
 
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」
第32回信号処理シンポジウム「Raspberry PiとROSを 使ったロボットシステム」
 

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

  • 1. コマンドとシェルスクリプトで企業システムを作る ― USP 研究所の取り組み 有限会社ユニバーサル・シェル・プログラミング研究所 上田隆一 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 2. 本日の発表内容 1. 会社の話  ちゃんと仕事をしている 2. 技術の話  かなり独創的 3. お知らせ 「 かなり独創的な方法で、ちゃんと仕事をしている話」 (そしてお知らせも聞いてください) 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 3. その前に自己紹介(誰?)  名前:上田隆一  USP 研究所社員 @ uecinfo  USP 友の会  会長  @usptomo の中の人  bash で CGI を書く人  その他  連載:開眼シェルスクリプト( SD 誌)  「Ryuichi Ueda robotics」で検索 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 4. USP 研究所  シェルスクリプトでシステム開発する会社  社員数:20人++  元受け・少人数で開発・自社開発指導 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 5. 自社開発指導  顧客企業の情報システム部にて・・・  CUI で OS を使う講習  vim の講習  awk・ sed の講習  シェルスクリプトの書き方講習  イントラ用 CGI の書き方講習  ・・・ 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 6. 「 いわゆる SI 業界」の常識  ウォーターフォール  「 どの RDBMS(以下 DB) を入れるか」から始まる 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 7. なぜそうなるか?  問い 「 あなたは長年卵焼きを製造販売している会社の社長です。 最近、1台の卵焼きマシーンがへたってきました。 予算1億円、納期半年で新型マシーンを 発注したいと考えています。どこに頼みますか?」 A) 実績ある企業(見積もり1億円) B) 知らない企業(見積もり3千万円)  最終的にどっちが選ばれるか分からないが、 B は警戒される。 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 8. システム開発は(卵焼きマシーンより)厄介  見えない  「 安い」といわれても実物がどんなものになるか分からない  完成と同時に分かる  失敗リスク  抱える人・ものが多くなる 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 9. そんなに人がいない。どう戦うか?  実績をコツコツと  自分たちで作ってもらう  仲間作り  我々の取り組みを知ってもらう  失敗しない仕組みを  人  マニュアル  見通しのよいアーキテクチャ 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 10. USP 手法(ユニケージ)  コマンド+シェルスクリプト  データをテキストファイルで持つ  ファイルシステムを使う  余計なソフトウェアを入れない (ブラックボックスを作らない)  コマンド、 apache、NFS、その他標準のもの  データを整理整頓するノウハウの塊  自由度の高いファイルシステムにデータ基盤を作る 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 11. データの整理整頓(レベル分け)  実社会でのデータの流れを意識  データ基盤の構築  受け取った伝票は捨てないで綴じておく →レベル1  綴じた伝票をノートに全部書き出して台帳とする →レベル2  台帳からなにか統計データを集計する →レベル3  データを利用するアプリケーション  統計データを加工、聞かれたら答えるデータを準備 →レベル4  ( レベル5もある) 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 12. 実物 ―ウェブサイトのアクセス解析  ごちゃごちゃしたログをグラフィカルに 表示するまで  レベル1→4のプロセスを踏む 生のログ ウェブ画面 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 13. レベル1 $ tail -n 1 access_log 1.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)"  レベル2  キーを左に、キーの整形・ソート、 awk で扱える形式 $ tail -n 1 ACCESS_LOG.CURRENT 20120421 062410 1.2.3.4 - - GET_/COMMON/HTML/ rss20.xml_HTTP/1.1 304 - - Feedfetcher-Google; _(+http://www.google.com/feedfetcher.html;_6_subscri bers;_feed-id=4796065779311373044) 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 14. レベル3  項目別に集計 $ tail VISIT/VISIT_COUNT.HOUR  様々な切り口で 20120420 18 6 有意な情報を作成 20120420 19 5 20120420 20 4 20120420 21 5 20120420 22 4 20120420 23 22 20120421 00 78 20120421 01 23 20120421 02 10 20120421 03 7 例)時間ごとの訪問者数 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 15. レベル4  表示する形式にしておく $ cat HIT.ACCUM 89138 $ cat UPDATE.TIME 2012 年& nbsp; 4 月& nbsp;21 日& nbsp; 土曜日 & nbsp;06:40:01 JST $ tail -n 5 VISIT_COUNT.HOUR.REV 20120406 09 5 20120406 08 4 20120406 07 6 20120406 06 4 20120406 05 1 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 16. 「DB を使う」方法との差異  DB v.s. テキスト という話ではない  「DB を使う」は道具の話  レベル1-5はアーキテクチャの話なのでもっと親切  データを整理して失敗を避ける仕組み  レベル1-5を実現する道具: DB よりも生の UNIX  DB は木構造の概念が薄い→ディレクトリの方が便利  ファイルからファイルへの変換は伝統的な UNIX そのもの  ファイルの入力リダイレクト => コマンド => パイプ => コマンド => 出力リダイレクト 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 17. USP 手法(ユニケージ)  コマンド+シェルスクリプト  コマンド  C 言語で爆速  シェルスクリプト  プログラムというよりは、レベル間をつなぐ変換器 (データの方が大事)  データをテキストファイルで持つ  余計なソフトを入れない( black box を作らない)  データを整理整頓するノウハウの塊 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 18. デモ  ログファイル変換のシェルスクリプト  速いソート  オープン版 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 19. もし興味があったら・・・  usp engineers' community (UEC)  https://uec.usp-lab.com, @uecinfo  Open-usp-Tukubai  オープン版で SQL ライクな処理をするコマンドを公開  GitHub, FreeBSD ports ( /usr/ports/devel/open-usp-tukubai/ )  SoftwareDesign 連載: 「開眼シェルスクリプト」 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012
  • 20. おわりに  USP 研究所は・・・  ファイルシステム上にデータを整理  UNIX 系 OS を極限まで使用  爆速を目指す 第七回 カーネル/ VM 探検隊 2012/4/22 @東京               © usp lab. 2012