Sooey

2011-09-20 08:55:32 +0900

Rails 3.1.0でrake assets:precompileするとプリコンパイルに失敗してしまうバグの話。

Rails 3.1.0でAsset Pipelineを使っている場合にrakeのassets:precompileタスクを実行すると、

$ RAILS_ENV=production bundle exec rake assets:precompile
rake aborted!
foo.png isn't precompiled
  (in /Users/juno/src/rails-app/app/assets/stylesheets/common.scss)

Tasks: TOP => assets:precompile
(See full trace by running task with --trace)

という感じで、なんでもない画像ファイルのプリコンパイル(public/assetsへのコピー)でエラーが発生するケースに遭遇しました。

どうやらプリコンパイル時にconfig.assets.compileの値がfalseだと発生するようで、Upgrade to Rails 3.1.0 from rc6, asset precompile fails - Stack OverflowによるとRails 3.1.0のバグということです。

リポジトリのコードでは既に修正済みのようなので、とりあえずプリコンパイルをする時だけconfig/environments/production.rbconfig.assets.compiletrueにすることで対処しておくことにしました。

2011-09-18 16:58:54 +0900

Pivotal Labsのブログにあるエントリのうち、SF StandupとかNYC Standupというタイトルのエントリがとても参考になるのでおすすめ。

たぶんPivotal Labsの各オフィスでのデイリースタンドアップで話題にあがったことをまとめているんだと思うけど、RailsやJavaScript、TDD系のTipsなどが頻繁に紹介されています。

たとえば9月14日のNYC Standupの内容は

  • Capybaraでのテスト中にポップアップウィンドウを制御するにはどうすればいい?
  • helperのspecでcurrent_userのスタブを設定する方法は?
    • spec内でhelperオブジェクトの#current_userをスタブにしてみては

といった感じ。

2011-09-08 13:29:15 +0900

CEDEC 2011の1日目と3日目に参加してきたので、簡単なメモを残しておこう。

テクニカルアーティストラウンドテーブル2011

そもそもテクニカルアーティスト(TA)という職種を知らなかったのですが、ちょっと調べてみたところどうやら技術とアートの橋渡し役のポジションのようで、37signalsが言うところの「スイーパー」っぽい感じ。Web業界でもその必要性が言われはじめているけど、どうやらゲーム業界は一足先にこのポジションが脚光を浴びているようです。

セッションではセガ、SCE、カプコンやスクウェア・エニックスなどの方がTAについて色々と意見交換をするようなスタイルでした。以下、要点を箇条書き。

  • カプコンさん
    • 職種としてTAが用意されたのは2年前頃
    • 今年になってTA専門の部署が設立された
    • 現在の人数は14〜15人
      • 現場のアーティストから社内公募した
      • TAの中に純粋なプログラマーは存在しない
      • 開発現場におけるサポート作業を自発的に行っていた人材から選抜した
    • 役割
      • 開発環境やツールなどを改善するための場を設ける
      • 要望を吸い上げて解決して行く
    • 社内的にTAは足りていない
  • 呼び名
    • 映像系の会社ではテクニカルアニメーター
    • ゲームデザイン寄りのことをするテクニカルデザイナー
    • など細分化が始まっている
  • スクウェア・エニックスさん
    • TAの募集要項について
      • コミュニケーションスキルが必要
      • テクニカルなスキルを重視する
      • アートアセットの作成経験は必須
      • 逆に高度なプログラミングスキルは求めない
      • C++など
  • TAが備えていると役立つスキル
    • スクリプティング
    • 効率化
      • 3,000個のオブジェクトをマウスでクリックして配置する作業の自動化など
    • 内製した開発ツールのメンテナンス
      • 開発末期にはツールがメンテされなくなるのでTAが担当できるとよい
    • 開発に用いる言語はスクリプト言語などのライトな言語で十分
    • 折衝能力

現在のWeb業界では「開発もデザインもある程度できる」という人にあまりスポットが当たっていない印象ですが、ゲーム業界ではTAの価値がちゃんと認識されていて、開発チームにおいても必須のポジションとして「とにかくTAが欲しい」みたいな感じを受けました。

