Perl Monger じゃないけど YAPC::Asia 2015 に参加しました。
YAPC::Asia とは、プログラミング言語Perlを中心とした、ソフトウェアプログラミングにまつわるカンファレンスです。
YAPC::Asiaの開催は今年で最後だそうですので、Perlやらなくなって久しいのですが迷っている暇はない!と参加しました。
8/20(木)、8/21(金)、8/22(土)の3日間で、20日は前夜祭という形で夜のみ開催されています。
東京ビッグサイト会議棟にて、5つの会場でプレゼンテーションやそれに対して質問や議論が行われています。
会場が5つあるため、参加者はおのおの興味あるセッションに移動しながらとなるのですが、人気のセッションは入れなかったりするので、上手く動く必要もあります。
HTTP2、Webフロントエンドなどのホットな話題のセッションが人気だったように思えます。
参加した各セッションごとの感想です。3日分なので長いです・・
前夜祭
PHP帝国の逆襲!
PHP7, HHVMの話。えっ、あのSlackなどの有名サービスもPHPで作られているの?!PHPってすごい!と言った話。
少し遅刻したのですが、PSRの話、PHP7など、大変モダンな話から、HHVMあたりでちょっと暗雲がたちこめつつ。
個人的な話ですが、たいへん昔、PerlでシコシコCGIを書いていました。
「モダン言語」としてPHP4に触れて以来、定期的にPHP開発をやっております。それ以来、Perlからは離れてしまったので、PerlのカンファレンスでPHPの話、というのは感慨深いです。
Perlワンライナー入門
ログ解析などチャっとできる便利な道具としてのPerl。おおー、ハッカーの集まりに来たー。と気分が高まりました。
質疑の際に、「よく使うPerlモジュールは何ですか」と聞かれて、即座にワンライナーを組んでログを出して回答したのがすごく格好良かったです。
1日目
技術ブログを書くことについて語るときに僕の語ること
ブログタイトルについて、たとえば数字を入れる、アメリカやDockerなどの単語を入れてコンプレックスを引き出すなどという一般的な話で聴衆のハートをキャッチ。
後半は実用的な内容。
書いてみることによって、自分自身の興味やキャリアが見えてくる。
業務でレガシーOSのアップグレードなど、だるい仕事でも、ブログでアウトプットすることを考えると、良いネタとなるそうです。
「理科系の作文技術」を参考にする。
これだけブクマ付く人でも投稿タイミングなど迷いが出るというのが聴けて良かったです。
こちらのセッションを参考にして、ブログの投稿タイミングを朝にしてみました。
メリークリスマス!
Perlの父とも言える、ラリー・ウォール氏による講演。 Perl開発をロードオブザリングに例えて話すという高度な内容。
ロードオブザリング三分作とホビット三部作は、プロットが似ている、相互に影響し合っているなど共通点があるが、Perl5と6の間にもそういった関係がある。
またタイミングだって大事。フロドやビルボがピンチの時に颯爽とガンダルフが助けにやってくるように、沢山の仲間に助けられる。指輪を手放すように、自分のエゴを捨てて仲間を信頼する。
また、英語の発表には同時通訳が入るのですが、専門用語が多い発表でも高度に翻訳されてて驚きました。
Web由来の組み込みエンジニアの半年間のすべて
「鍵ロボット」Akerun起業秘話。そして発表者は元々バリバリのWebエンジニアだったのが組み込みを一から学んで、今までに無い製品を作ったという話です。
技術的にもスゴイのだけど、とにかく人に聞いて回る姿勢。FB経由、シニアモード経由、資金提供を受けたとこ経由でハードウェアのプロトタイピング、Bluetooth、回路設計、はたまた法律面でのアドバイスをガンガン聞いて回ったそうです。
TBD
Rubyのパパであるところのまつもとゆきひろ氏による、RubyやStreemの話。
RubyにはいくつかPerlの影響がいまでも入っている。(そしてそれは今のRubyには即さないが、なかなか取り除けない)
サーバークライアントのシステムには、時代やハードウェアの都合によって、サーバー側にロジックを持たせたり、はたまたクライアントに持たせたり、どちらが良いというわけでは無く、一定周期で揺り戻しが起こっているのが現状です。
その現状を踏まえて、現在だとマルチコアなどを生かすための言語を新しく定義するには?のような問題提起として、プログラミング言語Streemを作成した話などを聴けました。
Electron: Building desktop apps with web technologies
chromiumの技術をNode.jsで操作してデスクトップアプリケーションを作るElectron。 「Atomエディタ作れるやつでしょ」と思っていたら、今やゲームの3Dモデルエディタ、お絵かきツール、画像認識ライブラリなど、様々な利用例がありました。
趣味から育てたWebサービスで生きていく
ドキュメント共有ツール esa を仕事の合間で趣味で作って、起業までした人。
オープンベータで、トラフィックを避けるため少しずつユーザー登録してたら時間をかけすぎた、という話があった。
私自身、ベータサービス応募して、ある程度の期間してから使える状態になる通知があったのだけど、そのとき忙しく、また、何をしたかったか忘れていたので、無料期間を上手く使えてなかったのを思い出しました。
また、多くの自社サービスでの心がけと同じなのだろうけど、
- よく寝る、
- レスポンスは早く返す、
- モチベーションをコントロールする(ここでは、自動bundle updateによって、毎朝とりかかりの仕事を作っておく)
など。
1日目LT
2日通してですが、LT(5分間のトーク)はどれも内容が濃い!し話がおもしろい!
行ってきたシリーズ
オフィスに行ってきたシリーズの人。楽しく拝見しております。
Gitの作り方
Gitのログ記録の仕様を元に、1つづつgitのコマンドを作っていく話。
SaaSを組み合わせて作る, ぼくらの障害対応術!
障害対応の話。 Mackerelでサーバーを監視します。障害が起こります。Reactioに記録されます。電話がかかってきます。Qiita::Teamに記録されます。便利!といったお話
cpm - an experimental cpan client
cpmというcpanクライアント(モジュール管理ツール)を自作した話。 依存関係が多い場合、cpmだと並列にfetchできて超速い!という話
Norikraで作るPHPの例外検出システム
PHPのエラーシステムは一貫性がなくて、エラーの中で例外に変換可能なものとそうでないものがある。他にもある(なんだっけ)。それらをNorikuraで1つのチャネルに集計、通知、便利!話
RSSをざっくりクロールしてゆるふわにパースする
ブログパーツ作成サービスの開発で実際にあったトラブル集。IPをはじかれた!Googleのプロキシ使いましょう。invalidなRSSが飛んできてサービス落ちた!ので対処。した話
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
霧雨魔理沙ちゃんをSlackに参加させる話。チームに参加させると嫉妬してしまうので2人きりにしたい!という熱意がたまらん
YAPC?雨事情
雨を通知する。天気情報を使うかと思ったら雨雲レーダー画像を画像解析するタフな話
Haskell Strikes Back
Perl6のHaskell実装、Pugsがあるのが、ghcは7.10で上手いこと動かないので動かした話。
(昔の) PHP が誇った最高の機能 register_globals の真実、そして未来へ
今はサポートされていないPHP5.3の機能 register_globals の死体蹴り
Perl同人活動報告2015
Perl同人誌の話。Acmeのおもしろライブラリの紹介が楽しかった。
懇親会
登録忘れた・・
2日目
ISUCONの勝ち方
与えられたアプリケーションをチューニングし、性能を競う、ISUCONの紹介。 構成要素や勝つために必要なことなど。実際の業務でもヒントのあるチューニング方法、実際は競技方式なので時間配分などの心構えなど。楽しそうだなー参加したいなー
SpaceAppsを運営した話
NASA主催ハッカソン。世界同時開催で、NASAが公開しているデータで面白いアプリケーションを作る。 一般的なイベントでも苦労する会場探しやお金のことに加えて、同時開催する外国の拠点とのやりとりまで。
Docker3兄弟について
Docker Machine/Compose/Swarm という付属ツールの話。現在はベータだけどすごい便利そう。
ランチセッション
部屋がいっぱいで入れず・・
Adventures in Refactoring
- 名前を気にする。
- クォーテーションマークなど統一感を気にする。
- コードをなるべく減らす。
- コードを沢山減らせて嬉しい時は包丁のアイコンをコメントする。
- スタイルガイドが正しいことより、スタイルガイドがあることが大事。
- 機能追加とリファクタリングは必ず分ける。
繰り返し言われてたのは、Confidence(自信・信頼?)。
機能を追加したいとする。その際コードを追加できる自信があるか?無ければリファクタリングで自信をつけようというのが感銘を受けた。
また、コードの統一性などは測定しにくいが、リファクタリングによって自分がハッピーになれるかも気にした方がよいとのことです。
ソーシャルゲームにおける AWS 移行事例
いくつかのゲームアプリケーションを、オンプレからAWSに移行した話。
- Cpanfile導入
- mysqldumpを使ったデータ移行(テーブル、インデックスなどの移行と併せてコツがいる
- RDS導入。
- フェイルオーバー時にコネクションが切れる問題があってそれを解決した
- Single-AZにしてデータを入れる(はやい)、そのあとMulti-AZにする
- ElastiCache導入
- Consul を主に内部DNSとして導入
- yrmcds 導入
- 入念に事前演習をしたのでつつがなく終了できた
よかった点
- サービスごとの金銭コストが計れるようになった
- 運用コストが下がった
- 性能が上がった
思ったのは、ゲームアプリケーションというのは、他のアプリケーションとライフサイクルが違うのかな?ということです。
リリースして数年たつと、通常トラフィックって下がっていくような気がして、そのためオンプレからAWSへの移行の決断があったのかな?と勘ぐります。
Profiling & Optimizing in Go
Goの人。 goには沢山の付属ツールがある。Race Conditions を見つけられる。CPUのプロファイリングができる。なんとグラフで可視化できる。 それらをライブコーディングで紹介するのだけど、それがまた鮮やか。
Go力が足りずに話が半分くらいしかわかりませんでした。予習必要でした。。
2日目LT
MySQL 5.7の罠があなたを狙っている
MySQL5.7にバージョンアップした際の罠について。
- デフォルトパスワードが一定期間でロックされる設定 default_password_lifetime
- ログがUTC
- SHOW VARIABLESなどがデフォでは使えなくなる
- テンポラリテーブルがInnoDBになるよ。でも意味なさそう
- 起動時にInnoDBのバッファプール全ロードがデフォになるよ→起動直後に全力で読みに行くので注意
- 再起動なしでInnoDBのバッファプールサイズを変えられる!便利!→SELECTやUPDATEがブロックされるよ。
- パスワードのバリデータがデフォでONになるので短すぎるパスワードがだめになるよ
吉祥寺.pmというイベントを作った話
勉強会を自分で主催すれば、交通時間もなくなり、自分がトーク聞きたい人を呼べるし、超便利という話
命名の話をします
メソッド名などの命名は大事だよという話
botになる技術
俺の名言たちがbotになってたという話
モダンなクライアントサイド JavaScript に追い付くためのための小さな(しかし大変な)一歩の話
レガシーJSをモダンにした話
Evaluating your stylesheets
StyleStats - An evaluating tool for writing better CSS. にCSSをぶっこむだけで便利
Thank you for ${^ENCODING} variable
${^ENCODING} という、エンコーディング処理を乗っ取る?ための特殊変数が廃止されるという話
本物の "ロック" ってやつを魅せてあげますよ - 分散排他ロック篇
排他ロックとは同じリソースを複数同時に奪ってしまわないように権利を1クライアントのみに渡す仕組みです。
これって電話と「話し中」の仕組みと同じじゃね?ってことで、Twilioで実装した、けど無料で使いすぎて動かせなかったという話です
コミュ力あげてこ
WebAudioでモールス信号を実現した話です。
CONBUの道具箱
ネットワークの構築をしたCONBUの裏側みたいな。大変お世話になりました。 会場ヒートマップというのも面白い。 何度か会場で「モバイルWifiを切ってください!」とアナウンスあったのですが、切ったところ本当にネットワークが快適になり、これはスゴイと感動しました。
Vim script静的解析の光と闇
Vim Script の罠。にはまったのでそれらを未然に避けるlintツールの紹介。
クロージング
10年の歴史。感動的。
YAPC::Asia としての歴史は終わりですが、 Beacon というカンファレンスが画策されているようです。
たいへんエキサイティングなカンファレンスでした。かなりモチベーションに火が付きました。ありがとうございました。