さて、昨日awkを久しぶりに使ったのですが、現在勉強中のVisual Studio C#でWindowsアプリとして作ってみようと思っているツールを、awkとsedなら簡単に作れちゃうんじゃないか?って単純ロジックがイメージ出来てしまったので極単純に手続き型っぽくスクリプトに記してみました。全くプログラミングっぽくありません。

ここでネックはWindowsには標準ではawkもsedもコマンドがありません。後からフリーのコマンドをDLしてきてインストールすることも可能なのですが、wgetも使いたいし、ここまで来ちゃうともう煩わしいので、Cygwin(UNIXコマンド集みたいなアプリ)が使える環境でやってみました。

お題は、とあるグラビア画像系サイトからソースをwgetしてきて、ダウンロードリストを作ってしまうところまでとします。ダウンロードリストを元にwgetで画像ファイルをダウンロードする部分もスクリプトに含めれば、完全自動処理が出来てしまいますが、そこは今回の記事の範疇外とします。実際のところダウンロードの処理も自動で行う所まで、結構容易にできちゃいます。(気が向いたら後日記事にします)

画像ファイルが保存されているURLをテキストファイル1つにまとめられたら、そのURLリストをIrvine等のダウンローダーにインポートすれば、後は自動でDL出来ますね。ツールの組み合わせならちょっとした頭の切り替えで容易に実現出来ます。

Cygwinのインストールは楽勝だと思うので、今回は触れません。興味を持った方は是非Cygwinについて調べてみて下さい。Windowsというコンピュータがもっとコンピュータらしく使える上に身近になってくると思います。

ちなみに、Mac OSXはUNIXなので標準で同等のコマンドが使用出来るハズです。保証は出来ませんけど。さあ!Windowsユーザー達よ、Macユーザーに負けてられませんよ(w

CygwinというほぼUNIXな環境がWindowsで使える素敵なアプリケーションは使わない手はないですね。この環境があれば殆どのテキスト処理が自動化出来てしまいそうです。

実際のスクリプトはGitHubに置くことにしました。
https://github.com/sasapurin/sakura_vps/blob/master/make_url_list/make_list.sh

使い方は単純で、Cygwinターミナルから下記の様にするだけです。

$ ./make_list.sh http://618gaoqing.com/home/vp/5698726693

スクリプトは、このドメインにあるグラビア画像の指定されたページから、ソースをwgetしてきて、そのソースの中から画像ファイルのURLを抽出してdownload_list.txtというファイルにリストとしてまとめます。機能としてはそれだけ。リストが出来たらダウンローダーを使えば目的達成ですね(w

補足しておくと、スクリプトの一番最後の部分で、rmコマンドによって作業経過のファイルを削除しています。この行頭に#をつけるとコメントアウトされて機能しなくなるので、スクリプトの過程のファイルが段階的にどうなっているか見ることが出来ます(あえて過程の結果が残るようにスクリプトに記しました)。実にプログラミングっぽく無く、人が作業したみたいでしょ?だって本当に手作業でやった通りをshファイルに記しただけですからね(w


旧来のUNIX系OSの良いところは、こういう複数ステップの手続き型の処理をスクリプトに「手順」として残してやるだけで、自動処理が出来上がる点です。個人的にはこれはプログラミングでは無く「マクロ」に近いと思っています。プログラミングスキルが無くても出来ます。もちろんWindows環境でもBATファイルに手順を記述して処理を自動化する事は可能ですが、根本的な処理機能としてUNIX系に比べると使えるコマンドが貧弱です。

そのWindowsの弱い部分を補ってくれるのがCygwinという、ほぼUNIX/Linuxと同じ環境を実現してくれるアプリケーションです。Cygwinはあくまでも環境で、その中でUNIX/Linuxの基礎知識は必要になりますが、プログラミングに比べると断然敷居は低いので、テキスト系の作業が多い方には凄くオススメなのです。

もちろん、テキスト処理ならより強力なPerl(ActivePerl)などを使うと柔軟なテキスト処理が可能になるのは言うまでもありません。しかし個人的にはawkやsedに比べるといきなり言語理解の敷居が上がるので非プログラマーな人(私含めて)にはオススメはしません。手軽にUNIX系コマンド(awk、sed、sort、uniq、grepなど)が使えるようになるCygwinがベターな選択だと思いますね。

#蛇足ながらCygwin環境にもPerlは追加出来ます。よって俺はPerlを使うぜ!って人にもCygwinがオススメなのです。

こういう作業、一回こっきりの作業の場合はそうでも無いですが、定期的に何回も行う処理であれば、最初は半自動化から初めて、少しずつ全自動化まで育てて行きたいところですよね。そうすれば処理時間も一瞬だし、ミスも減らせます。スクリプトに渡せる引数は増やせますのでオリジナルの処理を徐々に育てていくと良いでしょう。

特にネットショップ等でCSVファイルを扱っている人には、awkは簡単だし非常に高速処理が行えるので本当にオススメです。是非Cygwin環境下でawkやsedを使ってみて下さい。

こんな便利なもんがタダで使えるのに使わな損ですぜ旦那!(w

Cygwin―Windowsで使えるUNIX環境Cygwin―Windowsで使えるUNIX環境
著者:川井 義治
ソフトバンククリエイティブ(2002-12)
販売元:Amazon.co.jp
Windowsで使えるUNIX環境 Cygwin徹底入門Windowsで使えるUNIX環境 Cygwin徹底入門
著者:小川 淳一
ソーテック社(2003-10)
販売元:Amazon.co.jp
WindowsでUNIXを使う本―CygwinでUNIX入門WindowsでUNIXを使う本―CygwinでUNIX入門
著者:阿久津 良和
毎日コミュニケーションズ(2003-12)
販売元:Amazon.co.jp
入門bash 第3版入門bash 第3版
著者:Cameron Newham
オライリージャパン(2005-10-27)
販売元:Amazon.co.jp