@kyanny's blog

My thoughts, my life. Views/opinions are my own.

YAPC 2日目 感想

Mackerel開発におけるScalaとGo、そしてPerlを聴きそびれた。目覚ましかけておいて止めた覚えもないのに寝坊してしまい、遅れて到着したら案の定部屋が満室で入れなかった。1日目に引き続き7階の部屋に一度も入ることができなかった。狭すぎだと思う。ショックで心が折れてもう帰ろうかとも思ったが心を落ち着けるためにスタバでコーヒーを飲んで踏みとどまった。

Perl 5.22 and You - YAPC::Asia Tokyo 2015

せっかくだから Perl の話でも聴くかということで聴いた。 sub ($a = 0, return $b = 0) みたいなのが悪い意味でやばいと思った。

「Perl5 コアチームにとって、新しい syntax や operator を追加する動機は何か?よりよい言語デザインのためなのか、言語をより実用的にするためなのか。」という質問を(英語で)した。たぶん回答は、 $str &. $str string bitwise operator を例にとると、 $num & $num と似ているが全然違うもの(役割も挙動も)なので、そういうのはコードを読むときはっきり区別できるほうがよい、あと頻出するものは簡潔にかけるほうがよい、みたいな話で、つまりコードが読みやすくなるようにするという意味での良い言語デザインのためという側面もあるし、コードが書きやすくなるようにするという意味での使いやすさを改善するという側面も、両方あるよ、ということだったのだと思う。

身体が冷えたのでコンビニでおにぎりでも買って建物の外で食べようと思ったがものすごい行列で、混んでいる店は苦手だしコンビニで行列に並ぶのはもっと苦手なので諦めて昼飯はりんかい線の駅のドトールで済ませた。

Adventures in Refactoring - YAPC::Asia Tokyo 2015

小さい部屋に入れず難民になることが多すぎて心が折れたのでもうずっとホールにいようと思い、聴いた。各論では同意できない部分もあったが、総論ではいい話だった。分岐をオブジェクトにカプセル化することでテストを書きやすくするとか、抽象化レイヤを消すとか、 Context の話とかは身に覚えがあった。一方で if のネストを return unless $a && $b && $c とかで書き直すのはむしろ読むのを難しくして同意できないと思った。あと deprecated にしたメソッドをテストでは fail させ production では動かしてあげるというのはいいプラクティスだと思った。 scientist もよさそうだった。

「If there is a controversial, debatable point in someone's refactoring, how do you manage it at GitHub?」という質問をしたが英語が通じず、ゆっくり区切って言い直してもダメで、日本語で言い直して同時通訳に翻訳してもらうはめになった。大ホールで大勢の前で恥をかいてかっこ悪かった。質問の意図は「モメたときどう解決してますか」というもので、スタイルガイドがあればクォートがどうとかいうのはモメなくなる、直接話すのは難しいので、リファクタリングの結果を計測する、あとはとにかくコミュニケーションする、みたいな回答だったと思う。まさか大意すら伝わらないとは思ってもみなくて、アメリカは厳しいと思った。

Parallelism, Concurrency, and Asynchrony in Perl 6 - YAPC::Asia Tokyo 2015

ホールが寒くて身体が冷えるとともに目も疲れてきてスライドが見えづらくなり、途中でついていけなくなった。

Profiling & Optimizing in Go - YAPC::Asia Tokyo 2015

ミーハーなので有名人見にきたけど内容にはさっぱり興味が持てなかった。 Emacs 使いっぽいことを発見したことくらいしか印象に残ってない。

Lightning Talks Day 2 - YAPC::Asia Tokyo 2015

MySQL 5.7 の話が良かった。スピード感があり、おもしろく、内容は役に立つ。 LT のお手本のようだと思った。他も全体的にエンターテインメントやフリーダムの点でレベルが高く、昔の YAPC っぽさを感じた。

クロージング 🎉 - YAPC::Asia Tokyo 2015

最後に http://builderscon.io/ というものがアナウンスされたが、 .io ドメインけっこう高くつくのに流行っててみんな金持ちだなと思った。

会期を通じて何人かの知人に声をかけてもらい、近況報告などをしたが、自分のような人間の相手をしてくれてありがたいと思うと同時に自分のような人間が時間や attention を奪ってしまって申し訳ない気持ちでいっぱいになり、自分のような人間がこんなところにいてはいけない気がして始終うつむきながらおどおど過ごしてしまった。視力が悪い上に遠巻きにスライドを見て目を酷使したので周りがよく見えず、ずっと目を細めていたので顔の筋肉もこわばってしまい、精神的にも肉体的にもぼろぼろで悲壮感に打ちひしがれながら帰った。年々こういう大勢の人が楽しげに過ごす場へ参加したときのコミュ障っぷりが悪化しているので、ネットスラングではなく臨床的な意味でコミュ障なんじゃないだろうかと思った。

最近読んだもの

CSS再入門 - できる!中央寄せ 5 | CodeGrid

 
今回もよかった。今まで全く意味がわからなかった translate を使ったものがどういう仕組みか理解できた。
 
 
コミュニケーションと有言実行について。概ね同意。
 
コミュニケーションは非同期でも成り立つ、と考えているのは自分を含めごく一部の人間集団だけだ、という意識があると心構えができる。電話をかけて相手が出なかったらイラっとするように、メールやチャットの返事が即座に返ってこないことを「あたりまえ」とは考えない人が世の中にはたくさんいるのだ。
 
