突撃!隣の開発環境 パート12【Treasure Data編】 in シリコンバレー
こんにちは!しんやです。今回はおおはしりきたけが書き連ねている人気シリーズ『突撃!隣の開発環境』に乗っかる形で私もこのシリーズエントリを書かせて頂きたいと思います。
突撃!隣の開発環境とは
技術事例やノウハウなどは、ブログや勉強会などで共有されることが多いと思います。しかし、各社の開発環境や開発体制などは意外と共有されていないこと多いと思います。ノウハウの流出になるかもしれませんが、それ以上に、より良い開発を目指している会社さん同士で情報交換を行い、良いチーム、良いプロダクトを作っていくという志の会社さんの為の情報共有のための企画になります。開発環境や開発体制なども技術領域によっても変わってくると思いますが、この突撃!隣のシリーズでは様々な会社さんのイケてるツールの使い方や、仕事が捗る開発体制についてインタビューを行っていく予定です。
Treasure Data社紹介
今回第12回目として紹介させて頂くのはTreasure Data様です。
ですが、タイトルにも銘打っている様に、今回の訪問先は日本/東京丸の内オフィスではありません。
そうなんです!今回は米国カリフォルニア州にあるUS Headquartersの方に来ているんです!
ちなみに場所的にはこの辺です。
現在私は米国サンフランシスコに滞在中です。弊社代表取締役社長 兼 AWS Community Heroの横田とAWS re:Invent 2015(開催地:米国ラスベガス)〜Tableau Conference 2015(開催地:米国ラスベガス)という何か分けわかんない編成の合間の10日間に関しては、日本に戻らずにサンフランシスコに居る...という訳です。
今回のTreasure Data社 USヘッドクオーターへの突撃取材への道のりについて、米国サンフランシスコ州の滞在先から『カルトレイン』なるものに乗って最寄駅となるSan Antonio駅へ。
カルトレインを降りた光景はこんな感じ。どーんと(ほぼ)一直線に伸びた線路に思わず映画『バック・トゥ・ザ・フューチャーPart3』のあの線路を思い出してしまいました。
空はホントーに抜けるような青空です!この日の気温は少し暑く、パーカーを羽織って歩くと若干汗をかくかな位の陽気でした。
Treasure Data社の入っている建物の雰囲気はこんな感じです。
では、いざ、突撃!(※訪問です)
建物は内部に中庭のある構造になっていました。この雰囲気はとても癒やされますね〜。
入り口&受付。よろしくお願いします!
オフィスの雰囲気&開発風景
受付にてTreasure Data, Inc. Founder兼CTOの太田一樹さんにご挨拶及び職場フロア各種をご案内頂きました。こちらのEAT CLUBはランチサービス。オーダーをしておくと毎日ランチが届く事になっています。ちなみにTreasure Dataの社員の皆さんは夕食については主に家で食べる事が多く、仲間と飯を食いに行くというような事はたまにある程度なのだそうです。
壁にはこんな張り紙も。
開発フロアに早速エンジニアの方がいらっしゃいましたので、早速突撃!(※ご挨拶です)
こちらのデスク環境はエンジニアの西澤無我さんのもの。開発時にはペンタブを使用しており、西澤さんが活用し始めて以降、評判を受けてチーム・フロア全体に広まり、今では皆さんで使っているとの事です。言語毎に開発環境を分けていて、JavaについてはIntellij、RubyについてはEmacs(=Java以外はEmacs)を使っているそうです。
そして少し時間を置いて、Treasure Data, Inc. Founder 兼 MessagePack, Fluentd , embulk/embulkの開発者である古橋貞之さんも開発現場に来られました。古橋さんはVim使い。見せて頂いた画面は『Vim X分割』のウインドウ。左から始まったエディタがコードリーディングや各種参照、展開等を経て右へ右へと分割ウインドウが増えていき、このような形となります。この時に見せて頂いたのは7〜8分割でしたが、多い時には『Vim11分割』辺りまで増えて行くこともあるとか。
御二方にモニターを前に写真を一枚撮らせて頂きました。ありがとうございます!
[追記]:ちなみに上記で言及されていたペンタブに関する部分について、幾つか言及されていた方がいましたので改めてお伺いしてみました。古橋さん曰く、『ポインティングデバイスです。マウスやトラックボールと違い絶対座標なので、思った位置を思考時間ゼロで瞬時にポイントできます。写真に映っているIntuos 3は、かれこれ10年くらい使ってますね。思えば、Realforceよりも付き合いが長いです。慣れるまで少し時間がかかりますが、疲れにくいし、オススメですよ。』との事でした。
インタビュー
続いては場所を会議室に移し、横田が太田一樹さん、そして古橋貞之さんの御二方にこれまでのシリーズ回で質問していた内容についてお伺いするインタビューが続きました。(※以下、敬称略)
(今回の企画趣旨に関する説明を太田さん、古橋さんにおこなう横田)
Treasure Data社について
- 横田:
- Treasure Data社はどんな事をやっている会社ですか?
- 太田:
- クラウド上で分析を行なう環境を提供しています。基本的には企業様向けのサービス。今までオンプレ環境で重厚長大で作っていたものを月額課金の形で素早く構築し、構築後の環境については我々の方で24/365の形で運用サポートを行なう、という形を取っています。
- 古橋:
- 大変地味な作業ではありますね。
- 横田:
- クラウドのツールを使っていたとしても時間が掛かりますし、また運用も大変ですよね。その点マネージドなサービスになっていると楽だと思います。
開発環境について
- 横田:
- システム構成については、どのような形になっていますでしょうか?
- 古橋:
- このような形となっています。(※下記画像を参照)
- 横田:
- AWSの中ではどのコンポーネント、サービスを使っていますか?ワクテカしそうなキーワード等があれば、併せて教えてください。
- 古橋:
- AWSサービスについてはEC2とS3、RDS、Route53といった基本的なものしか使っていないですね。開発言語としてはRubyとJavaがメインです。Rubyコミッタが社内に2人居ます。
- 太田:
- 内部では、古橋の作成した独自のデータベース『PlazmaDB』を使っています。Amazon S3、オブジェクトストレージとPostgreSQLを使って構築しています。(※Treasure Data斉藤様執筆のQiita下記エントリが詳しい解説を投稿されています。詳細はこちらをご参照ください)
- TreasureData - Treasure DataのPlazmaDBを理解する - Qiita
(技術話に熱が入り、ホワイトボードを使って解説&ディスカッションの展開に)
- 横田:
- そんなTreasure Dataの開発環境を支える『開発端末』について教えて下さい。どのような環境、ツールを使っているのでしょうか?
- 太田:
- OSとしては、基本的にはMacです。その他諸々の開発環境については、開発者には年間数十万円の予算、バジェットが許されていて、(その予算の)範囲内であれば自分で自由に選べて整える事が出来ます。
- 横田:
- DevOpsについて、この辺で使っているツールについてはどんなものがありますか?
- 太田:
- Chefのホスティングサービスを使っています。
- Chef Manage
- また、Datadogはインフラ周りで非常に良く使っています。アプリのモニタリングはNewRelicを使っています。
- 太田:
- Datadog、(インタビュー用に)どんな画面を見せたら面白いかな?
- 古橋:
- HadoopのCPU使用度とか良いかも知れないですね。蜂の巣のような構造のイメージ図で、セル1個が1つのサーバになります。
- 太田:
- DatadogではAPIレスポンスの平均速度等も確認出来るので、問題の切り分けにも使えます。ラウンドトリップの確認にも使えます。また、StatusPage.ioというのも面白いです。名前が示す通り、ステータスベージだけをホスティングしてくれるサービスです。メトリックスをdatadogやnewrelicから取って来ていて、アナウンスにも使えます。お客様にサブスクライブしてもらう事も出来ます。rssにも展開可能です。仕組み的にはジオグラフィックに3箇所にデプロイしてつかってるみたいですね。
Datadogは様々なサービスとの連携も容易に可能となっています。勿論Fluentdについても対応しています!
コミュニケーションツールについて
- 太田:
- Slackを使う事が多いですね。
- 古橋:
- あと、ビデオミーティングツールを使っています。今使っているのはzoomというものですが、これは大陸間での通信性能も非常に高いクオリティを保っていてオススメですね。電話でも(ミーティングに)入る事が可能です。このツールを使い、全社ミーティングを50人60人規模で行なう事もあります。
タスク管理について
- 太田:
- アトラシアン社の製品、JIRAとConfluence、Wikiを使っています。後はシンプルにメールです。
プロジェクト管理について・デザイン面について
- 太田:
- こちらも基本的にはJIRAです。
- 横田:
- ちなみにデザイン系のツール、管理はどういう風に行なっていますか?
- 太田:
- invisionというものを使っています。AIファイル等をアップロードして使い、コメントをデザイン(画)のこの場所に!っていうのが出来たりするので気に入っています。
- 横田:
- デザイナーの方々は、実際にどのような働きをされているんですか?
- 太田:
- UXエンジニアが1人居て、IllustratorでUIのモックを作成し、エンジニアとディスカッションしながらデザインを詰めていきます。マーケティングチームにもデザイナが居て、 Illustratorを駆使しています。現在会社のロゴ等、『We Love data』等のこういったデザインについても社内にガイドラインを設け、それに沿った形で作っています。
- 横田:
- こういったガイドラインってどういう感じで決めているんですか?
- 太田:
- この辺りは全部委託しています。Focus Labというところを使っているのですが、これはとても良いですね。
- 太田:
- また、MetaLabというのも良いですね。有名どころで言うとSlackのUIは全部ここでやっています。(有名になり過ぎて)もうこの会社には頼めないですね。
- 横田:
- 日本で言うとグッドパッチのような感じですね。
- 太田:
- デザインの進め方については、先程の開発現場を見てもらっても分かるように、壁に色々貼って、そこでディスカッションしながら進めている部分はあります。(情報を)みんなの目に見えるところにおいています。
仕事の共有について
- 横田:
- この点について、誰がどこで何をやっているか、という情報の共有はどのようにして行なっていますか?
- 太田:
- 開発という部分で言えば、やはりJIRAですね。JIRAによるセットアップ、ワークフローには充分な時間を設けています。また、JIRAではカンバン方式でダッシュボードを作ったりもしています。個別のワークフローを作ったり。
- 横田:
- なるほど。これらは我々も使っています。
リモート勤務について
- 横田:
- リモートワーク、リモート勤務をされる方々は多いのでしょうか?
- 太田:
- 環境としては分散していますけど、基本的には皆さんオフィスで作業される事が多いですね。
Gitの活用について
- 古橋:
- こちらもJIRAと連携しています。
- 太田:
- JIRAチケットを入れてブランチを作り、Developmentステージを始めます。JIRAのワークフローが肝ですね。ブランチにコミットを積んで、プルリクを出して、デプロイステージで一旦止めます。開発現場では2週間に1回、デプロイのタイミングを設けてますので、そのタイミングでどの内容をデプロイに乗せるかを決めています。デプロイしたらプロダクションテストを経て、クローズしています。
開発体制について
- 横田:
- 開発チームの構成について教えて下さい。チームはどういう役割の人がどの程度いるのでしょうか?
- 太田:
- 組織チャートがありますのでこれを見ながらお話しましょう。組織図はConfluence上にGliffyというプラグインを使って作成しています。
- 太田:
- メンバーはオープンソース専任が2人、古橋さんともう1人、FluentBitのメンバーがいます。プロダクトチームは4人。私(太田さん)はマネジメントを行なっています。日本側にもマネジメントが1人。フロントエンドチームは3人程。APIを作っている人はUSで2人、日本で1人います。それ以外はバックエンドチームです。HadoopやPresto等、およそ15人近い人数が対応しています。社員全体の割合で言うと、約35%が開発系といったところでしょうか。
生活サイクルについて
- 横田:
- Treasure Dataの社員の皆さんはどのようなサイクルで1日を過ごしているのでしょうか?
- 古橋:
- 私はまず朝起きてSlackとメールをチェックし、日本メンバーの活動が終わったあたりで活動を始めます。それまでの日本側の動きをチェックし、アサインやタスクなど何らか対応が必要であればそれらを行います。車で出勤し、御飯を食べたあとはひたすらコーディングですね。だいたい18:30から19:00頃には帰宅してしまい、帰宅後はオープンソース活動を行なっています。場所を変え、気分を変えて、気分転換をして活動しています。
- 太田:
- 私は夜中3時に寝ています。やや夜型の生活ですね。9時半には起きて10時には出社、あとはひたすらミーティングです。ミーティングは1つあたり約30分、そのサイズのミーティングをひたすらこなす感じです。エンジニアリング/プロダクト/サポート等、色々なものを見ています。時間は幾らあっても足りないですね。
- また一方で、夜8時から9時半については『ファミリータイム』としています。飯の時間だったり、子供と遊んだり、"家族の為"の時間ですね。土日は完全オフ。こちらの文化でもあるし、僕も社員に『土日は働くな』と言っています。10時から3時は日本対応の時間に充てています。5時間程ここでやり取りを行なったり、または自分の時間に使っています。
- 横田:
- こうしてみると、太田さんが気持ち良く働けるように、この形にシフトしたとも言えますね。
- 太田:
- そうですね。それはあるかも知れません(笑)
- 横田:
- ちなみに出勤時間はどのくらいですか?
- 太田:
- 車でおよそ15分と言ったところですね。
- 古橋:
- 実は私と太田は住んでるところが近いんですよ。
テストについて
- 太田:
- 最近は『スタビリティ インプルーブメント プロジェクト』に注力しています。UTで80%以上をカバーする等メジャーなコンポーネントで基準を作成し、CircleCIを用いながら定期的に開発、ステージング、プロダクトでサイクルを回し、エラーが発生しない事を確認しています。
- 社内ではTableauを活用しているのですが、この場合でもTableauへの書き出しとしてそれぞれのバージョン(8.3/9.0/9.1/Online等)用にテストスクリプトを作成してテストを回し、Jacocoを使ってカバレッジを取っています。同様にRubyの場合はRSpecを使い、SimpleCovでカバレッジを取っています。
- 自動化でテストを行なっている一方で、UIに関する部分ではSeleniumを使うと共に人を使ってテストを実施してもらってる部分もあります。
会社の文化・ビジョンについて
- 横田:
- そろそろインタビューを締めようかと思います。ここまで色々お聞きしてきましたが、Treasure Dataさんは実に色んなサービスを活用されているんですね。
- 太田:
- 投資家が同じでサービスを提供している企業と仲良くなって、結果的にそのサービスを活用する機会が多くなっているっていうのも影響しているのだと思います。
- 横田:
- 最後に今後のビジョンについてお聞かせください。
- 太田:
- 我々はオープンソースを重視しています。社長もRedHat出身だし、そのマインドは強いものがあります。B2Bのトラディショナルなものを行いながら、FluentdのようなOSSのプロダクトを出す事によってお客さんが来てくれています。そういった企業文化は崩したくない、続けて行きたいですね。OSSは必要、という教育は社内で行なっています。これまではデータインフラ・データの基盤を作ってメンテナンス出来るという人がいない、そんな状況にギャップを感じていました。それがTDを作ったきっかけとも言えます。TDでそういった、基盤環境を改善出来るような世界を作っていって、結果社会に貢献出来ればと思っています。
- もっと簡単に、大量データを扱えるというイメージを以って、ビジネス部門の人がデータを使ってアクションを起こせていくように注力して行きたいと思います。
さいごに
インタビューは非常になごやかな雰囲気で1時間程続きましたが、活用しているツール類の中には『こんなものもあるのか!』と興味を引くものが多数あり、是非弊社でも活用してみたいと思いました。突撃取材及びインタビューに御協力・御対応頂いたTreasure Data社の皆様、ありがとうございました!
(インタビュー終了後、Treasure Data社ロゴを前に3人で記念撮影。 左から太田一樹さん、古橋貞之さん、横田聡)