狠狠撸

狠狠撸Share a Scribd company logo
コマンドとシェルスクリプトで公司システムを作る
          ― 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

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