by shigemk2

当面は技術的なことしか書かない

まとめ Google BigQuery × Amazon Redshift #cross2016 #cross2016d

各セッション

森崎 泰弘(エンジニアをクラウドで幸せにする) 佐藤 一憲(Google エバンジェリスト) なかむら さとる(某ECサイト GoogleAnalyticsのデータ分析のさわり) 佐長 康久(ビッグローブでRedshiftを一部組み込んだシステムの紹介) 成尾 文秀(アドテク本部)

企業の中でも重要視されるビッグデータ解析だが、まだ「データウェアハウス」に絞り込んだサービス間交流や勉強会は、頻繁には行われていません。

データウェアハウスサービスに触れる様々なきっかけを持ち帰っていただきたい

" Google/Amazonなどを使って欲しい(ユーザーとしてのベネフィット) " 基本情報は今すぐググる " ぐぐっても出ない情報をここで出す

" CAはGoogle Big QueryもRedshiftも両方使っている

CA 成尾さん

Google BigQuery Amazon Redshift

CAについて

" SAP(ソシャゲのほう)のインフラ " アドテク本部のインフラ データ分析基盤、ミドルウェアなど

" CAはゲーム/インターネット広告がかなり強い(広告にもどんどん力を入れている) " アドテク本部(アドテクスタジオ) 子会社を20位上集めた集合体 " 200人以上いる " アドテクのスペシャリスト集団

BigQuery

" オンプレだけじゃない " OpenStack→fluentd→big query(リアルタイムでデータを確認) " 気にしたこと " スキーマの変更が少なくJOINが少ない " 必要に応じた分析 時間のかかる分析に使っている

アンチパターン

以下のSQLは使わない

select " from hogetale

Redshift

" 100ノード以上 " 多角度からの分析を定常的に行う環境(エンジニア以外も使っている) ” OpenStack→fluentd→redshift " 全件スキャン(distを使ったりしている)

" テーマとしてはbigqueryとredshift だけど、データウェアハウス以外も使っている

Spark

  • 日々集計
  • 定常的な処理で使っている ” OpenStack→fluentd→redshift

Matrix

" redshiftのもと(国内ではCAのみが契約してる) ” OpenStack→mapr→matrix " インスタンスタイプに縛られないハードウェアの選定

Google 佐藤さん

What is Google BigQuery

@kazunori_279

機械学習などのエバンジェリスト(テックリード)

AWSとGCPのちがい

" The Datacenter as a computer " 何万台をホスティングするだけではなく分散器としての利用 " BigQueryはそれをフル活用してる

" すべて自社でハードウェアもネットワークも作っている " Jupiter network ネットワークが超早い ethernet tcp/ipではないトラフィックを扱っている(詳しいことは言えないけど) " Bigqueryの速さの原因 " 40GbEports 1 Pbps " この速さがないと機械学習も出来ない

  • コンテナ技術(Borg)を発表
    • Dockerに対抗
    • Gmail Youtube GCPもすべて仮想技術! " ものすごい数のコンテナがある
    • コマンド一発で2000台などのマシンを扱える
  • BigQuery(2006-) " ありとあらゆるプロジェクトのログ分析に使っている
    • 10奥ユーザー(Gmail Andorid)
    • もうMapReduceは使っていなくて、BigQueryを使っている
    • BigQueryをずっと使っており、テラバイトレベルのログ検索も一瞬(Hadoopとかだと遅すぎる)

デモ

  • 100億行のWikipediaのアクセスログ(タイトルにcloudが含まれているページ + 正規表現のPV)の検索
    • 検索に正規表現をつかうとメチャオソなのに、100億行でも10秒以下
    • メモリをたっぷり乗せればいけるけど
    • datacenter as a computer すべてのサーバはただ連番で振られているけども、数千台のサーバで分散処理しているから、総なめ検索でも速い
    • Networkとコンテナ技術があるがための速さ

BigQuery

  • fluentdのBigQueryプラグインがある " fluentdから直接BigQueryに叩き込んでいる " 今のKPIがすぐ見れる!
  • EC2からBigQueryを使わない理由がない " BigQueryを使うのが基本 S3よりも安い

" IoTもそうだけど、いろいろなデータ分析が必要になってくる(物理的に真似できない領域になってきてる)

ビッグローブ 佐長さん

" OS ミドルウェアの領域でインフラエンジニア * Redshiftを入れる設計 " AWSを触っていることが多い

Redshift

  • 2016から東京リージョンでも使っている
  • スケールアウト可能な分散並列RDB
  • 列指向型データベース
  • 規模の小さいところから始められる(東京はちょっと高い)

ビッグローブが使っているところ

  • データSIMのところで使っている
    • SIMごとにデータ通信量を集計している(分析ではない)

