私が歌川です

@utgwkk が書いている

APIについて考える機会があったので読んだ本

新しくAPIを作るにあたって、REST APIとして作るイメージはすぐに付くけどGraphQL APIでも要件にマッチするかもしれないね、という話があった。GraphQLについてはインターンでちょっと触ったことがあるけど、概念をあまり思い出せなかったので入門しておきたいと思って本を読んだ。REST APIは知ってるつもりだけど知識の再確認をしたかった。

初めてのGraphQL ―Webサービスを作って学ぶ新世代API

初めてのGraphQL ―Webサービスを作って学ぶ新世代API

初めてのGraphQL ―Webサービスを作って学ぶ新世代API

APIが人を左右するのではない… 人がAPIを左右するのだ!!*1

GraphQL APIを作るとなると、REST APIとは考え方が違うところがけっこうある。スキーマファーストでやっていく、という指針がはっきりしているのは良さそう。フィールドを指定して、関連するオブジェクトも一気に取ってくることで転送量を押さえられる、というのは魅力的に見える。

一方で、実際にAPIを運用するにあたっては負荷対策とかキャッシュ戦略について考えることになりそう。ぜんぶ POST /graphql みたいなリクエストになるので、従来のキャッシュ戦略とはまた違ったものが求められる? 負荷対策については、クエリの深さやcomplexityの概念が確立されているのでひとまずそれに乗っかるとよさそうかな。

オブジェクトのフィールドのうち、取得コストが低いものと高いものがあるときにどうするべきか、というのが気になった。低いものはオブジェクトのフィールドにしておいて、高いものは別の型にしておくとそこで実装を分けられてすっきりする? このあたりはもうちょっと手を動かしてみると分かりそうか。

Web API: The Good Parts

Web API: The Good Parts

Web API: The Good Parts

趣味のWebサービスでなんとなく自分が使う用のAPIを生やしたことはあるけど、実際のAPIはどうなっているか、を知るために読んだ。over HTTPでAPIを叩くのだからHTTPの仕組みに最大限乗っかるべき、というのは確かに、と思った。ステータスコードとかHTTPヘッダとか。GitHub APIを叩いたときはクライアントサイドキャッシュが活用されていた。

LSUDs (不特定多数の開発者) 向けのAPIは一般的に作るので不要なフィールドを引っぱってくることになりがちとか、フィールドを絞り込む工夫、というのも紹介されていた。このあたりは各自で工夫しているという感じに見える。

APIの仕様を変えられるようにバージョニングすべきとか、仕様変更の戦略の例もあっておもしろかった。非互換変更でユーザーを振り回さないための取り組み、という感じ。

これからWeb APIを実装する予定がなくても読んでおくとよさそう。既存のAPIのベストプラクティスを抽出して解説してくれているし、HTTPの仕組みへの理解も深まる。

*1:帯の文より

家族でカラオケに行った。仕切りのない大きな部屋に案内されて、横にゲームセンターとかある。曲を入れようとしたら検索語句が3文字しか入力できないし、十字キーでカーソルを合わせて確定していくタイプなのだけれど、ひらがなが階段上に並んでて使いづらい。

部屋に家族連れが乱入してきて怒鳴っているので店員を呼びに行った。

3連休3日目

嵐山に向かった。嵐電と鬼滅の刃がコラボしていて、電車内にアニメの一シーンが展示されていたけど内容はとくに分からない。みんなが楽しそうならとくに口を出すものでもない。

この鹿目まどかさんは今年も変わらずいた。嵐山に行くたびに鹿目まどかさんのことを気にかけている。

電電宮に行って、お守りを返納して新しいものを買った。電電宮というか法輪寺の写真これしかなかった。手水舎の水が凍りついてて冬っぽい。

f:id:utgwkk:20210111193346j:plain

しばらく川を見たり、日本酒を試飲させてもらったりしてぼんやりした。

また嵐電に乗って北野白梅町に行く。冷凍サウナがあることで知られている銭湯に行った。後で知ったけど、冷凍サウナは日付の偶奇によって男湯・女湯どちらに用意されるか変わるらしい。そんなことは知らずに向かったら偶然あった。

1010.kyoto

普通のサウナは熱いぐらいだけど、冷凍サウナはちょっとした身の危険を感じてすごい。身体をしっかり拭かないと凍りついてしまうかもしれない。髪の毛はちょっと凍りかけてたと思う。

いくらでも電車やバスがあるので、帰る手段に困ることはなかった。無限遠のように感じられるけども、思ったよりも近い。

3連休2日目

起きたときの室温は12℃。もうちょっと暖かくなってほしい。

洗濯をした。

今日は昼のうちにFit Boxing 2をやった。設定を戻したほうが運動した感が出ると思う。

テトリス99をやり続けていた。最高順位は4位。一人プレイモードが有料になっているのは逆転現象を感じておもしろい。


3連休だけど何の変哲もない休日という感じで終わりつつある。

中学校の教室で、机を集めてピザを並べてパーティーをやっていた。男子たちがわちゃわちゃやってたら食べようとしていたピザが床に落ちてしまい悲しかった。


創作料理を作ることになった。嫌がっていたけどやらないといけないらしい。じゃがいもをすり潰して胡椒をかけて、それ以降の工程は覚えていない。口に入れた瞬間は味がするけど一瞬でなくなる、儚い夢のような味、と評判だった。

3連休1日目

ラーメンを食べたらめちゃくちゃ眠たくなってきたので昼寝をしたが、着信で叩き起こされた。「迷惑電話の疑いあり」と書いてあったけど、昼寝から起こされたのでいずれにせよ迷惑電話であったことには変わらない。

Fit Boxing 2をやった。デイリーエクササイズの設定を変えたら簡単なアクションしか出なくなったので設定を戻した。ジャブとストレートだけだとそんなに疲れない。

銭湯に行って、見切り品の惣菜を買って食べた。食費と酒代を減らしたい、という思いがある。気軽にUber Eatsするのをやめたらもうちょっとマシになるのかもしれない。家計の上での先月*1の出費を見たら、Nintendo Switchを買ったぶんがけっこう大きかった。

早見沙織さんの声がするトレーナーに指導してもらって、30分ぐらい続けたところ腕が痛くなって中断することになった。毎日ちょっとずつできればいいと思うけど、ひどい筋肉痛になったら厳しい。

Nintendo Switch買った (2回目) - 私が歌川です

そういえばこんなことを書いたのを思い出した。Fit Boxing 2を始めたばかりの頃は腕の筋肉痛がひどくて、コップを持った手が上がらなくなっていた。両手で飲むしかない、という感じでなかなか過酷な状況だった。今はそんなこともなく平和に暮らしている。

*1:マネーフォワードを使っている