グループチャットができるソフトウェアは、その点で立ち位置がぶれているとも思う。非同期コミュニケーションを謳っておきながら、同期が期待されるプライベートチャットの機能も備えているからだ。ほとんどの人が望む機能だろうし、あったほうが便利だから当然のごとくついているが、異質なコミュニケーション手段を混ぜてしまっているのは歓迎すべきことではないのかもしれない。
 
 
よさそうかな、と思ったけど、対象データを渡してあげないといけないのか。コレクション対象にできないものかな。
 
 
大企業はそういうことができていいですね。
 

日本Web技術界隈著名人の残念さ具合 - thinkchangの日々日誌

名前が挙がっている人たちを擁護するつもりはないが、 naoya さん以外のリサーチが甘すぎると思う。「知名度に対して実績が伴ってないじゃん」という批判を展開するなら実績の部分を調べつくして全部けなす、くらいのことはしろよと思う(例えば宮川さんだったらなぜ Vox に触れないのか、ていうか下の名前の漢字すら調べないの?調べられないの?)妬ましさやけまらしさは非常によく理解できるが。

あと、ブログがアイデンティティな人間として、

本当にトップのサービスやヒットサービスをやっているような人ほど、いちいちブログなんか書かずにプロダクトに集中したり、コードを書いている

これには 99% 同意できない。そういう人もいるのは知ってるけど、意見の妥当さよりもイデオロギーとして同意できない。

あとこの↓最初にコメントしている 3 名のはてブアカウントが作りたての捨てアカウントによる自作自演っぽく見えた。

f:id:a666666:20150823015635p:plain

 

404 Blog Not Found:YAPC::Asia does not welcome Dan Kogai

But they'll never forget Dan Kogai, I believe.

 

OSS開発の活発さの維持と良いソフトウェア設計の間には緊張関係があるのだろうか? - t-wadaのブログ

ほとんどの会社組織というものが、無限に事業を拡大し永遠に成長し続けることを前提に運営されているように思えることに疑問を感じたことが過去何度かあり、それに似ていると思った。

「良いソフトウェア」を一つ挙げるとしたら qmail (ないし djb のソフトウェアいずれか)だと思っていて、ソフトウェアは(ソフトであるにもかかわらず)付け加えるものも削るものも何もない安定した状態になるのが最高だと思うのだが、しかしそういう静的なソフトウェアだけからなる静的な世界では自分やその他大勢の人たちはソフトウェア開発者として仕事を得ることも、仕事以外でソフトウェアを書いて承認欲求を満たすこともできないだろうから、活発で新陳代謝の激しいオープンソースソフトウェアの世界(それは「良いソフトウェア」だけからなる静的で安定した世界が最高であるという価値観からみれば理想とは程遠い状態だ)といわば共犯関係にあって、理想の実現を阻む活動にコミットして世の中を悪くすることに加担しているとも言えるのではないか、みたいなことを考えて暗い気持ちになった。

最近フリーソフトウェアの本を読んでいるのでオープンソースに対してちょっと態度が硬化しているのかもしれない。ストールマンの実物を見たことがあり、そのときは大変感動したので、 djb も死ぬ前に一度実物をこの目で見てみたい。

ブログのサブタイトル

Write down what I learnt. Opinions are my own.

とした。もともと前半の一文だけだったので後半を付け足した。炎上予防。

「学んだことを記録する場所」くらいのつもりで learnt (あえて learned ではなく)という単語を選んだが、 I have learnt という言い方もあるよなと思ったらどっちが適切なのか気になってしまい、調べたらやっぱり同じことを考える人がいたようだった。

english.stackexchange.com

この回答がわかりやすく、納得感があった。挙げられている例に照らし合わせると、このブログは「人生で学んだこと」のような内容も含まれはするものの、どちらかというと「今日学んだこと」を記録と頭の整理のために書くことに主眼を置いているので、 I learnt のほうがふさわしいと感じた。

Fitbit ChargeHR

YAPC で esa.io の人が「睡眠不足でイライラしたり体調不良になったりするのはよくないので、リストバンド型の活動量計を装着してトラッキングしている」という話をしていて、良さそうと思ったので奥さん用に Fitbit ChargeHR を買った。小さいサイズ、色は紫。自分より奥さんの健康のほうが気になる。睡眠の自動記録が決定打になって Jawbone は選ばなかった。去年くらいからずっと活動量計を買ってみたかったのできっかけと理由ができたおかげで思い切って買えて満足。

YAPC ノベルティに入っていた Kaizen Platform のシーザー暗号クイズ

クイズというほど難しいものでもないが。

irb> Caeser.encode(3, ________)
=> "zh zdqw brx"

穴埋め問題になっていて、シーザー暗号を復号するとメッセージが読めるよ、というもの。シーザー暗号が何か知っていればプログラム書くまでもなく復号できるけどせっかくなので一応コードで解いた。といっても真面目に実装するのは面倒なので雑に済ませた。

gistc386468c23a65627fc99

これが採用面接のコード試験だったとして「一文字復号失敗してるけどメッセージは十分読めました」とか言ってのけたら確実に落とされると思う。 String#succ の逆が欲しい。


追記: やっぱりなんとなく気持ち悪いのでちゃんと実装した。

kyanny/caeser.rb · GitHub