TitaniumMobile勉強記

Web系エンジニア向けのキャリアアドバイザーやってましたが現在はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連(Node.js、Titanium)あたり

ビール片手にRailsベースのWebサービスの運用をやってきた人のノウハウが聞けるトークイベントをやりました

f:id:h5y1m141:20140821172804j:plain

すでにid:interuさんに書かれてしまったのですが、RailsベースのWebサービスの運用をやってきた人のノウハウが聞けるトークイベントをビールを飲みながら緩い雰囲気の中やりました。

f:id:h5y1m141:20140821172446j:plain

今回は予算的な都合と、真夏というのを考慮して、比較的スッキリ飲めるようなタイプのものの数を増やして、それに合わせてこれまで頼んでないピザにしてみました

今回イベントやった背景

ちょっと縁あって、何故か現在、Rails4+AngularJSという組み合わせのサービスの開発(といっても既存機能の改修メイン)の仕事をやってます。

関わり始めて最初の頃は、自分の力不足もあって思ったようなスピードで開発ができずにいたのですが、よサービスの全体像がようやく見えてきた頃に、ソニックガーデンの安達さんが、Facebookで、

Rails 0.xのころから運用しているサービスをもうすぐrails4化(今はrails3系の最新+ruby 2.1.2)しようとしるんだけど、興味ある人いるかな?? かれこれ10年近くrailsを運用して最新版に追従してるサービスってなかなか無いですよね。 Rails運用の極意やテストの観点の極意やら、いろんな情報を出せるんだけど、ブログにまとめるのが億劫なんだよね。。

ということを書いてたので、

「10年運用しつづける中で得られるノウハウって色々ありそうだし、さしあたって、テストの観点の極意とかはすごい聞いてみたいなぁ」

と純粋に思ったのと、きっと似たような観点で現場で課題をを持ってる人はそれなりにいるのかなと思ったので、企画&当日のイベントの司会進行をしてみました。

イベント自体を振り返る

最初はホワイトボードを使いつつ、安達さんのこれまでの経歴&今回の10年ほど関わってる社内向けSNSのSkipの概要をお話いただきつつ、この↓スライドを交えてSkipをRailsで運用し続けた所のノウハウに関する話をいくつかしてもらいました。

イベント前に、軽くのみくいしながら、参加された方たちの大まかな属性を共有するために

  • 運用経験多 ⇔ 運用経験少
  • Rails経験多 ⇔ Rails経験少

という2軸で、ご自身の立ち位置をマッピングしてもらっていたのですが、今回の参加者は、Web系の人もいれば、ややエンタープライズ寄りな人もいて、役割も開発中心にやってる人もいれば、基本的にはインフラエンジニアとして仕事をしてる人もいる状況で、事前の予想通り、バラバラな属性になっていました。

そうなるとみなさんの聞きたいポイントは色々あると思ったので、いつも通り、2名1組になって互いに自己紹介してもらいつつどんなことを安達さんに聞いてみたいのか、いくつか質問事項を書き出してもらうことにしました。

f:id:h5y1m141:20140821172742j:plain

質問事項の中でいくつか覚えてる範囲で個人的に気になったトピックスを以下でまとめておこうと思います

営業範囲の少ない所から着手するのは何故?

過去、1.x→2.xや、2.x→3.xみたいに、Railsのメジャーアップデートを行う際に、影響範囲の少ない所から着手していったというお話が出て、横で聞いてて

「あー、確かにそうやって影響範囲の少ない小さい所からちょっとづつ着手していくことで、定期的に達成感も得られそうだな」

と思い、それ以上のことは特に思いつかなかったのですが、その後アラさんが個別に

「逆に大きい所を片付けた方があとが楽になるのでは?」

という質問をされていて、うまくいえないですが、そういう見方も確かにあるなぁとふと思いました。

影響範囲が大きいのは片付けるまでに時間がかかりそうだけど、それを早い段階で着手しておくことで、実はその他の細かい所も全て片付くのかな・・でもそれをやるには、影響範囲の大きい/小さいを明確に整理しきれてるからで、影響範囲の大きいというのも、実は小分けにすることが出来るのかなとか今振り返ると、これはもうちょっと深く掘り下げてみても良かったのかなぁとちょっと反省してます(^_^;)

テストをどこまで書くのか?

モデルだけ or コントローラーも対象としてるのか?End to Endのテストもどこまでやってのかという感じで、各自の状況は違えど、どこまで書いてるのかという意味ではみなさん共通っぽい感じでした。

ちなみに安達さんの所では以下の様にしてるそうです

  • 日々のコードレビューを通じて定期的にリファクタリングしてるのでモデルについてはほとんど書いてない
  • 一部APIとしてサービス提供してるものがあるので、そういうところに関連するコントローラーのテストは書く
  • End to Endのテストについては、日々よく利用される機能(記事を投稿する)については、自分たちもそれなりに使って確認してるので、そういう部分よりも、割とセキュリティ上の問題になりそうな認証・認可の所などの方に力点をおいてるとのこと。例えば、退会したアカウントが本当に退会した状態の振る舞いが出来てるのかとか、アクセス権の設定をしてる箇所が意図通りになってるのか・・・という話

今手伝ってるところでは、初代or2代目のどちらかの方が書いたであろうRSpec+FactoryGirlが少しあるのですが、正直そんなにテストかかれてないし、3代目の人が、AngularJSを使い始めたのはいいけど、テストは見る限りない状況なのでそっちもどうにかしないといけないなぁと思っていて、これを聞きたいなぁと思ってたので、自分としては、凄いタイムリーでした!

ただ、その時に教えてもらったテストのツールで、なんかホラー映画に出てきそうなネーミングで、13日の金曜日のジェイソンはみたいな感じの名前が付いたのをメモるのを忘れて、帰りの電車で悶々としてました(^_^;)(*1)

1人体制で仕事のモチベーションは保てるのか?

質問の意図としては1つのサービスを長年1人でやっていて、飽きがこないのかという感じが根底にあっての質問意図だったようです。

そもそもソニックガーデンは少数精鋭主義で現在10人前後のエンジニアで60程度のサービスを見てるそうなので、1つにずっと張り付くという状況ではないので、Skip以外のサービスで色々なものに触れられるとのこと

このあたりの話は個人的に見聞きしていた話だったので、安達さんの経歴について触れる時に、普段の仕事のスタイルについて触れておくべきだったなぁとちょっと反省してます(T_T)

最後に

Facebookでいきなりお願いして快諾いただき、しかも資料もしっかり作りこんでくれて、安達さんありがとうございました!

(*1)帰宅してから、ポルターガイスト(Poltergeist)という A PhantomJS driver for Capybaraっていうのを思い出せてスッキリ。

あと、テスト系の話じゃないけど、rails newする時に、お決まりのgemをまとめてインストールしてくれるみたいな便利なのがないですかねーみたいなのを、交流会で喋っていた人がいて、横で聞いてたら、Rails Composerっていうそのものなのがあるのをついでに安達さんから教わりました。