さわって☆ドキドキ。こんなに素敵♡なシェルスクリプト。(注:登壇者が考えたタイトルではありません!!)      USP研究所 上田隆一
発表内容 ●   シェルスクリプトを何に使う? ●   シェルスクリプトは本当に素敵なのか? ●   便利なコマンドを公開      ●   Open usp Tukubai ●   まとめMar. 16, 2012        Open S...
「シェルスクリプト」何に使う?●   Facebookで聞いてみた    ●   上位         –   定型処理の自動化         –   バックアップ         –   その場限りのデータ集計         –   スタ...
USP研究所の「シェルスクリプト」●    アプリケーション寄り      ●   バッチデータ処理      ●   帳票を作る           –   データからpdfやexcel、グラフを作る      ●   CGIスクリプト   ...
ごく大雑把なギャップの分析                                 法人・仕事                COBOL                            シェルスクリプト              ...
「なんでもDB」でいいのか? ●   よい。それは否定しなくてよい。      ●   もうSQLに慣れた。誰でも慣れたツールを使いたい      ●   いたれりつくせり(排他など)      ●   Webとのつなぎが簡単 ●   しかし、...
シェルスクリプトにも問題 ●   モダンな言語に比べて制御構文が読みにくい      ●   If [ 3 -lt “${A}” -a 5 -gt “{B}” -o “${HOGE}” = “HOGE” ]      ●   ↑読めん。読む気が...
コマンドがあると無いで大違い1 ●   例:自然数を読んで偶数だけ出力      ●   こんなことをしてはいけません           –    注:コマンドの使用が制限されている状況は除く                #!/bin/ba...
コマンドがあると無いで大違い2 ●   これはどうか?詰んではいないが・・・      ●   1月の日付を列挙する                #!/bin/bash                n=20120101           ...
Open usp Tukubai●   フリーのコマンド群      ●   USP研究所が使っているものの一部を書き直し           –   Pythonで短く           –   MITライセンス      ●   コマンド...
何ができるか ●   CUIでデータを扱う方法の延長      ●   典型的な端末のファイル処理           –    catでファイルをざっと閲覧、grepで行を抽出、                sedで置換、sortでソート・...
使ってみる1 --- han, zen ●   全角半角の混在           $ cat phone-no           001 067ー4321ー8834 志村県加藤市高木町1-9ー3           002 0120-212...
使ってみる2 --- keta ●   列を揃える          見づらい                                                    見やすいMar. 16, 2012     Open Sour...
使ってみる3 --- join1 ●   データの結合         データ:http://www.pursue.ne.jp/jouhousyo/SQLDoc/select21.html                売上データ       ...
使ってみる4 --- mdate, yobi●   日付の列挙    $ mdate -e 20120101 20120110    20120101 20120102 20120103 20120104 20120105 20120106 2...
使ってみる5 --- count, sm2 ●   数え上げ         $ cat data                  山田                  山田                  上田             ...
使ってみる6 --- webシステム ●   bashCMS      ●   USP友の会のブースで展示。ソース見せます。                                      http://www.usptomonoka...
Open usp Tukubaiの入手 ---その1●   FreeBSD ports     ●   収録されました (/usr/ports/devel/open-usp-tukubai)     ●   当面、portsnap extrac...
Open usp Tukubaiの入手 ---その2●   github      ●   Tukubaiで検索            https://github.com/usp-engineers-community/Open-usp-Tu...
Open usp Tukubaiの入手 ---その3 ●   UECサイト(usp engineers community)      ●   https://uec.usp-lab.comMar. 16, 2012         Open ...
まとめ ●   コマンドあってのシェルスクリプト      ●   コマンドを使わないと素敵ではない ●   Open usp Tukubaiは便利      ●   端末・シェルスクリプトをどんどん便利にする試み      ●   FreeB...
Upcoming SlideShare
Loading in …5
×

OSC2012 Tokyo Spring, USP lab. presentation

5,999 views
5,896 views

Published on

