YAPC::Asia Tokyo 2015 スペシャルレポート

YAPC::Asia Tokyo 2015 1日目レポート[更新終了]

この記事を読むのに必要な時間:およそ 12 分

Kazuho Okuさん「HTTP/2時代のウェブサイト設計」

最初に,詳しいデータを使用して転送データ量の増加やHTTP/1.1の問題点など背景の説明から入り,解決策としてレイテンシに負けないプロトコルが必要であるという解説をされました。

そして,HTTP/2の基本的な仕様と何故その仕様になっているのかという理由を説明され,多重化,ヘッダ圧縮,優先度制御といった技術の詳細と優位性の説明をされHTTP/2を使用することにより,Webがどう高速になるかを説明されました。

画像

実際にFirefoxやChromeといったクライアントサイドとご自身が開発されているH2Oをはじめとするサーバーサイドの実装状況を説明され,これまで最適化技術がHTTP/2によって変わることなどを説明されました。その他セキュリティ周りの解説も含めてH2Oがどのようにその問題を解決しているかの話もされていました。最後にnginxもHTTP/2の対応を追いかけてくるが,H2Oは更にその先へ進めていくという話を力強くされて締められました。

画像

fujiwaraさん「Consulと自作OSSを活用した100台規模のWebサービス運用」

FUJIWARA Shunichiro(@fujiwara)さんが所属する面白法人カヤックでは,スマートフォンゲームSNSLobiというサービスを提供しています。そのシステムはAWSのTokyoリージョン内で100台規模のサーバにより稼働しています。今回の発表ではLobiのかんたんな紹介と,オーケストレーションツールConsulを用いたシステム運用について,詳しく解説されました。

ConsulはAgentプロセスをConsul Serverと,クラスタの管理下に置かれるClientホスト全台で稼働させる仕組みです。Consulの主要な機能としては,サービスディスカバリやKVS,DNSインターフェースなどがあります。

画像

Stretcherは@fujiwaraさんが開発したツールで,Consulを利用してPull型デプロイを実現するものです。発表ではStretcherを使ったデプロイの仕組みについて,詳しく話されました。他に,動画変換サーバのオートスケールの仕組みや,Consul KVSをバックエンドにしたConsul KV Dashboardなど,カヤックでConsulを活用するうえでの実践的なノウハウが多数紹介されました。

最後に発表のまとめとして,⁠Consulの機能は豊富だが,各自で必要な機能だけを使えばよい」と締め括られました。

画像

Casey Westさん「Conway's Law of Distributed Work」

Casey Westさんは,これまでの10年間にわたってリモートワークをした経験を基に,地理的に離れた場所にいる人々で構成されたチームでプロダクト開発を行うために,どういったツールを使い,何に気をつけなければいけないか,といったテーマで発表を行いました。

画像

まず,Caseyさんは全ての組織とその文化でリモートワークが可能なわけではないと断りつつも,効果的なコミュニケーションを意識し,適切なツールとテクニックを使うことでカバーすることが可能だと言います。重要なのは透明性で,情報を積極的に共有して意思決定の過程を誰もが追えるようにしなければならないということでした。

このように,チームの人々が,意識的にコミュニケーションの透明性を保つようコミュニケーションの形を変えなければ,リモートで働くことはできないそうです。

そして,リモートワークを成功させるために使われる具体的なツールとその利用方法,テクニックについて詳しく説明していきます。コミュニケーションの手段としてのチャットや電話会議,ビデオ会議の紹介では,チームおよび個人間でのコミュニケーションが行えることが要件として挙げられていました。開発のためのツールの紹介では,特にコードレビューの重要さが強調されていて,レビューには時間がかかるが,トータルで見れば作業の量は確実に減るので,行うべきということです。

また,決定がなされた経緯やエンジニアがその時に何を考えていたかを追うためのツールとして,コミットメッセージは重要だとしていました。後で見返した時に,なぜこの変更が行われたかを誰が見てもわかるようにしておくために,コミットメッセージにはなぜ,を書かなければならないとしていました。

