@kyanny's blog

To be a cross-functional developer

Book: How Google Works

平凡な本だった。この本ならではという内容は無く、組織のあり方というテーマに関心がある人ならすでにどこかで見聞きしていそうな話題ばかり、という印象を受けた。

Googleであっても苦労するポイントは同じということがわかるのはよかったが、それに対する解決策はGoogleでもなければできそうもないことばかりで、「勝てば官軍」という言葉が頭をよぎった。

「いい話」ばかりなのでそういうのをさらっと読みたいときにはいいかもしれないが、その先の答えを探している人が読む価値は無いと思う。

How Google Works (ハウ・グーグル・ワークス)  ―私たちの働き方とマネジメント

How Google Works (ハウ・グーグル・ワークス) ―私たちの働き方とマネジメント

  • 作者: エリック・シュミット,ジョナサン・ローゼンバーグ,アラン・イーグル,ラリー・ペイジ,土方奈美
  • 出版社/メーカー: 日本経済新聞出版社
  • 発売日: 2014/10/09
  • メディア: 単行本
  • この商品を含むブログ (3件) を見る

New Relic のグラフを毎時チャットに貼り付ける

New Relic をこまめにチェックすべきだが怠惰かつ忘れっぽいせいでチェックできないので、グラフ画像が毎時チャットにつぶやかれるようにしてみた。

f:id:a666666:20141115171514p:plain

やり方はけっこう込み入っている。

  1. New Relic の Embedded Charts 機能を使って埋め込み用のグラフを作る。
  2. Amazon S3 にバケットポリシーでデフォルト公開設定にしたバケットを作る。
  3. 適当なサーバーに Jenkins と phantomjs と s3cmd をインストールし、 s3cmd は 2. で用意したバケットに書き込める Access Key Secret Key で --configure しておく。
  4. capture_put.sh というスクリプトを使い、 phantomjs で embedded chart のスクリーンショットを撮って s3 に put し、画像の URL を HipChat に投稿する。

Jenkins で新しい Job を作り、 Parameterized build でいくつかデフォルト値を用意しておく。必要な変数は capture_put.sh にコメントで書いてある。その上で Build shell にこんな風に書く。

#!/bin/bash
set -u
set -e
set -x
. capture_put.sh
capture_put \
  https://rpm.newrelic.com/public/charts/XXXXXXXXXXX \
  my-application \
  https://rpm.newrelic.com/accounts/XXXXXX/embedded_charts

Build periodically で定期的に実行されるようにすると、チャットルームにグラフが流れてくる。この例では、直近 60 分のレスポンスタイムのグラフが毎時流れてくるようにした。0クリックになって革命的、というほどではないが、 New Relic というかアプリケーションのパフォーマンスに対する意識は若干高まった。

s3 に一度画像を put する必要があるのは HipChat の仕様によるものなので、 Slack などでは事情が違うかもしれない。 Jenkins をまだ自前で持っていない場合は Bitnami を使うと立ち上げが楽だ(AWS Marketplace のを使ってもいい)


New Relic を Heroku addons 経由で利用しているとダッシュボードへのアクセスに Heroku のシングルサインオンを経由する必要があり、ブラウザのブックマークと相性が悪い。そのせいで足が遠のいてしまう、というのがこれをやってみるモチベーションになった。

画像の URL だけを貼り付けても HipChat はいい感じにプレビュー表示してくれるのだけど、ちょっとシェルスクリプトをがんばって Jenkins Job や embedded charts 一覧ページへのリンクも同時に投稿するようにしたら、いろいろ探し回る手間が省けてなかなか便利だった。チャットへの自動投稿は便利なのでよくやるけど、やり始めた本人もどこで動かしてるか忘れてしまって止められない、なんて笑えない事態になることもあるので、投稿内容に自分自身を止めるためのポインタを含ませるのは後々困らなくて良いと思う。

Upgraded to Yosemite

OSX Yosemite にアップグレードした。以下の問題に遭遇した。

  • インストーラーが残り1分で止まる
    • 実際は止まってなくて /usr/local 以下を以下略というやつだった
    • Cmd+L でコンソールログを表示して眺めつつ待った。Cmd+L 押したらコンソールが開くまで虹色のくるくるが出てしまい焦った
    • ログの流れが止まってもしばらく何も起こらなくて不安な気持ちでコンソールを閉じたら何事もなく再起動カウントダウンで完了した
  • Homebrew でインストールした PostgreSQL が起動しない
  • Java Runtime Edition をインストールしろ、というポップアップが出続ける
    • だいぶ困っていろいろ検索した結果 JRE ではなく JDK を入れると直るという情報をゲット、 Oracle のサイトから JDK 最新版 Mac OSX 用をダウンロードしてインストールしたら直った。先に JRE のアンインストールなどしなくても平気だった
    • Java desktop popup issue on Yosemite Beta - MacRumors Forums