Sounds Around (My Life) was released!

まずこちらをお聞きください。つるえさんというボーカリストの方に楽曲提供をさせていただきました。ぼくは作詞・作曲・編曲・コーラス・ギター・ベース・打ち込みを担当しています。 soundcloud.com つるえさんと知り合ったのは荻窪にあるアルカフェという…

2019年のwebAPIの設計を取り巻く問題と技術シリーズ そのに 「ビジネスロジック」は誰が持つべき?

前回の記事の続きです。 前回は、「時代が変わるとサーバーアプリケーションの役割も変わるよね。そうすると必要な要素技術も変わっていくよね」という話でした。今回は、じゃあ「サーバーアプリケーションがJSON喋るマンになって、クライアントアプリケーシ…

2019年のwebAPIの設計を取り巻く問題と技術シリーズ そのいち 導入

最近、2019年のwebAPIの設計まわりの問題について考えていて、問題とその周辺技術の整理を自分の頭の中でしています。 で、その内容をたぶん何回かに分けて書きますが、初回の今日はちょっと導入として浅めの部分を整理してみようと思います。 昨今、サーバ…

FizzBuzzを題材にユースケース層についてを考えるのはおそらく無意味な気がする

やんざむ先生のこのツイートを見て考えたことをまとめます。 UseCase がわからない... FizzBuzz で「3の倍数のときは fizz が返る」「5の倍数のときは buzz が返る」「3の倍数かつ5の倍数のときは fizzbuzz が返る」「3の倍数でも5の倍数でもないときはその…

「当事者」になれないわたし

ぼくは空気を読むのが得意な方ではない。と書き始めて思ったけれど、そもそも、おそらく「自分は空気を読むのが得意で」などと自信を持って言えるひとはそうそういないかもしれない。頭ではそうわかっているのだけれど、感情の部分で「"空気を読むのが得意で…

Template Method Patternがマッチする場合、マッチしない場合

んーー TemplateMethodPattern は乱用されがちな気がするなあ— しんぺい a.k.a. 猫型蓄音機 (@shinpei0213) 2019年1月11日 Template Method Patternを使いたくなったときは一度引いて見てちゃんと解放閉鎖原則を満たすかどうかを考えて見てもたぶん損はない…

リーダブルコードとハードバップコード

まずはこのおもしろツイートをご紹介させてください。 誰だよww紀伊國屋書店武蔵小杉店でこれ並べた奴ww確かに表紙は紛らわしいけど、ここじゃねーよww pic.twitter.com/UliFnZuYyt— Kohei Tabata(田畑) (@nerd0geek1) 2018年12月24日 このツイートを某所で…

アジリティを高めるための設計

アジリティ高くすることが重要なわけで、UI変更のアジリティ高くするためにPDSを意識したり、モデルに関してもドメイン層とインフラ層を分離したりするわけで、「その分離によってどういう変更に対するアジリティを高めたいのか」を説明できないならやるな— …

暇にかまけて

暇。いい響きだと思う。声に出してみる。ヒマ。とても良い。「ヒ」の音でちょっと勢いづいた感じがするも、マ行の発音をするためには一度唇を閉じなければいけないこの感じが、いかにも暇という言葉の甘美な後ろめたさを表しているように思う。 これがもしも…

12月なので今年の音楽活動(ソロ音源制作)を振り返る

ぼくは普段自分自身をプログラマやソフトウェア・エンジニアではなく「自称ミュージシャン」(音楽で食えていないので「自称」が取れない)と呼称している(労働という文脈の上ではしょうがなく「ソフトウェア・エンジニア」やプログラマを名乗っているけど…

Scalaの `:+` と `+:` にまつわる話

これはClassi Advent Calendar 2018の3日目の記事です。 Classiでいろいろやってるしんぺいです。最近は「Scala入学式」と称してScalaに入門してもらう社内勉強会を主催しています。 というわけで今日もScalaの話です。 Seqの +: と :+ Scalaには順序を持っ…

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に自前で現在日時をハイジャックする機能を持って…

ジェネリックガルボ

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