dots. Summit 2015に行ってきました

f:id:watass:20150208201831j:plain

dots. Summit 2015
http://eventdots.jp/promotion/dots_summit_2015

行ってきました。以前より勉強会の登録や情報収集で利用させていただいているdots.にて、運営元のインテリジェンスさんが企画するdots. Summitの情報が公開されていたので、早々に登録。昨日参加してきました。
本イベントではGoogleサイバーエージェントGunosyなどの今をときめくエンジニアさんがスピーカーとして登壇されたため、非常に有益なインプットを手に入れることができました。そこで、インプットを忘れないようにするため、ざっとレポートします。


開会挨拶

まずは主催の責任者さんからの挨拶と、会場提供のフリークアウトさんからの一言。社内にこれだけ大きなスペースがあるのは羨ましいなー。ドラムセットとかもあるし、バンド活動とかもできるのだろうか。身近にスタジオがあるようなものだし、ただただ羨ましい限り。

スピードをあげる技術の導入事例

何故scalaを選んだのか? 〜 アドテクスタジオの場合 〜

サイバーエージェントの神田氏によるセッション。サイバーエージェントはソシャゲのイメージが強いですが、最近はアドテク界隈でも強烈な存在感を示しています。神田氏はサイバーエージェントスマホ広告サービス、AmoAdの開発責任者で、開発技術にScalaを採用した事例をお話していただきました。Lisperとのことで、なかなか渋いエンジニアな気がする・・・。

Scala採用の経緯はエンジニアの希望からはじまり、並列分散処理に優れている、という点に注目が集まった結果、とのことでした。Scalaは今まさにホットな言語だなと感じます。
実際の採用に至るまでに、特徴を理解したり、社内勉強会をやってみたり、あくまでもミニマムなスタートから始めたり、と普及までの取り組みを紹介していただきました。なかなか既に動いているものを別の言語で書きなおす、というのはハードルが高いものですが、定期的な改善を続けることが高品質なサービスを支えるポイントなのかもしれません。

社内勉強会など、社内が技術習得に熱心な環境は少しうらやましく感じました。Hadoopは未だに使ったことがないので、Scalaで書きなおす、といった部分や、Scaldingというフレームワークについてはいまいちわかりませんでしたが、Scalaは使ってみたいです。

Dockerを活用したリクルートグループ開発基盤の構築


リクルートテクノロジーズの吉田氏によるセッション。リクルートの各サービス基盤を支えるリクルートポイントを担当されており、非常にミッションクリティカルなサービスの開発基盤を紹介していただきました。リクルートのサービスインフラは非常にカオスになっており、環境提供にとても時間がかかっているという話からはじまり、その改善のために、Dockerを利用したという事例紹介でした。

Dockerで環境をコンテナ分割し、環境提供する際には、必要最低限のコンテナのみ利用してもらうことで、環境のクリーンアップのコストを最小限に抑える。Dockerはローカルで開発環境を作成できるようなVagrantみたいなものだと思っていたのですが、こういった活用方法があるんですね。ただ、環境構成が死ぬほど複雑だったので、なかなか理解ができませんでした。勉強不足を感じます・・・

開発言語にはClojureというLisp系言語を使っていたそうです。Lispは興味があるものの、どう使えばいいのかわからなかった手前、非常に興味がわきました。顔文字コーディングが楽しそうです。ちなみにシステム名はakagiだそうです。会場ではやや受けでしたが、人事に絵を消された話は面白かったです。

変わったUIを持つアプリ”へやくる!”


ネクストの大坪氏によるセッション。へやくる!というアプリの紹介でした。
FacebookのPaperを参考に、スマホアプリのUI構成を見なおしたとのことです。スワイプ操作だけで様々な操作を完結させるのは、常にユーザ操作を受け入れるようにしなくてはいけず、テクノロジ的に極めて難しい、という舞台裏を明かしてくれました。

