雑食日誌

Vue.jsとServerless。ときどきチーム開発

HTTP入門

こんにちは、ぬまやんです。最近Goプログラミング実践入門を購入しました。この本を元にWebアプリやHTTPについて勉強した内容をまとめてみます。多数見当違いな記述もあると思いますが、ご指摘お願いいたします。

1. HTTPの定義

  • クライアント(ユーザー側)とサーバー(サービス提供側)をリクエスト/レスポンスの1回のやりとりで完結させる通信

例: twiiter
ユーザーがツイート検索することでリクエストがサーバーに送信され、サーバーがレスポンスを返して、検索結果をブラウザに表示

  • HTTP1.Xではリクエスト/レスポンスはテキストベースにて行われていたが、HTTP2.0になるとバイナリ

1.1 HTTPリクエス

  • リクエストは以下の構成からなる
  • リクエストヘッダの後にはメッセージがなくても空行を必ず挟むこと
GET /example.com/hatena.html HTTP/1.3
User-Agent: Mozilla/5.0

(メッセージ本体)
  1. リクエスト行(メソッド URI バージョン)
  2. リクエストヘッダ (0行以上)
  3. 空行
  4. メッセージ本体(省略可能)

リクエストメソッド

  • リクエストメソッドはWebアプリに対して、処理してほしい要求内容を表す
  • 主要なメソッドと要求内容を記載する
    • GET: 指定するリソースの返却
    • POST: メッセージ本体のデータをリソースに送信(送信後の処理内容はサーバーが決定)
    • PUT: メッセージ本体のデータをリソースに置き換え
    • DELETE: リソースの削除
  • POSTとPUTは2回同様のメソッドを送信した時にサーバの状態が変更されるか否かが異なる
    • POSTは2回サーバに送信した時にサーバ状態が変更される場合がある
    • PUTは2回サーバに送信した時、2回目はサーバの状態を変更しない

リクエストヘッダ

  • リクエストに付随する情報が表示される
  • 主要なヘッダを記載する
    • Content-Length: メッセージ本体のバイト数
    • Host: サーバ名とポート番号
    • User-Agent: クライアント情報

1.2 HTTPレスポンス

  • レスポンスの構成をリクエスト同様表示する
  • リクエスト同様にヘッダの後には必ず空行を含める
200 OK
Date: 05 Nov 2017 10:02:59 GMT
Content-Length: 712300

<!DOCTYPE html> (リクエストHTML)
  1. ステータス
  2. レスポンスへッダ (0行以上)
  3. 空行
  4. HTML

レスポンスステータス

  • レスポンスはステータスによって結果を要約している
  • 以下に主要レスポンスを記す
    • 1XX: サーバがリクエストを受信し、処理中である状態
    • 2XX: クライアントのリクエストを元に処理が成功した状態
    • 3XX: サーバがリクエストを処理したが、クライアントからの追加情報を待っている状態
    • 4XX: クライアントエラーであり、リクエストを見直す必要がある(404 Not Foundなど)
    • 5XX: サーバエラーであり、サーバ側の不具合のためリトライすると成功する可能性がある

レスポンスヘッダ

  • リクエストヘッダと同様な記法でリクエスト結果の情報が記載されている
  • 以下に主要なヘッダを記載する
    • Allow: サーバのサポートしているリクエストメソッドを記載
    • Server: ドメイン
    • Date: 日時

2. Webアプリケーション

  • WebアプリケーションはHTTPを用いて以下の動作を行うシステム

    1. HTTPを介してリクエストメッセージを受信
    2. リクエストから処理を行う
    3. 結果を元にHTMLとレスポンスを生成してクライアントに送信
  • これらの処理を行うために、Webアプリケーション内にはハンドラとテンプレートエンジンの二つの構成がある

2.1 ハンドラ

  • クライアントからのリクエストを受信し、処理を行うもの
  • 一般的にハンドラをHTTPメッセージ処理を行うコントローラとアプリケーション処理を行うモデルに分割する

