今日はYAPC::Asia TOKYO 2015 Day 2 の日です

ビッグサイト生活にも慣れてきました。今日も自分のためにメモを残しておきます。gihyo.jpさんのレポートも更新されると思われますので、お楽しみに。

Nathan LeClaireさん「PolyglotのためのDocker - 我々はどこから来てどこへ向かうのか」

  • 色々なプログラミング言語での開発をどう楽にするか
  • OSSへの貢献を楽にする。ツールを知らなくても
  • 色々なプロジェクトをサポートする
  • @upthecyberpunks さん
  • yac shavingを楽にするもの
  • Docker Machine : Dockerをより簡単に使うツール。thin clientを目指す
  • DockerとLinuxの強いつながり
  • クリエイティブな人々とテクノロジーをつなぐ
  • Dockerと他の技術の本当の違いは?
    • より多くの人が使えるようにした
    • 民主化
    • クリエイティビティを解き放つ
  • プログラミング言語の多様化
    • 適切な言語を適切なタスクに
    • 開発ツールをきちんと用意するのが難しい
    • 複数言語を使っていると運用が難しい
  • WEBサイトの運用は大変
    • クラッカーの対策
    • 例: 物理マシンで運用したマシンのネジが外れて壊れた
    • 再現性が大事
  • 開発とオペレーションの言語を統一
  • 目まぐるしい変化が起きている
    • JSのフロントエンドは半年ごとに刷新されているくらい
    • angularと思っていたらreact
  • ツールは難しい
    • maven はgoの開発者には難しい
    • 導入が楽だと学習への手助けとなる
    • 学習したことがない人もいる
    • 動かしてみたい
    • 新参者を退けてしまう
  • OSSはいいもの。世界への貢献
    • 新参者は、成長する
    • 「ダンプカーリスク BUS FACTOR」
    • 環境を整備していた一人がバスにひかれるとやばい
    • 環境を作るのは難しい → puppetやchef
  • dockerのver.1はpush/pullなどが遅かった。今は早くなった
  • dependency hell - OpenRestyでPCREが必要になる例
    • ライブラリはどんどん複雑になっている
  • Dockerはこれらのものを解決する
  • ネット上のモノをすべてプログラミングできるようにする
    • 全てのデバイス上でコーディングする
    • Dockerでそれぞれのデバイスの環境を吸収
  • 展望
    • シンプル、であることがいいこと
    • 環境の違いを統一化する
      • 統一されていればdev-opsもしやすい
    • PHOENIX DEVELOPMENT
      • サーバが壊れても、すべてのサーバが同じという状況
      • 作り直せば大丈夫
      • 5分で新しいコンピュータから開発を始められる
  • デベロッパー、オペレータの用語を翻訳
    • 「マイグレーション」「コントローラ」「ジョブキュー」
    • 「ロードバランサー」「S3バケット」
    • DOCKER FILEはREADMEとなる
  • DOCKER FILEはシンプルなshell scriptと変わらない
    • 詳細なドキュメントとなる
  • OpenResty
    • nginxのイベントループをluaで拡張
    • すごく速いアプリを作れる
    • リバースプロクシやイメージの拡縮
  • OpenRestyを自分でセットアップ
    • 依存関係を解決しなければならない
  • Larry: ドキュメンテーションすると質問を避けられる
  • StackOverflowに依存の質問が上がったりする
    • libncurses5-devを入れればいいのではないか
    • 環境によって回答は代わる
    • Dockerであれば解決できる
  • BOSS「DEBIANで作ってるのは知ってるけど、RHELで動かないとね」
    • 開発者「ソフトウェアのinstallは退屈」
  • DOCKERFILEを作る
    • どんなOSでもカーネルさえ合えば動く
    • compatibilityはカーネルにある
    • 後方互換性はあるわけではない
    • distributionの差を吸収
  • docker build, docker push, docker run
    • docker push はファイルをすべて登録するので時間はかかる
  • Macと使っているが、シームレスに作業ができる
  • Dockerを使ってDockerのビルドをする
  • Docker Machineをチェックしてください
  • Docker compose : Dockerの組み合わせ
  • Docker swarm
  • Q. Docker社内でもMacで使っている? Boot2docker?
    • A. Boot2dockerを使っている人がほとんど。Docker Machineを使うための移行期。xhyveはnative macのラッパー。xhyveを使ってる人はいないが、これから使えるようにしたい。Docker Machineへの移行を進めている
  • Q. Docker Machineのロードマップを確認したい
    • A. 050について、今まではCLIとモジュールが密結合していた。別個にビルドできるようにする。プラグイン機構にして、プロバイダによらないようにする。安定性を増してprovisioningを

