can't add a new key into hash during iterationが謎の状況で発生しているように見えるときは

どのような問題か さいきんのrubyでは、Hashのiteration中にhashに破壊的な変更として新しいkeyを挿入しようとすると、can't add a new key into hash during iteration というRuntimeErrorをあげてくれます。 コード: # nyan.rb def iterate_hash_and_inse…

設計Nightやります

11/8日に株式会社アトラエ様に会場をお借りして、設計Nightを開催します!! connpass.com 先日builderscon tokyo 2018で私が行った発表「開発現場で役立たせるための設計原則とパターン」は、いままで暗黙知になりがちであった「現場でどうやって設計原則や…

オープンであることだけが議論が成立する条件ではない

たとえオープンであっても相手の言っている内容を聞かずに自説を強い言葉で主張するだけのひととは議論が成立しないし、議論が成立しないひとが議論が成立しないからとブロックされてるのに「こっちはオープンに議論をしようとしているのにあっちは俺をブロ…

NDS57 で発表してきました

新潟県長岡市では、定期的にNDS(長岡IT開発者勉強会)という勉強会が開催されています。詳しい話はClassMethodのまさるさんという方がDevelopers.IOに書かれているのでそちらを参照してください(丸投げしていくスタイル) dev.classmethod.jp そのNDSの第5…

世界とのチューニングを合わせることについて

世界とのチューニングを合わせることに苦労する、という感覚は、多かれ少なかれどんなひとでも持ってるのではないか、と思っている。 それはたとえば、飲み会でうまく立ち回るみたいな具体的なことから、なんとなくうまく世界に馴染めないみたいな曖昧なこと…

実況中継シリーズ 「開発現場で役立たせるための設計原則とパターン」 #builderscon 2018

先日慶應義塾大学日吉キャンパスで行われた builderscon2018、最高のカンファレンスでしたね。わたしも「開発現場で役立たせるための設計原則とパターン」というタイトルで発表させていただきました。今回は恒例「実況中継シリーズ」として、プレゼンの再現…

NDSのpodcast #ndsfm に出させてもらいました

ぼくが知りうる最高の技術コミュニティのうちのひとつである、新潟県長岡市でやってるNDSというコミュニティのpodcastの第二回に出演しました。webフロントエンドの話や転職の話、コミュニティの話などを主に喋りました。Hot Module Replacement を Hot Modu…

部屋とYシャツと検査例外とEitherとGolangと

ぜんぜん関係ないんだけども、golangやEitherが脚光を浴びているいまこそ、検査例外を再評価すべきではと前から思っているが識者のみなさんの意見はいかがですか?— しんぺい a.k.a. 猫型蓄音機 (@shinpei0213) August 10, 2018 非検査例外はpanicで検査例外…

Classi株式会社に入社しました

今月からClassi株式会社で働いています。まだ試用期間なのですが、所属を明かして良いと許可をもらったので入社エントリ書きます。 前職を退職しようと決意してから(ここにはかなりの葛藤があったのですがそれはまた別の話)、転職エージェントにお世話にな…

最近の音楽周り

聴く方 新しく聴いてる中でグッときたのは fusq 「Polarity」とかノンブラリ「SOUND TRACK」とか。 Polarity by fusq www.nombrari.jp fusqはGoogle Play Musicをdigってて見つけたやつ。最近っぽい音だなという印象がある。最近こういう方面は質のいい音楽…

Scalaのパターンマッチでの@の挙動

List(1, 2) match { case Seq(xs @ _*) => println(xs) } の意味が果てしなくわからないんだけどなにこれ という声を聴いた。たしかにScalaのパターンマッチにおいて @ の挙動はわかりにくいかもしれない。 Scalaのパターンマッチでは、@を利用して2回変数束…

FluxのStoreがViewModelかって話からのMVWとかどうでもいいって話

StoreがViewModel相当かどうかってことそれ自体はたぶんあんま本質じゃないんだけど。 blog.nkzn.info これについてです。 わかる。StoreがViewModelってのはちょっとだけ違和感あって、ぼくは ViewModelが読むためのクエリ用モデルくらいに思ってるけど、ど…

労働と要らんもんと豊かさ

要らんもんと生きていくぞ— 猫型蓄音機 (@shinpei0213) 2018年4月26日 労働、曖昧さを解消する方向の圧がかかりがちで、それはそれで必要なことだし正しいと思う。けど、曖昧さを曖昧さのままに受け入れて向き合うことや、矛盾した感情やアンビバレントにそ…

マネジメントの放棄を正当化するような格言めいたものがこの世には流通しているかもしれない

ちょっと前にツイッターで以下のようなことを書いた。 「自分で考えて動く」みたいなのすごい大事だとぼくも思うけれど、それをするためには「どんな役割を担ってほしいか」「達成してほしいことはなにか」「どこまで自分の裁量でやっていいか」がそれぞれ明…

JavaScriptのreduceがゆるゆる型であることに助けられた話