Web業界も見習ったほうがよいのでは…と思いつつ、Webとゲームでは開発チームの規模が10倍くらい違うので、チーム内でのポジショニングは多少異なりそうです。Webの場合は少人数なので、ディレクションとかプロディース能力を備えていることも求められるかもしれない。

文化と目的を失わずに、チームサイズを倍にするということ

DiabloやWarcraftの開発で有名なBlizzard EntertainmentのCinematic Production Directorの方による、チームビルディングについてのセッション。同時通訳レシーバーを使わなかったのでメモに間違いがあるかもしれません。

  • Blizzardのシネマティックチームは規模がどんどん増えている
    • 人数は2005年の倍以上
  • 大事なこと
    • 一緒に進化していく
    • 次のリーダーを内部から探す
    • ささいな知識(Trivial knowledge)を受け継ぐ
    • チームの文化をメンテナンスしていく
  • 新しい才能(Talent)を雇う
    • ゲームや映像(Film)への情熱がなにより大事
    • クラフトマンシップを持っていること
    • 個性や対人スキルも重視
  • プロダクションマネージメント
    • 部門のスーパーバイザー(Department supervisor)
      • 予算を決める
      • クリエイティブおよびテクニカルな目標(Scope)を定義する
      • データ構造と規約を作成する
      • クリエイティブとテクニカルに関するガイドを作成する
      • タスクをアートスタイルとデザインにあわせる(Align)
    • プロダクションマネージャー
      • 部門のスケジュールに責任を持つ
      • ワン・オン・ワンの指導
      • メンターシップ
      • アーティストラウンドテーブル(アーティストによる情報交換会的なもの?)
  • 学びと成長(Learn & Grow)
    • 外部のリーダーシップトレーニングを受ける
  • まとめ
    • チームとして進化する
    • チームの文化を維持することにフォーカスすること
    • 外部からの才能を雇うことも恐れない
    • Casting is Important
    • アーティスティックマネージャーのためには、マネージメントトレーニングを直ちに受けさせること

マネージメントの重要性が特に強調されていました。それも、いわゆる典型的なマネージメントではなく、アーティストという人種を仲間としていかにまとめあげていくか、という点に主眼があるようでした。具体的には、アーティストの中からアーティスティックマネージャーを育成するようにして、社内の上司がマネージメントを教えるよりも社外のしかるべき教育を利用すべし、という内容で、チームメンバーからの反感を受けないようなマネージメントのスタイルというものを追求している印象でした。

最後の質疑応答では、「このようなマネージメントの方法論はBlizzardの経験則であったり、自然発生的に生まれたものなのか、それとも外部からの知識があったのか」といった質問がありました。スピーカーのNoel Wolfmanさんはビジネスマネージメントの勉強をした経験があり(MBA云々というフレーズもあったような)、以前はドリームワークスSKGでもディレクションやチームの管理に携わっていたようで、その経験が買われてBlizzardに所属することになったということでした。

海外の企業は、適材適所というか餅は餅屋の感覚が根付いているな〜と思った。

2011-09-05 00:57:21 +0900

Herokuで動かしているアプリケーションの稼働率をPingdomで計測してみた。

無料プランなので「5分毎にHTTPレベルで接続できるか」を確認するように設定して、2011-08-15から2011-09-05の間の稼働率は99.85%でダウンタイムは45分だった。この期間中にはAWSに起因するわりと大きめの障害が1度あったので、まあこんなものかなという印象。

Pingdom Panel

データベースに起因するダウンタイムが多いような場合は、Dedicated Databaseにすると改善するような気もする。

2011-08-17 07:57:39 +0900

ddコマンドでディスクをコピーする際、10秒ごとに途中経過を表示する方法。

まず、ddをバックグラウンドで実行して出力がnohup.outに保存されるようにする。

$ nohup sudo dd if=/dev/sdf of=/dev/sdg &

ddのプロセスにSIGUSR1を送るとnohup.outに途中経過が追記されるので、watchコマンドでそれを10秒おきに呼び出すようにする。

$ watch -n 10 "sudo kill -USR1 ddのプロセスID && tail -1 nohup.out"

こんな感じの表示が10秒ごとに更新されるようになります。

dd progress with watch command | Flickr - Photo Sharing!