結局、Facebookの提供するサンプルアプリをベースに成し遂げたとのことですが、確かにへやくる!のUIはすごくいいです。UIはサービスを利用してもらう上で非常に重要な部分だと思いますので、参考にしたいですね。
後、他にもサービスの紹介がありましたが、ハードウェアとの連携がすごく面白いなと感じました。学生時代はあれほど絡みたくなかったハードウェアも、久しぶりに使われているのを見ると楽しそうだなぁ・・・

データ分析のための技術基盤を学び直す

大規模並列検索サービスGoogle BigQueryについて


Googleの佐藤氏によるBigQueryの紹介。データ集計に時間のかかるMapReduceとは別に、非エンジニアでも簡単にGoogle社内のビックデータを使用できるBigQueryというテクノロジです。Google社内では枯れたテクノロジ、とのことですが、最近よく話を聞きます。暴力的な並列分散で10億レコードを30秒で処理できてしまうという恐ろしさです。しかもインデックスなしですからね。スロークエリに苦しめられたエンジニアなら、そのすごさは説明するまでもないでしょう。

また、GoogleAnalyticsのプレミアム版だと、BigQueryに解析結果を入れることもできる、とのことで、サードパーティデータとくっつけてDMP的活用もできそうですね。既にGoogleAnalyticsはDMP的なポジションになりつつありますが・・・
現在、インフラはAWSを使用していますが、BigQueryのようなサービスは未だにありませんので、これはGCPの強みですね。GCPAWSとは異なるメリットとしてGoogleの巨大なプラットフォームをそのまま活用できる」という話を聞いたことがありますが、なんとなくその片鱗を感じるセッションでした。

Treasure Data と OSS


トレジャーデータの中川氏のセッション。恥ずかしながら、トレジャーデータという会社をあまり知らなかったのですが、Fluentdで有名な会社さんなんですね。
トレジャーデータさんはOSSにコミットするエンジニアを多く抱えており、今回のセッションでもデータ分析基盤のOSSについて色々なお話を聞くことができました。Hadoop、Tez、Spark、Prestoなど気になるキーワードは色々拾えたので、ちょっと調べておきます。

ビックデータ時代のビジュアライゼーション


Tableau Japanの飯塚氏によるセッション。非エンジニアにも利用できる、ビックデータ活用のビジュアライゼーションで有名なTableauのサービス紹介です。

BigQueryやRedshiftとも容易に連携でき、ドラッグアンドドロップなどのGUI操作で簡単に集計、可視化ができるというメリットを実演で紹介されました。エンジニアですと、こういったGUIは自分で作ってしまえ!となる人がきっと多いと思いますが、ビジネス的な観点から見たときに、既存のサービスを活用するのも賢い手なんでしょうね。Twitterから魚屋さんまで、規模に縛られない幅広いユーザに利用されている、というのはすごい。

サービスを加速させる開発体制

会員数180万人のマッチングサービスpairsの急成長を支える技術基盤


エウレカの森川氏によるセッション。pairsやcouplesを運営するエンジニアさんですが、上司との掛け合いが大変おもしろかったです。
インフラはAWSで再構成し、DynamoDB、SQSなどのサービスを活用しつつ、デプロイはCapistrano、監視サービスにZabbix、NewRelicを使用しているとのことでした。また、情報収集にはSlackを利用されているそうです。既存の問題が多いインフラを改善した話は参考になりますね。

印象的だったのは、DynamoDB採用時にAWS依存のリスクを既に考えていた点や、SQS採用時の単一AZリスクを考えていた点です。非常に慎重派で堅実な方なんだと思います。Design for Failureという思想は非常に賛同する部分なので、この意識は参考にしたいですね。あと、Golangでの開発頑張ってください。

弥生の品質へのコダワリとTDD


弥生の山田氏によるセッション。弥生といえば、弥生会計などのWindowsアプリで有名ですが、内部では先端の開発手法を採用されているということで驚きました。
TDDはコストの割に享受できるメリットが少ない、などの話もあり、現場での活用事例があまり聞いたことがありませんでしたが、弥生さんのようなバグが許されない開発ではTDDを採用されているということです。
ただ、通常のTDDとは異なり、企画段階からテスタビリティを意識するようにし、ウォーターフォール的なV字モデルを実現しつつも、アジャイルからイテレーションなどの思想を受け継いだ弥生式TDD、とのことでした。

