Windowsでawkを便利に使う-1

awkをWindowsで使う為の環境づくりを動画でYouTubeにアップロードしました。

聞きながら見るという方法が一番無駄がないのですが、マイクの音質が悪いのでコメントを字幕として設定しています。やっている事が良く分からない場合は字幕を有効にしてみて下さい。

正直に書くブログ」でも記していますが、awkをWindowsで使える状態にして置くと、仕事の現場においては何かと便利です。特にCSVデータを扱う人にとってはかなり便利なツールで有ると言えます。

おーくの友だち」というユーティリティを使うと非常にWindowsライクな操作になるので、このユーティリティと、実際に処理をするgawk.exeというプログラムをダウンロードしてセットアップします。

設定の手順の中で、INIファイルを直接編集して絶対パスを相対パスに書き換えている部分があります。おそらくココの部分が壁になるとは思いますが、「おーくの友だち」を作っている開発者さんに改修していただけたら一番良いのになと思っています。

awkが便利だとずっと言い続けてるので取り組んでみる

awk-programing以前の仕事は小売店のネットショップを運営する部署でのちょっとシステム寄りな事を担当していました。楽天市場、ヤフーストア、自社サイト(独自)の仕様に合わせてプログラマーがカスタマイズしたシステムで連携をしていましたが、その場限りのやっつけ仕事となるとプログラミングという手間をかけるメリットは無いので、なんとかやっつける事になる訳です。そういう仕事が結構私には多かった。

幸いというか、その前にシステムの保守の仕事をしていた時から、交代制で夜勤があり、システムを管理して運用する仕事もあって、そこで通信機器のログを毎晩必ずフロッピーディスクに保存するという作業が含まれていた。そのデータはテキストデータでしたが、CSV形式ではなく、固定長のテキストデータだったので、MS-AccessやFilemakerを使って統計を出したりしていたものです。まだMS-Accessのバージョンも1.0でパソコンのOSはWindows 3.1(MS-DOS)だったと思います。

そんな頃からテキストデータの扱いを試行錯誤頭をひねりながらやって来ているので、規則性を見出すと大抵の場合はPCを使ってちょっとした繰り返し処理をさせれば実現出来るというのは体感的に学習しています。MS-AccessやFilemaker、MS-Excel、そしてMS-Wordなんてものを使い分けたり組み合わせたりしてやっつけて来ました。

そんな私にとっての画期的なツールが、awkというスクリプト言語なのですが、この感動は言葉では伝えにくいものがあります。幾度と無く「正直に書くブログ」でawkの事を取り上げてきましたが、中々伝えるというのは難しいものです。まずは実際にやっていただく事が重要なのですがそれを期待するのはかなり難しいのが現実です。

しかし私はそれでも思います。日常の業務において、規則性を持ったテキストデータを処理している方は、是非ともawkに興味を持っていただきたいと思います。awkはちょっとしたルールを覚えるだけで強力な処理を簡単に実現してくれるプログラミング言語だからです。プログラミング言語と言うと拒絶反応を示す人は多いと思います。事実私もその一人でした。しかしawkは非プログラマーに対して易しいプログラミング言語です。もう少し適切に表現するとawkという言語は、使いこなすのに100覚えなくてはならないとすると、2~3程度、基本ルールを覚えるだけで容易に結果が得られるのです。しかも非常に高速に。

Mac OS XもUNIX系ですし、Linuxも普及して来ましたから、awkという古の言語も実は多くのPCで当たり前に使用できてしまいます。しかし多くの職場ではまだWindowsをメインで使用していると思いますが、そのWindows上でawkをWindowsユーザーにも非常に使いやすくしてくれる「おーくの友だち」というアプリケーションがあります。awkは本来UNIX系のプログラムなので、コマンドを打ち込んで操作をする仕組みになっているのですが、「おーくの友だち」はそれをコマンド入力ナシにしてくれています。

もちろん、awkもプログラミング言語なので、実際の処理手順は文字入力をして組まなくてはならないのですが、たった1行、欲しい情報を取り出す記述だけでも場合によってはExcel等を使う場合とは比較にならない位の手軽さで実現出来てしまいます。テキスト処理系の仕事が多い人は使わない手は無いです。食わず嫌いせずに是非awkの凄さを見て欲しいものです。

とは言うものの、文章で書いても説得力が無いので、実際の操作を動画で録画してYouTubeにアップロードする事にしました。「ドットインストール」を参考に喋りながら録画してみようと思ったのですが、どうにもこうにもマイクの音質が悪くて全然ダメです。機材をきちんとしないと無理だと痛感しました。よって音声ナシで当分は進めます。

YouTubeに字幕を付ける機能が有ることを知ったのでこれでポイントのコメントは入れておくことにします。いちいちオーサリングソフトで字幕付けるのは流石にイヤなんですよね。

テキストファイルをごっそり比較するツール

