狠狠撸
Submit Search
OSC2012 Tokyo Spring, USP lab. presentation
?
1 like
?
5,139 views
Ryuichi Ueda
Follow
オープンソースカンファレンスで発表したOpen usp Tukubaiに関するプレゼンテーション
Read less
Read more
1 of 21
Download now
More Related Content
OSC2012 Tokyo Spring, USP lab. presentation
1.
さわって☆ドキドキ。 こんなに素敵?なシェルスクリプト。 (注:登壇者が考えたタイトルではありません!!)
鲍厂笔研究所 上田隆一
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 –
Download