SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
さわって☆ドキドキ。
こんなに素敵♡なシェルスクリプト。

(注:登壇者が考えたタイトルではありません!!)

      USP研究所 上田隆一
発表内容
 ●   シェルスクリプトを何に使う?
 ●   シェルスクリプトは本当に素敵なのか?
 ●   便利なコマンドを公開
      ●   Open usp Tukubai
 ●   まとめ




Mar. 16, 2012        Open Source Conference 2012 Tokyo/Spring   2
「シェルスクリプト」何に使う?
●   Facebookで聞いてみた
    ●   上位
         –   定型処理の自動化
         –   バックアップ
         –   その場限りのデータ集計
         –   スタートスクリプト作成
         –   いたずら

    ●   どちらかというと
         –   ちょっとしたもの、あるいはシステム寄り
Mar. 16, 2012         Open Source Conference 2012 Tokyo/Spring   3
USP研究所の「シェルスクリプト」
●    アプリケーション寄り
      ●   バッチデータ処理
      ●   帳票を作る
           –   データからpdfやexcel、グラフを作る
      ●   CGIスクリプト
           –   bashCMS(社員作)



      ●   世間とのギャップが激しい

    Mar. 16, 2012      Open Source Conference 2012 Tokyo/Spring   4
ごく大雑把なギャップの分析
                                 法人・仕事


                COBOL                            シェルスクリプト
                                                 (USP研究所)
                                                                   Java
                                                                          フロント
 バック                                                    Python PHP        エンド・
 エンド
                          データベース                                          web
                                                                   Ruby
                シェル       (RDBMS)
                スクリプト
                (一般)
                           個人、趣味、ベンチャー
  ●   とにかくRDBMS(以後単にDBと表記)にデータを突っ込む →
      シェルスクリプトの出る幕なし
Mar. 16, 2012           Open Source Conference 2012 Tokyo/Spring             5
「なんでもDB」でいいのか?
 ●   よい。それは否定しなくてよい。
      ●   もうSQLに慣れた。誰でも慣れたツールを使いたい
      ●   いたれりつくせり(排他など)
      ●   Webとのつなぎが簡単
 ●   しかし、
      ●   手元のデータをもっと手軽にハンドリングできれば
          そっちも使ってよいだろう。そんな方法があれば。
      ●   (言語にこだわる人がSQLを手放しで受け入れるのは解せない)


Mar. 16, 2012     Open Source Conference 2012 Tokyo/Spring   6
シェルスクリプトにも問題
 ●   モダンな言語に比べて制御構文が読みにくい
      ●   If [ 3 -lt “${A}” -a 5 -gt “{B}” -o “${HOGE}” = “HOGE” ]
      ●   ↑読めん。読む気がしない

 ●   気が利かない
      ●   これをしたいのに、このコマンドがない
           -> シェル文法地獄 -> 詰んだ!

           ※コマンドが揃ってのシェルスクリプト!!
Mar. 16, 2012             Open Source Conference 2012 Tokyo/Spring   7
コマンドがあると無いで大違い1
 ●   例:自然数を読んで偶数だけ出力
      ●   こんなことをしてはいけません
           –    注:コマンドの使用が制限されている状況は除く
                #!/bin/bash
                while read n ; do
                      if [ $((n%2)) -eq 0 ] ; then
                             echo $n
                      fi
                done

      ●   コマンドの力を借りると制御構文が無くなる
           –    awk '$1%2==0' < /dev/stdin
           –    grep “[02468]$” < /dev/stdin
Mar. 16, 2012                    Open Source Conference 2012 Tokyo/Spring   8
コマンドがあると無いで大違い2
 ●   これはどうか?詰んではいないが・・・
      ●   1月の日付を列挙する
                #!/bin/bash
                n=20120101
                while [ $n -lt 20120201 ] ; do
                      echo $n
                      n=$(date -d "$n 1 day" +%Y%m%d)
                done
      ●   これは代替の方法を考えるのが大変だ

       便利なコマンドがあればいいな!!!