某slackにて以下のようなお題が出されました。 お題 ["a","b","c","d"] みたいな配列があった時に { "a": { "b": { "c": "d" } } } みたく変換する良い方法を JavaScript で募集します わたしの回答 const reducer = (acc, el) => { const ret = {}; ret[el]…

YAPC::Okinawa感想

特別によかったトークの感想を書きます。 Kazuho Okuさんの「HTTP/2にまつわる事実と誤解」 プロフェッショナルのトーク!という感じがはんぱなかったです。 とくに面白く感じたのがTrailerというHTTPヘッダで、「こんなものがあるのか!!!」とびっくりし…

現在時刻をハイジャックする是非について

前の記事に関連して 時刻オブジェクトをテストのため(だけ)にinject可能にしておくの正直言ってテストで設計を歪めてると思ってしまうタイプなのでハイジャックできる裏口用意しておいてほしい派です— 猫型蓄音機 (@shinpei0213) 2018年1月22日 時刻オブジ…

Joda-Timeで現在時刻をハイジャックする

Joda-Timeは便利ですが、時間を扱うプログラムあるあるとして、「ユニットテストとかどうやって書けばええんや」ってのがあります。 Rubyならtimecopなどを利用するところですが、joda-timesはDateTimeUtilsに自前で現在日時をハイジャックする機能を持って…

ジェネリックガルボ

タイトルはブラックサンダーのことです。いや、言いたいことはわかる。正直ガルボとブラックサンダーはだいぶ違う。チョコレートの中にココアクッキーが入っていれば実質同じみたいな雑な判断やめろ!!って話である。 ところで、なぜブラックサンダーの話か…

クソコードを別の言葉に言い換えるのあんまり意味なくて

それよりも互いに信頼関係を築くほうが大切だと思う。 たとえばおなじ「ばか」という言葉が親密な関係で発せられるときとそうでないときに発せられるので意味が180度かわるように。 「このような言い方は避けましょう」みたいな感じで言葉狩りするよりも、「…

hayajoさんとの思い出

hayajoさんがはてなに入社されたそうです! http://hayajo.hatenablog.jp/entry/2017/11/05/055756 ところで、hayajo さんというエンジニアと新潟で出会ったのは、ぼくが新潟に引っ越してすぐだった。2011年のことだ。そのときの記録は http://d.hatena.ne.j…

ScalaMatsuri2018のトークに応募した

Building native apps with Scala.jsというタイトルでScalaMatsturi2018に応募しました。 2018.scalamatsuri.org ここのところ、GUIアプリケーションをScalaで記述したいという素朴なScala愛を大切にしたいという思いから、Scala.jsとJSプラットフォームを利…

ReactNative + Scala.jsファーストインプレッション

ちょっと訳あって仕事の一貫としてReactNative + Scala.js の技術検証している。あたまには「全部C#」のライフベアさんの事例がある。弊社、最近メンバー増えてきたけどまだこの規模だと「あのひとはあれができるけどあのひとはこれができなくて」がボトルネ…

ブラウザアプリケーション以外のプラットフォームでのReduxはtoo muchか?

@Nkznとかが最近よく言ってるReactNativeではReduxじゃなくていいんじゃない?って話。Electronでも同じような議論が可能だと思うので、さらに一般化して「ブラウザアプリケーション以外のプラットフォームでJSで動くGUIアプリケーションでReduxは必要なのか…

Living in Peaceの「チャンスメーカー奨学金」の支援者になった

どこで知ったんだったか忘れたけれど、Living in PeaceというNPOがある。 www.kodomo.living-in-peace.org 詳しくはサイトを見てもらうのがいちばんいいと思うんだけど、ひとことで言うと、子どもの貧困対策をやってるところだ。そのうち寄付で支援できるの…

N予備校にめちゃめちゃ感動したって話

今日N予備校の体験授業やってみたんだけど、普通に内容めちゃめちゃよくて、あれが月額1000円安すぎる。予備校の価格破壊だって思った。 わたしは「医療」と「栄養がきちんと取れるレベルの食事」と「教育」については、格差の再生産が是正され、富の再配分…

ToKyoto.jsでScala.jsについてLTしてきました。

自分の発表について speakerdeck.com もう3日前のことになりますが、ToKyoto.jsでLTしてきました。Scala.jsの話です。スライドにあるし、このブログでも何度か取り上げていますが Scala.js 普通に実用性あります。とはいえ「実用性がある」と「使うべき」の…

Repositoryの後ろにネットワーク越しのシステムがあることの是非からRedux的世界へ

twitterで言ってたことを少し修正してまとめ。MVVM + Layered Architectureの文脈です。 最近、Repositoyとして抽象化しておけばそのデータがメモリ上にあるかそれともDB上にあるかネットワーク越しにあるか意識しなくていい、というのは嘘だと思ってる。パ…

Vue.js + Scala.js + Electron でMac用backlogクライアントを作りました

backlogというのは一般名詞のほうのbacklogではなく、ヌーラボさんのプロダクトのほうのbacklogです。 www.backlog.jp だいたい土日の2日間でできたのでよかった。 作ったやつどこにおいてあるか アプリ BackLogger-darwin-x64_v0.1.1.zip - Google ドライブ…

Nekogata Drum SequencerをScala.jsに移植した

Vue.js + CleanArchitectureのサンプルとしてNekogata Drum Sequencerを書いたのは今年の3月のことでした。 解説記事(README)を改めて貼っておきます。 そんな折、最近はScala.jsの調査をしていまして、実験としてこのシーケンサーをScala.jsに移植する試…