回答編集履歴
2
もうちょっと修正
test
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
HTTPやWebサーバの学習をしましょう。
|
2
|
-
本回答は、どこから手を付けて良いかの見当をつける為
|
2
|
+
本回答は、どこから手を付けて良いかの見当をつける為のアドバイスとして解説していきます。
|
3
3
|
|
4
4
|
私達はChrome等のWebブラウザを起動して、teratail等のWebサイトに接続します。
|
5
5
|
この時、初回のアクセスで「このURLにふさわしいデータをください」という**HTTPリクエスト**がブラウザからWebサイトへ送信されます。
|
6
6
|
それに対して回答として主に「HTMLとして妥当な文字列データ」を**HTTPレスポンス**がWebサーバからブラウザに送信されます。
|
7
|
+
|
8
|
+
これがHTTP通信という仕様です。
|
9
|
+
ファイルをわざわざ**HTTPリクエスト**やら**HTTPレスポンス**に言い換えたのは理由があり、
|
10
|
+
これらは通信する時に受け渡しする文字列データであり、ファイルという個体ではないんだぞという事が重要になってきます。
|
7
11
|
|
8
12
|
> htmlは理解ができます。
|
9
13
|
|
@@ -11,36 +15,31 @@
|
|
11
15
|
単にこのHTMLという文書ルールを遵守して作られた、文字列が詰まっている**ファイル**です。
|
12
16
|
これをWebで配信する為にApacheやNginxといったWebサーバアプリケーションの力を借りる事になります。
|
13
17
|
|
14
|
-
ApacheやNginxといった起動する
|
18
|
+
ApacheやNginxといった起動するとWebサーバとして可動するアプリケーションが存在します。
|
15
|
-
PCの特定ディレクトリをルートとして
|
19
|
+
PCの特定ディレクトリをルートと認識して、[URL](https://ja.wikipedia.org/wiki/Uniform_Resource_Locator)のパス名と結びつけます
|
16
|
-
|
20
|
+
HTTPリクエストを受け取った時にURLのパス名を確認して、
|
17
|
-
ファイルの中身をHTTPレスポンスとして返します。
|
21
|
+
対応するファイルがあれば、ファイルの中身をHTTPレスポンスとして返します。
|
18
22
|
|
19
23
|
---
|
20
24
|
|
21
25
|
次にPHPとHTMLがどう関係しているのか?を見ていきましょう。
|
22
26
|
|
23
|
-
|
27
|
+
例えばteratailでは、多くの質問者からの質問がシームレスに新着質問欄に表示されます。
|
24
|
-
|
28
|
+
質問がある度に中の人が出社してHTMLファイルを作っている……?
|
25
|
-
これは
|
29
|
+
これは中々重労働なので考えにくい。
|
26
30
|
|
27
|
-
「HTMLファイル」というファイルである必要があるのは、
|
28
|
-
|
31
|
+
こういったサービスでは積み重なる情報を捌く為にプログラムを利用します。
|
29
|
-
|
32
|
+
「HTTPリクエスト」を受け取るとサーバー内でプログラムが動作します。
|
33
|
+
プログラムはデータベースから積み上がった質問一覧から相応しい質問をチョイスして即興でHTML文字列を作ります。
|
34
|
+
その即興で作ったHTML文字列を「HTTPレスポンス」として返しています。
|
30
35
|
|
36
|
+
ここで登場するのがPHP!
|
31
|
-
|
37
|
+
PHPはHTML文字列を即興で作る為に生み出されたといっても過言ではない経緯を持つプログラミング言語です。
|
32
|
-
|
38
|
+
(別にPHPでなくてもNode.js、Ruby、Python、Go、C++…etc、HTTPリクエストから即興でHTMLファイルを作るプログラミング言語は存在し、なんでも構いません)
|
33
|
-
そんなわけないですよね?
|
34
39
|
|
35
|
-
こういったサービスでは積み重なる情報を裁く為にプログラムを利用します。
|
36
|
-
「HTTPリクエスト」を受け取った後、
|
37
|
-
サーバー内でプログラムが走ってデータベースから積み上がった質問一覧から相応しい質問をチョイスして
|
38
|
-
即興でHTML文字列を作って「HTTPレスポンス」として返す事を行いたいわけです。
|
39
|
-
|
40
|
-
ここで登場するのがPHPです
|
41
40
|
PHPはApache内で動作する事を重要視しており、
|
42
41
|
Apacheに組み込んで利用出来る外部モジュールを提供しています。
|
43
|
-
|
42
|
+
Apacheユーザーにはとっつきやすいですね。そこがPHPの採用理由となります。
|
44
43
|
|
45
44
|
> phpで構成されていると思われるページを開発者ツールで確認してみると、コードの内容がhtmlと同じような構成になっています。(bodyタグや、divタグやなど...) phpファイルから、どのようにしてhtmlに書き変わっているのでしょうか?
|
46
45
|
|
@@ -51,6 +50,7 @@
|
|
51
50
|
|
52
51
|
つまり先程説明した「即興でHTML文字列を作ってHTTPレスポンスを返す」事がApache+PHPで実現出来るわけですね。
|
53
52
|
Apacheに限らず、似たような挙動を実現するモジュールの組み合わせはいくつか存在します。
|
53
|
+
速度を求める人の主流はNginx+php-fpmの組み合わせに移り変わりつつあります。
|
54
54
|
|
55
55
|
ただし、PHPはデフォルトではHTMLを生成して返す作りとなっていますが、HTMLを作るだけが能ではありません。
|
56
56
|
CSS、JavaScript、CSV、JSON、YAML等のHTML以外のテキストデータを作って返すという事も視野に入っています。
|
@@ -60,7 +60,7 @@
|
|
60
60
|
> 私が見つけることができていないだけで、本当はhtmlファイルがあるのでしょうか?それとも、htmlファイルが存在しないということもあり得るのでしょうか?
|
61
61
|
|
62
62
|
企業サイトでは会社の概要等の変わりようがないURLにはファイルとして存在しているHTMLファイルを設置すれば良いです。
|
63
|
-
逆にteratailのような質問サイトや、掲示板、SNSは更新が頻発するのでHTMLファイルはほぼありません。
|
63
|
+
逆にteratailのような質問サイトや、掲示板、SNSといったサービスでは更新が頻発するのでHTMLファイルはほぼありません。
|
64
64
|
場所によってはゼロという事もあります。
|
65
65
|
|
66
66
|
その理由はもう上で散々述べましたが、
|
1
ちょっとだけ校正
test
CHANGED
@@ -27,22 +27,20 @@
|
|
27
27
|
「HTMLファイル」というファイルである必要があるのは、
|
28
28
|
ApacheやNginxという特定ディレクトリ配下のファイルとURLを一致させて取り扱い、
|
29
29
|
ファイルをHTTPレスポンスとして配信するWebサーバソフトだけです。
|
30
|
-
重要なのは「HTTPリクエスト」を受け取って「HTML文字列として妥当な結果のHTTPレスポンス」を送ることだけです。
|
31
30
|
|
32
31
|
例えばteratailでは、多くの質問者からの質問がシームレスに新着質問欄に表示されます。
|
33
32
|
質問がある度にHTMLファイルを生成している……?
|
34
33
|
そんなわけないですよね?
|
35
34
|
|
35
|
+
こういったサービスでは積み重なる情報を裁く為にプログラムを利用します。
|
36
36
|
「HTTPリクエスト」を受け取った後、
|
37
37
|
サーバー内でプログラムが走ってデータベースから積み上がった質問一覧から相応しい質問をチョイスして
|
38
|
-
即興でHTML文字列を作って「HTTPレスポンス」として返す事を行
|
38
|
+
即興でHTML文字列を作って「HTTPレスポンス」として返す事を行いたいわけです。
|
39
39
|
|
40
|
-
こういった事はファイルとして存在しているHTMLファイルでは実現が困難となります。
|
41
|
-
ちょっと毎秒張り付いて手作業でHTMLファイル作ってよ、そんな刺し身の上にタンポポ乗せるような仕事ある?
|
42
|
-
|
43
|
-
ここで登場するのがPHPです
|
40
|
+
ここで登場するのがPHPです
|
44
41
|
PHPはApache内で動作する事を重要視しており、
|
45
42
|
Apacheに組み込んで利用出来る外部モジュールを提供しています。
|
43
|
+
(別にPHPでなくてもNode.js、Ruby、Python、Go、C++…etcなんでもHTTPリクエストから即興でHTMLファイルを作るプログラミング言語は存在し、心底なんでも良いです)
|
46
44
|
|
47
45
|
> phpで構成されていると思われるページを開発者ツールで確認してみると、コードの内容がhtmlと同じような構成になっています。(bodyタグや、divタグやなど...) phpファイルから、どのようにしてhtmlに書き変わっているのでしょうか?
|
48
46
|
|
@@ -62,9 +60,7 @@
|
|
62
60
|
> 私が見つけることができていないだけで、本当はhtmlファイルがあるのでしょうか?それとも、htmlファイルが存在しないということもあり得るのでしょうか?
|
63
61
|
|
64
62
|
企業サイトでは会社の概要等の変わりようがないURLにはファイルとして存在しているHTMLファイルを設置すれば良いです。
|
65
|
-
|
66
|
-
逆に社員のブログ等のような更新が度重なるページにはPHPファイルを設置する事になります。
|
67
|
-
teratailのような質問サイトや、掲示板、SNSは更新が頻発するのでHTMLファイルはほぼありません。
|
63
|
+
逆にteratailのような質問サイトや、掲示板、SNSは更新が頻発するのでHTMLファイルはほぼありません。
|
68
64
|
場所によってはゼロという事もあります。
|
69
65
|
|
70
66
|
その理由はもう上で散々述べましたが、
|