では､ ウェブサイトはどのような仕組みになっているのでしょうか｡
このコースはPythonのコースなので､ このトピックについて超超深追いするつもりはありませんが､
Web開発のコース全体は持っています｡
その代わり､ Python側に焦点を当てます｡
このコースが終わるころには､ 実際にポートフォリオを変更したり､ 自分の好きなようにポートフォリオを更新したり､
コースを通じて構築したプロジェクトを紹介できるようになっていることを期待しているからです｡
そこで､ ここにホームページを用意しました｡
xkcdは､ ちょっと笑えるコミックサイトです｡
ここで更新をクリックするか､ このURLを入力すると､ このサイトに移動します｡
しかし､ 実際にはどうなのでしょうか？
私のブラウザ（この場合はGoogle Chrome）は､ どのようにしてこのWebページを表示することができるのでしょうか？
インターネットに接続する必要があるんですよね？
つまり､ 私がこれを見ることができるように､ 何らかのデータが転送されているのです｡
では､ その仕組みを探ってみましょう｡
そして､ 見てください｡
ちょっといい図を作ってみました｡
そして､ この図では､ その仕組みだけをお伝えしようと思います｡
極めてシンプルなことです｡
ブラウザはGoogle Chromeでも､ Safariでも､ Firefoxでもかまいません｡
このブラウザは､ ウェブサイトを入力したり､ あるいはグーグルでウェブサイトを検索して､ そのウェブサイトをクリックすることができるのです｡
私たちがウェブサイトをクリックすると､ インターネットを通じて､ ブラウザが別のマシンに要求を出すということが起こります｡
そして､ このマシンは､ 私たちがサーバーと呼んでいるもので､ 世界のどこにでも設置されています｡
なぜなら､ 私たちのインターネット・ネットワークを通じて､ ブラウザが「おい､ このウェブサイト､
誰が所有しているんだ？
あるいは､ どのマシンがそのウェブサイト用のファイルを提供してくれるのでしょうか？
そして､ 複雑なロジックを使って､ 最終的にはただのコンピューターであるこのサーバーを見つけ出し､ 実際に私たち自身のサーバーをデプロイして見せるのです｡
データがないとWebページに何も表示できないから､ データをくれ､ ということです｡
そして､ サーバー｡
まず､ ブラウザとサーバーは別の機械なので､ HTTPとhttpsというもので通信しています｡
そうですね｡
ブラウザは今､ 私のノートパソコンにあります｡
そして､ サーバーであるマシン｡
世界のどこでもいいんです｡
何らかの方法でコミュニケーションをとる必要があるのです｡
そして､ これらの機械が何のルールもなく会話しているようでは困る､ というルールが必要なのです｡
たとえば､ あなたと私の間でコミュニケーションをとるときは､ 同じように英語で話すと合意すればいいのです｡
HTTPとhttpsという､ 暗号化されたセキュアな通信を行うことで､ 「ちょっと､ データを渡して､
サーバーはわかる？
ああ｡
このウェブサイトやブラウザは､ 私が持っているデータを必要としています｡
こっちのHPに戻ったら｡
HTTPSを使用していることがわかりますが､ HTTPSプロトコルを使用したいと言っているのです｡
それを伝えるための言葉です｡
このサイトに行ってみたい｡
Enterキーを押すとすぐに､ どこかのサーバーにリクエストが送られ､ サーバーがこのデータで応答することになるわけです｡
では､ 図の続きを見てみましょう｡
というわけで､ 今､ リクエストがありました｡
このサーバーには､ たまたま私たちが必要とする3つのファイルがあります｡
ひとつはHTMLファイルで､ このファイルがウェブサイトのテキストやコンテンツになります｡
もうひとつはCSSファイルで､ これにはウェブサイトのすべてのスタイルが含まれています｡
つまり､ 色､ フォント､ 要素の位置など､ スタイルに関係するものすべてです｡
だから､ つまらない文章に見えないんです｡
そして､ JavaScriptを搭載しています｡
JavaScriptは､ Webサイトに動作を与えるものです｡
Facebookにログインするときや､ Twitterで何かをつぶやくとき､
JavaScriptによってこれらのアクションを実行することができます｡
JavaScriptでは､ アクションを起こすことができますが､ そこにあまりこだわる必要はないでしょう｡
私たちが知るべきことは､ サーバーが､ そのファイル上のコンピュータであるため､ 私たちのためにこれらの3つのファイルを持っているということです｡
この3つのファイルは､ ブラウザに送信されます｡
そして､ サーバーは､ 「もちろん､ これです」と言って､ この3つのファイルとこの3つのファイルを送ってきます｡
送り返されたとき､ ブラウザはそれを理解する｡
そして､ それを理解しているからこそ､ 私たちにはちんぷんかんぷんでも､ そのウェブサイトを表示することができるのです｡
でも､ 質問させてください｡
今まで､ Pythonの話はあまりしてきませんでした｡
Pythonのコースかと思った｡
アンドレ､ そんなどうでもいいこと､ どこで話しているんだ？
この中に､ 実際にPythonで書ける部分が1つあるからです｡
それが何だかわかりますか？
サーバーを当てた場合｡
おめでとうございます｡
5000ポイントもらえます｡
ブラウザは､ 私たちがコンピュータにダウンロードするアプリケーションです｡
そうですね｡
しかし､ 今までのサーバーは､ どこか機械､ コンピュータのような謎の箱のようなものでした｡
しかし､ Pythonのプログラマーは､ サーバーが動作するためのロジックやルールを実際に書くことができます｡
Pythonでデータを解釈して､ そのデータをPythonでブラウザに送ることができるのです｡
これから数回のビデオで独自のサーバーを構築し､ HTML､ CSS､ JavaScriptのファイルにも触れて､
実際にウェブサイトのようなものを表示できるようにします｡
さて､ このビデオの最後に1つの質問をしたいと思います｡
このサーバーはPythonで書かなければならないのでしょうか？
いかがでしょうか？
いいえ､ そんなことはありません｡
そうだろ？
ブラウザは､ このマシンがどんなものであるかは気にしない｡
この3つのファイルにしか興味がないのです｡
そして､ このhttp httpsのプロトコルで話しているからです｡
ブラウザは､ おい､ お前が何語を話そうが､ 何も気にしないぞ､ と言っている｡
このhttpsを通して､ 欲しいデータを渡してくれれば､ この中で好きなロジックを組むことができますよというだけの話です｡
なんならここからメールを送ってもいいんです｡
テキストメッセージも送れるし､ 数学の演算もできる｡
このパソコンでゲームをしようと思えばできるんです｡
これらのファイルをブラウザに送り返すことができれば､ 特に問題ではありません｡
だから､ Pythonでそれができるんです｡
でも､ NodeやPHP､ Javaなど他の言語でもできるので､ どんな種類の言語でもサーバーを書くことができるんです｡
本当にできるのは､ ブラウザ側だけなんです｡
ブラウザ側では､ 少なくとも一般論として､ 別のプログラミング言語であるJavaScriptしか理解できないので､
この3つのファイルを使わざるを得ないのです｡
さて､ 次のビデオでこのテーマをもう少し掘り下げてみましょう｡