YAPC::Asia Tokyo 2015 2日目に参加してきた.
はじめに
2日目や! 祭りや! 祭りやで!
改めて記載するがYAPC::Asia自体は昨年に続き2回目の参加である.
基本的に敬称は略す方針である.
書いてる途中に気付いたが,感想というよりはまとめ・備忘録に近くなってしまったのでここで記しておく.
聞いたトーク
ISUCONの勝ち方
素晴らしい講演だった.例えるなら知見の集合体.聞くこと聞くことが新しい知識だった.
……これ資料アップされ(て)るのかな,もう1回ゆっくり学びたいところ.驚愕の連続だったし,ISUCONに限らず,物事に対しての心構えなども再確認できた.
Perl 5.22 and You
Perl 5.22における変更点(削除・追加)と一部Perl 5.24についての話があった.
今年度に入ってから忙しく,僕はPerl 5.22を追っていなかったのでこれは非常に助かった.妥当な変更に感じた.順当,良かった.正規表現周りが大分クレイジーだったが,Perlだし,いやむしろPerlだから良いよなあと感じた.Hex floatも最高だった.
Perl 5.22がリリースされました - 数学関連の機能強化、メソッドのパフォーマンスの改善、正規表現の改善 - サンプルコードによるPerl入門あたりが日本語で分かりやすいまとめになっている.詳しくはperldeltaを参照のこと.
Perlは思想として後方互換性を大切にしている.diamond演算子(<>)はパイプとか通すとやばいことになるのだが,diamond演算子を修正するのではなく,double diamond演算子(<<>>)を導入することによって後方互換性を保ちつつバグフィクスを達成した.
Perl 5.24では更にバグフィクスや機能の追加がある.特に興味深かったのはシフト演算子(<<,>>)の修正だ.いや,正確に言えばPerl 5.24以前におけるシフト演算子の挙動だ.
2 << 2 #=> 8 2 << -1 #=> 0 2 << -2 #=> 9223372036854775808 = 2^63
やばい.ちなみにPerl 5.19.2で実行した.これに関して講演者であるRicardo Signesは
2 << -1が0になることについて
「I have no idea.」
2 << -2がなんか大きい数になることについて
「I don't know.」 #yapcasia #yapcasiaA
— ホテルバルティック(クローン)in東京 (@noan6251) 2015, 8月 22
と述べている.Perl 5.24ではこれを修正しa << -b == a >> b
に統一された.恐らくCのシフト演算子の未定義領域……?
Perl 5.24でもう1つ興味深いのはUnicode 8.0への対応である.PerlはUnicodeへの対応が早い.perl 5.22でUnicode 7.0に対応した.最高だ.僕はUnicodeが好きだ.当然それへ素早く対応するPerlも大好きだ(いやPerlはそう言うの関係なしに好きなのだけれど).ついでに過去の記事を載せておこう.
ランチセッションA
株式会社Fusic様がスポンサーのランチセッション.美味しい弁当だった.
Fusicは様々なサービスを開発する会社である.講演では自社のサービスで「どういうものが生き残り」,「どういうものが消え去った」かを述べていた.自(社)サービスの開発の強みは当然ながら「自身たちに最適化されること」である.要するに,必要な機能が丁度良く,不要な機能は付加する必要がない.
生き残るサービスは(無理矢理にでも)仕事上使うようにするなど色々言っていた.これはサービスに限らないことだと思う.生きていく上での取捨選択を考える際に重要かもしれない.
Adventures in Refactoring
特にこの部分は完全に備忘録だ.
GitHubの中の人によるリファクタリングに関する講演.最高のものの1つだった.この講演はもしかしたら当たり前のことが多かったかもしれないが,それを,影響力のある人間が声を大に語ることの重要さよ.
リファクタリング(に限らず物事には)良し悪しがある.リファクタリングは「振る舞いが同じであること」と「in/outputが同じであること」が条件である.そのため,リファクタリングの根幹を話すならばサンプルコードの言語は何でも良い.この講演はリファクタリングテクニックマニュアルではない.
重要ことの1つは「一貫性」,「DRY」,「抽象化」を目的にリファクタリングをすることはいけないということである.これはリファクタリングの結果これらが満たされることを禁止する意味ではない.目的にしてはいけないというだけである.これらを目的にするとリファクタリングの成否を判断できなくなる.
では判断基準は何かといえば行数が良い.例えば10行コードを削減すれば,10行分エラーが起こり得る箇所を潰したことになる.講演者であるBen Lavenderはご褒美の包丁!(:hocho: on GitHub).テストカバレッジが上がることも判断基準にして良い.もう1つ,Benの造語でTest Expressability(テストの表現性)がある.これはつまり,テストが何をやっているかがどれだけ分かりやすいかの指標だ.
もう1つ重要なことはデベロッパー(自身)の幸福度である.自分が幸福かどうかはコードを見れば分かる.幸せになろう.
一番需要なことは将来の作業に対しての自信を増やすこと.過去の負債を返済しよう.
グループ開発においてはリファクタリングは重要な教育の一環となる.大切にしたい.
また大きなリファクタリングはリスクを伴う.小分けにして適宜テストしていくべきだ.重要なのはテストありきで考えないこと.そうするとコードがテストに引っ張られてしまう.良いテストは良いコードの結果であるべき.
スタイルガイド(コーディング規約)は大切である.ここで重要なのは「スタイルガイドが正しいことが大切なのではなく,スタイルガイドが存在することが大切」なのである.$ go fmt
は……いや,Goはサイコーだ.
リファクタリングには罠が存在する.特に大きいのは既存のバグだ.もしリファクタリングをしている最中にバグを発見してもfixしてはいけない.もし挙動が変わったらどうしようか? リファクタリング,バグフィクス,悪いのはどっちだ.但しこれは質疑応答の際に補足されていたが,場合によってはバグフィクスを優先する.大きいバグの場合はリファクタリングの前にfixしよう.但し同時に行ってはいけない.気を付けよう.
#yapcasiaA 「素晴らしい仕事をした時は褒めることが重要。絵文字使おうぜ。」
— くっちん (@takc923) 2015, 8月 22
この講演で重要なのは「教科書的内容を教科書的に説明した」ことにある.模範解答集だ.絶対に認識しておきたいことばかりだった.
Parallelism, Concurrency, and Asynchrony in Perl 6
Perl 6におけるParallelism(並列),Concurrency(非同期),Asynchrony(並行)(全部違う! 注意!)についての講演.聴講者が少なかったのが残念.やはりPerl 6だったからなのかそうなのか!
残念ながら僕はこの講演をあまり理解できなかった.半分ほどだろうか.これに関しては詳しくはtogetterを参照されたい.
ただひとつ言えることはPerl 6は画期的な進化を遂げるということ.
特に感動したのは.raceでいい感じにパイプラインを構築してくれること(僕の認識が間違っていなければ,だ).これは素晴らしい.オプションを設定しなければPerlが良しなにしてくれる.もちろんN個のデータをM個のworkerで処理すると書くことはできる.所感ではPerl 6の並列処理はサイコーだ.Perl 6自身の早さも肝要であるが.ちなみにこの講演中僕の後ろにLarryがいたのでLarryに「Perl 6は早くなるのか」を尋ねた.結果は「Yes」だった.
ちなみにPerl 6にはactorが入るようだ.期待し続けよう.僕の期待値はこの講演中上がりっぱなしだった.
Profiling & Optimizing in Go
Goは良い言語だ.好きな言語は何かと問われたならばPerlやC++と答えるが,良い言語は何かと問われたならば僕はGo(他Python等)と答える.
進んだGOの姿
#yapcasia #yapcasiaA pic.twitter.com/CE11x4Gqfe
— アサギマダラ (@M_T_Asagi) 2015, 8月 22
悪魔合体が成されてしまった.
Goの内部データ構造の話を懇切丁寧に説明してくれた.Goに積極的には触れない僕でもかなり理解出来る内容だった.正直言うとこれで理解できない人は理解できないのでは? というほどの分かりやすさだった.英語もかなりゆっくりだったし聞き取りやすかった.
Lightning Talks Day 2
全体的に面白い内容ばかりだった.
www.slideshare.net
一番実学的だったのはこれだろうか.だが講演者の勢いと罠の内容(即死級のものもあった)のせいで大爆笑だった.いや笑い事ではないのだが(まあ僕もずっと笑っていた).テンポって大事だなあ.
「いい名前が決まると設計が決まって勝手に実装が出来上がる」,言いたいことはとても良く分かる. #yapcasia #yapcasiaA
— ホテルバルティック(クローン)in東京 (@noan6251) 2015, 8月 22
誰かの言っていたセリフだと述べていた記憶がある.僕はこれは尤もだと思う.名は体を表す.やることを決めさせれば実装は自然に出来上がるはずだ.
最後の方で発表内容がインターネット→電話→モールスと退化していったのは面白かった.
ところで今年の会場のネットワークCONBU様が担当してくださった.LTで設営と撤収のデモ(ライブ設営!)を行っていたのだがその早さたるや驚くばかりであった.
クロージング
なんとYAPC::Asia Tokyo 2015は2130人の来場者を数えたらしい.凄まじい数字だ.スタッフの方々には感謝しか無い.
YAPC::Asia Tokyo 2015のベストトーク賞
第1位:Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜
第2位:HTTP2 時代の Web
第3位:HTTP/2時代のウェブサイト設計 #yapcasia #yapcasiaA
— ホテルバルティック(クローン)in東京 (@noan6251) 2015, 8月 22
And more...?
どうやら牧さんが色々と画策しているらしい.書いている通り全てが未定だし,会場でもそう発言していた.YAPC::Asia TokyoはYAPCの名を冠しながら事実上の技術カンファレンスであった(去年に至ってはベストトーク賞にPerlの文字もなかった).もしかしたら思うところがあったのかもしれない.
ちなみにYAPC::Asiaはfreeらしいのでいつでもどこでもだれでも,である.
ところでモダンPerl入門 増補改訂版(仮)はどうなったんでしょう,牧さん(小声).
おわりに
今年はPerlの講演を良く聞いたなあと実感する.PerlはPerl 5.24になっても,Perl 6になってもPerlとしての面白さが損なわれることはないと思う.
来年Beaconが開催されたとしたら,やはり,行きたいなあと思う.YAPCじゃないからPerl主体ではないけれど,やっぱり楽しい技術カンファレンスの予感がある.
最後に改めてスタッフの方々への感謝を.