yapcasia 2014 1日目 行ってきた

遅刻したけど行ってきた。

内容はgihyoのレポートや動画とかは上がるはずなので適当に感想だけ。
その場で質問しろって感想もあるんだけど、そんな勇気ないです。

http://yapcasia.org/2014/

完成されたシステムなどない。完成された人間もいない。あるのは成長し続ける未完成なシステムと、それを支える未完成な人間だけだ

オペミスするし、マシンは壊れるし、負荷に対応できないといけない。我々はこれらに立ち向かわなければならない的な話だった?

手順はスクリプト化して機械にやらせる、負荷はマシン増やしてバランシングする、程度の知識はあるけど、実際にそれを今の現場で出来ているのかというと、出来てない。

本当はやりたいけども、自分がそれを現場に適用するほどの理解がないのと、実際の仕事だと手順が確立できたなら自動化しろ・・・という流れではなく、次の別の仕事を振られる。手順を基に構築とか。結局その手の知識をつけるには仕事では覚えられない。言い訳にしかならんけど。
上の判断としては、問題が起きなければ再構築とか不要だし、現状の機能で充分であればリリースなんて頻繁にしないだろうから、そこにコストを投じたくないってだけなんだろうけど、自分はそれは違うとずっと思ってる。
うちの仕事場だと「他に何かしたんじゃないの」とか変なイチャモン付けるやつがいるのもあって、手作業は撲滅しなければならないと思ってる。
あとhistoryログを持ち出すのも何個も申請しなきゃならんし、辛い。そのためにも「手作業では何もしてない」って証明するためにも自動化したいってのがある。

お待たせしました。Perl で BDD を簡単に実践する最高にクールなフレームワークができました

Test::Kantan モジュールを作った話。

Jasmine(JavaScriptのテストフレームワーク)っぽくかける。
describeブロックのネストも。
okメソッドがコードブロックで評価できるので、likeとか要らなくなった。(ブロック内で真偽を返せるならなんでもよさそう)
PowerAssert的に失敗時の状態を追える。例えば "ok{foo() eq 'bar'}"とあると、特別な記述なくfoo()の評価結果も画面に出力されるので無駄にチェックする必要が無く原因がわかる。)

とても便利そうだったので、Perl書くときは使いたい。

最後にテストが1個でも失敗したら「失敗」で良いから集計とかTAPの形を取り繕って成否だけわかれば良い的な話を聞いてちょっと納得した。

ランチセッション(QuizNownの開発話?)

途中から見た。
モバミちゃんの人間らしさ(?)を出したい→おっぱいをゆらすことにした

良い。

Perl::Lint - Yet Another Perl Source Code Linter

ライブリリース失敗してた。悲しい。

一部はPerl::Criticより400%も早い。
高速化のためにあえてサブルーチンを使わずべた書きしてるPolicyがある模様。

Policy定義の苦労とか聞いて、findbugsは良くできてるんだなーと思った。

構文解析とか興味はあるけど手を出してない・・・いつ触り始められるのか。

Git を使ったツール開発

Gitのサブコマンドは便利なものがいっぱいあることが分かった

git help -a

どういった便利ツールを作ろうか考え付かないけども、これができるならあれができるかもしれない、ということもあるかもしれない。引出しにしまっておこう。

コマンドラインツールについて語るときに僕の語ること

使いやすい、使ってもらえるCLIを作るときの話。

スライドだけでも発表内容が伝わるぐらいよくまとまってるので、スライドを見ることをお勧めしたい。

コマンドラインツールについて語るときに僕の語ること #yapcasia - Speaker Deck

良いCLIについて7つのポイントを述べてたけど、全てその通りだと思った。

でも実際、1つの事をうまくやる、というのは自分にはまだ難しい。うまく作れた!ってことがない。
考えればわかりそうな感じもするけど、なんかその時には気づけない。特殊な要件というのもあるんだろうけども。

オプションの設定の優先順位みたいなものは明日からでも真似したい。
デフォルト値 < 設定ファイル < 環境変数 < コマンド引数

DeNAが歩んだデプロイ自動化への道

レガシーコードの塊からコンポーネントを切り出してその単位で自動化。
新規コンポーネントはゼロデプロイを取り入れたりして徐々に自動化していった・・・的な話だった気がする。

単体テストが通ったら頻繁にpushして結合テストを回すって話だったけども、いまだにgitでpushするときのcommitの粒度がよくわからないので、それでいいのかなーって思いながら聞いてた。
1commitで修正内容が完結してるだろうから良いのかな。

結合テスト(コンポーネント、End to End)は時間かかるようで、並列化も今後の課題とか。やっぱ色々あるんだなぁ。
負荷テストの自動化はなくてもまだ困ってないからとかおっしゃってた気がする。

WHERE狙いのキー、ORDER BY狙いのキー

タイトルでなんのこっちゃ?っと気になってたので。

WHEREもORDER BYもインデックス使わないと全部走査することになる。
JOINするときは単純にインデックスを張っただけでは、無駄なソートが発生することがある。
ORDER BYでソート済みの結果を得たい場合は、ORDER BY するカラム持つテーブルが外部表にあることも重要。ただJOIN(外部表、内部表)辺りで理解が怪しくなってるので間違ってるかもしれない。
Where狙いのキー、order by狙いのキー
p.97とp.101を比べると違いが分かるかもしれない。

