はじめに
42Tokyoの課題で簡易的なHTTPサーバーをC++で実装しました。
HTTPサーバー自体や、実装についての解説は他の記事の方が素晴らしいと思いますので、この記事ではおすすめのサイトや本についてまとめていきます。
技術的な説明はほぼゼロですが、何から始めたら良いか分からない方などの参考になればと思います。
42Tokyoについて
おすすめのサイトなど
HTTP全般
HTTPについて幅広く、無料で学べる。大体のことはまとめてある。
本当に何も分からない人はこの本から始めるのがおすすめ
RFC(インターネット技術の標準的な仕様を記した文書)
HTTPの仕様についてまとめられています。基本的には日本語訳のものを読んで、解釈が分かりづらいと思ったら英語で読むくらいの感じで使いました。
私は所々しか読んでいません。
Config
nginxのconfigはあくまで一例なので、自由に決めていいと思います。
ただ、勉強しておくと今後やInceptionで役立つかもしれません。
CGI
担当では無いのであまり詳しくはないのですが、以下のようなサイトが参考になりそうです。
autoindex
実装
C言語の簡易的なHTTPサーバー実装例が載っている。42Tokyoで使うシステムコールの使い方が幅広くのっているので他の課題などにもおすすめ
C言語でのソケットプログラミングについてまとめられている。初心者にわかりやすい。
友人に見せてもらいましたが、分厚くて全て読むのは大変です。コードは読みづらいですが、詳細に書かれています。
おすすめです。大体の実装の流れがわかります。
curl・telnet
テストするのによく使うコマンド2つです。これらを見ればだいたいの使い方はわかると思います。
python requests
毎回curlやtelnetを使うのはめんどくさいので、pythonのrequestsライブラリを活用するといいと思います。
使い方はかなり簡単です。
- Requests: HTTP for Humans™ — Requests 2.31.0 documentation
- 【Python Requests】使用方法まとめ – get、post、put、delete、例外処理、Basic認証まで網羅 –|Zero-Cheese
Test
Google Testを初期に導入しましたが、1人しか使っていなかったので結局最初しか使いませんでした。。。
テストは工夫して活用していくべきだと思います。
また、上記のpython requestsやshell scriptを使用して、簡単なテストはすぐに実行できるようにしていました。
生徒ブログ
実装について書かれている42生徒ブログは検索すればすぐに出てきます。
課題について
subjectやレビュー項目で曖昧な部分はディフェンスを用意しておけば、ある程度自由にやっていいと思います。
曖昧な部分は自分たちで決めることも多かったです。
RFCやnginxに縛られすぎず、必要最低限の項目だけは満たすように進めました。
私達は実装しながら、対応しなければいけないことを学んでいった感じなので、修正が大変でした。
実際にnginxを動かしたり、一通り学んでからしっかり方針を立てて実装に取り組んだほうが良いと思います。
最後に
最後まで読んでいただきありがとうございました。少しでも参考になれば嬉しいです。
Inceptionという課題についても似た形式で記事を書いていますので合わせて御覧ください。