YAPC::Asia 2015 に行ってきた

YAPC::Asia 2015 の前夜祭と2日目に行ってきた。

前夜祭

技術ブログを書くことについて語るときに僕の語ること

ブログでブクマ数を稼ぐには、という話だった。
なるほど、という感じでとてもおもしろかった。

  • ブログはタイトルが大事

  • 投稿タイミングも大事

    • 平日の朝が良い
      • 金曜の夜にテンション高く書き上げても、すぐに公開せずに一旦寝かせる

1日目

不参加

2日目

ISUCONの勝ち方

isucon のための tips や チューニング方法についてのお話。
とても勉強になった。isucon 出たい。

  • 準備

    • 同僚や元同僚など、一緒に働いたことがあるエンジニア同士でチームを組んだ方が良い
    • sysctl.conf や my.cnf などの秘伝のタレは、どこかに手順と一緒にまとめておくなりして、すぐに適用できるようにしておく
    • できればプライベートリポジトリを用意しておく
  • 当日について

    • 7時間は意外と短い
    • 最初の1時間は、課題、レギュレーション、アプリケーションを理解し、戦略を立てることに使う
    • 最後の30分で、サーバを再起動しても動作する事を確認しておく
    • 最初の状態をまず git に push しておく
    • こまめに commit して、問題が起きたらすぐに戻れるようにしておく
    • 諦めたら、そこで終了ですよ
  • チューニング

    • sysctl の修正は基本的に最初にやっちゃう
    • web サーバのログを解析して、ベンチマークツールの動きを知る
      • アクセスが少ないポイントを頑張ってチューニングしても効果は少ない
      • どれだけエラーは許容されるのかを把握する
    • mysql のデータ構造 B+Tree を頭でイメージする
    • strace, tcpdump, top, iftop, iotop などのコマンドを使えるようになっておく
    • 特にスペックの低めなマシンの場合は、 apache よりも nginx の方が CPU のコンテキストスイッチが少なく済むので向いている

我々はどのように冗長化を失敗したのか

式年遷宮アーキテクチャの思想を持ってシステム構築して、最終的にどうなったのか、という話。
試行錯誤した体験を発表されていて、すごく良い話だった。
インフラの話は本当におもしろい。

Speaker Deck にすでにスライドが上がってるので、それが詳しい。

Adventures in Refactoring

GitHub の中の人による、リファクタリングの話。
とにかくためになった。

  • 正しい振る舞いを keep していくことが大切

  • コードを減らすのが、良いリファクタリング

    • 10行減ったら、それだけバグが減る :hocho:
  • リファクタリングの理由

    1. Developer の Happiness のため
    2. 性能向上
    3. 将来の作業に向けての自信を得る
    4. developer の教育
  • メソッド名(動詞)を名詞にしてクラスにするというアイデア

  • メソッド名にアンダースコアが入っていたら、それはオブジェクトにできるかもしれない

    • pull.branch_valid? -> pull.branch.valid?
  • 既存のバグ

    • リファクタリングをやっている時にバグを直すべきではない
  • 大きなリファクタリングはリスク

    • 細かく区切っていくことが大切
  • Deprecate

    • _oldとか作る
    • 後方互換を持たせる
    • たとえば gmail が AB テストしている時に、古いデザインに戻れる機能をユーザに提供しているように
    • github/scientist を使う
  • feature の開発とリファクタリング、どちらを優先するかの基準は?

    • リファクタリングせずに、その feature の開発をすることに自信がもてるかどうかで、どちらを優先するか決まると思う
  • テストが無い時は、まずテスト書いてからリファクタリングするべき

Profiling & Optimizing in Go

Google の中の人による Go の話。
emacs でコードを書いてターミナルでコマンド結果を見ながらの発表という感じだった。
自分の知識不足でわからないことが結構あって、 Go もっと勉強したいと思った。

  • ベンチマークの取得
    • Go には benchcmp というコマンドが同梱されていて、それを使ってベンチマーク結果を比較してどれだけ改善したかを見れるらしい

Lightning Talks Day 2

どれも面白くて、LTらしくて勢いがあって良かった。

まとめ

今年は1日目に参加しなかったので、昨年に比べて、あっという間に終わった感じだった。
今年は会場が東京ビッグサイトで、去年の慶応日吉キャンパスとはまた違う雰囲気だった。
YAPC::Asia 今年で最後ということで残念だけど、今年も楽しかったし、聴いたセッションは全てとても勉強になるものだったので満足。

最後に運営の皆様、本当にお疲れ様でした!