Tatsuro Hisamoriさん 「実はホットでオープンな Microsoft Azure」

  • 8/22 現在の状態。開発がかなり活発のため
  • Microsoft Azureとは
    • パブリッククラウド : IaasS, PaaS, SaaS
    • 2014年に日本データセンター
  • Azureのサービス 500+
  • リージョンは19リージョン
    • 日本も2つリージョンがある
  • Linux仮想マシンは25%くらい。増えている
  • “as a Service”
  • イケてる : Event Hubs, Stream Analytics, Machine Learning
  • Stream Analyticsとは?
    • 道路を走っている車の赤い車の台数を数える
  • Event Hub : Pub sub
  • Stream Analytics
    • SQL likeなクエリで流れるデータを集計
    • JSONを受け付ける
    • GROUP BY TumblingWindow(...)
  • (Tumbling|Hopping|Sliding)Window
    • 時間を切って集計。切り方が違う
  • クエリを書くのは、 Norikra と同じアプローチ
  • コレクターにfluentd を使える
  • Power BI Dashboard
    • 可視化ツール
    • グラフだけではなく地図なども
    • Azure SQL Database や Spark などと連携する
  • ラズパイ → Event hub → stream analytics → power BI doshboard
    • qiitaに書いたから見てね
  • マイクロソフトは昔から機械学習を使っている
    • スパム判定、キーワード判定など
    • Joseph Sirosh : 機械学習専門の部署のpresident
  • ML Studio
    • Yahoo! Pipes と似たようなUI
    • gallery.azureml.com : サンプルがすごく多い。インポートしてソースが見れる
  • 例: ゲームの解約者数の予測
  • Cortana Analytics Suite
    • パーツがたくさんあるので好きなものを使いましょう
  • “as a Service” の下回りについて
  • Microsoft Azureのデータセンター
    • フットボール場、ジャンボジェットが2機
    • 1つのリージョンは16データセンター分
    • コンテナごと搬入し、メンテせずコンテナごと捨てる
  • インタネット人口に合わせてリージョンを作っている
  • Open Compute Project
    • Microsoftがサーバを販売している
    • Catapult : FPGA搭載サーバ
  • IaaS : Compute, Network, Storage
    • リソースグループという概念で管理
    • タイプでわかれる
    • Azure Resource Manager : リソースグループをJSONで定義
    • IaaS - Paas - Azure Resource Manager
  • Microsoft Azure の仮想ネットワーク
    • MVGRE : ハードウェア非依存。ソフトウェアで定義するネットワーク
    • NVGRE Key でカプセル化して配信、その後ユーザーへ
  • NVGREに関する本が出ている
  • クラウドを使う人は機能だけを開発したい
  • Service Fabric
    • 「マイクロサービス」を作るとき、コード書く以外のことを全部やる