そのほか,ペアプログラミングのためのスクリーンシェアリング,タスク管理ツール,多人数で編集可能なドキュメント編集ツール,大きなファイルを共有するストレージ,共有のカレンダーについて,具体的なプロダクトやサービスの紹介や,それらの使い方について説明がなされました。

電子メールに関しては,非同期のコミュニケーションとしては良いが,コラボレーションのツールとしては不向きとのことでした。送ってからすぐに読まれると期待しないほうがよく,テキストチャットを並行して使うようにすれば良いといったことが言われていました。

画像

テクニックの解説では,リモートワークを導入する際にチーム全員が1週間程度体験してみることや,定期的なミートアップの開催,コミュニケーションをやや過剰にすること,そして自分が仕事をしているサインを発信することについて語られました。Caseyさん自身,プログラムを書くことに集中しすぎてしまった結果,チームメンバーから自分がどのようなことをしているか見えづらくなってしまったということがあったそうです。そこで,自分から積極的に自分が何をしているか見せていくことの重要さに気づいたそうです。

最後に,どのようなシステムも,そのシステムを作る組織の構造をコピーするというConway's Lawを引用し,プロダクトを作る組織の健全さを気遣っていくことが,製品を作るうえで重要な要素になる,という言葉で締めくくられました。

cho45さん「WebAudioで入門する信号処理」

HTML5のWebAudioに関するセッションでした。まず,WebAudioの概要として,AudioNodeが基本単位であり,AudioNodeを複数接続することでストリーム処理を行うのが基本的な使い方であると説明しました。また,音を出したり,マイク入力が取れるうえに,JavaScriptで処理ができるNodeがあり,生の信号データを自由に処理できるため,柔軟な信号処理ができるそうです。

画像

WebAudioを利用する前に知っておくべき基本的な信号処理技術,波の基本用語に関して非常にわかりやすく説明されていました。WebAudioで実装したモデムのデモでは,昔懐かしいダイアルアップ接続の効果音とともに画像ファイルが転送されていくデモを見て,会場から歓声が上がりました。

画像

また,昨今の通信技術に関しても紹介されており,超高音通信やIoTとの連携とWebAudioの可能性に関して話しました。最後に「WebAudioはHTML5の他の機能と比べて異質のポテンシャルを持っているので,是非WebAudioを触ってみてほしい」というメッセージで締めくくられました。

Shinpei Maruyamaさん「Perlで学ぼう!文系プログラマのための,知識ゼロからのデータ構造と計算量」

しんぺい,猫型のHNでも親しまれるShinpei Maruyamaさんの,データ構造と計算量についての初心者向けの発表です。

データ構造,計算量についての前提知識として,プログラミングにおけるメモリの扱いをCの変数を例に図示しながら解説します。

変数(や関数やモナド)を箱と表現することもありますが,実際には変数はメモリとして考えたほうが良いというMaruyamaさん。変数を箱だと思うと理解が難しいが,メモリに値が入っていると思うと理解が難しくなくなると言います。続き,C言語の配列の仕組み,単方向連結リストについて解説しながらPerlで実装することで聴衆によりデータ構造がイメージしやすくなるように発表していきます。こちらもメモリがどうなっているかの理解を促したため聴衆にも理解しやすくなっています。

画像

前提知識の後は計算量,オーダー法について解説。オーダー法をデータ数がnなら定数倍や定数項は無視してO(n)と表す,ある種雑な考え方として紹介します。Shinpei Maruyamaさんはいろいろな計算量をグラフで見ると特徴が分かることを図示しながら説明,O(n)とO(n^2),O(log n)のデータ量に対する計算量が可視化されます。オーダー法ははざくっと指標を確認するもの,どのようなデータ構造を採用するかの判断材料になるとO(n)の使い方を解説します。

計算量から導かれる嬉しいデータ構造として2分木を紹介。続いてB木,B+木とバランスさせやすさやシーケンシャルアクセスのしやすさなどの特徴を交えつつ解説しました。

