N予備校 プログラミングコース 第24回
あなたは2019年の目標って立てましたか?
どんな目標を立てたか覚えていますか?
私は2018年末に2019年の目標を立てました。
その一つにプログラミングを学び仕事として使えるようにすることをあげました。
そして、思い立ったが吉日と「N予備校のプログラミングコース」を申し込みました。
そして受講と同時に自身の振替と、これから始めようと考えている人の参考になればとブログを書き始めました。
今回ブログの移設にともない、再度そのブログを読み返しながら、今思うことを加えて記載していきたいと思います。
また私が受講したのは【2018年度】で、現在公開されている【2019年度】との違いについても書いていきたいと思います。
このブログは、初心者が学びながら書いているため、間違っている場合があります。
分かり次第修正していくつもりです。
そのあたりも含め楽しんでいただければと思います。
最後に進めていてわからなかったところや気になったところをまとめています。
プログラミング入門 webアプリコース 第24回
前回は、再起動しても情報が保持されるボットプログラムを作成しました。
今回はWebサービスを提供するうえで必要なHTTPサーバーを利用したプログラミングについて学びます。
- 今回の内容まとめ(第3章 10)
・HTTPサーバーについて
・ログについて
- 今回の目標
HTTPサーバー利用したプログラミングを作成し、サーバーでトラブルがあった際などの情報を記録したログを取得するプログラムを作成します。
- 今回新しく扱っているコマンド等
・createServer
・user-agent
・writeHead
・listen関数
HTTPサーバーについて
HTTPとは、Hyper Text Transfer Protocolの略称で、サーバー(server:サービスを提供する側)とクライアント(client:サービスを受ける側)の間で情報を送受信するプロトコル(protokol:手順や規格)の事です。
HTTPサーバーとは、このHTTPによって情報をやり取りするコンピュータやプログラムのことです。
Webサービスについて
Webとは、World Wide Webの略称で、インターネットを利用したコンピューターネットワーク自体を指します。
そして、WebサービスとはHTTPなどのインターネット関連技術を利用して通信を行うサービスの事です。
Webサービスを作るためには、HTTPでサービスを提供する必要があります。
そのため、HTTPでサービスを提供するHTTPサーバーが必要となります。
Node.jsを使ったHTTPサーバー作成
HTTPサーバーをNode.jsを使って作成します。
その際、Node.jsのHTTPモジュールを使用します。
サーバーには、サーバーが受け取る「リクエスト」とサーバーが提供する「レスポンス」に関する関数が必要になります。
今回は、user-agentという情報を表示することでプログラムが働いているかを確認します。
ユーザーエージェント(user-agent)
user-agentとは、利用者がHTTPを使って通信を利用する際のソフトウェアまたはハードウェアのことをいいます。
「iPhoneからアクセスしています」や「Chromeからアクセス」しています等の、自分がどこからアクセスしているのかなどの情報になります。
user-agentを使用して、今回作成するプログラムが以下になります。
const http = require(‘http’);
const server = http.createServer((req, res) => {
res.writeHead(200, {
‘Content-Type’: ‘text/plain; charset=utf-8’
});
res.write(req.headers[‘user-agent’]);
res.end();
});
const port = 8000;
server.listen(port, () => {
console.log(‘Listening on ‘ + port);
});
1行目で、HTTPモジュールを読み込んでそれをhttpと名付けています。
2行目で、httpモジュール機能を使って、サーバーを作成しています。
リクエストを表す引数をreqとレスポンスを表す引数をresとし、サーバーにリクエストがあった時にこの関数が呼び出されます。
3-5行目で、リクエストがあった際の関数の挙動が実装されています。
その内容は、成功を示すステータスコードである200と、どこからのアクセス化などの情報を表示する様に設定しています。
その情報を表示するために、Content-Type(内容の形式)を通常テキスト(text/plain)、charset(文字セット)をutf-8に指定しています。
6行目で、res.write関数により、レスポンスの内容を書きだします。
ここでは、rew.headers関数により、リクエストしている側のuser-agentの中身を取得し、レスポンスの内容として書き出しています。
7行目で、endメソッドによりレスポンスの書き出しを終了させています。
9行目で、HTTPが起動するポートを8000と、それを定数portとしています。
10行目で、listen関数でサーバーを起動して、起動した際に実行する関数を指定しています。今回は、port=8000ですので「Lisning on 8000」と表示するように設定しています。
listen関数
サーバーが立ち上がると、特定のポートからリクエストがないかをずっと聞き続けるため、HTTPサーバーを起動する関数は、listen関数という名前になっています。
今回でWebサービスを提供するために必要なHTTPサーバーを使ったプログラミングが完成しました。
ただ、現状では、サーバー側にトラブルがあった際などに情報が残りません。
そこで、次回ログという記録について学びます。