Android の開発に触れてもうすぐ 7 年。もう目新しさはなく、少し前から自身のエンジニアとしてのスキルの狭さに危機感を覚えながらも、心のどこかでまぁ大丈夫だろうと高をくくっていたのかもしれない。でも転職した先は一人ひとりが何かに秀でていて、もう危機感から目を逸らすことはできなかった。
ということで、Android アプリでいつも通信しているけど、あまり深く知らない Web について勉強することにした。まずは、上司に勧められた Web を支える技術を読み終えたので、その感想を残しておこう。
この本の発売日は 2010 年 4 月 8 と少し古めだが、内容は今でも通用する内容だった。
Web の概論、URI、HTTP、ハイパーメディアフォーマット、そして Web サービスの設計の 5 つの部に別れており、順番に読んでいくことで最後の部の理解が深まるようになっていた。
Web の概論
REST とは Web のアーキテクチャスタイルです。
複数のアーキテクチャに共通する性質、様式、作法あるいは流儀を指す言葉だそう。実装の上の概念がアーキテクチャ、そのアーキテクチャより上の概念がアーキテクチャスタイルということで、具体的にいうと下記の表のようになる。
抽象化レベル | Web での実例 |
---|---|
アーキテクチャスタイル | REST |
アーキテクチャ | ブラウザ、サーバ、プロキシ、HTTP、URI、HTML |
実装 | Apache、Firefox、Internet Explorer |
この本を読むまでアーキテクチャの上の概念を知らなかったので、REST をアーキテクチャとして捉えていたように思う。だから、HTTP とは何かと考えたときに通信のプロトコルと答えが出るのに対して、REST とは何かと考えても具体的な答えが出なかった。
URI
Cool URIs don’t change.
なるほど、この一言に尽きるなと思った。URI の変更は様々なところに影響を及ぼす。ユーザのブックマークが 404 エラーを返したり、アプリの通信先を変えないといけなかったり。設計する上で、いかに変えないように変わらないようにするかを考えながら、強く意識していかなければならない。
HTTP
HTTP メソッドの存在は知っていたけど、GET と POST しか使ったことがなく、条件付きリクエストやべき等なども知らなかった。ステータスコードも数字は知っていてもレスポンスの処理の仕方をほとんど知らない。HTTP ヘッダも見よう見まねで追加して通信処理を書いていた。何も知らないんだなと痛感したし、それらを知ることができて本当に良かった。
ハイバーメディアフォーマット
HTML と JSON 以外の microformats、Atom、Atom Publishing Protocol のフォーマットを初めて知った。特に Atom はエントリリソースとメディアリソースのフォーマットなので、色々と適用、応用ができそうなフォーマットだと思った。
Web サービスの設計
郵便番号のサービスを例に、読み込み専用、書き込み可能なサービス、そしてリソースの設計方法のテクニックが紹介された。具体的かつ想像しやすい内容で感心するばかりだった。
まとめ
1 章ずつゆっくりと読んだが、それでも 5 時間掛からずに読み切った。ただ、この本を読んだからといって Web の設計ができるようになるわけではないんだけど、少なくともどういうものがあって、どういうことを考えないといけないのか、どう考えればいいのかが掴めたので、この本を勧めてくれた上司にまずありがとうと言いたい。
さぁ、来月は Ruby で何か書くぞ 💪