開発体制を実現するには、やはり意識の徹底と教育が大事、という話は大変ためになりました。弥生さんでも昔にはリファクタリングを実施されたということで、やはりリファクタリングは避けて通れない道なんだなと改めて痛感しました。個人的には「使いづらい、難しい、ださいは障害だ」というセリフがぐっときましたね。

次世代のリアルマーケティングプラットフォームに挑戦するラクスルの開発体制について


ラクスルの田島氏によるセッション。ラクスルは最近CMでも結構話題ですよね。
成長中の企業における

  1. 増えすぎた人数の制御
  2. 技術の属人化
  3. 創業メンバーとの確執

という問題にラクスルがどうやって対処したか?というお話を聞かせていただきました。特に技術の属人化や確執的な部分には共感できる部分も多かったです。
人数の制御では、Redmineを使っていたものの、利用率が低くて実体を表せておらず、技術は属人化し、Wikiは形骸化。レガシーコードは先人に気を使って指摘できない・・・やっぱりどこでもよくある話なんだな。

とにかく大事なのは、ルールの徹底なんですね。言い出しっぺがエバンジェリストという発言はグッときました。レガシーコードに対する考え方として、速度を重視するフェーズから、安定を求めるフェーズに切り替わっているのだから、リファクタリングは必須なんだ。という話も目からうろこでした。

ヒットアプリを支える会社のシステムについて

ベストアプリW受賞を支える開発手法


VASILYの今村氏によるセッション。IQONというサービスを運営されているそうです。
とにかく開発で使っているツール全部晒すよ!という導入から始まり、情報共有ツール、開発支援ツールから全部紹介していただきました。ありがたいですね。

情報共有のツールとして、SlackやQiita:Teamを挙げられていたのはやはり印象的でした。Slackの最近の普及度はすごいなぁ。とりあえず情報は全部Slackに流し込むというスタンスで運用されているとのことです。いいですよね。SlackAPIを使った開発も試してみたいです。

1000万ダウンロードアプリ『メルカリ』を支える技術



メルカリの久保氏によるセッション。フリマアプリで有名なメルカリですが、もう1000万ダウンロード達成したんですね。おめでとうございます。

GitHubのプルリクベースで開発されているのは非常に今風で、他にもRedmine、Slack、Qiita:Teamといった有名どころのサービスが利用されているとのことでした。多くの勢いあるスタートアップ企業で採用されている技術は意外と共通しているようです。
インフラはAWSをはじめとして、さくらやGCPも利用されているそうです。多様に富んでるなー。あと、メルカリさんはPHPの印象が強かったんですが、最近はGolangを利用されているとのこと。ScalaGolangは本当に色々なところで話聞きますねー。

Gunosyの施策を支える技術



Gunosyの松本氏によるセッション。ニュースキュレーションアプリとしてのGunosyは知らない人はきっといないでしょう。銀の弾丸なんてない、とは有名なワードですが、アプリの成長より、チームの成長をさせる、というのはエンジニアにとっては嬉しい環境。

MICROSERVICEとDISPOSABILITYというキーワードを挙げられていました。大事なことはわかっているのですが、なかなか実践が難しいですよね。また、ABテストを容易に実現するために、デザインなどはJSONで指定できるようにしてある、という工夫はすごい。そういった方法で容易にデザイン変更を実現するんですね。
ちなみに、GunosyさんでもGolangを使っているとのこと。やっぱり流行ってるなぁ。

急成長サービスを支える開発手法

SPEEDA/NewsPicksを支える技術の選定手法



ユーザベースの竹内氏によるセッション。技術と価値に関するお話を聞くことができました。
他の登壇者さんとは異なり、エンジニアはお金にもっと関心を持つべき、新しい技術に惑わされない、というビジネスよりの考え方を持っておられました。