ここでPower pointがフリーズ 。「マイクロソフトっぽいなーと」。

  • Service Fabricは他の環境でも使える。linux版も
  • Azure Stack : オンプレにクラウドを持ってくる
    • オンプレでAzure の管理画面が動く
    • クラウドファースト
    • 一貫した扱い
  • まとめ
    • AzureはWindowsだけのものでない
    • 必要なものを組み合わせて使う
    • 既存環境にも開かれている
    • Event Hubs/Stream Analytics, PowerBI Dashboard 辺りから使うと良い
  • feedback.azure.com からフィードバックを送ることができる
    • FBアカウントとGoogleアカウントしか使えない
  • クラウドは手元に届く時代が来る
    • オンプレVSクラウドではない
    • クラウドを支配する
    • 正しく選択して選んでいくのが重要
  • Q. Azure でOSSと自社開発の割合は?
    • A. 使っているところと使っていないところがある
  • Q. RDBを使いたい場合は?
    • A. Azure DB。clearDBを使うのも手。VMで自分でやると性能までコントロールできる
  • Q. MS以外の人が増えているのでは?何パーくらい?
    • A. 全体ではわからないけど、増えている
  • Q. 文化の衝突は?
    • A. いい意味で大人
  • Q. 実際に個人ユーザで使うにはお高いんでしょ?
    • A. 1日140円から
  • Q. ここを見ておけばというのは?
    • A. Azure のポータル。あと、ウェビナーをやってる。
    • Q. githubにazureのドキュメントがあるので、pull-req下さい。azure-content
  • Q. リソースマネージャーで使えないサービスはどのくらいで?
    • A. わかるようになったら情報をどんどん出していく
  • Q. なぜ西がおすすめなのか
    • A. 東は今拡張中のため
  • Q. DWHサービスは?
    • A. Asure SQL DWH が出ている。今年後半に利用可能。データの保存と処理が分かれていて、おすすめ
  • Q. asureの売りは?料金とか?
    • A. データプラットフォームとしての側面を強く出していく。料金は電卓で出してみてください

Masaru Hoshinoさん「Perlがメインじゃない現場でもPerlを使う(AdTech現場編)」

  • 本当にこのトークで大丈夫ですか?
  • SSP, DSP/Adnetwork
  • fluctはPHPをはじめたくさんの言語で動いている
  • やりたいことに対して制約がある
  • レビュー
    • PSR-2 に沿うことを目視と手動修正していた
    • php-cs-fixerが使える (perltidy的なの)
    • 既存のファイルすべてに php-cs-fixer を適用
    • Perlでやった時は、逆にblacklistにして無視した
    • make php-cs-fixer
    • 人がやるべきでない作業の自動化
  • crontabの設定の自動チェック
    • ###prev 2014-12-31 19:00:00 のようなコメントを期待値としたテスト
    • Test::Parse::Crontab::Simple というのをPerlへバックポートした
      • Parse::Crontab なので微妙に使用は違う
  • なぜPerlモジュールを作ったのか
    • 他言語からの流入が大きいので
    • そういう還元をしたかった
  • adnetworkの登録
    • 入稿ミスが起きていた
    • 初めPerl、Rubyで書き直す
  • なぜ最初からRubyで書かないのか
    • 要件があいまい。重複してもいい、ということがたくさんある
    • Rubyで最初に書くと、慣れてないので時間がかかる
    • オペレーターの手作業が発生するので、書き換え時間が取れることがわかっていた
  • なぜRubyで書き直したのか? → 既存のメンバーの保守コストを下げるため
  • 言語が変わってもやることは同じ。その時に必要な技術を使う。
  • Q. 本番サーバで perl の環境をどう整えた
    • A. perlのスクリプトは0ではなかった。使いたかったCPANモジュールは諦めた
  • Q. 社内から反対意見などは出なかったか?
    • A. 事前に説明してO.K.もらった。スクリプトにtmpとかつけて消すことを明確にした
  • Q. 完全にPerlを書いてから切り替えた?
    • A. 8~9割完成していたところをRubyで書き直した

