私が歌川です

@utgwkk が書いている

マグカップでコーラを飲んでいる

以前はタンブラーにコカコーラゼロをなみなみ注いでガブ飲みしてから作業する、という暮らしで、1日2Lのペースでコーラを飲んでいた*1けど、マグカップが届いてからはマグカップでちょっとずつコーラを飲むようになった。コーラを飲みすぎなくなった結果体調がよくなったかは不明で、なぜなら同じ時期にヤクルト1000を飲みはじめたから。対照実験だと思うと失敗している。

使っているマグカップは↓これです。いい絵が入ったマグカップがインターネットで注文できるのはいい時代になったと思う。

hachun.booth.pm

一時期はカンファレンスに行くたびにマグカップをもらって、家にどんどんマグカップが増えていた。

*1:1.5Lペットボトルが毎日どんどん空いていく

ISUCON本を頂きました

レビューに参加した「達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践」*1をご恵贈いただきました。実物が届いたときの感想は「思ったよりも分厚い」でした。

個人的には、ベンチマーカーの書き方の付録 (章ではない!!) が、新鮮な知識が得られるという感じでよかったです。ベンチマーカーに求められる性質や、Go言語を使ったベンチマーカーの実装パターンなど、ISUCONに競技者として参加するだけではなかなか得られない知識が詰まっています。

ISUCONだけでなく、実務でWebアプリケーションのパフォーマンスチューニングをしないといけなくなったけど、どこから確認して何に手をつけたらよいか分からない、という人は必読だと思います。

この本を片手にISUCONに参加して予選を突破できれば最高ですね。今年こそは突破したいです。

*1:通称「ISUCON本」

リアルなフォース

今は英語配列のHHKB Lite2を使っている。2015年の7月に1台目を買っていて、いま使っているのは2台目だけど、実に7年近く同じキーボードを使いつづけていることになりそう。日本語配列のHHKB Lite2を買ったこともあるけど、たしか結局返品したか知り合いに譲ったかした気がする。

blog.utgw.net

たまにキートップが引っかかったり、Shiftキーがずっと押されているような状態になったりすることがあって、そろそろ次のキーボードを買いたいところだった。しかしながら、HHKBの新しいモデルにすると物理の矢印キーがなくなってしまうのが気がかりである。違うキーボードに手を出すことになるか、しかしよく分からないブランドのものだと体験がよいかどうか……と思いつつ暮らしていた。

REALFORCE R3の日本語配列キーボードが出たとき、英語配列はそのうち出る、ということなのでしばらく待っていたが、いつの間にか英語配列も出ていた。次のキーボードとして迎え入れたい。

エレベーター神社の夢

学校の裏の小高い丘の上に神社があって、そこに行ってモニュメントに手をかざすと、指輪付きの栽培キットみたいなものをもらえる。

帰ろうとしたら誰かに間違えられたのか、女の人に話しかけられてわけがわからないので困る。

神社を出てエレベーターで降りようとするけど上りしか来ない。

GraphQLの規格には書いてあるけど意外と知らなかったこと

はじめに

2021/10 時点の規格を読んでいきます。ご存知でしたか?

意外と知らなかったこと

不要なfragmentの定義を含めたクエリを書いてはいけない

https://spec.graphql.org/October2021/#sec-Fragments-Must-Be-Used

「不要なfragmentの定義を含めたクエリを書いてはいけない」こと自体は、GraphiQLなどで試しているとたまに怒られることから経験的に知っているのですが、規格上そうなっています。クエリの文字数が減ればpayloadも小さくなるので理にかなっていそう。

inline fragmentにdirectiveを書ける

https://spec.graphql.org/October2021/#sec-Inline-Fragments

たしかに @include directiveを使いたくなりそうですね。書く位置には気をつけましょう。

interfaceは別のinterfaceを実装できる

https://spec.graphql.org/October2021/#sec-Interfaces.Interfaces-Implementing-Interfaces

GraphQLのinterfaceは別のinterfaceを実装できます。規格にあるスキーマの例では、Node インタフェースと Resource インタフェースが定義されており、ResourceNode インタフェースを実装していることが示されています。

interface Node {
  id: ID!
}

interface Resource implements Node {
  id: ID!
  url: String
}

ちなみにこちらも循環参照はできません。

interfaceには少なくとも1つのフィールドを含める必要がある

https://spec.graphql.org/October2021/#sec-Interfaces.Type-Validation

GraphQLのインタフェースは少なくとも1つのフィールドを持つ必要があります。従って、以下のような空のinterfaceは不正です。

開発に利用するライブラリによっては素通しされてしまうこともあるかもしれません。たとえばRelay v13.0.0ではエラーにならないようでした。

interface Dummy # invalid

規格に準拠していないとどうなるか

ライブラリの振る舞いが保証できなくなります。たとえば、apollo-kotlinでは規格に準拠していないスキーマを使うと以下のような分かりづらいエラーが出る場合があります。

github.com

Pixel 6を買った

セールの波に乗るしかない、ということで買った。もともと使っていたPixel 3aを下取りに出すこともできてお得。

家で使うぐらいなのでケースなしでいいかと思ったけど、Daft Punkみたいなカメラが傷つきまくるのはちょっと偲びない気もしたので、適当なケースをヨドバシで注文して装着した。画面フィルムは付けてない。

やっぱり評判通りに大きな端末で、まあ家で使うぶんには大きくてもいいか。KindleとかYouTubeとか見るぶんには画面が大きい方ほうが有利なのかもしれない。

指紋認証は今のところグッと押したらちゃんと反応していて好印象。iPhoneのFace IDは指紋よりも反応しやすくてけっこう気に入ってて、マスクを付けたまま認証できるようになったのでもうTouch IDには戻れないな、という感じだったけど、こちらはどうか。

スペックをちゃんと読んでいなくて、イヤホンジャックがないことに届いてから気づいたけど、なんとかします。

スマホの名前にキャラクター名を付けるのがブーム。今使ってるiPhoneの名前は「パイモンのiPhone」だけど、パイモンはiPhone使ってなさそう。もうちょっと別の人の名前にしてもよい気がするけど、新しいiPhoneを買うのが先かどうか。

ドキドキ文芸部プラス! をちょっとやった。いつまでネタバレを回避しないといけないのかが難しくて曖昧なことを言うけど、追加要素のサイドストーリーを読むのが一番いいと思う。ローカライズはちょっと雑かもしれない。

あとは名越先生の実況動画 (プラス! ではない) を見たらいいと思う。

www.youtube.com