akiyoko blog

akiyoko の IT技術系ブログです

「【 ヒカ☆ラボ 】 ITベンチャーを支えるテクノロジー  今、話題の4社が合同技術勉強会を開催!! ~ChatWork、ブラケット、Lang-8、ランサーズ~」に参加してきました

東京への三度目の大雪予報が不発だったその日、渋谷のITベンチャー系イベントに参加してきました。


【 ヒカ☆ラボ 】 ITベンチャーを支えるテクノロジー  今、話題の4社が合同技術勉強会を開催!! ~ChatWork、ブラケット、Lang-8、ランサーズ~(2014.2.20)


勢いのある ITベンチャー4社のインフラ、システムアーキテクチャを紹介するという、今回のイベント。内容としてはちょうど、
国内注目のWebサービスを支える言語・フレームワーク・アーキテクチャ一覧【2013年版】
っぽいなぁ、と思いました。もちろんこの記事に書かれたものから技術要素も進化しているようでしたし、詳しい舞台裏を聞くこともできました。


個人的には、つい最近まで

という「Lang-8」(らんげーと)に関する記事を書いていたこともあって、「Lang-8」のセッションが面白かったです。一年間ずっと使っていたので思い入れもありましたし、地味に画面や機能が少しずつ進化してきた過程をずっと見てきたので。それにしてもあのシステムを3人くらいで作って回しているのはすごいなぁ。


まとめを先にしてしまうと、サービスやプロダクトとして、

  • インフラ基盤: AWS
  • DB: mongoDB, Redis
  • フロントのフレームワーク: AngularJS
  • コード管理: GitHub、Jenkins
  • 監視: fluentd、New Relic
  • 解析: Mixpanel

を各社が申し合わせたように採用していたのが衝撃でした(全社一致でないものもありますが)。特に「New Relic」は、全員オススメしていたので気になります。


イベントレポートが公開されたようです。(2014/3/5追記)
『【ヒカ☆ラボ】ITベンチャーを支えるテクノロジー』レポート~話題の4社ChatWork,ブラケット,Lang-8,ランサーズが合同技術勉強会を開催!~:レポート|gihyo.jp … 技術評論社

チャットワークを支える技術

山本 正喜氏(ChatWork株式会社 専務取締役CTO)
blog: http://blog-ja.chatwork.com/2013/06/ten-webservice.html
参考: http://levtech-time.jp/article/a-hikalab-chatwork/

  • シリコンバレーに子会社。ルクセンブルグにも設立予定。
  • 創業は2000年で、意外と長くやってる。
  • 仕事をChatWork一本に絞った。
  • クラウド型ビジネスチャットツール。「チャットの効率性・シンプルさをビジネスへ」
  • 3万8千社。31万ユーザー。170ヶ国で利用されている。
    • ChatWork 3年目でこの規模。
  • 運営体制は30人くらい?
    • Web(PHP) 6人、Mobile 3人、Server 3人
    • UI Design 2人、Support 3人
    • その他グロースが5人(Web Design, Marketing)
  • 週ベースガントチャートで進行管理
    • Google Spread Sheet
    • 職種を問わず全メンバーを網羅
    • 1カラム1週間のスパン。週次でアップデート。3ヶ月先まで入れる
    • リリースマイルストーンで大きなリリースを確認できる
  • 進め方
    • プロジェクトごとにディレクター(PD)を決める
  • 仕様書はほとんどマインドマップ
    • MindManagerを使ってる。MindMeisterもいいよ
  • PivotalTracker/ GitHub Issues で詳細なタスク管理
  • コミュニケーションはチャットで。メールはしない。MTGも最低限。
    • 関係者を全員入れる。Dev/Ops等問わず
  • PHP部、AWS部などの部活チャットが多数立っている
    • プロジェクトで困ったときに答えてくれたりする
  • 社外の専門家とのチャット部屋も用意されている(Titanium, セキュリティ、弁護士なども)
    • すごい人がすごい安い値段でやってくれたりする
  • 特徴
  • リアルタイム通信のために、Google App Engine の「Channel API」を使っている
    • NodeでソケットAPIをする代わりに
  • Web Notifications
  • File API + XML Http Request Level 2
    • 複数ファイルをドラッグ&ドロップで送信。ファイル送信時にプログレス表示
  • WebRTC
    • ブラウザ上でのビデオ通話・画面共有
    • まだ Chromeのみ。エミュレーションするプラグインで実装。。
  • アプリは、Titanium Mobile でクロスプラットフォーム開発
    • Titanium Mobile, Backbone.js(+拡張FW),
    • ライブラリは、Zepto.js, Lo-Dash, Moment.js, Hogan.jsなど
  • Titaniumを採用した結果、、、Web版とのコード共有化は夢だった。。
    • ネットワークとスペックがプアなモバイルでは、全くコードの書き方が違う。。
  • しかも、Titanium SDK がiOS7に対応するまで何も出来ず。。
    • ネイティブ化を決意!!
  • Phest
    • デザイナ向け静的サイトジェネレーター
    • テンプレートエンジンの結果をhtmlに書き出して、S3にデプロイできる
    • APIドキュメントページの作成
  • インフラ
    • AWS+GAE
    • DBは RDS(MySQL)+DynamoDB+ElastiCache(Memcached)
    • 検索は Groonga
    • 監視は fluentd+Nagion+New Relic+SumoLogic
      • New Relicは超オススメ。有料で使ってる
    • GitHub+Jenkins+Capistrano+ChatWork
  • 開発環境は、Vagrant+Ansible+AWS

STORES.jp のそだてかた