でもORDER BY狙いのキーの意義が理解できてない。どういうときにORDER BY狙いのキーを使うのか。
複合インデックス(A,B)があったとして、AをWHEREで絞り込むとき、絞り込めるときはAをWHEREで、となって、逆に多すぎて絞り込めない場合は、BをORDER BYで、って話かなぁ。
でもBをWHEREで、って話にしても複合インデックスでソート済みだから気にならないんじゃ、と思った。

Mojoliciousを使ったwebアプリケーション開発 実践編

実際にYAPC::AsiaのサイトをMojoliciousを使って構築されており、それを例にした発表だった。
ディレクトリ構成や、開発/本番の設定の切り替えや、サービスの起動等、実際にこうやってますって感じのセッション。
当たり前だけどあまり見かけないような話を聞けて良かった。見かけないっていうのは自分のアンテナが感度が悪かったり短すぎるだけかもしれないけど。

cartonの説明はあったがcpanmの説明はなかったりしたけども、cpanmを知らない人とかPerl界隈じゃいないし、モジュールを試す系の記事をみても当たり前のように使ってるからいいのかなぁ。

Java For Perl Mongers

JavaPerlは同じ構文でかけるのでふつうすぎてつまらない。

Perlの不思議な部分(lvalue attribute)とPerlでも一応静的型付けっぽいことができる(fieldsプラグマ)の話があった。
fieldsは過去に意識が高かった頃に触れていて、
newのコストが高いだけで悪くないからもっと使われそうだと思ってたけども、なんで使われないんだろう。定義と宣言が面倒だからか。

自分も趣味でPerlやってて仕事でJavaを使うようになった。
Perlをやってた頃はなんか「typoする気しないし、してもログみて気づいて直せるし」って謎の自信があったけど、今じゃすっかり補完無しでは生きていけない感じになってる。
最近じゃHashMapも怖くて使えない。Beanクラスにデータ入れてから扱うようにしてる。
JavaIDEがあればいい言語だと思います。

LT

maka2_donzoko@twitter

同人活動報告とかyapcasiaで離婚しかねない話とか。勢い半端なかった。

charsbar@github

恒例のランキング。 http://acme.cpanauthors.org/for/japanese
一昨年やってて去年はなかった気がする・・・と思ったら去年は1日目出れなかったんだった。

shoichikaji@github

環境をそのまま固めて持ち運べるPerl(Relocatable Perl)のお話。
発表者の記事があったので貼っておく。 http://ks0608.hatenablog.com/entry/2014/07/06/170328

前の2人の勢いがすごかったのもあって、会場の反応は薄い感じだった。
Perlで実現するにはConfig.pm?だかを書き換えないとダメだと思ってたけど、そういうオプションがあることを初めて知れてよかった。
ダウンロードして解凍すればすぐ使えるってのが好き。
ポータブルに使えるの良いことだと思うんだけど、最近どこもパッケージ管理ツールありきでネットあって当たり前みたいな風潮がちょっと嫌だ。(うちの仕事場の開発環境が外に出れないため。)

__papix__@twitter

Perl入学式。3年目。サイトもできた
こういった活動ってPerlが好きだとかPerlのコミュニティが好きだとかだけでできるもんなのかなぁ。

hiratara@github

圏論

gugod@twitter

たぶん台湾の方。英語で理解できなかった。typoしてた。
g0v.tw の取り組み発表。
LTで出てきた画像を見たときはよくわからなかったけど、上記のページの成果を見てたら、政府が使ったお金を視覚化したりしていた模様。かっこいい。

shuhei.tanuma@facebook

PHP関連?のメンテナーさん。
仕事や家族(彼女?)の事もあり、関わるOSSの取捨選択を迫られており悩んでいるらしい。
過去にPHPのSEGVの事を考えていたせいで2回キレられたとか。

catatsuy@twitter

× Pixiv
○ pixiv (全部小文字)

PerlPythonは大体いっしょ

コネクタの調子が悪かったのか頻繁にブラックアウトしてた。耳に入った情報によると結合部がガバガバだったとか。

kazeburo@github

フレームワークのパフォーマンスを比較する TechEmpower Framework BenchmarksPerlフレームワークベンチマークが軒並み死んでいた(Did not compleateになってた)話。
そもそも環境がAc○ive Perlだとか。なんてこった。
チューニングしてPHPを追い抜いたとか。すごい。でもrackにまだ負けてる。

なお更新は次期(Round10?)で更新されるらしいので、この成果はまだ反映されてないみたい。

bayashi@twitter

YAPC::Asia Ramen Challenge を始めた。#yapcramen
ラーメンを食うか、Perl関連のOSS活動をするか、両方するか、といったもの。
こういった時事ネタを絡めてくるのは卑怯だと思った!

感想

セッション聞いてるときは楽しいけど、休憩時間にぼっちは寂しい。

帰る電車が花金リーマンで溢れてて臭かった。

明日も気になるセッションがあるので一人で見に行く。