YAPCで俺たちの夏が終わった

これを書くことによってYAPCが終わる

そもそも自分も発表申し込もうかなとは思ってたけど、@teppeis @koba04 @yosuke_furukawa @Jxck (敬称略)が喋る時点でJS方面の界隈としては役満感があったしみんなフロントエンドの話そこまでして聞きたくないやろ、という感じで申し込まなかった。彼らの話はどれも評判良かったのでめでたい。

1日目

朝起きれなかったのでラリー・ウォールみてない。

Matzのセッションとてもよくて「今日はRubyの話をしません」「ネタが尽きたのでRubyの話をします」「Rubyの言語デザインの最大の失敗はPerlの影響を受けたこと」というコンボがよかった。

質問タイム、「TypeScriptとかで動的型付けの言語に静的型のタイプヒンティングいれるの流行ってるけど、Ruby3.0のソフトタイピングは開発者支援とコンパイラ支援どっちを目指してますか」という質問をしたんだけど、「開発者支援。でもやっぱそもそも10行そこそこのスクリプトで型書くとかありえないと思う。自分は絶対に型を書きたくない」と言っていてなるほどって感じだった。

懇親会、小池陸の ssig33.com - Docker についてアメリカの大学で工学博士から英語で話を聞いてきました の「Scala のビルドが遅いみたいな話を解決するにはマイクロサービス化だ!!!」は僕の発言です。謹んでお詫び申し上げます。

2日目

力尽きてた。

3日目?

YAPC::Asia 2015 Hackathon | Peatix

に出てた。Electron について発表してたGithubの@benogle 氏と自分が適当に話すことになってて、ついでだし自分は自分の発表時間を使って @benogle 氏に質問しまくった。

Real World Electron Development - Qiita

↑に質問とそれに対する回答がある。

資料に書いてあるんだけど、一番の収穫は「Electronは近いうちにMac App Storeに対応する予定がある」という確証がとれたこと、次に「Electronのメンテナーのzcbenz氏がもう少ししたら東京に引っ越してくる」とのことだった。zcbenz氏が東京に来たらもう一回イベントやってくれそうな気配がある。

Electronチーム、人が足りない(というか実質的にzcbenz氏一人だけ)っぽくて求人してる雰囲気あるので、Chromeのforkを好き勝手いじりまわしたい人はGithubに応募してみてはどうでしょうか。

そういえば、ハッカソン中にr7kamuraと@9m がElectronユーザーグループとかないの、と言っていて、確かにそういう場所ないのでSlackにチャンネルを作った。ここから参加できる。 Join electron-jp on Slack!

今既に60人ぐらいいるので興味ある人きてくれ。

というわけで、YAPC終わりましたが僕は今週はCEDECにいく感じです。

JSでnewをmockしたい気持ちとサーバーサイドからもらったプロパティ名のケースの不統一問題

睡眠障害で辛い

一緒に働いたことがある人は知ってると思うけど、自分は尋常じゃなく朝に弱い。

で、自分でもさすがに酷いと思っており、様々な努力をしたが改善せず、結局睡眠科をうけて睡眠障害だと診断された。

自分がそうだと疑った理由は 睡眠障害らしきものとわたしの20年間振り返りメモ - 青いの のおかげ。inoaoさんとは違うけど、自分は 睡眠相後退症候群

DSPSに罹患して9時5時生活を送ることは、毎日6時間の時差ぼけを体験しているようなものである。患者は週日には数時間しか眠ることができないので、週末には午後まで眠って睡眠時間を補うことがよくある。週末によく眠ったり、普段昼寝をしたりすることで、DSPS患者は昼間の眠気から解放されるが、遅い睡眠相はそのまま続く。 DSPS患者は、極端な夜型の傾向がある。彼らは、夜が最も頭が冴えていて、物事がうまくでき、創造力にも溢れていると感じる。彼らは単純に早く眠ることができないのである。仕事や学校に出かけるまで、彼らはベッドの中で何時間も寝返りをして、時には全く眠れずに過ごさなければならない。

正直しばらく認めたくなくて、単に俺はずぼらなだけなんだ、頑張れば普通の人と同じように行動できるんだ、と思ってしばらく頑張ってみたけど、やっぱり無理だった。

というか今読み直すとあらゆる項目が完全に当てはまっている。

(最初うつも疑ったが、小中学校の頃、ちょっとショックな出来事に遭遇して以来躁鬱傾向だったが、今は完治していて、ある程度(睡眠にまつわるもの以外の)ストレスコントロールもできており、当時と比べて今がうつだという自覚はない)

具体的にどういう状態か。