オンプレミス時代

  • MySQLサーバで処理
  • MySQLにデータをつっこんで、集計システムで制御
    • 1時間毎のバッチ処理が1時間で終わらなくなる
    • DBチューニングも限界
    • 自前の分散システムもしんどい
  • もうオンプレでやる必要なくないか

Redshift自体

  • そんなにノウハウ 事例がないので、Redshift(触りたかっただけっていうのはあるかも)
    • 必要に応じてスケールアウトできる
    • 基本的なバッチ処理(SIMのデータをgroup byするだけ)
    • 基盤の運用はおまかせ
  • 2015/1から導入決定、3月に並行稼動、4月からスタート

  • S3→Redshift " オンデマンドでクラスタを建てられる

  • dc1.largeノード2台
  • レコード数はそこそこ 51億
  • ディスク容量は260GB
  • オンプレだと1時間かけても終わらなかったのが数分で終わる

実際に開発した人たちは

  • 分散キーとソートキーの選択は慎重に(ここの設計は重要)
  • SIMのIDを分散キー/日時をソートキー(UNIX時間)
  • 日本語混じっていたらきちんと検証しないといけないっぽい(今回日本語データはなかった)

設計 運用

  • 定期的にメンテナンスが入るので、そこを考慮した設計にする
    • リトライ処理を長めにして、リカバリできるように
    • オンライントランザクションにも対応するためにオンプレDBも使う
    • 特殊な運用も準備しないと
    • リージョンごとにメンテナンス時間が違うので、起きている時間にメンテナンスできるように
  • AWS CloudWatch/CouudTrail/SNS/Lambdaなどで自動通知出来そう

まとめ

  • Redshift
    • 高速で完全マネージド型
    • ペタバイト規模のデータウェアハウス
    • 小さいところからでも始められるよ
    • 月数万くらいのコストで運用出来ている
    • 処理時間が1時間 7-8分
    • トラブルがなかった…と思ったら、ディスク使用量が8割を超えていた
    • 何百台という使い方でもOKだし、集計用途でも分析用途でも使えるから、とりあえず使ってみては

BigquryとGAPを2年使ってみた感想

なかむらさとる 運用部門(社名は出さないで)→開発部門の統括

BQとGAPとの出会い

  • 社長命令でBQを検証し続ける
  • GAP Google Analytic Pleminum(プレミアムあった 月1000万ヒットだったのが有料だと月10億ヒットまで面倒見れて、BQに生データを吐き出せるけど、月135万くらい)
  • アクセスをHadoopで集計などするとめんどいから月130万x12x5=7800
    • 償却とか運用費用とか考えると別に高くない
    • 自前で作るとあちこちから文句言われるし
  • ユーザーの行動遷移をBQで追えるので非常に楽
    • スキーマの説明も丁寧なので一読したらいいです
  • BQはJSON形式でデータが入っているけど入れ子になっているので曲者
  • BQはカラム単位のデータ容量に対して課金
  • 1レコード全部取りしたら高い
  • BQの一番いいところはView
  • BQだとViewを使えばクソクエリも分解してメンテナンスできる
    • 長いクエリはそれだけでメンテナンスコストがかかる
  • 何十億行のデータをJOINしても変わらない

まとめ

  • BQ + GAP最強だと思っている
  • BQはCSVを突っ込めばさくっとデータが入るので、本当にカジュアルに使える
    • GUIの画面でペコペコできるので。

本題

ググったら出てくるものはあまりおもしろくないので、利用者の本音を語っていただきましょう

  • ポイント
  • ハマりどころ

ポイント

CA本部

  • データ量が多い(テラレベル)
  • 検索対象が多すぎるので、いろいろな分析にコストがかかる
  • 多角度な分析はRedshiftとか、っていう組み合わせ
    • JOINの数が多すぎるとBQは使えない
    • 移行の難しい物はRedshiftのまま
    • JOINの数で使い分けているので

Google

" BQユーザーの多くはRedshift/Oracle/IBMのデータウェアハウス(1台数千万)を使っていた " 物理的データウェアハウスはスケールアウトしにくい * 社長の鶴の一声でそういうのを導入してみても、いざ使ってみるととかく遅いので、事業部ごとに使える時間帯を分けるという良くわからないアンチパターン * それと同じようなパフォーマンスを安く提供できる

ビッグローブ

  • 使ってみないと分からない
  • さあ行こうってなったときに、小さいところから始められるのがRedshiftの良い所
  • web上にはノウハウがあって、同じ所でハマっているひとは情報共有しているのでアンテナをはっていく
  • 基本はググッて、あとは使いませう
  • 試行錯誤、重要

