もやぶろ

moyashidaisukeのブログだからもやぶろ。フリーランスのエンジニアのダイスケです。QOLあげて色々楽しくチャレンジして良く生きたい。プログラム関連とかギター関連とか旅行関連とか色々。

【書評】「Web API: The Good Parts」ちょっと古いけどWebAPI系の知識の漏れを埋めるにぴったり

https://amzn.to/2XmSAdS

🤓はじめに

WebのREST APIの設計で悩んだので読んでみました。

RESTに限らず、HTTPの標準やセキュリティについての内容も多めでした。

🐼読んだきっかけ・理由は?

REST APIの設計に悩んだので。

具体的にはURLの切り方と、戻りの型の考え方。

👆この本の概要

Web APIの設計、開発、運用についての解説書。本書ではAPIをどのように設計し運用すればより効果的なのか、ありがちな罠や落とし穴を避けるにはどういう点に気をつけなければいけないのかを明らかにします。ターゲットは、URIにアクセスするとXMLJSONなどのデータが返ってくるシンプルなタイプ―XML over HTTP方式やJSON over HTTP方式―のAPIです。.

Amazonの紹介文より

書かれたのが2014年という事で、GraphQLやWebSocketは含まれていないので注意です。

🤓作者さん

水野 貴明(みずの たかあき):1973年東京生まれ。フリーランスソフトウェア開発者兼技術系ライター。スタートアップを中心に開発支援を行っている。主な著訳書に『JavaScript: The Good Parts』『ハイパフォーマンスJavaScript』(オライリー・ジャパン)、『サードパーティJavaScript』(KADOKAWA / アスキー・メディアワークス)、『Webアプリケーションテスト手法』共著(毎日コミュニケーションズ)。

Amazonの紹介文より

あ、『JavaScript: The Good Parts』読んだことあるな。すごく昔だけど。

⏳所要時間

3hくらい。

🙆‍♂️どんな悩みを持つ人にオススメ?

  • WebのAPIを初めて作るけど何を考慮するべきなのか全然わからん〜完全に理解した くらいの人全般

🤔読むと得られること

  • WebのAPIについて
    • 基本的な仕様、考え方
    • セキュリティ的に注意すること
  • 他社事例

📖同じジャンルの本との比較

内容がかぶってそうな本を紹介してみました。

RESTful Webサービス

https://amzn.to/2TyKo98

読んだことないのですが、私の目的的にはこっちの方がよかったかも

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

https://amzn.to/3gkqMzF

Web前半の基礎知識としてはこちらの方が広く薄いです。WebAPIの前にWeb全然知らんという人はおすすめ。

体系的に学ぶ 安全なWebアプリケーションの作り方 第2版[固定版] 脆弱性が生まれる原理と対策の実践

https://amzn.to/2ZsmLTI

Webのセキュリティと言えば特丸本。

😺本から学んだこと・ココロに残った言葉

LSUDsとSSKDs

  • LSUDs -> large set of unknown developers。つまり、WebAPIの文脈では一般公開するAPIのこと
  • SSKDs -> small set of known developers。つまり、WebAPIの文脈ではアプリからのアクセスや、社内からのアクセスのみを想定するAPIのこと

この概念は知らなかったのですが、LSUDsはできるだけ標準に沿って美しく作る事が大事で、SSKDsは多少崩しても処理に最適化しちゃって良いよね、という使い分けが大事、という事です。

一口にWebAPIと言っても、たしかに想定する利用者によって設計の方針を分けるのは良いアイデアだと思いました。

(それにしても、LSUDsとSSKDsって覚えにくいですよね。)

APIの設計についての実例の比較

Twitter(この本の中では一押し)、LinkdeIn、YouTubeFacebookGitHub等のAPIについて、URL設計等について実例を用いて比較してくれています。

標準的な考え方はあるにせよ、どこまで守るべきかというのは悩ましかったりするので実例がたくさんのっているのはありがたいです。

その他APIの設計周りの細かいけど悩むところ

  • 大文字小文字
  • ハイフンアンダーバー
  • 単数形/複数形
  • バージョン
  • registは英語だとおかしいよ
  • 戻りを`data`でwrapする/しない
  • HTTPのMethodはできるだけ有効に使おうね

などなど、冷静に考えると悩むポイントが色々買いてあるので、チェックリス的に使うのも良いと思います。

ちょっと残念な点

いかんせん2014年の内容なので、古くなってきているというのは否めません。

  • GraphQLやWebSocketについて一言も無い
  • HTTP2、HTTP3について一言も無い
  • 最近のCookie周りの制限について

ここらへんが一切触れられていないのは、2014年に書かれてから改定がされていないためで、念頭に置いて読むべきです。

また、HTTPの仕様やセキュリティについても、ネット上の情報(例えばMDN Web docsや、先に紹介した専門の書籍に比べて著しく内容がわかりやすいでは無いため、多くのページ数が割かれている割には全体感を掴む以上の情報はあまり無いと感じました。

まとめ

全体として悪くはないのだけど、もったいないな〜、、、という本でした。

改訂版の出版を期待しています。