1時から1時半ぐらい布団に入って寝ようとする。睡眠に落ちるのが3時から5時になる。まったく一睡もできないまま極度に眠い状態で朝を迎えることもある。今も、結局眠れないまま朝を迎えていて、もう諦めて会社への説明としてこれを書いている状態。睡眠リズムはずれているが、体は睡眠量は要求しているため、非常に眠い。

寝ようとしている間、考えことをしているでもなく、頭を刺激しないように何も考えていないように努めている。それでもまったく睡魔が訪れない。非常に無駄な時間を過ごしている自覚があって、とにかくストレスがたまる。

これとは別に、自分の性格としてずぼらな傾向はあるとは思う。それは認める。で、それが自分がだらしないだけなんだ、頑張れば普通の人と同じように生活できるんだ、と思っていたんだけど、実際一週間程度ならそのように生活ができるのだが、その後体調を崩し、そして復調する頃には生活リズムが元の、ずれた状態に戻っている。もう認めるしかない。今週も体が盛大におかしくなっていて、それは先週風邪で寝込んでいて(その遠因もおそらくズレた生活リズムで無理をしたこと)、ずれたリズムに戻っていたことに起因していると思われる。

前々職、前職とこれが理由で評価を落としていたのを自覚しており、障害をもっていることを自覚してそう周囲に伝えるほうが俺のちっぽけなプライドより大事だ、と思うようになってきた。

睡眠科での診断

子供の頃から続いている問題なので、おそらく先天だと判断された。今思えば父親の家系にこの傾向があったように思う。高校生の頃から重度で、午前中に出席していると驚かれていた記憶がある。大学生の頃はそもそも朝の講義を取らなかったので、あまり問題にならなかった。

社会的に普通に生活しようとするだけで体の認識している正常なリズムから逸脱することになり、無理している状態なので、次第にしわ寄せがきてリズムが崩壊していく。

解決を試みたアプローチ

  • 睡眠科で処方されたメラトニンで夜の受光量を調節している。
  • 睡眠が短くなった時のために睡眠の質をよくするためのグリシンを寝る前にとっている
  • コーヒーは夜8時以降避ける
  • 午前中に太陽光を浴びるために自転車で通勤している
  • 夜に多量の光源を浴びないように、家の電球をすべてHueにして時間経過で光量を落とすようプログラムをかいてコントロールしている
  • 興奮して眠れないのを防ぐのに11時以降は頭をつかうことを避けてる(本当はもっとコードを書きたい。他の趣味も読書かプラモなので、集中することが避けられない)
  • 肌が弱いので、かゆみで眠れないことを防ぐのにダニが出ないよう布団を週一で洗ってて、毎日ファブリーズしてる
  • 虫歯で眠れなくならないよう歯医者で虫歯なおした
  • 寝る姿勢で腰に違和感を覚えることがあるので、定期的に整体で腰回りと首を見てもらっている

と、これだけやってまったく何も改善していないのが問題。前職の時はイギリスの同僚とミーティングするために出社を12時からにしてもらっていたが、その時は満足度が高かった。リモートワークの日も勤務時間ぎりぎりまで眠れるので比較的気分が良い。

発生している問題

  • 旅行の日などに頑張れば早く起きることはできる。ただそれを長期間続けることは非常に困難で、無理すると盛大にリズムが壊れる。
  • 朝起きることが目的化した場合、午前中に出社できたところでまったく頭が回ってない。基本的に頭が回り出すのが昼の3時ぐらいから。頭脳労働者としてこれがきつい。
  • 夜10時が一番頭が働いているのだが、この時間に趣味のプログラムなど書き始めると確実に興奮して眠れなくなる
  • 体が認識している生活リズムがずれている以上、一度早く(一般的に)なったリズムが容易にうしろにズレる
  • 生活リズムがおかしいと腹がすく時間もずれるのだが、飲食店が閉まった時間におなかが空くのでコンビニ弁当以外の選択肢がなくなる。

大学の頃は問題ではなかった、といったが、そういえば午前の必修のスペイン語の単位をとりきるのに6年掛かった。

心理的な問題

同じ条件で働いてる人に申し訳ない。じゃあ条件を変えてもらうかというと、他の人ができて自分にできない、というのが自分のプライドとしてなかなか受け入れられない。なので同じ条件でよい、と強がった結果、中長期的に盛大に崩壊していく。

午後にいそいそと出社する時に申し訳無くなる。遅刻を責める心理がわかるので、それが自分に向けられていると思うと非常に申し訳なくなり、ストレスがたまっていく。心は健常者のつもりで、俺がだらけているのでは、という思いが自分に向けて常にあり、その結果無理して出社するために徹夜をしてしまったりする。