牧野 圭将氏(株式会社ブラケット)

STORES.jpの開発体制全体の話。
少ない人数でスピーディに開発するためのノウハウ
できるだけ自動化をし、機能開発に集中できるように
なお、情報共有はマメに!

  • STORES.jsは 1年半。ほかにも4つのサービスを運営
  • 最短2分でオンラインストアが作れるサービス
  • メンバーは、エンジニア7名+デザイナー1名
  • 役割は特に無し。機能ごとにアサインされて、全てを担当
  • 開発
  • サービスが急成長するので、スキーマフリーな mongoDBは便利
    • 使わなくなったフィールドのお掃除はマメにしましょう!
    • バックアップやリストアが大変になってくる
  • AngularJSは手軽だが、Fat Controllerに注意!
    • テストが大変
  • デプロイは、1日8回ほど。
    • ワンクリックでEC2にデプロイできる仕組みにしている
  • インフラは AWS
  • リソース/エラー監視は、New Relicにお任せ
    • AWSを使うと、Standardプランが無料で使える
    • エラーレートやレスポンスタイムの劣化も監視できる
    • 監視サーバのメンテコストが不要!
  • ログ解析は Mixpanel
    • イベントログの収集
    • JS, Railsのどちらにもトラッキングコードを埋め込める
  • アクセス解析は、Google Analytics
    • Mixpanelは従量課金なので、トップページなどの重いところはこちらで。。
  • ABテストは Optimizely
  • 情報共有は ChatWork と Googleサイト
    • デプロイ連絡とか
    • 気になったサービスを共有する部屋も
    • 仕様の共有は Googleサイト(主に非エンジニア向け)
  • ダッシュボードで、アクセス数・流通額などをリアルタイム表示
    • 社員みんなが数字を意識できるように

Lang-8についての話(仮)

佐々木 達也氏(株式会社Lang-8@sasata299

blog: http://blog.livedoor.jp/sasata299/archives/52014014.html
参考: http://yang8.hatenablog.com/entry/2014/02/21/100949

からあげエンジニア??の「ささたつ」さんのセッション。「からあげエンジニア」というのは、唐揚げを作るタイプのエンジニアらしいです。余計に分からん(笑)。前職の Cookpad と関係があるとかないとか。敢えて小さなITベンチャーに飛び込んだ、その理由を語っていました。

  • iKnowなどはコンテンツ提供型
  • Lang-8は、プラットフォーム型
    • 学習用のコンテンツは提供せず、場だけを提供
  • メンバーは、社長1名+デザイナー1名+エンジニア1名+アルバイト数名
  • どうしてLang-8に?
    • 実際に触ってみて感動したから
    • すぐにレスポンスが返ってくる
    • 添削をし合うと、自然と仲良くなれるのがすごい
  • ユーザ数:75万人、PV:630万
  • 90ヶ国語以上がやり取り
  • 開発環境
    • Rails, Redis, MongoDB, AngularJS
    • EC2, S3, RDS, CloudFront, AutoScalling
    • GitHub(Private), HipChat, CircleCI, Mixpanel, New Relic
  • Redisはデータ分析用(ちょっとしたキャッシュとしても)
  • MongoDBは一部だけ(あとはMySQL
    • MySQLだとカラム追加するときにロックが必要なので、メンテナンスが発生
  • AngularJSは jQueryから移行している。
    • デザインの変更に強い
  • AutoScallingは自動的にEC2を立ち上げたり落としたりしてくれるサービス
    • 急なアクセス負荷が起こっても耐えられるように
    • 設定のクセが強いが、実際楽になった


ベンチャーあるある

  • やりたいことはたくさんあるのに人が全然足りない。タスク管理が重要
    • Trelloを使ってる
      • シンプルなタスク管理ツール。誰がどこをやるか、だけを管理
    • 優先順位は付けない。どうせ全部優先順位が高い
  • 生煮えプルリ(完成していないプルリクエスト)歓迎
    • GitHubでデザイナーとやり取りするのに便利
  • 文字だけじゃないやり取りをするように心がけている(画像、IMOなど)
    • Team Geak

Team Geek ―Googleのギークたちはいかにしてチームを作るのか

Team Geek ―Googleのギークたちはいかにしてチームを作るのか

    • 感情的な議論にならないように注意している
    • とにかく話す
  • やることが変わる
  • 結局は話し合い?
  • コードレビューがSPOF
  • テストの文化

成長し続けるサービスを支える技術

秋好 聡氏(ランサーズ株式会社)

ランサーズを5年間開発して得たこと・困ったことなど。

  • 2008年にリリース
  • 時間と場所にとらわれない新しい働き方の創出
  • エンジニア6名+アルバイト・業務委託
  • ユーザ:26万人
  • 半年してYahoo!トップページで紹介された
    • 5〜12万PV? さくらの専用サーバでは賄いきれず
    • 最初からAWSにしておけばよかった。。
  • Lancersタイムカード
    • 10分ごとにランダムでPCの画面キャプチャ、キーボード・マウスのクリック数が送信される
    • Adobe AIR(ActionScript)+Java+C
  • AWSに移行。コスト < スピード
  • 移行後のトラブル① RDSの処理遅延
    • 結局、EC2に移転
  • 移行後のトラブル① EC2のリブート問題
    • RDS化し、MySQLのバージョンを上げて、InnoDBのFULLTEXTインデックスを使う
  • 監視は、Munin, Nagios, New Relic
  • CakePHP, Rails
  • Lancersマガジン
  • ランサーズマイチーム(オンラインでチームを作成)