Satoshi Ohkuboさん「Perl で RTB の最前線を闘い抜く」

  • RTBとは
    • SSP → DSP → SSP → ブラウザ
    • SSPはメディア側、DSPは広告主側
    • DSPのトーク
  • OpenRTBというプロトコルが使われている
    • IAB(The Interactive Advertising Bureau)が規定
    • JSONで。HTTPでやり取り。バナー、動画、インフィード
    • PC、スマフォ、そのほかマニアックなものも
    • PMP、優先取引
    • プレイヤーごとに拡張が可能
  • その他
    • Protocol Buffers : DoubleClick Ad Exchangeで採用されている形式
    • クエストリング
    • 独自定義JSON
  • DSPは広告マークアップをレスポンスする
    • その後配信リクエストで広告表示
    • 今日の話は入札のリクエストとレスポンス
  • リクエスト : 広告枠情報、メディア情報、デバイス情報、閲覧者情報
  • レスポンス : 入札金額、マークアップ
  • 入札最適化 : クリック、コンバージョン、セグメンテーションなどのアクションに繋がる
  • サイズ、位置、サイトORアプリ(URLなど)、端末、Cookie ID
    • Web行動履歴に基づくオーディエンス??
  • 価値のあるオーディエンス
    • オーディエンスデータをKVSに作成・参照する
    • 様々なサイトにビーコンを設置し、ユーザの行動履歴を貯める
  • 広告枠と人に対して最適な広告を導く
  • 数万種/日の広告から最適なインプレッションを
  • データリソース
    • 広告データ(MySQL)、オーディエンスデータ(KVS)、ログ解析したもの
  • 広告データとは
    • キャンペーン予算、課金タイプ
    • 入札の金額、ターゲット
  • 100ms以内にレスポンスを返す
    • レイテンシがあるので 50ms or die
  • 入札処理でネットワークI/Oは行わない
    • RAMディスクにて
    • TokyoCabinet::HDB を利用
  • Q. DSPの処理だとオーディエンスデータへのアクセスが肝になるのは
    • A. オーディエンスデータは1度しか引かなくて済むという考え方。1ms程度で。300~400回くらい引いている。棲み分けている
  • Q. 量が増えると大変
    • A. HBaseを使おうとしている
  • Q. Starmanを使っていたそうですが
    • A. 変わっていない。CPU pinningでCPUのスイッチングを減らすことで高速化。ある一定の水準を保っている
  • Q. 足りない機能があったら言ってください
    • A. めっちゃ頼りになります
  • Q. DSPへの接続はconnectしてくるのか
    • A. Keep-aliveを有効化している
  • Q. HTTP的なものなのか拡張しているものなのか
    • A. HTTP的なものです

とうまつひろみちさん「カンファレンスネットワークの作り方」

  • CONBUの話
    • 2009-2013 LL network → 2014 CONBU
    • COnference Network BUilders
  • イベント主催者はネット接続を提供したい(おもてなしも含めて)
  • 接続を自前で提供するのは難しい
    • 機材、ノウハウ
  • ネットワークエンジニアはネットワーク構築をしたい
    • ソフトウェアは家で作れる
    • ネットワークエンジニアは家で作っても使ってもらえないと・・・
    • 仕事で失敗するとしばかれる
  • 双方の架け橋がconbu
  • LL Conference 400人, YAPC::Asia 2000人, CROSS 800人, JANOG 600人
  • 共通課題 : 機材、再利用
  • 機材の運搬が必要
    • 運搬が雑
    • 故障することがある(network機器6件、サーバ4件)
  • イベントが変わっても構成は同じ → 再利用
    • CONBUクラウドによる課題の解決
    • 従来 : ルータ、スイッチ、無線AP
    • 今回 : 会場にはスイッチとVPNのみ。ルータとサーバ類はデータセンター
  • クラウド化の結果
    • 2つの課題の解決
    • 24時間どこからでも設定が可能 (リモートのボランティアが協力しやすい)
    • 再利用による時間的余裕の確保 → トラフィック可視化
    • ヒートマップによる可視化の
  • テストしたい「2000人に対してCONBUクラウドが本当に使えるのか」
    • 20人ではテストできない
    • クラブイベントにてテストを実施
    • マルチネ10 よかったぽい

  • 統計情報
    • 最大200Mbps、平均100Mbps
    • ユニーク端末数 3400。2000人なのに
  • 協賛 : hatenaさん、Dmmさん、Juniperさん、BBTさん