データ構造はイメージがあるだけでわかりやすくなること,データ構造がわかっていないと難しい話もわかるようになることなど改めてデータ構造と計算量を知ることがどのように役に立つかを述べ,今後の学習や業務に活かしていただければ幸いと発表を終えました。質疑応答では,このような話をブログに書いたり発表したりするモチベーションを問われた時,自身が苦労した経験などを踏まえ基底の苦労を減らしたいこと,自信を育ててくれたPerlコミュニティへの感謝の意も込めて活動しているとのことでした。

とっつきがたいと思う人もデータ構造と計算量が前提知識なしでもわかる,初心者や自信がない人には有意義な発表でした。

画像

著者プロフィール

青木大祐(あおきだいすけ)

茨城県在住。個人的な用途では主にPerlを使うが,業務では残念ながらC#とTypeScriptしか触らない。大学在学中からPerl6が気になっており,Tsukuba.pmを開催して布教もした。

Twitter:@VienosNotes


臼井洋文(うすいひろふみ)

京都市出身のプログラマ。仕事はPerlでサーバサイド開発がメインだが,必要に応じてiOS/Androidアプリの開発やインフラ周りの整備も行っている。趣味は写真とボルダリング。

Twitter:@usuihiro

Web:http://d.hatena.ne.jp/usuihiro1978/


越智琢正(おちたくまさ)

愛媛県西条市出身。大学進学を機に上京。在学中は超小型人工衛星の研究開発で,ハードウェアをいじったり,C++やC#を利用。就職後にPerlと出会う。仕事ではPerl製フレームワークやゲーム用のBaaS開発,とあるゲームの海外版開発等に従事。人に喜ばれるものを作るのが好き。


田実誠(たじつまこと)

某クラウドインテグレータのデベロッパー。Web技術全般に興味があり,プライベートではRuby,Node.js,Python等で個人ツールやOSSのプラグインを作っていたり。Perlはド初心者。

Twitter:@tzm_freedom

Web:http://freedom-man.com/blog/


中村浩之(なかむらひろゆき)

Spiber株式会社勤務。バイオベンチャーで,生物学実験を行う研究者が使うアプリケーションの開発を行っている。Ruby,Pythonを書いていることが多い。グリッチに興味がある。


野田大貴(のだだいき)

株式会社技術評論社、雑誌編集部所属。主な業務は書籍の編集。

Twitter:@nodawep


藤沢理聡(ふじさわまさあき)

神奈川県在住。ソフトウェア開発や周辺業務に携わっている。長年 Perlを愛用しているが,仕事では他の言語を扱うことが多い。今年はクリスマスプレゼント(Perl 6)をことのほか楽しみにしている。

Twitter:@risou

Web:http://www.risouf.net/


本間雅洋(ほんままさひろ)

北海道苫小牧市出身のプログラマー。好みの言語はPerlやPython, Haskell, Scala, OCamlなど。在学中は数学を専攻しており,今でも余暇を利用して数学を嗜む。現在はFreakOutに在籍し,自社システムの開発に力を入れている。 共訳書に「実用Git」(オライリー・ジャパン),共著書に「FFmpegで作る動画共有サイト」(毎日コミュニケーションズ)がある。

Twitter:@hiratara
Web:http://hiratara.github.io/


安武貴世志(やすたけきよし)

現在は大手Web系IT企業のインフラエンジニアとして,幅広いシステムの構築・運用を担当。インフラ以前はソーシャルゲームのサーバサイド開発をしていたことも。最近,趣味でKoyomiというジョブスケジューラをPerlで書いた。福岡出身。

Twitter:@key_amb

Webサイト:http://keyamb.hatenablog.com/


山中裕之(やまなかひろゆき)

ドラゴンズファン。某会社のプログラマとして活動中。好きな言語はPerl, Ruby, C, C++, Haskelなど。武術が好きで休日はいそしんでいる。

Twitter:@hiroyukim
Web: http://hiroyukim.hatenablog.com