Mar. 16, 2012         Open Source Conference 2012 Tokyo/Spring   9
Open usp Tukubai
●   フリーのコマンド群
      ●   USP研究所が使っているものの一部を書き直し
           –   Pythonで短く
           –   MITライセンス
      ●   コマンド
           –   cgi-name, check_attr_name, check_need_name, comma,
               count, ctail, delf, divsen, getfirst, getlast, gyo, han, join0, join1,
               join2, juni, kasan, keta, keycut, loopj, loopx, map, marume,
               mdate, mime-read, mojihame, nameread, plus, rank, ratio,
               retu, self, sm2, sm4, sm5, tarr, tateyoko, tcat, unmap, up3,
               yarr, ycat, yobi, ysum, zen
           –   日本語名のコマンドがあるが、これを外国人に使わせるのが目標
    Mar. 16, 2012              Open Source Conference 2012 Tokyo/Spring          10
何ができるか
 ●   CUIでデータを扱う方法の延長
      ●   典型的な端末のファイル処理
           –    catでファイルをざっと閲覧、grepで行を抽出、
                sedで置換、sortでソート・・・

      ●   以下の機能をコマンドで付加する
           –    表計算
           –    リレーショナル演算
           –    その他便利機能(全角<->半角、四捨五入、カンマ打ち)


Mar. 16, 2012         Open Source Conference 2012 Tokyo/Spring   11
使ってみる1 --- han, zen
 ●   全角半角の混在
           $ cat phone-no
           001 067ー4321ー8834 志村県加藤市高木町1-9ー3
           002 0120-212ー212 仲本県碇谷群荒井町茶123ー21

 ●   「han」を使うと半角にできるものは半角に
                $ cat phone-no | han
                001 067ー4321ー8834 志村県加藤市高木町1-9ー3
                002 0120-212ー212 仲本県碇谷群荒井町茶123ー21
 ●   住所の番地を全角に戻す
                $ cat phone-no | han | zen 3
                001 067ー4321ー8834 志村県加藤市高木町1-9ー3
                002 0120-212ー212 仲本県碇谷群荒井町茶123ー21

Mar. 16, 2012            Open Source Conference 2012 Tokyo/Spring   12
使ってみる2 --- keta
 ●   列を揃える




          見づらい


                                                    見やすい
Mar. 16, 2012     Open Source Conference 2012 Tokyo/Spring   13
使ってみる3 --- join1
 ●   データの結合
         データ:http://www.pursue.ne.jp/jouhousyo/SQLDoc/select21.html
                売上データ                                    顧客データ
      $ cat uriage                            $ cat kokyaku
      1 2001/05/27 105                        101 二島商店
      2 2001/05/27 101                        102 姫路商事
      3 2001/05/27 103                        103 大阪物産
      4 2001/06/27 102                        104 神戸商店
      5 2001/06/27 104                        105 福岡商事
                                データを結合する
       $ sort -k3,3 uriage | join1 key=3 kokyaku - | sort
       1 2001/05/27 105 福岡商事
       2 2001/05/27 101 二島商店
       3 2001/05/27 103 大阪物産
       4 2001/06/27 102 姫路商事
       5 2001/06/27 104 神戸商店
Mar. 16, 2012               Open Source Conference 2012 Tokyo/Spring   14
使ってみる4 --- mdate, yobi
●   日付の列挙
    $ mdate -e 20120101 20120110
    20120101 20120102 20120103 20120104 20120105 20120106 20120107
    20120108 20120109 20120110

●   2月末日は?
    $ mdate 20120301/-1
    20120229
●   曜日をつける
    $ mdate -e 20120101 20120104 | tarr | yobi -j 1
    20120101 日
    20120102 月
    20120103 火
    20120104 水
Mar. 16, 2012             Open Source Conference 2012 Tokyo/Spring   15
使ってみる5 --- count, sm2
 ●   数え上げ         $ cat data
                  山田
                  山田
                  上田                                 $ sort data | count 1 1
                  山田                                 山田 4
                  山田                                 上田 2
                  上田

 ●   集計
                  $ cat data
                  001 23324
                  001 1235                           $ sm2 1 1 2 2 data
                  002 3243                           001 24559
                  002 -32345                         002 -29102
                  003 425                            003 392.65
                  003 0.15
                  003 -32.5

