今日はYAPC::Asia TOKYO 2015 Day 2 の日です
Posted on August 22, 2015
Tweet
ビッグサイト生活にも慣れてきました。今日も自分のためにメモを残しておきます。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年はなにもしません
- ありがとうございました!