オープンソースカンファレンスで発表したOpen usp Tukubaiに関するプレゼンテーション

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,999
On SlideShare
0
From Embeds
0
Number of Embeds
1,358
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

OSC2012 Tokyo Spring, USP lab. presentation

  1. 1. さわって☆ドキドキ。こんなに素敵♡なシェルスクリプト。(注:登壇者が考えたタイトルではありません!!) USP研究所 上田隆一
  2. 2. 発表内容 ● シェルスクリプトを何に使う? ● シェルスクリプトは本当に素敵なのか? ● 便利なコマンドを公開 ● Open usp Tukubai ● まとめMar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 2
  3. 3. 「シェルスクリプト」何に使う?● Facebookで聞いてみた ● 上位 – 定型処理の自動化 – バックアップ – その場限りのデータ集計 – スタートスクリプト作成 – いたずら ● どちらかというと – ちょっとしたもの、あるいはシステム寄りMar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 3
  4. 4. USP研究所の「シェルスクリプト」● アプリケーション寄り ● バッチデータ処理 ● 帳票を作る – データからpdfやexcel、グラフを作る ● CGIスクリプト – bashCMS(社員作) ● 世間とのギャップが激しい Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 4
  5. 5. ごく大雑把なギャップの分析 法人・仕事 COBOL シェルスクリプト (USP研究所) Java フロント バック Python PHP エンド・ エンド データベース web Ruby シェル (RDBMS) スクリプト (一般) 個人、趣味、ベンチャー ● とにかくRDBMS(以後単にDBと表記)にデータを突っ込む → シェルスクリプトの出る幕なしMar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 5
  6. 6. 「なんでもDB」でいいのか? ● よい。それは否定しなくてよい。 ● もうSQLに慣れた。誰でも慣れたツールを使いたい ● いたれりつくせり(排他など) ● Webとのつなぎが簡単 ● しかし、 ● 手元のデータをもっと手軽にハンドリングできれば そっちも使ってよいだろう。そんな方法があれば。 ● (言語にこだわる人がSQLを手放しで受け入れるのは解せない)Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 6
  7. 7. シェルスクリプトにも問題 ● モダンな言語に比べて制御構文が読みにくい ● If [ 3 -lt “${A}” -a 5 -gt “{B}” -o “${HOGE}” = “HOGE” ] ● ↑読めん。読む気がしない ● 気が利かない ● これをしたいのに、このコマンドがない -> シェル文法地獄 -> 詰んだ! ※コマンドが揃ってのシェルスクリプト!!Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 7
  8. 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/stdinMar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 8
  9. 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. 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. 11. 何ができるか ● CUIでデータを扱う方法の延長 ● 典型的な端末のファイル処理 – catでファイルをざっと閲覧、grepで行を抽出、 sedで置換、sortでソート・・・ ● 以下の機能をコマンドで付加する – 表計算 – リレーショナル演算 – その他便利機能(全角<->半角、四捨五入、カンマ打ち)Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 11
  12. 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ー21Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 12
  13. 13. 使ってみる2 --- keta ● 列を揃える 見づらい 見やすいMar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 13
  14. 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. 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. 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.5Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 16
  17. 17. 使ってみる6 --- webシステム ● bashCMS ● USP友の会のブースで展示。ソース見せます。 http://www.usptomonokai.jp/Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 17
  18. 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. 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. 20. Open usp Tukubaiの入手 ---その3 ● UECサイト(usp engineers community) ● https://uec.usp-lab.comMar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 20
  21. 21. まとめ ● コマンドあってのシェルスクリプト ● コマンドを使わないと素敵ではない ● Open usp Tukubaiは便利 ● 端末・シェルスクリプトをどんどん便利にする試み ● FreeBSD, GitHub, uecサイトで入手可能 ● Software Design 連載もお願いします(17日発売) ● 開眼シェルスクリプト – 第4回:表とグラフを描く――HTMLファイルの出力 –Mar. 16, 2012 Open Source Conference 2012 Tokyo/Spring 21 –

×