2.2 テンプレートエンジン

  • クライアントに返却するHTMLを作成するもの
  • 静的テンプレートとアクティブテンプレートに分かれる
    • 静的テンプレート: HTMLにあらかじめ入力項目を設けて、リクエストを元に埋め込んでいくもの
    • アクティブテンプレート: 条件式や繰り返しを用いてHTMLを動的に生成するもの(PHPはアクティブテンプレートから始まった)

感想

  • HTTPの仕組みのシンプルさが直感的でとてもわかりやすかったです
  • 常に広く普及する仕組みにわかりやすさは欠かせないものであると実感しました

僕のワンダフル・ライフ

はじめに

最近気になっていたナミヤ雑貨店の奇蹟と僕のワンダフル・ライフのどちらを見ようか悩み、 ホームドラマでさっぱりしたい気分だったのでわんこを観てきました。

あらすじ

ある一匹(?)の犬が何度も生まれ変わり、命の恩人との再会を目指すお話です。

感想

細かいところが気にならなくなるようなファンタジーですね。 何回か泣いてしまいました。

もしかしたら賢い犬は過去何回か転生してきているんじゃないかと思ってしまいます。 はじめベイリーだった頃は無邪気で遊ぶのが大好きな犬だったのに、警察犬になり人を救っていく姿はめちゃめちゃかっこいいです。 イーサン(アダルト)の元に帰って来てハンナ(アダルト)を引き合わせたのはグッジョブでしたね。 イーサンの幸せを慮った行動でした。

お気に入りはマヤの元にいた頃でお互いに心を理解し合えるほどの関係が眩しかった分、転生の時は切なかったですね。 初めての恋も切なく、相手の犬の気持ちも聞きたかったです。

犬がどれだけ人を思い愛してくれるかがわかるお話でした。 犬や猫を飼う時はできるだけ一緒にいて遊んでたくさん思い出を作りたいです。

3度目の殺人

是枝さん

3度目の殺人を観に行きました。
是枝監督の作品はかなり好みで、前回の「海よりもまだ深く」は映画館に2回足を運びました。
阿部ちゃんが好きということもありますが、登場人物が今までの自分を乗り越えていく姿は胸熱です。
そして父になる」も良いですね。
リリーフランキー福山雅治という最高に父にしたい二人です。

 

以下ネタバレ注意

人物について

役所広司演じる三隅が殺人犯、福山雅治演じる重盛が弁護士で、被害者遺族である咲江ちゃんを広瀬すずが演じています。
重盛は法廷で勝つために真実は必要ないし、分かり得ないという弁護士です。
しかし、三隅の弁護をしていくうちに今回の事件については真実を知りたいという気持ちに駆られていきます。

対する三隅は重盛と面会を重ねるたびに証言を変え、三隅含めた弁護士達を困らせてしまいます。
過去に殺人の前科があり、死刑確実と言われていた状態から当時の裁判長だった重盛父に守られた経緯があります。
そのためか重盛父に感謝し、尊敬している描写がいくつかありました。

咲江ちゃんは被害者遺族ですが三隅と交流があり、仲の良さが見え隠れします。

感想

真実とはなんであろうかと葛藤させられました。
最後に重盛が三隅をただの器としたことから、誰かの意思が三隅を動かしていたのでしょう。
三隅は咲江ちゃんを守ろうとしたのか、咲江ちゃんや社員の方々の理不尽さを裁きたかったのか。
なぜ重盛父に咲江ちゃんと遊んだことを娘として伝えたのか。
三隅はどこで重盛の娘のことを知ったのか。
なぜ重盛父はなぜ三隅を生かしたことを後悔しているのでしょうか。
私には見えないことだらけですね。

ただ、三隅は咲江ちゃんの真実を露見させないために無実を主張し、重盛はそのことに気づいていたのかなとは考えます。

裁判長が評価やスケジュールから裁判を続行させ、最後には死刑を下したことは死刑制度について考えさせられますね。
端から見ると評価を下げたくないから殺したように見えます。
その環境に入ると疑問を持てなくなってしまうんですかね。

暗示が多く難しいですがとても面白かったです。
誰かと話たくなる映画でした。