ユーザは技術ではなく、価値に興味関心を持っている、技術は価値を提供するためのものなんだ。これはわかっているつもりでも、つい見失ってしまいがちなポイントですよね。
個人的には新しい価値を生み出すのがBtoBサービス、新しい体験を生み出すのがBtoCサービスの価値だ。という話がぐっときました。色々と腑に落ちた気がします。

ランサーズを支える技術と流行


ランサーズの杉本氏によるセッション。ランサーズさんはクラウドソーシングで有名ですね。
通知ツールはChatworkからSlackへ。プロジェクト管理はRedmineからWrikeへ移行する予定とのことですが、やはり利用しているツールは他の企業さんと同じような感じなんですね。
暗黙知の氾濫などの問題はやはりどこでも発生しているようで、そのためには誰かが利用促進しなくてはいけないということでした。うーん。やっぱりこの辺りは、それがベストプラクティスになってしまうのでしょうか。

短納期&少人数でも実現できるCI



LiBの米山氏によるセッション。女性向け転職サイト、LiBz CARRERを運営されています。
開発者が足りない上に、納期が短いのはどの会社でも同じ悩みを抱えていると思うのですが、やはりCIは大事ですよね。

プルリクは正式な起案書、という考え方はエンジニアからすれば最高ですね。無駄にワードで資料書いて、コード書いて、なんてやってると面倒です。とはいえ、経営層まで理解してもらうためにはプルリクだけで治めるのはやはり難しいのかもしれませんが・・・
エンジニアカルチャーをしっかり定義している感じもいいですね。自身に誇りを持って仕事できそうです。

テスト方法としては、factory_girlを使ってなるべく正確なテストデータを毎回ランダムに作り、それでCIを行うという方法で、とても参考になりました。テスト方法のベストプラクティスは定まっていない感じがあるので、一つの方法として良さそうですね。

CTO対談~CEOが迫る!ヒットサービスを生み出す組織の作り方~


ランサーズCEO、秋好氏をモデレーターに構え、エウレカCTO、石橋氏、VASILYCTO、今村氏、ユーザベースCTO、竹内氏をパネラーに迎えた豪華対談。ぶっちゃけトークを色々聞かせていただき、大変楽しかったです。

成長するエンジニアはハングリーなやつ、という話は感じていたところでしたが、自身の成長と会社の成長をクロスさせて、コミットできる人材が成長できるエンジニアである、という話は新しいビジョンを与えてくれました。やはり自社の目指す成長を理解することが、ある意味では成長できるエンジニアへの近道なのかもしれません。さすがはビジネスにウェイトを置く石橋さんです。

やる気のないエンジニアは、そもそも入り口で防ぐ、という話はある意味衝撃的でしたね。仕方のないことかもしれませんが、モチベーションをあげさせることの難しさを物語っているようでした。モチベーションの低い人がいると、チームとして堕落してしまうのは正直納得なので、仕方がないことなのかもしれません。

なんというか、秋好さんのトークや進行がすごく上手でしたね。CEOともなると、やはりその辺りの才能は高いのでしょうか。参考になりますね〜。

全体を通して

今回は非常に濃いインプットを得ることができました。HadoopやBigQueryなどのデータ分析基盤、GolangScala。この辺りを今後勉強していきたいです。やはりコーディング経験の少なさがネックになっているような気がするので。

多くの企業で使われているRedmineやSlackなどのツールの話も参考になりました。とりあえず使ってみて、自分の環境でも使えそうなものがあれば使っていきたいです。言い出しっぺがエバンジェリスト。いい言葉ですね。

その他にも、開発における心構えや、体制についてが一番参考になった気がします。やはり社内で閉じこもっていると、他の企業の知見を得ることができなくなってしまうので、定期的にこういった場に参加して、知見を広げることの大事さを感じます。

今回は文章が多い個人的な記事になってしまい、恐縮ですが、次はもう少し価値のあるネタを公開したいと思います。Capistranoを使いたい欲が高まったので、その辺りの記事が書ければいいなーと思います。