D2C

DeveloperWeek2019 in San Franciscoへ行ってみた 〜参加レポート〜

こんにちは、BE部の沢井です。
今回は、2019年2月20日〜22日に渡って行われたDeveloperWeek2019@サンフランシスコに行ってきたのでその様子を記事にしたいと思います。

Developer Weekってなに?

Developer Weekとは、開発者が集まって今トレンドになっていることについて、ワークショップやセッションを行ったり、企業ブースのある展示会もあったりするイベントです。全体で8,000人ほどの参加者がいるとのことで、今回も賑わっていました。 以下のカンファレンスやイベントが同時期に同じ場所で行われて、ふさわしいパスがあればどれでも参加できます。
  • Developer Week
  • Dev Exec World
  • DEV TECH INDUSTRY SUMMIT
  • DEVELOPER WEEK Hiring Expo
  • DEVELOPER WEEK HACKATHON
  • JAVASCRIPT Conference
  • BLOCK DEV
  • AI Dev Conf
  • Scalability Conference
  • Popular programming languages and frameworks
  • Coding reality VR AR 3D DEV
  • Dev Carrier Summit
  • NEW DATABASE TECHNOLOGIES
  • The FUTURE OF DEVELOPMENT TOOLS
  • Next Generation Languages
詳しくは、サイト(https://www.developerweek.com)をご覧ください。 上で紹介したカンファレンスやイベントの名前だけ見ても、今トレンドになっていそうな事柄が扱われてそうですよね。
現地の会場で日本人にお会いすることはほとんどなくて、日本ではまだそんなにメジャーになっていないカンファレンスということになるかと思います。

ハイライト

早速ですが、みてきた中で印象に残ったことをハイライトとして挙げてみます。たくさんのセッションがあったので一人でカバーできる範囲は限られていて、今の業務に関係が深そうなあたりを中心に回りました。
  • コンテナ、Kubernetes隆盛
    • やはり、KubernetesをAWSやGCPがサポートし始めたことからもわかるように、コンテナ技術についてのセッションが多く、実用段階に入ってきた感がありました。
    • セッションの中で、Spotify, Atlassianはコンテナへの移行を完了させたと言っていました。もっとも、セッションの主題はどういうシステム構成か、ということよりも移行がどれくらい大変だったか、でしたが。
  • AI/機械学習パイプライン
    • AIや機械学習は米国でも重要なテーマの一つになっています。
    • AIや機械学習をどうやって導入するか、という議論はすでに終わっている感じで、今は作ったモデルをプロダクションに如何に早く出すか、そのサイクルを短くできるかということをやらなければ、というセッションが多かったと思います。
    • 個人的には、分析する人とプロダクションのシステムを作る人は人種が異なるので、そのギャップをどう埋めるか、というテーマなのかなと思いました。
  • Realtime / always connected
    • リアルタイムで利用者と繋がることで新しい経験を生み出すことができるようになっていて、既存のサービスもいずれリアルタイムで繋がっていく変化があるだろうと言っていたのが印象的でした。
    • 例として、お客さんとドライバーをリアルタイムに繋げたUber、インドネシアのスタートアップGoJekはバイクタクシーの手配から始めて様々なサービスを展開、自宅でエクササイズする人々を繋いでモチベーションを維持するPELOTON, インドの宅配サービスswiggyなど、ユーザと事業者をリアルタイムでつなぐことで新しい価値を生み出しているサービスが紹介されていました。
  • チームコミュニケーション
    • 開発やサービスそのもののお話の他にも、開発チームをどういう風にマネジメントすべきか、チーム内のコミュニケーションをどういう風に構築すべきか、といったテーマも多くみられました。
    • チーフエンジニアが抜けてしまったときに困らないためにどうするか、といったセッションもあり、考えさせられました。

プロダクト、サービス

セッション中や展示ブースで見聞きしたプロダクトについてかいつまんで紹介します。
  • Kite
    • https://kite.com
    • 機械学習を用いたPython用コードコンプリートプラグインで、主要なエディタに対応しています。簡単に言うと普通のコードコンプリートよりも賢く、使っているとスイスイコードが書けるらしいです。実際に入れて数行試してみましたが、確かに違う気がしました。
    • もともとは開発者の効率を向上させるために、不要な検索をしなくて済むようにしたかった、というのが出発点とか。
  • Hazelcast
    • https://hazelcast.com
    • めっちゃ速いインメモリデータグリッド。リアルタイムな機械学習のパイプラインを構築するのに使える、Hadoop、Sparkに続く第三世代の処理基盤。速そうだけど高そうでもある。
    • オープンソース版もあるそうなので検証はしてみたい。
  • GitKraken
    • https://www.gitkraken.com
    • 表示が美しく、操作しやすいGitクライアント。
  • Windows subsystem for linux
    • そんなの知ってるよ、という方も多いと思いますが、Macユーザとして新鮮でした。WindowsでLinuxがサクサク動くし、ディストリビューションも有名どころから選べたりします。よりネイティブな動作に近く、Cygwinで環境構築に時間をかけたことがある方は隔世の感を感じると思います。
    • 内部的にはVMではなくPOSIXシステムコールを変換するレイヤを挟んで実現されているそうです。ターミナルがあるからMacを使っています、という方は、よりLinuxの商用環境に近い環境で開発を行えるのでいいかも!しれません。
  • Kublr
    • https://kublr.com
    • Kubernetesの運用管理を行うサービスです。D2Cではまだ本格的なKubernetesの運用は始まっていませんが、このサービスの話を聞くと作り始めることよりもそれを運用する方が大変だ、ということのようなので、Kubernetesの導入の際には運用まで考えなければいけないな、と感じた次第です。
  • mxnet, Pytorch, DL4J, Keras, dmlc XGBoost, TensorFlow
    • 名前が出てきた機械学習用のフレームワークたちです。どれも聞いたことはある、D2Cでもデータサイエンスチームが使っているものもあったりします。今は乱立している時期なんだろうな、と思います。
  • Algorithmia
    • https://algorithmia.com
    • 機械学習のモデルを作成し、それを簡単にデプロイできるようにするフレームワーク・サービスで、機械学習で作成したモデルを素早くプロダクションに反映させることができるようになるそうです。このサービスを使うかどうかはさておき、コンセプトとしてすごく重要だなと思いました。
  • Lucidworks
    • https://lucidworks.com
    • データストアにSolr、モデリングにSparkを使い、機械学習パイプラインを実現しているそうです。入ってくるストリームもユーザデータも機械学習の結果も全てSolrに取り込んで処理する力技感のあるフレームワーク。こういうの好きです。
  • MLeap
    • https://github.com/combust/mleap
    • Sparkを使った機械学習パイプラインの構築を可能にするオープンソースフレームワークです。
    • ざざっと検索してみましたが、日本語で書いている記事は見当たりませんでした。存在そのものは2016年くらいからあるようなのですが。
  • code stream
    • https://www.codestream.com
    • コードはGitで厳重に管理されるますが、それにまつわるコミュニケーションはSlackの彼方に流れていってしまい、後から見てなぜそうなっているのかがわからなくなる、というのはよく起きると思います。
    • これを解決するのに、Slackのスレッドなどのコミュニケーションの結果と、Gitコードベースを関連づけ、コードの文脈・コンテキストがわかるようになるというサービス。これは重要だと思います。

チームビルディングやマネジメントに関するアイディア

次は、話を聞く中でチームビルディングやマネジメントに関して思いついたことをつらつらと書いていきます。完全に個人の感想ですのでご了承ください。
  • 目的と規模に応じた開発プロセス
    • 初期の開発で何を重視するかという点で、将来大規模になったときには必要になることは解っているが、最初はCI/CDは必要ないかもしれない。
    • どこかの時点で、人数が増えたり、規模が大きくなったりしたときには変えなければならないときがくる。
    • 3-10倍の法則という説明もあり、何かの規模が3〜10倍になったら体制やプロセスを見直す必要があるという法則でした。
  • エンジニアを採用するときの基準
    • SlackのCTOのお話の中で、技術やツールの入れ替わりが早いため、「採用の時に特定のスタックの知識は要求しない。その代わり学ぶ意思があることを重視する」という話が出てきました。
    • これには確かにそうだね、自社の採用も見直さなければならないかも、と思いつつも、日本でも通用する話しかどうかは疑問が残るな、と思いました。
  • AtlassianのYou build it, You run it.
    • Atlassianには600を超えるマイクロサービスがあり、検索可能になっていて使うことができる。これを開発と運用に分けると大変なことになるので、作った人が管理を行うという方針でやっているとのこと。これによって責任感が出てそれぞれのサービスがよくなるんだ、ということのようです。
    • 社内に600ものマイクロサービスがあれば、全く知らない部門のマイクロサービスを使って機能を構築するといったことも起こるんだろうなと思いつつ、管理運用するにはそれぞれでやってね!しか手段がないだけでは、という風にも感じました。
  • Gitの履歴などの開発パイプラインを可視化する
    • Gitはみなさん使われていると思いますが、その履歴を可視化することにより、どこにボトルネックがあるかわかるという話題がありました。
    • 製造テストは早く終わるのにデプロイまでの時間がかかるという場合、デプロイか承認のプロセスに課題があることがわかるといった事例が挙げられていました。

開発に関するアイディア

開発でこれやったほうがいいなぁ、と思ったことを箇条書きで書いていきます。これも個人の感想ですし、D2Cで実践するとも限りません。
  • 自分で作ることを考える前に、使えるものがあるか考える
    • ちょっとだけ良くなる、なら自分で作る必要はない
    • 何がユニークなのかを見極めて判断する
  • 機械学習パイプラインを構築しよう
    • モデル作りと商用へのデプロイのギャップを埋める
    • Algorithmiaのような仕組みを作りたい
  • GraphQLにしたら色々便利
    • RESTだと情報を取りすぎたり(over fetching)取れなすぎたり(under fetching)する
    • GraphQLならクライアントが欲しい情報を指定して柔軟に取り出すことができる
    • 1回のAPIコールで欲しいものが取れる、RESTだと何回もコールしなければならないこともある
    • RESTはユーザとAPIの関係が密すぎる、GraphQLを間に挟んで、柔軟性を担保する手もある
  • HTTP/2でconnectedな状態
    • pub/subで大勢のユーザにデータを配信を使って今までと違うサービスが作れるかも
    • Speed/Streams/Compression/Framing
    • オーケストレーションがとても大事
  • ストリームプロセッシング
    • 進歩の過程
      • 第一世代:Hadoop/Apama
      • 第二世代:Spark Micro batch
        • ニアリアルタイム
        • 管理がめんどくさい
        • Low Latencyなわけではない
      • 第三世代:Jet / Flink
        • インメモリデータグリッド
        • 分散リアルタイムストリーミング処理
    • ユーザの状況をリアルタイムに検知
      • クリックの間隔が長くなっているので他で何か比較してるのかも
      • サイトの滞在時間で興味があるものがあるかを判別してその瞬間のインテントを割り出す

おまけ

  • ステッカー集め
展示会の企業ブースでは、日本と同じようにステッカーを配っています。
これをたくさん集めるのが楽しいです。持って帰った後は部門のみなさんに配布してます。
珍しいステッカーでアピールすることができます。誰に何をアピールできるかは謎ですが。
  • 会場の夜景
会場は近辺でも高いビルなので、サンフランシスコの夜景がよく見えます。
  • おみやげ
部門のみんなに買ってくるおみやげはいつも迷いますが、いつもお菓子です。
アメリカンなテイストのを選ぶようにしていますが、ジェリービーンズはあまり人気がありません。
  • シェアスクーター
サンフランシスコの街中には、バイクシェアのように電動スクーターが置いてあります。QRコードを読み取って使えるようになります。
怖くて乗っていませんが、日本だと道交法でダメなんだろうな、と想像します。
  • 飲茶
サンフランシスコでは最近アジアご飯がブームなのだとか。
市内で評価の高いお店で小籠包食べてきました!


関連タグ