いつも明日は絶対に早く起きるぞ、と強く思ってベッドに入るのだが、その結果起きられなかったらどうしよう、と想像し恐怖すること自体が強いストレスになり、結果眠れず起きられないことにつながっている気がする。

結果として今週は2回徹夜して3回遅刻している。

どうするか

もう諦めて会社に出社時間を交渉しにいきます…

追記 (午前10時46分)

相談して13:00-22:00に調整する方向になった

追記(2015/08/01)

結局ずらした時間でもそれに向けてズレるのではないか?というコメントがあるが、勤務時間をずらしてもらった理由は、かつての経験から12時間出社がよかったというのとは別に、wikipediaのDSPSの以下の項を根拠にしている。

長期間の治療が成功した割合は、評価されていない。しかし、経験豊かな臨床医は、DSPSを治療することは難しいと認めている。 夜間勤務や、在宅で仕事をする患者にとっては、DSPSは大きな障害とはならない。このような仕事をしている多くの人は、自分達の生活パターンを「障害」であるとは考えない。DSPS患者の一部は、夜間の眠気が弱くなるにもかかわらず昼寝をし、時には昼4時間夜4時間の睡眠をとる人さえある。DSPS患者が働きやすい仕事として、警備員、劇場やマスメディアでの仕事、レストランやホテルでのサービス業、フリーライター、コールセンターでの仕事、看護師、タクシーやトラックの運転手などがある。 何年も治療を続けても、一部のDSPS患者は早い睡眠時刻に適応することができない。睡眠学者は治療不可能なDSPSの症例が存在することを正式に「睡眠覚醒時刻不全障害[注釈 1] (sleep-wake schedule disorder disability, SWSD)」として認識するべきではないかと提唱している。

あとコーヒー断ち、20時以降は、と書いているが、実際「家に帰宅してからは」ぐらいの気分で書いていて、特に理由がなければ日常的に摂取しなくなっている。特に夏場は、アイスコーヒーが好きではないのもあって、ほとんど摂取していない。アルコールはとくにイベントがない限りまったく摂取しない。

Rx.js, Immutable.js について

自分はImmutable.jsとRxをなぜ採用しなかったか、自分の考えを整理するために書き出してみる。

僕の理解が及んでいない無知のゆえのアレもあると思うので間違っていたら罵倒ブコメお願いします。

Immutalbe(.js)

扱う対象をイミュータブルにするのはたぶん間違いなく正しい。正しいが、現時点のエコシステムにおいてその必要性を示せてない。具体的に言うと、Immutable.jsの110kbのオーバーヘッドの配信負荷、読み込み負荷、開発者の学習コストを支払ったとき、それに見合う価値を提示できているのか?にまだ疑問が残る。

PureなJSでも、ただ単に目的のデータを作るだけなら、ほとんどのケースで組み込みのarray.mapとObject.assign(またはそのポリフィル)で代用できる。(勿論生成したオブジェクトに副作用を加えないことが前提になるが)

あと型がない環境でImmutableにしても片手落ち感がある。これは後述するRxにも言える。

Rx

Rxを使うと連続的なイベントを扱うコードが書きやすくなる反面、それ以外のケースは特に単純化されない。お互いに無関係なイベントが散発的に発生するような、つまりは普通のアプリケーションにおいて、Rxの強みを活かせるシーンがほとんどない。いろいろ試してみてそういう結論に至った。

たとえばタイピングゲームを作る際にキーボードからのイベントをストリームにして扱うのは正しい。が、ボタンがトグルするだけのストリームを1画面につき20個管理するのは馬鹿らしい。自分が扱うのは後者だった。

他、現実的な問題として、僕自身がRxにマスターしたとして、開発チームの同僚にあの大量のオペレーター郡を使ったコードを読解させるのはなかなか辛いことだと思うし、その逆も経験したくない。

巨大なので一度使いはじめると抜け出せなくなり、仕様化されていないデータ構造を抱えることになるのも問題。

実際にFRP的なコードを使っていくかどうかは、現時点ではES Observable が仕様化されてポリフィルが出来てから考えれば良いと思う。

async/await、Rx、observableのECMAScript近況

JavaScriptの情報の仕入れ方

ぼくのフロントエンドの情報収集ソース | Yuhiisk みたけど多すぎて逆に機能不全になると思う。

自分が主に見てるのは次の2つ。

これを読み流すんじゃなくて、LDRで一件一件丁寧にみてる。日本語圏で再生産され続ける情報に意味があるもの少ないので、上流とまとめだけみればよい。

最近のReactへの言及についての違和感