Mar. 16, 2012          Open Source Conference 2012 Tokyo/Spring                16
使ってみる6 --- webシステム
 ●   bashCMS
      ●   USP友の会のブースで展示。ソース見せます。




                                      http://www.usptomonokai.jp/
Mar. 16, 2012       Open Source Conference 2012 Tokyo/Spring        17
Open usp Tukubaiの入手 ---その1
●   FreeBSD ports
     ●   収録されました (/usr/ports/devel/open-usp-tukubai)
     ●   当面、portsnap extract または
         portsnap update で入手




                http://www.freshports.org/devel/open-usp-tukubai/
Mar. 16, 2012           Open Source Conference 2012 Tokyo/Spring    18
Open usp Tukubaiの入手 ---その2
●   github
      ●   Tukubaiで検索




            https://github.com/usp-engineers-community/Open-usp-Tukubai
    Mar. 16, 2012           Open Source Conference 2012 Tokyo/Spring      19
Open usp Tukubaiの入手 ---その3
 ●   UECサイト(usp engineers' community)
      ●   https://uec.usp-lab.com




Mar. 16, 2012         Open Source Conference 2012 Tokyo/Spring   20
まとめ
 ●   コマンドあってのシェルスクリプト
      ●   コマンドを使わないと素敵ではない
 ●   Open usp Tukubaiは便利
      ●   端末・シェルスクリプトをどんどん便利にする試み
      ●   FreeBSD, GitHub, uecサイトで入手可能

 ●   Software Design 連載もお願いします(17日発売)
      ●   開眼シェルスクリプト
           –    第4回:表とグラフを描く――HTMLファイルの出力
            –
Mar. 16, 2012         Open Source Conference 2012 Tokyo/Spring   21

           –

Más contenido relacionado

Similar a OSC2012 Tokyo Spring, USP lab. presentation

2012年4月22日 カーネル/VM探検隊
2012年4月22日 カーネル/VM探検隊2012年4月22日 カーネル/VM探検隊
2012年4月22日 カーネル/VM探検隊Ryuichi Ueda
 
Linux女子部勉強会 2012年4月21日
Linux女子部勉強会 2012年4月21日Linux女子部勉強会 2012年4月21日
Linux女子部勉強会 2012年4月21日Ryuichi Ueda
 
OpenDocument interoperability test workshop
OpenDocument interoperability test workshopOpenDocument interoperability test workshop
OpenDocument interoperability test workshopMakoto Takizawa
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
NodeにしましょうYuzo Hebishima
 
Nseg第32回勉強会
Nseg第32回勉強会Nseg第32回勉強会
Nseg第32回勉強会ko ty
 
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
 
OpenDocument interoperability test workshop after story
OpenDocument interoperability test workshop after storyOpenDocument interoperability test workshop after story
OpenDocument interoperability test workshop after storyMakoto Takizawa
 
分散Key/Valueストア Kai 事例紹介
分散Key/Valueストア Kai事例紹介分散Key/Valueストア Kai事例紹介
分散Key/Valueストア Kai 事例紹介Tomoya Hashimoto
 
Learn about ODF / ODFを見なおそう
Learn about ODF / ODFを見なおそうLearn about ODF / ODFを見なおそう
Learn about ODF / ODFを見なおそうNaruhiko Ogasawara
 
Josug advent calender20121219
Josug advent calender20121219Josug advent calender20121219
Josug advent calender20121219Ayumi Oka
 
東京電機大学 ポータルサイト UNIPAからの情報抽出と再利用
東京電機大学 ポータルサイトUNIPAからの情報抽出と再利用東京電機大学 ポータルサイトUNIPAからの情報抽出と再利用
東京電機大学 ポータルサイト UNIPAからの情報抽出と再利用Koki Hashimoto
 
20120516 NetCommons GoogleMap
20120516 NetCommons GoogleMap20120516 NetCommons GoogleMap
20120516 NetCommons GoogleMapKenichi Ohwada
 
わんくま名古屋#25(20121201) LT:「開発体験テンプレートを使ったストアアプリの作成」
わんくま名古屋#25(20121201) LT:「開発体験テンプレートを使ったストアアプリの作成」わんくま名古屋#25(20121201) LT:「開発体験テンプレートを使ったストアアプリの作成」
わんくま名古屋#25(20121201) LT:「開発体験テンプレートを使ったストアアプリの作成」Yasuhiko Yamamoto
 
Node-RED TIPS:functionノード間で関数を共有する方法
Node-RED TIPS:functionノード間で関数を共有する方法Node-RED TIPS:functionノード間で関数を共有する方法
Node-RED TIPS:functionノード間で関数を共有する方法Kazuki Saito
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)NTT DATA Technology & Innovation
 