某CMSのカスタマイズ版とオリジナル版のソースコードを比較するのに苦労していて、試しに使ってみたところ、フォルダ単位 でソースコードを比較(DIFF)出来るのはまぁ普通としても、並べて差異を色違いで表示できて、そのまま編集したり、エディタ指定で開いたり出来てかなり便利でした。

最も嬉しかったのは改行コード(CRLF、LF、CR)の違いを無視させる事が出来るところ。標準的なDIFFだと改行コードの違いも差異と認識するので、カスタマイズ版で使った環境(恐らくMac OSX)のエディタの改行コードが混ざっててゴミ掃除に途方もない時間を掛ける必要があって涙目だったのです。

改行コードの違いだけでも相違と診断されるので、あまりにも地味で報われない作業に諦めそうになっていたところ、WinMergeのおかげでかなり捗ってありがたいです。

ちなみにTortoiseSVNと連携もさせられるので、TortoiseSVNからバージョン差分表示を行うと、標準ビューアよりもずっと高機能なDIFFビューアとしてWinMergeで開くことが出来るようになりました。これは使わない手は無いですね。

こういうツールは本当にありがたいです。日本語ローカライズされているので文字化け無くきちんと読めるのでプログラミング用途以外にも使えそうです。

WinMerge

WinMerge 日本語版

livedoorが各種サービスの提供を終了

ライブドアがメールをはじめ、各種サービスを終了させるアナウンスを出した様です。

livedoor、新たなチャレンジにむけて一部サービスを終了 – livedoor 広報ブログ

ライブドア・ブログを数年前から使っていて、これはこれで重宝しているので、ブログサービスが終了にならなかった事は幸いと捉えているのですが、メールとPICSは少しだけ使っているのでちょっとだけ面倒です。

メールは他のメールアドレスに転送し、登録しているメーリングリストのメールアドレスを切り替えるしかありません。猶予期間がありますがとっとと対策しておいた方が良いと思うので本日早速変更しました。ライブドアメールはGoogleが提供しているGoogle Appsを流用しているので、メールに付随してカレンダー機能等が問題になりそうな気がします。

私はGoogleが提供しているGmailをメインにしているので、カレンダー機能はライブドア側では使っていませんでした。こういう場合は「使ってなくて良かった」って感じですが、ライブドアメールのカレンダー機能(実質Googleのサービス)を使ってた人はエクスポートして、Gmail等のアカウントを新たに作ってからICSファイルをインポートする方法が一番の近道ですね。

カレンダーをエクスポートする – Google カレンダー ヘルプ

PICSについては、既存の画像ファイルをまとめてダウンロードする機能を2013年5月上旬に実装すると書いていますが、あんまりあてにしない方が良いと思っています。ライブドアって無償サービスに関しては結構約束を破るので(w

実は今回のアナウンスで初めて知ったサービスもあって、統合スパムフィルタ「スパムちゃんぷるー」なんかは「知ってたら利用させてもらったのに!」と今更ながら思ったりもする訳ですが時既に遅しですね。その他にもリストアップされています。該当サービスをご利用の方は、期限までにバックアップを取るなり、代替サービスへの移行を検討する必要がありますね。

全く余談ですが、私にとっては、先日アナウンスされたGoogleリーダー(RSS)の廃止が一番痛いですけどね。やっぱりfreedlyしかないかなぁ。

New Relicを使ってみる

インフラ系エンジニアとして食っている立場上、押さえておくべきだろうなと思ったので実際に自分の管理サーバーでパフォーマンス監視ツールを使ってみる事にしました。

ちょっと調べれば分かる事なので記しちゃいますが、当サイトは現時点VPS上のLinuxサーバーで稼働させています。普通にこうやって記事をPOSTしたり、実験的なWebサービスを公開したりする分には特に不自由もなく、レスポンスも許容範囲内に収まっていると感じているのですが、実際の数値を見てみたくなった為です。

色々有ると思いますが、サーバーパフォーマンス監視サービスとして定評のある「New Relic」の無料版を使ってみる事にしました。無料版の範囲でも充分参考になるデータが取れます。

New Relic対応OS

New Relic対応OS

上図の画面キャプチャの通り、Linux(deb系、rpm系、その他)と、Windows 2003 / 2008 Serverに対応しています。インストールはオフィシャルの手順に従って行いましたが、さほど難しくありませんでした。ネット上に日本語のインストール手順が無いのは、まぁそういうもんだなって感じです。(公式の手順は簡単な英語だし、特殊なインストール手順では無いので頑張りましょう)

当サイトでは、Web系は主にPHPとMySQLを使っているので、PHPしか監視していません。Pythonは今後積極的に使っていきたいと思っていますが現時点は計測する程の事も無いのでパスです。Rubyは個人的にはあんまり好きじゃないので後回しです。

現時点、このサービスの対象プラットフォームは下記の通り。

  • Ruby
  • PHP
  • .Net
  • Java
  • Python
  • iOS
  • Android Apps

これだけ対応していますので、ほとんどのサーバーアプリケーションの処理速度とか、ページ毎の処理の遅さとかを追跡するには充分ではないかと思われます。レスポンスが遅いページはソースコードを要見直しですね。