クックパッド開発者ブログスマートフォン用の表示で見るクックパッド開発者ブログ2009-10-23AWKのススメエンジニア日記はじめまして。インフラチームの菅原といいます。今年の7月に入社してから、コンソールとにらめっこする毎日を過ごしています。クックパッドのようにアクセスの多いサイトのサーバを扱うことが今まで無かったので、いろいろと勉強になることが多いです。インフラチームではサーバの状況をモニタリングして、サーバに問題がないかを常に把握するようにしています。そのため日常的にtailでログを追いかけているのですが、そんなときはAWKが非常に便利なことに気付き、最近はかなりAWKにハマっています。今回は絶賛マイブーム中のAWKの活用例をご紹介したいと思います。AWKなのか?残念ながらAWKの知名度はあまり高くないようで、社内でも「なぜRubyでやらないのか?」と聞かれることがありました。僕も入社するまではcutの代わりぐらいにしか使っていなかったのですが、あるときログ出力の整形に使って以来、AWKのおもしろさにすっかりハマってしまいました。AWKの魅力はいろいろとあるのですが、ひとつあげるとすれば「ワンライナーの書きやすさ」です。RubyでもPerlでもワンライナーは書けるのですが、AWKはさらにワンライナーが書きやすい言語です。普段、僕が仕事で使っているAWKスクリプトをいくつかご紹介します。Guideなどを参照してください。組み合わせが強力です。次の簡単なAWKスクリプトは、遅くなっている処理をさくっと把握したいときに使っています。access_logを追いかけようとしても、流れが速すぎて状況を把握できません。そこでAWKで100リクエストごとの平均応答時間を計算して、現在の応答時間がどのくらいなのかを把握しています。[/sourcecode]ちなみにクックパッドのaccess_logは以下のようなフォーマットで出力されます。[/sourcecode]上記のスクリプトを少し修正して、単位時間あたりのリクエスト数を出力するようにすると、サービスへどのくらいアクセスがあるのかを把握できるようになります。追いかけるのが手軽です。そのままでは少々見にくいので、次のようなAWKスクリプトで整形します。[/sourcecode]ANSIエスケープシーケンスを使えば、10秒以上かかったクエリだけ赤く表示することもできます。[/sourcecode]まとめ今回は、仕事で使っているAWKスクリプトをいくつかご紹介させていただきました。僕もまだAWK初心者なのでお世辞にも洗練されたコードとはいえませんが、それでも非常に役に立っています。ちなみに、AWKのワンライナーには何か癖になるものがあり、最近はワンライナーばかり書いているので、historyがスクリプトの保存先と化しつつあります。Awkはソケットが使えるので、カレントディレクトリをDocumentRootとするWebサーバを、ワンライナーで書いてみました。[/sourcecode]きちんと改行をいれるとこんな感じになります。Awkのネットワーク機能はとても面白いです。AWKを始めた人には、ネットワーク機能のマニュアルを一読することをお薦めします。コスト最適化についてご紹...2019-06-17レシピ検索を支えるレガシーでクリティカルな大規模バッチを刷新した話こんにちは、会員事業部の新井です。用いてシュッと構築するこんにちは。ビルドログの読込モバイル基盤グループのヴァンサン(@vincentisambart)です。使ったセキュリティログ検索基盤の構築サービス特性にあった検索システムの設計戦略クックパッド採用説明会「クックパッドはサービスの作り手を採用したいんです。/*}*/スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。