ここちょっと言及が足りない。Backboneを使い込むとそういう結論になると思う。 アトミック性を担保する究極の方法は、雑に言うと更新の度にdocument.bodyを書き換えて毎回デリゲーションを走らせることになる。

スプラトゥーンくっそ面白かったので話をさせてくれ!!!(ブキ寸評+マップ寸評+その他)

2chのゲーム界隈のスレッドによく出入りしていた経験としては、良ゲーかクソゲーか議論がまとまらないのは凡作のスレッドで、真の名作のスレッドは、議論とかかまってる暇はなくて、ひたすらゲームの話しかしないもので、スプラトゥーンは、間違いなく後者だ。

はじめに

自分はエイムがガバ過ぎてFPSがまったく駄目で、なので塗りを重視したり、ローラー寄りのレビューになる。LoLはそこそこやったがここ一年ぐらいやってない。どちらかと言うとFPS脳よりMOBA脳。

まずはよく使われるブキの寸評。

プロモデラーRG

近〜中距離の鬼。特長はとにかく圧倒的な塗り速度。

トルネードとトラップはゲーム理解度が低いまま使っても活かしきれないが、ランク20までやってるとさすがにトルネードは当ててくる。

もっと上達してるプレーヤーは、高台にトラップを置いていくなどしてやらしい。自分が使った試合はBバスパークの高台にトラップ置いて、追ってきた相手から逃げるふりしてトラップを踏ませるだけで5キルとれた試合もあった。塗りブキなのでヘイトを買いやすい。

自分より射程が長いシューターを相手にするのが苦手。ガロンやチャージ。駆け引きが得意なら、牽制、撤退のフリ、トラップに嵌める、といったプレイができる。

単騎で裏駆けするならこれ。基本的には裏駆け狙ってるのはプロモデラーかスプラローラーコラボかわかば

スプラローラーコラボ

接近戦の鬼。ローラー、ジャンプ対象にできるビーコン、ダイオウイカ変身と、一切の飛び道具がない代わりに、ローラーとダイオウイカでの突進、防御、回避と、接近戦に持ち込んだときの無類の強さを誇る。死んでもビーコンで前線復帰が早く、押し込まれた時は何度倒しても湧いてくる。

相手にする場合、面で制圧して潜伏からの奇襲を防ぐのが重要。なので塗り速度が速いプロモデラーMGや、塗り速度が速くダイオウイカを防げるバリアを持ったわかばシューターが苦手。無茶な突撃をしているローラーを見たらダイオウイカを疑うこと。

潜伏できるゲームシステムに恵まれた強武器。インク飛ばしが上手いローラーは中距離もカバー範囲だから手に負えない。

自分で使うときは、ローラーのミラーのときのために画面旋回速度+5が推奨。

ダイナモローラーテスラ

近~中距離。ヒーローモードのクリアと、ランク20が前提なので、持っているプレーヤー自体が少ないのだが、ランク20だとそれなりに見かける。

ローラーだが移動速度が速くなく、シューターのカモのようにみえる。が、発生がやや遅いインク飛ばしの射程と幅がかなり広く、かつほぼ一撃で仕留められ、ショットガンのような運用が基本になる。通路の角に潜んで飛び出して広い角度の攻撃で仕留める。

癖があるメインを補うかのように使い勝手のいいスプラッシュボムを持ってるのも運用しやすいポイント。

機動性が高いブキではないので、スプラローラーコラボのように裏抜けはあまり得意ではない。

条件のせいでまだユーザー数が少ないので、ローラーだと思うと中距離で食われるという、今一番「わからん殺し」ができるブキ。

ダイナモローラーでインク飛ばしを当てる練習すると、スプラローラーコラボのインク飛ばしがうまく活用できるようになり、そしてスプラローラーコラボに戻った時に足の早さに感動する。

わかばシューター

塗りが強い=ゲームに強い。シールドは無理な局面をどうとでも出来て最強とも言える。スプラローラーコラボのメタ。

バリアのおすそ分けは、防衛時はともかく、突撃している味方とはうまく呼吸を合わせる必要があり、チャットがないと狙って活かすのは難しいのではないか。

使いやすいスプラッシュボム持ちなのも個人的にポイントが高い。

みんながプロモデラーRGが飽きた頃にわかばは増えそうな気がしている。

96ガロン

中~遠距離。射程が長くまっすぐに飛び、サブでシールドを設置でき、とにかく正面に強い。おそらくプロモデラーRGのメタになると思われる。

自分はガバエイムなので使いこなせていないが、縦に長い通路の防衛や、自分より射程が短いシューターを一方的にボコボコにできる。