ここでバトンタッチ。

  • @takano32 さん
  • CONBU API
    • フロントのAPIサーバがバックエンドのZabbixなどから情報を取ってくる
    • 接続数が取得できる
  • リクエストごとにZabbixに投げていた
    • PHPのmemory_limit
    • zabbixのメモリは増えなかった (httpd の設定に書かれてた)
    • Zabbix API がメモリを食いつぶしている
  • API Daemonを入れて、キャッシュさせる(30秒ごと)
  • 利用例 : 会場ヒートマップ
    • GitHub Pages × Canvas
    • 将来はセッションリコメンドとかできるかも
    • CONBUにもフィードバックできるかも

質問タイム。

  • Q. CONBUで持っている機材はある? 大規模だから借りた?
    • A. 基本的にCONBUのメンバーが自腹で持ってくる。500円くらいのAP。シリアルケーブルとかで設定している
  • Q. 去年のYAPCと比べて進歩したところ
    • A. 1時間で設営できた。会場の都合で
  • Q. ルータの選定する要件は?
    • A. 高性能のものは使っているが、金額による。としか言えない
  • 構築してくれた皆様に拍手。1時間でというのは前日に伝えました!

LT

yoku0825さん「MySQL 5.7の罠があなたを狙っている」

  • 2013年にβ版、今年に5.7.8-rc2
  • default_password_lifetime = 360
  • UTC
  • show_comaptibility_56 = OFF
    • REPLICATION SLAVE 権限
  • binlogの書き込み
  • sql_mode
    • 16桁ハッシュの古いパスワード廃止
    • 10年前の *og_error_verhoshity 同じ変数を2つの設定で弄る
  • 後勝ち
  • internal_tmp_disk_storage_ inno_db
    • 一度容量を確保するとmysqldを再起動必要
  • .ibdファイルを読み込む
  • innbdb_buffer_pool サポートされたがブロックされる
  • validate_password パスワードに英字記号
  • mysql.user.password
  • MySQL 5.7の罠はたくさんある

magnoliaさん「吉祥寺.pmというイベントを作った話〜聞きたいトークが有れば自分でイベントを作ろう!〜」

  • IT勉強会参加してる人、 懇親会まで参加してる人
  • 聞きたいテーマの勉強会が都合よくない
  • 懇親会だと帰宅時間が深夜
  • 解決策 : 自分でイベントを開発する
  • リツイートしてもらったりして吉祥寺.pm
  • 利点: 日程、テーマ、聞きたい人、懇親会、家に近い
  • 3か月に一度、4回開催、 トーク15分、LT5分、毎回20人
  • miniもやってる。1=2か月、1つのテーマをじっくり話し合う
  • 次は10月初旬
  • 自分が聞きたいトークがあれば自分でイベントを作ればいい

Satoshi.Sさん「a good naming makes a good design」

  • 写真撮ったり
  • いい名前が決まると設計が決まって勝手に実装ができる
  • 名前以上の機能を持たせない
    • build というメソッドなのにいろいろやりすぎ
    • 日本語で命名してから英語化
    • 適切に役割を分割
  • スライドのタイトル以上のことをやってはいけません

HIRATA, Satoshiさん「botになる技術」

  • botを作ったことある人
  • botの人
  • Slackは便利
  • botは簡単に自作できる
  • Beagleboneで温度測るbot
  • 発言をEvernoteに記録する
    • 100を超えた
  • botデビューしてた
    • Openshift, PHP
  • botになった結果は? 便利
    • 本人依頼内
  • 深夜作業の音も、水切り遊び、言いにくいことを、八つ当たり
  • どうしてこうなった
  • PHP 49行、159行の語録
  • 「生きろ」

zoncoenさん「モダンなクライアントサイド JavaScript に追い付くためのための小さな(しかし大変な)一歩の話」

  • モダン? いけてる最近の Angular、react, browserifyとかとか
  • jQuery 1.10, CoffeScript
  • 関数はすべてグローバル
  • cofeescript 1200行の
  • クソコードなおしてって言われた
  • npm、ファイルmoderl viewとか分割、webpack、Marionette.js
  • 弄りやすくなった
  • 継続的なリファクタリングが必要
  • app.coffee 1000行以上
  • リファクタリング坂を登る

