Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HTTPサーバー開発課題について / About_HTTP_server_development

Cybozu
PRO
August 19, 2020

HTTPサーバー開発課題について / About_HTTP_server_development

Cybozu
PRO

August 19, 2020
Tweet

More Decks by Cybozu

Other Decks in Technology

Transcript

  1. HTTPサーバー開発課題について
    2020/6/22

    View Slide

  2. コンセプト
    ▌必修講義と同様
    l 誰に: 開発/運⽤本部に配属される新⼊社員
    l 何を: どのチームに⾏っても必要となる基礎的な知識/技術/
    ツールを学び、体験できた
    ▌具体的には、HTTPという基礎についてRFCを読んで実現する
    という活動を通して知識を学び、開発を体験してほしい

    View Slide

  3. やること
    ▌HTTPサーバーを開発し、最終⽇に成果発表をしてください
    l 期間: 6/22(⽉)-26(⾦)
    ▌ルール
    l チームで⼀つのHTTPサーバーを開発してください
    l チームにつき⼀⼈メンターがつくので、相談しながら進め
    てください
    l 利⽤する⾔語/ライブラリもチームやメンターと相談して決
    めてください

    View Slide

  4. 利⽤するライブラリの決め⽅
    ▌なるべく学びを多くするという⽬的で選択してください
    l スキルが弱いチームはライブラリを使って期間内に終えら
    れた⽅が学びがあるでしょう
    l ⼒のあるチームはなるべくライブラリを使わず作った⽅が
    学びがあるでしょう
    ▌メンターと相談しつつ決めてください

    View Slide

  5. 参考: 2018年の条件
    ▌⾔語: Python 3.x
    ▌ルール
    l 標準ライブラリの「21.インターネットプロトコルとサポー
    ト」は利⽤禁⽌
    l それ以外の標準ライブラリは利⽤可能
    l 外部ライブラリは利⽤禁⽌

    View Slide

  6. 課題のレベル
    1. HTTPのリクエストを解析して、解析した結果をコンソールに表⽰する
    2. HTTPのリクエストを受け取ったら、固定の値でいいので正しいレスポ
    ンスを返す
    l リクエストが不正の時はエラーのレスポンスを返す
    3. リクエストのパスに応じて、サーバー上のファイルを読み込んで、その
    内容を返す
    4. マルチプロセスやマルチスレッドにより、同時に複数のリクエストを処
    理できるようにする
    5. HTTP/1.1の仕様にできる限り準拠する

    View Slide

  7. 進め⽅
    ▌社内githubにリポジトリを作ってください
    l こまめにcommit, pushしてください
    l branchやPull Requestの使⽤はお任せします
    ▌課題のレベルに沿って進めるとやりやすいと思います
    ▌モブプロで実装を進めるのが推奨です
    l モブプロをしない場合の作業分担はチームにお任せします
    lペアプロにしたり、個⼈作業にしたり
    ▌メンターは1⽇1時間程度サポートするくらいを想定してます

    View Slide

  8. 参考情報
    ▌今まで実施した講義、演習、技術書精読
    l HTTPのRFCは特に⼤事です
    l 「Webアプリケーション基礎」のEchoサーバーを拡張するといいか

    l 正規表現使えるかも
    l 余裕があればユニットテストを書いてみてください
    ▌RFC 7230
    l https://tools.ietf.org/html/rfc7230
    ▌RFC 7231
    l https://tools.ietf.org/html/rfc7231

    View Slide