【UEC プログラミング教室 講師養成講座 記録】

【写真と文 安部博文】

日時2016年9月22日(木) 16:00~18:300
場所電通大 西11号館2階 ピクトラボリビングルーム
講師柳裕太
受講者8名 宮澤修(記録作成)、小木曽聖、佐藤海斗、奥田忠久、長安尚之、
山根茂之、長谷川清流、佐藤季久恵
責任者安部博文


▲栁講師によるWeb回りとDjangoの勉強会

1 概要
柳が講師となり、サーバーと Django の知識を共有するための授業を行った。サーバーの種類について三つの観点から解説した後、前回の勉強会で質問のあったプロキシサーバーについて説明し、Django の概要をチュートリアルも交えて解説した。

2 内容
2-1、サーバーの種類(役割別) サーバーには役割に応じて WEB サーバー、アプリサーバー、データベースサーバー、MAILサーバーの四種類が存在する。

2-1-1、WEB サーバー
主に web サイトの閲覧に用いられる。その手順は以下の通り。
(1)クライアントからリクエスト(閲覧したいページの情報)を受け取り、解析する。
(2)クライアントへ返すデータ(html 等)を取得する。
(3)クライアントへデータをまとめてレスポンスとして返す。

2-1-2、アプリサーバー
Web アプリに用いられる。リクエストからレスポンスまでの手順は WEB サーバーとほぼ同じ。しかし、データを取得する際に動的処理を行うのが特徴である。動的処理とは、同じリクエストであってもクライアントの状態によりレスポンスの内容を変える処理である。

2-1-3、データベースサーバー
データを保管するためのサーバーである。WEB サーバーからリクエストを受け取り、対応するデータをレスポンスとして返す。多くの場合、WEB サーバーとデータベースサーバーの役割は明確に分担されている。

2-1-4、MAIL サーバー
メールの送受信に用いられる。実際にメールの送受信を行う送受信サーバーと、宛先アドレスを基に、宛先の IP アドレスを宛先の DNS サーバーから受け取る DNS サーバーの二つがある。

2-2、サーバーの種類(OS 別)
大きく分けて、Windows サーバーと Linux サーバーの二種類が利用されている。利用シェアはWin 1.7%に対し Linux 96.6%。Win はクローズドソースであるため、ハードの要求スペックとコストが高い一方セキュリティが堅牢であるので、大企業や銀行のサーバーに用いられる。一方 Linux はオープンソースであるため誰でも使いやすく、低スペックマシンでも動き低コストである反面セキュリティに不安がある。中小企業(ベンチャー含む)と個人で主に用いられる。

2-3、サーバーの種類(設置法別)
サーバーの設置法には、大きく分けてサーバーを買う方法と借りる方法の二つがある。「サーバーを買う」とは自分で物理的サーバーを用意することである(既存のマシンを OS として運用する場合もこれに含まれる)。「サーバーを借りる」とは既存のサービスで用意されたサーバーを利用することであり、詳しくは以下の四つに分けられる。
(1) 専用サーバー 自分専用の物理サーバーを借りる。スペックを自分で決められる一方、高コストな上にメンテナンスは自己責任。
(2) 共有サーバー 複数人で一つの物理サーバーを借りる。低コストである反面利用にはルールがあり、使えるリソースも限られる。
(3) VPS 物理サーバーの中に複数人でそれぞれ仮想サーバーを置く。物理サーバーがダウンすると全利用者が影響を受ける。
(4) パブリッククラウド VPS に似ていながら、仮想サーバーのスペックを個人が自由に変更できる。Softlayer はこれに含まれる。

2-4、プロキシサーバー
プロキシとはもともと代理の意。クライアントとインターネットの間にプロキシサーバーを挟むことにより匿名化ができる。悪用を防ぐためにプロキシサーバーによるアクセスを禁じているサイトもある。また、リバースプロキシというものも存在する。これはネットとサーバーの間にプロキシを挟むことにより、動的リクエストはアプリケーションサーバー、静的リクエストは WEB サーバーという様に役割分担が出来る。

2-5、Django

2-5-1、Django の利点
・サーバー開設、構成構築が簡単に出来る
・WEB アプリを作るためのテンプレートがある
・仮想サーバーを立てて WEB アプリのテストが出来る

2-5-2、チュートリアルの解説
Django のチュートリアルを見ながら全体の流れを確認。チュートリアルを最後まで進めるとどの様なものが出来るのか佐藤(海)が解説。

3 質疑応答
○なぜ WEB サーバーはリクエストを解析できるのか。
→詳しくは分からない。構文解析等のシステムのためではないだろうか。
○WEB サーバーの仕組みは図書館で本を借りるようなものか。
→だいたい似ている。
○WEB サーバーがデータを見つけられなかったらどうするのか。
→404 エラーが出る。サーバー自体がダウンしている場合は 503 エラー。
○アプリケーションサーバーの動的処理とは具体的にどの様なものか。
→例えば、同じリクエストでも時間帯に応じてレスポンスが変わるとか。
○アプリケーションサーバーの仕組みは、同じ症状に対しても患者の性別・年齢・体格などにより出す薬を変える薬局の様なものか。
→むしろ医者と薬局の関係に近い。
○動的処理を行うのはサーバー側なのか。
→その通り。
○データベースサーバーを持たない WEB サーバーはあるのか。
→基本的にデータを保管するのはデータベースサーバー。そのデータを並び替えたりしてクライアントに提供するのが WEB サーバー。役割分担が明確にできている。
○データベースサーバーにクライアントが直接アクセスできるのか。
→できなくはないが基本やらない。
○Amazon のページを見せているのは WEB サーバーで、注文データを保持しているのはデータベースサーバーなのか。
→その通り。注文履歴を保持するのはデータベースサーバー。一方それをクライアントに見せるのは WEB サーバー。
○少しずつデータをクライアントが見る場合、データベースサーバーはどのように WEB サーバーにデータを渡しているのか。
→逐次出している。
○スピードのネックはどこか・
→おそらく WEB サーバー。
○サーバーの OS が違うと何が違うのか。
→操作性が異なる。
○プロキシは何をやっているのか。
→クライアントからのリクエストを解釈し、宛先を変えて自分からリクエストをインターネットへ出す。

4 次回予告
前半は風間がデザインパターンについての解説をし、後半は宮澤が Django チュートリアルの解説を行う。