福岡XFD導入記
福岡XFD導入記福岡XFD導入記
福岡XFD導入記Go Takahashi
 
2012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#382012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#38Ryuichi Ueda
 
20120630 android ics in Yokohama
20120630 android ics in Yokohama20120630 android ics in Yokohama
20120630 android ics in YokohamaKenichi Ohwada
 

Similar a OSC2012 Tokyo Spring, USP lab. presentation (20)

2012年4月22日 カーネル/VM探検隊
2012年4月22日 カーネル/VM探検隊2012年4月22日 カーネル/VM探検隊
2012年4月22日 カーネル/VM探検隊
 
Linux女子部勉強会 2012年4月21日
Linux女子部勉強会 2012年4月21日Linux女子部勉強会 2012年4月21日
Linux女子部勉強会 2012年4月21日
 
OpenDocument interoperability test workshop
OpenDocument interoperability test workshopOpenDocument interoperability test workshop
OpenDocument interoperability test workshop
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
 
Nseg第32回勉強会
Nseg第32回勉強会Nseg第32回勉強会
Nseg第32回勉強会
 
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
 
OpenDocument interoperability test workshop after story
OpenDocument interoperability test workshop after storyOpenDocument interoperability test workshop after story
OpenDocument interoperability test workshop after story
 
分散Key/Valueストア Kai 事例紹介
分散Key/Valueストア Kai事例紹介分散Key/Valueストア Kai事例紹介
分散Key/Valueストア Kai 事例紹介
 
20120907 osc-lt-docja
20120907 osc-lt-docja20120907 osc-lt-docja
20120907 osc-lt-docja
 
Learn about ODF / ODFを見なおそう
Learn about ODF / ODFを見なおそうLearn about ODF / ODFを見なおそう
Learn about ODF / ODFを見なおそう
 
Josug advent calender20121219
Josug advent calender20121219Josug advent calender20121219
Josug advent calender20121219
 
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPANSAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
 
東京電機大学 ポータルサイト UNIPAからの情報抽出と再利用
東京電機大学 ポータルサイトUNIPAからの情報抽出と再利用東京電機大学 ポータルサイトUNIPAからの情報抽出と再利用
東京電機大学 ポータルサイト UNIPAからの情報抽出と再利用
 
20120516 NetCommons GoogleMap
20120516 NetCommons GoogleMap20120516 NetCommons GoogleMap
20120516 NetCommons GoogleMap
 
わんくま名古屋#25(20121201) LT:「開発体験テンプレートを使ったストアアプリの作成」
わんくま名古屋#25(20121201) LT:「開発体験テンプレートを使ったストアアプリの作成」わんくま名古屋#25(20121201) LT:「開発体験テンプレートを使ったストアアプリの作成」
わんくま名古屋#25(20121201) LT:「開発体験テンプレートを使ったストアアプリの作成」
 
Node-RED TIPS:functionノード間で関数を共有する方法
Node-RED TIPS:functionノード間で関数を共有する方法Node-RED TIPS:functionノード間で関数を共有する方法
Node-RED TIPS:functionノード間で関数を共有する方法
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 
福岡XFD導入記
福岡XFD導入記福岡XFD導入記
福岡XFD導入記
 