なかむらさとる

  • どちらもライトに使えるので、試しでいいから使ってみよう
  • アウトプットをどうしているか
    • アウトプットはすごい重要なので、皆どうしているんだろう?
    • ExcelにSQL結果を吐き出して、それを現場/営業/コンサルに見せる
    • 検索結果が早くてもどういうふうにアウトプットしているのか気になる
      • たぶろーを導入してBIツールと連携している(CA)
      • 集計メインだけどログデータをサマライズしてCSVとして吐き出し、BIツールを担当している人に直接渡している 直接連携は今後の課題(ビッグローブ)
      • ビジネス寄りの人がいちばんとっかかりやすいのはGoogleスプレッドシートかExcelなので、それをベースしている あとはBIツールを使って、運用コストを減らすとかしてるので、ユーザーによって違う(Google) " GCPにジュピターを導入してる(Google)
    • BQ単体ではそこまでパフォーマンス落ちたイメージはなく、基盤の運用はGoogleにやってもらっている 億レベルなので、普通(なかむら)

アンチパターン(これだけには使ってくれるな)

  • BQの使い始めの頃は、アップデートできない(要望は多いはず)
  • BQで触ったデータは別の所に保存したほうがいいかも
    • クソクエリの可視化ができるようになった
  • BQはコスト管理大変?
    • 青天井じゃなくなった 依頼すると上限を設定できるようになった 将来的には自分で設定できるようにしたい
    • 青天井じゃなくなった 従量課金ではなく固定料金もサポートできるようになったらいいね
  • データ量が多いのでインスタンスは絞る
  • 為替の影響で料金が変わる時がある
  • クラスタを使っていない時は止めるけど、止めづらいものはある
    • 一回落とすと上げづらいクラスタもある/本番クラスタはなかなか落とせない

まとめ/感想

  • BQもRSもいい面がある ミニマムからスタートできる(CA本体)
  • 2010のBQのデモを見てサーバの物量で押し切っていることに衝撃を受けた 太客がBQを実運用しているのを見て、コミュニティのエコシステムもでき始めているので、自分の役割は終わった(Google)
  • 自身も参考になる情報をもらった わかりやすい使い方の事例(ビッグローブ)
  • とにかく使ってみたらいい 実データをボコンと入れるだけでも使いやすいと思う(なかむら)

実際に使ってみるときに、このセッションを参考にしたらいいと思います。

まとめ IoTで、Webはどう変わる? #cross2016 #cross2016b

  • web→ハードウェア
  • ハードウェア→web

webが変えるハードウェア

  • 今までは、ハードウェアは高性能である必要があった
    • 演算処理をハードウェアがやっていたから
    • 演算処理はクラウドに
  • ハードウェアは小さく、低性能に、プロダクト的には高性能、アップデートも楽になる
  • ハードウェア自体は必要 引き続きメーカーとしてはやっていく
  • ものをつくる、という点ではweb
  • CADも高価なソフトではなくブラウザになってきた
    • 立体物の設計がクラウド上でできる
    • webの時代がものづくりをシンプルにしている
  • 自分が設計したものをシェアできる
  • 設計したものをライブラリに公開/再編集できる
  • ハードウェアのオープンソース化が起きている
  • デザインや形状を決めるのも難しかった(デザインにもアルゴリズムが必要になってくるときがある)
    • 目視で確認しながらリアルタイムで良いデザインを決められる
  • 立体物をプリントアウトできる(3Dプリンタ)
  • デジタル/モノ
  • 筐体はCADブラウザで設計できるし、その上、電子回路の設計もブラウザ上でできる!
    • LEDもチカチカ動く 基盤を買わなくてもブラウザ上で設計できる
    • 発注すると手元に基盤が届く(1、2週間)
    • ジェネリック家電みたいなのは引っ張れば誰でも作れる ナレッジをうまく使えるのでハードウェアベンチャーでも製品を開発できる
    • 遮光の部品とかも作れる(手当たり次第3Dプリンターで作れちゃう)
    • ものを削る工作機械を使って、その日のうちに動作を確認したりできる
    • ハードウェアを作る敷居が下がってきた
  • サーバの演算能力が使えるので、個人のマシンや器具ではできなかったことができるようになった
    • 個人で家電を作るときは、放熱とかノイズとかの抑制がしんどく、経験や実績がないといけないけど、コンピュータを使えると、そういうところもコンピュータ側から提案する時代が来るのではないだろうか
  • webのテクノロジーがハードウェアを作る。進化していってる