Koji Ishimotoさん「Evaluating your stylesheets」

  • CSS解析ツール
  • Naoyaさんはいい人です (Sushi Takusanntaberu Animesukinahito)
  • 技術顧問ビッチ
  • フロントエンドデベロッパはCSSきちんとしたの書けてるのか?
  • CSSの良し悪しは難しい
  • StyleStats (stylestats) 静的解析するコマンド
    • テーブルで表示したりJSではいたり
  • WEB版もある
  • Metricsは30種類くらいある
  • ブランチを切るとslackに自動でデータが出る

Kazuhiro Osawaさん「Thank you for ${^ENCODING} variable」

  • $^ENCODING 2.22 のデルタを読むと、廃止されると書いている
  • use Encodings 生のcp932でもソース書けるように
  • ^\(H{\)class} レキシカルスコープなモジュールを作る
  • 便利な変数だったけど 「さようなら!」

moznionさん「本物の “ロック” ってやつを魅せてあげますよ - 分散排他ロック篇」

  • 分散排他ロック
    • ロックを取って、ロックを返す、みたいな
  • Redis, memchaced, RDBMSとか。shareの部分はどうするか
  • ロックに電話を使う
  • 相手と通話できる、できない 「究極の排他ロック」
  • 1876年以来の伝統
  • Twilo で電話を掛けられる!
  • Twiloの無料アカウントをexpireされてしまった
  • ロックを見せることはできなかったけど電話は最高

cho45さん「コミュ力あげてこ」

  • コミュ力を鍛えるツール
  • 音が小さくて・・・デバグしましょう
  • モールス信号 : 世界的、伝統的、通信手段
    • コミュ力が高い
  • WebAudioでコミュ力(人力信号能力処理)UP
  • WEBは情報量が多くて伝わらない感
  • モールスだと遅れる情報量が少ないので、伝わるだけでうれしい
  • わかった感はデータの厚さとは無関係
  • 劣った方法でコミュニケーションをすることでうれしさを取り戻せ

Hirotaka Tajimaさん「CONBUの道具箱」

  • 1.6km。1時間
  • 設営開始!
    • テープを養生する機械
  • 撤収!
    • ケーブルは8文字巻
  • 1.2kクライアントをさばいた

Kuniwakさん「Vim script静的解析の光と闇」

  • 変数の解析
  • 未定義変数、未使用変数
  • 謎構文
  • 変数の宣言と参照の追跡
  • let、function、g:log : 変数宣言できてしまう
  • スコープ
    • g: l: s: w: t: v: 暗黙
    • v:count が参照される問題
    • 変数と関数を同じ名前で宣言。別空間
  • map関数
    • 文字列が入る
  • mapコマンド
  • 再起展開する。キー入力を再起展開
  • noremap は再起展開されない
  • vint ツール

makiさん「クロージング」

  • 楽しかった? (拍手)
  • 歴史
    • 2006年 : スタッフとして参加。takesakoさん、miyagawaさん
    • 2009年で引き継ぎ : 38度の高熱出しながら
    • 2010年 941さんの参加
    • 2013年に引退
    • 2014年にyusukebeさんで安泰?
    • 2015年にまたmakiさん
  • 60社、90tokes、100Mbps、2130人
  • スタッフへ拍手
  • ベストトーク
    • 3位 : Kazuho Okuさん「HTTP/2 & クラウド時代のウェブアプリケーション実行基盤」
    • 2位 : Jxckさん「HTTP2 時代の Web」
    • 1位 : 趣味はマリンスポーツですさん「Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜」
  • 「僕のYAPC::Asia Tokyo はこれで終わりです」
    • ワインとらくだのプレゼント
  • YAPC::Asiaは自由なので、引き継ぐならやって!
  • One more thing… → buildersconf.io
  • 2016年はなにもしません
  • ありがとうございました!