2012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#382012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#38
 
20120630 android ics in Yokohama
20120630 android ics in Yokohama20120630 android ics in Yokohama
20120630 android ics in Yokohama
 

Más de 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
 

Más de 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を 使ったロボットシステム」
 

Último

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Último (9)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

OSC2012 Tokyo Spring, USP lab. presentation

  • 2. 発表内容 ● シェルスクリプトを何に使う? ● シェルスクリプトは本当に素敵なのか? ● 便利なコマンドを公開 ● Open usp Tukubai ● まとめ Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 2
  • 3. 「シェルスクリプト」何に使う? ● Facebookで聞いてみた ● 上位 – 定型処理の自動化 – バックアップ – その場限りのデータ集計 – スタートスクリプト作成 – いたずら ● どちらかというと – ちょっとしたもの、あるいはシステム寄り Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 3
  • 4. USP研究所の「シェルスクリプト」 ● アプリケーション寄り ● バッチデータ処理 ● 帳票を作る – データからpdfやexcel、グラフを作る ● CGIスクリプト – bashCMS(社員作) ● 世間とのギャップが激しい Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 4
  • 5. ごく大雑把なギャップの分析 法人・仕事 COBOL シェルスクリプト (USP研究所) Java フロント バック Python PHP エンド・ エンド データベース web Ruby シェル (RDBMS) スクリプト (一般) 個人、趣味、ベンチャー ● とにかくRDBMS(以後単にDBと表記)にデータを突っ込む → シェルスクリプトの出る幕なし Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 5
  • 6. 「なんでもDB」でいいのか? ● よい。それは否定しなくてよい。 ● もうSQLに慣れた。誰でも慣れたツールを使いたい ● いたれりつくせり(排他など) ● Webとのつなぎが簡単 ● しかし、 ● 手元のデータをもっと手軽にハンドリングできれば そっちも使ってよいだろう。そんな方法があれば。 ● (言語にこだわる人がSQLを手放しで受け入れるのは解せない) Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 6
  • 7. シェルスクリプトにも問題 ● モダンな言語に比べて制御構文が読みにくい ● If [ 3 -lt “${A}” -a 5 -gt “{B}” -o “${HOGE}” = “HOGE” ] ● ↑読めん。読む気がしない ● 気が利かない ● これをしたいのに、このコマンドがない -> シェル文法地獄 -> 詰んだ! ※コマンドが揃ってのシェルスクリプト!! Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 7
  • 8. コマンドがあると無いで大違い1 ● 例:自然数を読んで偶数だけ出力 ● こんなことをしてはいけません – 注:コマンドの使用が制限されている状況は除く #!/bin/bash while read n ; do if [ $((n%2)) -eq 0 ] ; then echo $n fi done ● コマンドの力を借りると制御構文が無くなる – awk '$1%2==0' < /dev/stdin – grep “[02468]$” < /dev/stdin Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 8
  • 9. コマンドがあると無いで大違い2 ● これはどうか?詰んではいないが・・・ ● 1月の日付を列挙する #!/bin/bash n=20120101 while [ $n -lt 20120201 ] ; do echo $n n=$(date -d "$n 1 day" +%Y%m%d) done ● これは代替の方法を考えるのが大変だ 便利なコマンドがあればいいな!!! Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 9
  • 10. Open usp Tukubai ● フリーのコマンド群 ● USP研究所が使っているものの一部を書き直し – Pythonで短く – MITライセンス ● コマンド – cgi-name, check_attr_name, check_need_name, comma, count, ctail, delf, divsen, getfirst, getlast, gyo, han, join0, join1, join2, juni, kasan, keta, keycut, loopj, loopx, map, marume, mdate, mime-read, mojihame, nameread, plus, rank, ratio, retu, self, sm2, sm4, sm5, tarr, tateyoko, tcat, unmap, up3, yarr, ycat, yobi, ysum, zen – 日本語名のコマンドがあるが、これを外国人に使わせるのが目標 Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 10
  • 11. 何ができるか ● CUIでデータを扱う方法の延長 ● 典型的な端末のファイル処理 – catでファイルをざっと閲覧、grepで行を抽出、 sedで置換、sortでソート・・・ ● 以下の機能をコマンドで付加する – 表計算 – リレーショナル演算 – その他便利機能(全角<->半角、四捨五入、カンマ打ち) Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 11
  • 12. 使ってみる1 --- han, zen ● 全角半角の混在 $ cat phone-no 001 067ー4321ー8834 志村県加藤市高木町1-9ー3 002 0120-212ー212 仲本県碇谷群荒井町茶123ー21 ● 「han」を使うと半角にできるものは半角に $ cat phone-no | han 001 067ー4321ー8834 志村県加藤市高木町1-9ー3 002 0120-212ー212 仲本県碇谷群荒井町茶123ー21 ● 住所の番地を全角に戻す $ cat phone-no | han | zen 3 001 067ー4321ー8834 志村県加藤市高木町1-9ー3 002 0120-212ー212 仲本県碇谷群荒井町茶123ー21 Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 12
  • 13. 使ってみる2 --- keta ● 列を揃える 見づらい 見やすい Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 13
  • 14. 使ってみる3 --- join1 ● データの結合 データ:http://www.pursue.ne.jp/jouhousyo/SQLDoc/select21.html 売上データ 顧客データ $ cat uriage $ cat kokyaku 1 2001/05/27 105 101 二島商店 2 2001/05/27 101 102 姫路商事 3 2001/05/27 103 103 大阪物産 4 2001/06/27 102 104 神戸商店 5 2001/06/27 104 105 福岡商事 データを結合する $ sort -k3,3 uriage | join1 key=3 kokyaku - | sort 1 2001/05/27 105 福岡商事 2 2001/05/27 101 二島商店 3 2001/05/27 103 大阪物産 4 2001/06/27 102 姫路商事 5 2001/06/27 104 神戸商店 Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 14
  • 15. 使ってみる4 --- mdate, yobi ● 日付の列挙 $ mdate -e 20120101 20120110 20120101 20120102 20120103 20120104 20120105 20120106 20120107 20120108 20120109 20120110 ● 2月末日は? $ mdate 20120301/-1 20120229 ● 曜日をつける $ mdate -e 20120101 20120104 | tarr | yobi -j 1 20120101 日 20120102 月 20120103 火 20120104 水 Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 15
  • 16. 使ってみる5 --- count, sm2 ● 数え上げ $ cat data 山田 山田 上田 $ sort data | count 1 1 山田 山田 4 山田 上田 2 上田 ● 集計 $ cat data 001 23324 001 1235 $ sm2 1 1 2 2 data 002 3243 001 24559 002 -32345 002 -29102 003 425 003 392.65 003 0.15 003 -32.5 Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 16
  • 17. 使ってみる6 --- webシステム ● bashCMS ● USP友の会のブースで展示。ソース見せます。 http://www.usptomonokai.jp/ Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 17
  • 18. Open usp Tukubaiの入手 ---その1 ● FreeBSD ports ● 収録されました (/usr/ports/devel/open-usp-tukubai) ● 当面、portsnap extract または portsnap update で入手 http://www.freshports.org/devel/open-usp-tukubai/ Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 18
  • 19. Open usp Tukubaiの入手 ---その2 ● github ● Tukubaiで検索 https://github.com/usp-engineers-community/Open-usp-Tukubai Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 19
  • 20. Open usp Tukubaiの入手 ---その3 ● UECサイト(usp engineers' community) ● https://uec.usp-lab.com Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 20
  • 21. まとめ ● コマンドあってのシェルスクリプト ● コマンドを使わないと素敵ではない ● Open usp Tukubaiは便利 ● 端末・シェルスクリプトをどんどん便利にする試み ● FreeBSD, GitHub, uecサイトで入手可能 ● Software Design 連載もお願いします(17日発売) ● 開眼シェルスクリプト – 第4回:表とグラフを描く――HTMLファイルの出力 – Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 21 –