2015年3月22日日曜日

時雨祭@ドワンゴ行ってきた(前編)

昨日は時雨祭行ってきました。
http://shigure.connpass.com/event/11780/
会場はドワンゴさん。歌舞伎座の横にこんなタワーあるなんて知らなかった。

今回は,特にLTとかはせず聴講者です。
リアルタイムな感想・実況は以下の時雨祭togetter参照で。
まったり編 - http://togetter.com/li/797656
プレゼン編 (1) http://togetter.com/li/797700
プレゼン編 (2) http://togetter.com/li/797722
プレゼン編 (3) http://togetter.com/li/797735
プレゼン編 (4) http://togetter.com/li/797739
プレゼン編 (5) http://togetter.com/li/797750

全体の感想

GoとDockerはやっぱり勉強しておかないと
どんどん置いていかれてしまうなぁと実感。
時間見つけてちょこちょこ動かしつつ勉強しなきゃと思いました。
あとは,今回の聴講者みたいに自分が好きかつ得意な技術があると
強いなーと思いました。
もうすこしハンズオンの時に交流できたらよかったな。

プレゼンメモ(前編)

プレゼンメモが長くなってしまうので前半の3つについてここに。
1. 真 Drone入門 (@mopemope)
2. メルカリを支える技術 (@cubicdaiya)
3. Qiitaを支えたい技術 (@mizchi)
後半はこちらです。
4. Quipperを支えるテスト技術(@hakobera)
5. freeeを支える技術 (@xga)
6. (Web魚拓の闇(公開禁止)) (@hiroki_niinuma)
7. HLSについて知っていることを話します (@moriyoshit)

1. 真 Drone入門(@mopemope)




Abby CTOのマツバラさんによる発表。
(WindowsでもMacでも文字化けてる…)
赤ちゃん抱っこしながらプレゼン。なんか新しい時代を感じる。
drone.ioというDroneのCIツールをJenkinsの代わりに入れてみませんかっていう話。
詳しくは以下の参考スライド。

Drone.io のご紹介 from Uchio Kondo

Dockerで動かしていて,カスタムは主にシェルコマンド,できないものはGoでする。
参考スライドの中で複数のJenkinsを統合してDrone.ioにしようというのがあったので,
自分のプロジェクトにも適用できそうだなと思った。ただ初期学習コストがまだ高い・・・><

Drone.ioの次バージョン0.4の目玉は以下の通り。
1. .yml(やむる)の構造が変わる
0.4未満からアップデートする際には,この点に留意しなければならない。影響がある可能性有
2. Matrixビルドができる
ディストリビューション別/言語バージョン別/DBバージョン別でビルドができる
詳しくはhttps://github.com/drone/drone/issues/6

2. メルカリを支える技術(@cubicdaiya)

メルカリの性能設計の話。いかに高性能にするかを話していただけました。


元ネタは以下のスライド。


メルカリのネットワーク構成はさくら×AWSの混合構成
今回は高性能な仕組みを持つモジュールを3つ紹介

1. 高性能なAPIサーバをPHPで実現
利用しているのは軽量で高速なPHPフレームワークDietCake(http://dietcake.github.io/),
キャッシュのウォームアップ,
非同期処理(ジョブキューにQ4M,ワーカーにphp-Parallel-Preforkを利用)を使っている。
社内にDietCakeを書いている人がいる。

2. ハイパフォーマンスブラウザネットワーキングをnginxで実現
ハイパフォーマンスブラウザネットワーキングは以下の書籍のこと。
http://www.oreilly.co.jp/books/9784873116761/
TLS Session Cache/Ticketを導入してロードバランサであるnginxサーバのCPU使用率半減,I/O転送量を数Mbps削減している。
ただし,TLS Session Ticketに対応していない端末(iOSとAndroid4.x未満の端末)があるのが難点。
ちなみに,さくらにロードバランサオプションがあるが何故か利用せずにnginxサーバを利用している。パフォーマンスが足りないのかも?

3. 高性能なアプリケーションをGoで実現
メルカリのメイン開発言語はPHPだけど,最近の新機能はどんどんGoで作っている。
∵Goは早い・速い・軽い
Gaurun(Goで作った汎用プッシュ通知サーバ)を利用して,
プッシュ通知サーバ3台で数百万件のプッシュ通知を2時間程度で通知が可能。

3. Qiitaを支えたい技術(@mizchi)

フロントエンドエンジニアの技術(主にJS周り)で,
個人的には今回で一番聞いてよかった―って思ったお話。

前置きの「自分の業務をOSS化して,会社のドメインにせず,モジュールもきれいに分割する」っていう考えは素晴らしいし,その環境を提供するQiitaいいなぁと。

1. フロントエンドエンジニアとは何者なのか
HTML/CSS/JavaScriptで実装できるエンジニア。
最近の「実践的なフロントエンドエンジニア」に求められるスキルは
・node.jsでツールチェインを扱う能力
・外部モジュールの管理
・アセットパイプライン構築
・中規模以上のコントロールフローの設計
最近のAltJSを扱ううえではアセットパイプライン構築は重要で,
大規模なプロジェクトだと専任の担当者がいないと厳しい。

2. Modern Java Script
今はES6で「やっと普通の言語」になってきた。
Java Script界隈で最近大きな勢力は,
Babel/Type Script/Coffee Script/Flow Typeあたり。
@mizchiさんはCoffee Scriptが好き。
この中でどれを使うか選ぶ観点として,
・アセットパイプライン構築ができる→Babel/Type Script
・構築できない→互換のポリフィルを選択すること!

3.アプリケーション設計について
■重要なこと(1):SPAは片手間ではできません!!!!!!!
最近はMVCのController部分が分厚い。
ただ,ClientサイドにMVC(正式にはMVC2)を完全に適用するのは無理。
■重要なこと(2):Java Scriptでできることが増えた分は覚えましょう。
今後フロントエンジニアが目指すところは
・Server/Clientの境界面を設計する
・設計によって見通しをよくして,学習コストを抑える
・古いJSの悪習を引き継がない(DDDでいうSmartUI)

4.Isomorphic
Client/Serverどっちも同じ言語なら楽なのに…という発想のこと。
・Isomorphicを支える技術
ReactによるDOM抽象化とbrowserifyによるnodeモジュールの抽象化
・一般Isomorphic
node.jsやJava ScriptでClient/Serverのコードをすべて書く
・特殊Isomorphic(ラップしてれば大丈夫という発想)
@mizchiさんが一番筋がいいと考えているのはclojure/clojurescript
- clojure/clojurescript
- scala/scala.js
- ocaml/js_of_ocaml
- haskell/ghcjs
・Isomorphic
現状はパラダイム変わりすぎで時間とライブラリが足りてないのでこれから。
「みんな頼む」

2 件のコメント:

  1. > ※@cubicdaiyaさんはnginxのコミッターです

    すいません。コミッターではないですwなので修正していただけると助かります(パッチ送ったことはあります)

    返信削除
  2. > プッシュ通知サーバ3台で全ユーザ(メルカリは1000万DL)に2時間程度で通知が可能。

    全ユーザへの送信実績はまだなくて数百万件のプッシュでの話ですのでこちらも修正していただけると助かります。

    返信削除