同様の運用が出来る系のブキとして、スイーパー系がある。個人的にデュアルスイーパーはバランスいいと思うんだけどあんまり見ない。

チャージャー系

ひとまとめにする。

頭上を飛び交う射線は結構怖い。が、当てられないと話にならないわけで、チャージャー下手くそだと相手に理解された瞬間、飛び込まれてやられる。

チャージャーを使うならば、エイムに絶対の自信を持っていて、相手に圧力をかけられるのが前提になる。そしてキルを奪うゲームじゃないので、味方の動きを理解してサポートすることが前提になる。

エイムが十分に良く、味方の動きをサポートできる、それらの条件を満たしたチャージャーをまだ見たこと無いので、あまり怖くない。が、皆が憧れるプレースタイルなのか、チャージャーは結構いて、カモになってる。

スプラスコープワカメ、リッター3kあたりがガチ用になりそうな気がしている。

よくわかってない。

ブラスター系に通路の角を取られるとめんどい。当てると一発。これもしかしてシューターの形した近接ブキなのではないだろうか。

スクイックリン系はチャージャーのチャージ速度を短くしてシューターより。

マップについて

油田

とにかく北と中央を制圧するのが大事。北を制圧すれば相手はリスクを追って中央をとりにくるしかなく、リスクを追った相手の隙をかけばその間に南と通路をとれる。たまに三人で南をとりにいく光景を見るが、それにあまり意味はない。

北さえ制圧していれば南をとるのは最後の30秒でいい。

Bバスパーク

狭い。でこぼこ。シューター・チャージャー殺し。裏抜けしやすく、プロモデラーRGが輝く。中央の塔はチャージャーがいる場合は奪い合いになる。面で制圧したい時も塔を抑えるのは有効。

アロワナモール

真ん中の高台は戦略的に重要だが通路が多く維持が難しく、敵味方のボムが投げ込まれ続けトルネードが吹き荒れる。

このステージはローラーとプロモデラーわかばが淡々と裏抜けを狙っている。ダイオウイカで裏を取られた場合は、マップ特性上譲るしか無い。縦に長く通路が多いので、スプラローラーコラボが敵陣にガイドビーコン置きまくる傾向がある。いる場合は通路の塗り残しに注意。

ここはとにかくスプラローラーコラボが輝く。

デカライン高架下

中央の広場でにらみ合いつつ、裏抜けできるタイミングで抜きあうステージ。

ここも裏抜けしやすいのでマップをよくみる。裏抜けされたあとは的に高台を取られると逆に狩られるので、上方向に注意する。

ハコフグ倉庫

だだっぴろい中央の広いスペースが主戦場で、障害物がなく撃ち合いになる。現行のマップの中では珍しく長距離射程ブキが有利。

裏抜けしたところでぬれる箇所が少なく、とにかく中央を面で抑え続ける必要がある。とはいえ主戦場に繋がる手前の通路を抑えられると厳しい。

裏駆けする意味

裏駆けと何度も言ってるけど、なんで裏をかくことが大事かというと、戦場を分散させることで、他の局面で数的優位を作れるから。一人が裏に抜けたら相手は二人ほどでカバーしないといけなくなる。すると他の戦場で3vs2が作れる。カバーしない場合、相手は後ろを警戒しながら戦うことになる。

とはいえ、敵のリスポーン地点に近い場所を塗ることになるので、敵にとって塗り替えすコストは低め。なので、裏をとったあとは、できるだけ死なずに長時間のハラス(嫌がらせ)するのが大事。というわけで機動力が高く塗りながら移動することで速度が落ちないプロモデラーがやらしい、ということになる。

アロワナモールは裏に抜けやすく、そして抜けた先の通路が防衛しやすいので、一人で複数人の相手ができる。

最後に要望

なんとなく体感で測ってるけど、インクゲージ残量がわかりづらい。

現状リスキルしやすすぎるので、無敵エリアはもうちょっと広くとってもいいと思う。

やっぱりモード自体が少なくて物足りないとは思う。マップが足りないとは思わない(LoLで延々とSummoner's Liftやってる並みの感想)が、もうちょいチャージャーが有利なマップがあってもいいと思う。

そこまでやる気が無い時の為に観戦モードほしい。自分以外のうまい人の主観でみるの、LoLのときにすごい勉強になったので、これがあるとプレーヤの平均的な質がだいぶ違ってくる気がする。

自分のプレーを見返したいので、リプレーモードほしい。自分はこのためにHDMIキャプチャ買ってしまった。リプレー保存サーバーが辛そうだけどなんとかしてくれ!!!

以上です!

追記: 忘れていた。ニンテンドーidは mizchi0x です