ハードウェアが変えるweb

  • ハードウェアの進化がwebにどう影響をあたえるのか
  • スマホ向けアプリなどは基本キーボードかタッチがインターフェイス
    • 操作するのはマウス、キーボード、画面など、入力デバイスが限られてくる
  • あらゆるものがインターネットに繋がるとどうなるのか
    • 入出力をwebから直接ハードウェアに叩ける
    • ボタンなどが物理的なインターフェイスになる
    • あらゆるものがインターフェイスになりうる
      • e.g. アマゾンダッシュのボタン(tide 洗剤メーカーのボタンを押すと、アマゾンから洗剤が送られてくる)
      • ボタンを押したら即送られてくる
      • アマゾンダッシュの後継 Amazon DRS
      • 家電製品のなかにアマゾンのボタンが入っている
      • プリンタやコーヒーメーカーにボタンがあって、ボタンを押すと発注できる
        • 新しい販売チャンネルが生まれる
        • インターネットの一つの機能が生まれる
  • ディスプレイの外側にもインターフェイスが生まれていっている

課題

  • IoTのめんどうなところは、ペアリングが必要なこと スマホで設定するの超めんどい
    • IoTの接続性は今後の課題
    • 接続管理(アイパス管理など)
    • 価格(ブルートゥースは安いけど、3Gにつながるやつは常時接続になるので端末料金も通信料も高い ブルートゥースは安いけど接続が面倒)
    • 充電頻度(スマホですら充電が面倒なので、1年くらいは放っておいてもOKみたいなレベルが要件)
    • セキュリティ(個人情報そのものなので、パクられたりとかしたら大変 紛失もめんどくさそう)
  • ソリューション(2014から開発)
    • 3G/4Gは広範囲だけどバッテリーは1日が限度
    • ブルートゥースはバッテリーが1年くらいもつけど、部屋から離れたら意味が無い
    • 本当に欲しいのは、安価でバッテリーが1年位もって、全国どこにいっても電波が届くもの
      • 今年の後半あたりにはローンチ予定
      • 1万ユーザーくらいはローンチカスタマーとして契約済み
      • webやモノがシームレスにつながっていく(ユーザーがデバイスを意識しなくていい)のが今後目指していきたい未来
      • ECとAI/IoTでいろいろやっていく

【タイトル修正】まとめ 開発プチ闇4連発! 〜そのとき人はどうするか〜 #cross2016

開発プチ闇4連発! 〜そのとき人はどうするか〜 #cross2016

  • 高度に抽象化した闇について話します
  • ストリーム配信は禁止

ワンバイナリでi18nに対応したはなし

  • ビジネスの要求を満たすために強いられる特定の困難さ→ワンバイナリでi18n対応
  • 要件 ワンバイナリでi18n対応
    • apk
    • 考える事多そう
    • 某アプリの多言語対応
    • 翻訳読み込みシステムはKVで、翻訳情報をランタイムで読み込むシステム
    • 技術基盤チーム
    • 社内で翻訳するチーム
    • 翻訳データのパイプラインが整備されていない
    • 文言がハードコードされている
    • 蛸猫→執事(スクリプト)
      • 翻訳情報は外注(日本語のほうは内製)
      • 自動的にPR
      • 蛸猫のPRにコメントすると執事が動く
    • 日本語ハードコードは、デザイナーが仮の文言を利用すると外国人エンジニアはそのまま貼っちゃう
    • アプリのビルド時にテストする
    • チーム内では ラベル表記ルールの整備/使用言語/国籍など
    • 英訳時に文字数が2倍近くになることがあって、そのまんま翻訳すると画像がねむかったりぐちゃぐちゃになったりする
    • 対応言語リストをサーバからもらう
      • マッピングリストに対応しているワードは翻訳。例外は英語
    • 国別のユーザーのDAUなどのKPIだけ
      • 課金額だけは綺麗に追えなかったので、currencyで判別
    • 韓国語対応
      • 現在使っているフォントにハングルがなかったので、複数のフォントを利用してキメラフォントを作る
    • 問い合わせがFBからカジュアルにやってくる→専用のCSを作った(複雑なものはゲーム内とか専用サイトとか)
    • オブジェクトをJSONに変換するときにpoファイルから対応するなど
    • ログイン時にデータを一緒に送ってもらっている
    • 翻訳後の文字列を探しだしてクライアントに渡している
    • Serealという形式で保存
    • 海外スタッフがforce pushするひどい事案
      • 蛸猫のsettingから特定のbranchを保護する
      • 誰かがforce pushしたら通知するやつ(戦略的force push)
    • 社内ブログにローカライズしてる話をする

人とAPIとこころと体の健康

  • すごいおじさんが闇をいい感じに変えていた
  • サーバサイド側機能開発 執事やボットのお守り
    • 前はソシャゲのサーバサイド、FlashのPCゲームのサーバサイド側(MVCぜんぶPerl)
    • すべての成果物のコードを一人では読み書きできない
    • 密結合から疎結合になったのがメリット
    • アーキや言語を分けられる
    • ダミーAPI作らないとクライアントが開発できない(気合で乗り切るのもしんどいので、Redmineのwikiに残す)
      • wikiにリクエストとレスポンスの例
    • ブラウザソシャゲからネイティブへ
    • 規模も10人から30人になって結構しんどい 一人ひとり顔と名前が一致しない
    • 人が増えることに伴う闇(MCはPerl VはC# Unity)
      • 思ってたのと違うレスポンスが来る
      • 思ってたのと違う型のパラメータがやってきてサーバがエラーレスポンスを返す
      • ダミーレスポンスを返すAPIを書く
      • ただひたすら人が頑張って手であれこれ
    • IDLの導入(Interface Definition Language)
      • マシンリーダブルなフォマットでAPI定義書を書く
      • コメントに使い方、型も書いたりする
      • JSON/Swagger/protobufなどに対応
      • 会社では独自システムを作る
      • インタフェース記述言語 - Wikipedia
      • IDLに沿ったリクエストを返せるかテストコードを書く
      • サーバAPIをモックし、自動生成
    • IDLを中心にフローを人間的にする
      • 誰かがIDLを書く
      • 蛸猫にPRを送る(質問でよく分からない回答)
      • 各ブランチにsubtree push(サーバ側で自動でやってくれる)
      • 作ったブランチで作業する
    • よいこと
      • テストカバレッジが減る
      • レッドの状態からスタートが切れる
      • 他のサーバサイドでは、Goのサーバを作るときに内部APIでIDLを定義
      • 学習コストの観点から、社内のエコシステムに乗っかるのも大事
    • 闇になりそうなのをいい感じに開発する

HTML5 Canvas and 滲み

  • side_tana
  • 光に辿りつけない

  • 画像を加工するAPI→画像が滲む

  • context.drawImage() 画像をcanvasに埋め込む
    • 拡大縮小できるけど、滲む。しかも、拡大縮小のアルゴが定義されていないので、自分で定義しないといけない
    • 境界線が滲んでる
    • Canvas?ブラウザ?画像データ?
      • JPEG(ハフマン符号で圧縮 8x8ピクセルのブロックに分割 chroma subsampling)
        • subsamplingでいろいろやると滲む
        • 量子化 圧縮率のパラメータ
        • 圧縮率/画質の変化で滲んでしまう 8x8pixelのブロック内
        • ブラウザ同士で比較すると、全部Safariのせいだ
      • ブラウザが犯人 ブラウザがあかんかったらどうにもならんやろ
      • JPEGデコーダを使う?
  • 結局原因は分からずじまいなので調査中

多国籍開発チームで日常的になにが起きているか

  • studio3104
  • 上司/同僚の悪口…ではない。
  • 闇はない あったとしてもここでは話せない
  • 多国籍開発チームで政治的な話をするときは気を使う
  • 公用語は英語
    • でも英語はそこまで得意ではない
    • 喋り英語が伝わらない
    • TOEICも500点くらい
    • チャットはいいんだけど。それもしんどい
    • 金/信仰/政治の話はしてはいけない 歴史もNG
    • するひつようのない話はしてはいけない
  • ソフトウェア開発における共通言語
    • コードがあれば会話が必要なくなる コーディング力/英語力も身につく
    • シモネタ(女性がいたらNG)
    • 相手が日本語を勉強する努力などをすると嬉しいので、自分も勉強したくなる 多国籍開発チームのよいところ

質疑

  • ブログはかいておーけー
  • 多国籍開発チームはリモート
    • 政治とか信仰とかは激しくセンシティブではないが、余計なことはいわないほうが吉
    • アニメも世界共通語
    • 飲みに行くのはリモートではない

追記

タイトル修正しました。「まとめ」をつけておかないと。

まとめ 先達に聞くこれからのエンジニア像 2016 #cross2016

  • 与えられた条件で最高のパフォーマンスをだすために
    • 予算 権限など
  • どのようにチームを巻き込むか
  • 巻き込むための俯瞰図
  • 巻き込むための未来予想図
  • その時に組織を超えた関わりあいをどのようにするか

与えられた条件で最高のパフォーマンスをだすために

  • メンバ 予算 人選 プロダクト
  • (伊勢) 与えられた環境下でしゃかりきやる 小脇にPCを抱えて客先に行かないといけない ベストを尽くさざるをえない
    • 与えられた環境ではなく、途中から自分から提案するようになる というかしないといけない
    • 会社のなかより顧客にどう思われるかを重要視する それに対して疑問はなかった
      • その頃はベンチャー
  • (よしおか) 1984にマスターを取ったけど、ここにいる人たちの多くは生まれていない時代
    • 世界はソフトウェアでできている
      • 日本ではハードウェア偏重なところで、ソフトウェアの重要性が理解されていない感がある
      • ハードウェアベンダにいたけどそういう会社はほとんどなくなってしまった
        • 会場にSIはほとんどいない
        • webの業界で、自分の条件を選んでいるということはとても良いこと
  • (森藤) 選べるということはとてもよいこと
    • どういうふうに自分の戦略を立てるか
  • (よしおか) 戦略は考えていない
    • 新卒で入った会社で自分のDNAが決まる
    • でも、ずっと同じ会社にいれるわけではないので、転職も含めてアンテナを貼っていく必要がある
  • (及川) 上司から言われたことは、「リーダーは、与えられた条件下で最大のパフォーマンスを出すことが重要」
    • デック→マイクロソフト(NT)
      • ハードがない、人がいない、といったところで条件がよくなるわけではない
      • 前職はGoogleにいたけども、マリッサ・メイヤーが「いかにイノベーティブでありつづけるか」ということで、「創造性は制約を好む」制約が創造を生む。Chromebookみたいなのを作ろうってなったときに、今のノートブックはインターネットに最適化されておらず、コールドスタートから10秒でGmailを使えるようにするには、ミリセカンドレベルでイノベーティブな工夫を繰り返すことで生まれる
      • 制約条件が厳しければ厳しいほどイノベーションが生まれる 10倍にするためにはそもそものやり方を変えないといけない
      • 普通のやり方ではダメ
      • じゃあどうするかっていうところを考えると、リーダーとしての成長にもなるのではないか

(森藤) こういうことをやったら20%ではなく10倍にできるっていうものがあれば

  • (伊勢) 人は社内初/世界初というワードに惹かれる
    • 命令されたからではなく、自発的にできるようなチームメイキングをすると良い
    • 大きな旗を振って、みんなで進めていく
  • (及川) 誰かに言われたのではなく、一緒にやりたい、と思えるようにする
    • 相手にそれを言わせるようにすることが重要
    • これやれよ!って命令されたらやる気をなくす
    • もしかしたらよりよい違うやり方があるのではないか
    • GoogleIMEを作っていた時、かなりの確率で実は違うやり方でもっと良いものが出来たりする
    • 新しいやり方を見つける可能性を潰すかもしれない
    • 自分の口で言わせることによって、自発性を生む
    • いろいろな意見を採用してみると、10倍のヒントになりうる
  • (よしおか) チームでやるのが大前提っぽいけど、昔の会社はクローズドなプロジェクトが多かった
    • 今では社外のひとたち OSSなどとコラボレーションすることが当たり前になってきている
    • やっぱり標準化の場所だと会社ごとの利害があって対立することがあるけども、最終的なゴールとしては共通の文字コードがあると絶対便利になるよねっていう理想だけは崩さないようにして、利害関係を調整するしかない
    • 理想で共感を得て、技術であげていくことに収斂していく
    • 日本からの提案は競争力がなかった
    • 世界標準で作ったのがよい経験でした

チームを巻き込む

  • 後輩指導
  • どうやって引っ張るか

  • (森藤)モチベーションは重要だけど、なんの実績もない人が「世界一」っていっても「何いってんだこいつ」ってなる

    • 飲み会?技術的なフォロー?
    • 技術的にどういうふうな感じになろうと思ったか
    • イエスマンでなかったかもしれない
  • (よしおか) 日本ではモチベーションが根性論になりがち
    • 個人として技術力があることが重要
    • チームとしては、全員がゴールを共有していることが重要
      • そのためにはコミュニケーションを濃密にすることが重要
      • そのための手法として、毎朝10分朝礼する(スクラム) こんなに簡単なこと、当たり前なことを共有していなかったなと気づく
      • 上手なマネージャーは本能的に雑談してる
  • (及川) チームのディレクションは良いと思っている
    • MVPみたいなの
    • 何作るか、が共有されていないとプロジェクトが長くなると機能削除、機能追加が見えなくなってしまう
    • Google ChromeはSpeed/Security/Stability
      • ボットがチェックして、その条件に満たないものは機能追加出来ない
    • 世界観が達成できるならアジャイルでもウォーターフォールでも構わない
  • (森藤) 総論賛成各論反対みたいなのが力になるけど、そういうのを揃えるときはどうしたらいいのか
  • (及川) 人間はその人を信頼できるかどうかっていうのは非常に重要
    • 実績や信頼がないとテーマを出しても意味が無い
    • Linkedinは日本では不評だけど、海外ではすっごいきらびやかなプロフィールが出てくる
    • 民主主義ではどうにもならないといいつつ、全員で考えるという矛盾を解決するために、上手なファシリテーターが必要なので、思い切り話し合っていく必要性がある
    • 伝説的なプログラマーがいないときは、自分が何をやってきたのかをベースに、全員で合議するのも重要
  • (伊勢) インフラ系のしごとが多かったので二人とは違うかも
    • 世界観の共有があんまり感じたことない
    • デイリーミーティングはいっさいやらない
    • ゆるい制約と完全な自由を与えると、レポートを受けたら何か考える、コミット出来なかった場合はどうするかこちらで考える
      • 結構リスキーなやり方なので、出来なかった時のバックアッププランは、自分で考えたり、みんなで考えるなど、まちまち
      • バックアッププランを想定した状態で丸投げし、自由にやってもらう
  • (よしおか) チームメンバーのひとりひとりが大リーガー級レベルじゃないと回らない手法
    • チームのメンバーが素人だと困る
    • その前提じゃないと↑の方法は回らない
    • その人に合わせたものを割り振っていけばいい
    • 全ての人に同じものを提供してはいけない
    • 相手から言ってくるぶんにはいいけど、こちらから何かを言うことはない
    • 本当にやばいときは例外
    • 非常事態じゃないときは、相手から言ってくるときは
  • (及川) 笑いながら怒る
    • 情報共有をギリギリにやるのが非常によくない
    • 何度も同じミスしたら言う
    • 言わない人の責任ではなく、全員の責任
  • (よしおか) カジュアルに報告できない空気が生まれて、自分でリカバリーしようとしてどうしようもなくなる
    • 詰められるのは嫌なので、詰めるマネージャーは傷口を広げる
    • 詰め詰めでいくと、上に報告しづらい空気が生まれる
  • (森藤) コミュニケーション
  • (よしおか) ひたすら話すしかなくって正解はない
    • 何をやったときにうまくいくかっていう事例がいくつか欲しい
  • (及川) 人間関係の話
    • 話しづらいときは、自分から言っちゃうのもアリかもしれない
    • 仕事のうえでプロとして付き合えない理由はないとおもう
  • (よしおか) 雰囲気悪くないですか?って聞けるのって結構勇気がいる
    • 上司同僚とのウマが合わないのは退職事由たりうる
    • ひとつの方法論としては、社内異動がアリ
    • ここのプロジェクトでは自分のパフォーマンスが出ない
    • あんまり頑張らなくていいんじゃないか
  • (及川) 人材流動性と文化は重要
    • 話してみて分かり合ってっていう
    • 「こいつとはもう無理」ってレベルになったら辞めたらいい
    • うまくいかない構造がダメであって、対立軸が生まれるとよくない 誰が敵なのか確認する
    • 客と営業とエンジニアとでチームにしないといけない
  • (伊勢) IT業界は人材流動性が高いので、「いやならやめる」が効く
    • そうじゃない会社の人たちはどうしたらいいの?
  • (よしおか) やっぱり技術力つけないと転職できない
    • 一番重要なのは技術力
    • 自分をマネジメントできるスキルをつけないといけない
  • (伊勢) うまくいかない場合の対処法はケースバイケース
  • (及川) 海外ではcounter argumentが重要
    • でも日本ではポジションが上のひとが重要だったりするので、質問を変えたりして、意見を出してもらう空気をする必要
      • ファシリテーションが重要
  • (よしおか) web系だと当たり前な蛸猫とかCIとか
    • それを大学の授業でやるのが画期的で、使い方とかは教えずに、成果物のみを評価するやりかたになっている
      • 作ることを重要視して、アプリケーションを作っていくやりかた
      • ヒントを与えて放置すること 技術力を与えるためには自分でどうにかするしかなくて、先輩や上司ができるのはヒントを与えること
  • (森藤) 放置してほしい後輩/コーチングしてほしい後輩
    • 皆が皆おなじモチベーションにはない
    • どういうふうに振る舞うと望ましいのか
  • (及川) 次はこういうことをしたから昇進する
    • 社内での評価システムを作るのはいいと思われる モチベーションアップにつながるから
    • 評価システムとロールモデルがいると、モチベーションが上がる
  • (よしおか) アメとムチを与える?
  • (伊勢) モチベーションを与えることは無理でも、モチベーションを邪魔しないことはできる

それほど熱意のないひとをどうコーチするのか

  • (森藤) 仕事を仕事と思わない人ばかりではない やらされているのではなく主体的に学ぶようになるとチーム力が上がる
  • (伊勢) 外のコミュニティに出て、超おもしろそうな顔をしてればいいんじゃないのかな
    • 周りにそういう人が増えると、楽しそうにやっていくと、みんなも楽しそうになる
  • (よしおか) パッションは人に与えられるものではない
    • ゼロからモチベーションを持つのは無理
  • (及川) 東京はエンジニアが母数が多く、勉強会に行く人も勉強熱心
    • 土日でプログラミングするのが変人あつかい
    • そういう人を入れないような採用をするとか、そういう人にあった仕事を与えるとか
  • (森藤) モチベーションのある人はいいとして、モチベーションのない人はどうしたらいいんだろうか
  • (及川) 全然モチベーションがない人は、プログラマと呼ばないで欲しい感が
  • (よしおか) web系で自社プロダクトだと同じ方向にむきやすい
  • (及川) 日本はプログラマの地位が低い

刺激を得るためのコミュニティ活動

  • (よしおか) 技術者なので技術力の絶対値が重要 社内だと分からないので、外に行けば自分が通用するかしないかわかるから大切
    • こういう勉強会に行くひとはそもそもちゃんとわかっている
    • 仲間を見つけて研鑽できるのはとても重要
  • (及川) 外にいることがベンチマーク
    • 人間はアウトプットが大事
    • 質問しようと思っていると、受け身なのよりも経験値が高いし、聞いてる話も入りやすい
    • コミュニティや勉強会にコミットしていくと良い
  • (森藤) 外にいると、自分の持っているリソースが格段に増える
    • デメリットを考えるとろくなことないので、ストレスは抱えないこと
    • ぼっちなのを怖がることはいけない
    • どんなに嫌なことがあっても死ぬことはない
  • (よしおか) CSを学んだ優秀な学生をいっぱい取らないといけないのに、土日の勉強会にさえ会社の承認が必要な会社はとっとと辞めたほうがいい
  • (伊勢) 登壇者として参加して、会社が許可出してくれないなら仮面をかぶって偽名で出たらいい
  • (よしおか) 会社名を出して出て欲しい ただし、アニメとか漫画のやつは著作権に反するのでやめて
    • 会社の宣伝になるので、ガンガン言って欲しい
    • 会社が認めない場合は、辞めて欲しいし潰れて欲しい
  • (アクセス) つべやドライブ Qiitaにアクセス出来ない会社は潰れて欲しい

メモ エンジニアがいるべき場所は米国なのか?日本なのか?~日本でのグローバルなプロダクトやサービスの開発とは #cross2016

途中参加。

技術力と英語力

  • 英語はそんなに重視されない

    • 面接官がCTO(日本人)
    • 自己アピールは英語で出来たほうが良い
  • 設計だけではなく運用や保守も出来ないといけない

  • TDの場合はしゃかりきコードを書くのが重要

  • コードをわっと見て分散システムがわかっているかどうかを判断するのは困難
  • OSSでソースコードを公開しているのが大前提
  • 分散システム系はコミュニティが固まっている
    • しかも大企業が高給で固めてる
    • 日本のエンジニアはそこで一本釣りできる
  • シリコンバレーの給料は公開できない
    • ストックオプションを重視している(それでも額面の給料は上がっている)

日本

  • 日本で開発
    • 人生成り行き
    • 日本のほうがすみやすい
    • たまたま沖縄
  • 日本は自然豊か
  • アメリカは本当にだだっ広い
  • 東京は特殊な街があって、狭い街にいろいろな会社がある
  • 東京にいると、勉強会コミュニティがいろいろあって、テクノロジー的に知見を持っている人がすぐ近くにいたりする それ以外はニューヨーク ベルリンあたりしか知らない ベルリンでもしんどい

なぜ日本に住んでいるのか

  • どこに住んでいても成り行きが多い
  • 選んでアメリカに渡った人もいる
  • 強い意志を以って行く人がいるが、大多数の人間はそんなに意思は強くない
  • 日本で生まれて日本に育っているからっていうのはあるけど、特別よそに行く理由がないから日本にいるだけ。
  • 日本がいちばんモチベーションを上げ続ける環境たりえる

会場から質問

  • 英語しゃべれなくても設計とかコードとかちゃんとしたらいいと思われる
    • 自分の技術的に強いところがインタビューなどでアピールできればいいんでないか
  • 英語で面接を受けたことがないのにインタビューをする側になった
    • アメリカの人たちはインタビュー慣れしている
    • 入れるか入れないかによるので、いろいろ御しやすい
    • 英語力はすぐに上がらんので、分からんかったらすぐに返す
  • スタートアップだと設計とか運用とかコーディングとか全部出来ないといけない
  • マネージャーとエンジニアは完全に分かれている 仕事のアサインの調整 エンジニアはそういうのは一切やらない
  • マネジメントはマネジメントとして専業としてある
  • ベンチャーは出てこない
  • 時差があってどうにもならなかったら国をうつるしかない

まとめ

  • (田籠) 日本で暮らすのは最高だけど、日本で仕事を完結してはいけない 海外と繋がると仕事の幅も増える
  • (中川) 日本は便利。勉強会とか。日本に閉じていると分からないことがある
  • (shinohara) 自分の興味があることを好奇心でもってやってる 途中で分散システムに興味がわいて、最初は仕事にならなかったけど、成り行きでも好きなモノを追っかけていって、エンジニアとして飯が食えるレベルまで追っかけて行ったらいい
  • (上西) 英語どうやって勉強したらいいか分からない スターウォーズをヘビロテして見るとか グローバルなことに感心を持つ シリコンバレーレベル高そう…っていう障壁を破壊して欲しい そのために、メーリスを追っかけるとか、情報収集を継続する