質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

7回答

18185閲覧

PHPをなぜhtmlに組み込んで使っている人がいるのかよく分かりません。

WeilSpinor

総合スコア170

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1グッド

3クリップ

投稿2019/03/19 12:30

編集2019/03/20 00:20

PHPをなぜhtmlに組み込んで使っている人がいるのかよく分かりません。

プログラミング初心者です。

PHPって、「クライアントとサーバー上のさまざまなリソースを仲介するCGIプログラム」を作成するための言語ですよね?
元来CGIというものは、サーバー側の処理を書いた、サーバーのマシンが実行するプログラムであるから、サーバーの中に独立して存在するプログラムであるはずです。

###php in htmlの場合
これが分かりません。
クライアント=ブラウザ側のプログラムはJavaScriptが受け持つはずです。
なのに、phpをまるでJavaScriptのようにhtmlに組み込んで使っている人がいます。
phpを実行するのはあくまでサーバー側のマシンですから、
php in htmlの組み合わせだと、サーバーが持っているhtmlファイルに対して、
サーバーマシン君がインターネット回線の向こう側からフラフラとやってきて、phpの記述の部分だけ横槍を入れる形で操作してくる、
というイメージになると思います。
操作主体がブラウザで完結しているJavaScript in HTMLという組み合わせにせず、あえてphpをhtmlに組み込む意味がわかりません。

html in phpの場合

これは分かります。
ただ、別の疑問があって、

phpでechoを使うと、なぜかサーバーマシンのコンソールでなく、ブラウザ上に文字列が表示されますが、これは、サーバーマシンがHTML文書を作成してブラウザに送信している、ということでしょうか?
つまりechoとは、「HTMLを作成し、ブラウザに送信するメソッド」ということでしょうじゃ?
また、phpの内部にhtmlを組み込んでいるものもありますが、それは、
「phpの内部でhtmlタグを宣言すると、htmlファイルが作成され、それがブラウザに送信される」ということが起きているのでしょうか?

ご回答よろしくお願いします。

それぞれの役割

それぞれの言語の役割はこんなイメージで合っているでしょうか?

Edge「僕の名前はMicrosoft Edge。来月の妹の誕生日パーティーのために会場を探しているんだ。」

Edge「友達の『Webサーバー君』が、色んな施設の会場の貸し出し事業をやっているから、彼から部屋を借りようと思うんだ」

Webサーバー「なぁedge、このタイプの部屋はどうだい?index.htmlってプランなんだが…」

Edge「うーん…まぁ広さ的にも値段的にもいいし、レイアウトもなかなかだね。これにするよ!」

Webサーバー「よし!じゃあ、第3会場を押さえておいたから、それを使いなよ」

Edge「ありがとう」

〜〜〜
Edge「うーん、このindex.htmlっていう会場、誕生日パーティで使うにはちょっと殺風景だよなぁ…」

Edge「よし、友達のJavaScriptくん、CSSちゃん、canvasくん達を呼んで装飾やってもらおう!彼らそういうの得意だから」
〜〜
JS「Edgeくん、きたよ〜」

CSS「もう、急に呼び出すんだから、Edgeったら」

canvas「さあ、僕らデザイン三銃士が来たからにはもう不可能はないぞ」

Edge「わ〜!みんな集まってくれてありがとう!」

CSS「で、あたしらは何をすればいいの?早く教えなさい」

Edge「ここの椅子をもっとこう…あそこにこの装飾をして欲しくて…それで…」

ガチャ…

index.php「さーせーん!今回会場のデザインに伺いましたindex.phpと申しますが〜」

Edge「え、君たちは?」

index.php「ああ、あっしらはWebサーバー株式会社の社員で、php部署のものでさぁ」

index.php「お客様がご利用の貸し出しプラン『index.html』は、あっしらでお部屋の装飾をしてさしあげるサービスが付いておりましてね、それで伺いました」

CSS「え!?どういうことよそれ?」

Edge「し、知らなかった…」

index.php「まぁとにかく、この部屋の装飾はあっしらにお任せくだせぇ!皆さんはどうぞ、パーティの時間までおくつろぎを。よーし!オマエらはじめっぞ〜〜!」

index.php子分「「押忍!!」」

タッタッタッタッ…

JS「暇になっちゃったね…ははは」

CSS「もう、せっかく張り切ってたのに…誰かさんのせいで!」ギロッ

Edge「ごめんよ〜みんな…phpなんてサービスあるなんて聞いてなかったんだ」

canvas「まぁまぁ、時間ができたことだし、近くのカフェで一服お茶でもしようじゃないか」

Fin

こういう感じで合っていますか?

bochan2👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/03/19 21:06

後半のよくわからない例え話を書く時間で解説した記事なり書籍なり読めばいいのに。余計に思い込みが激しくなるだけですよ。
WeilSpinor

2019/03/19 22:27

すみません。理解のためには色々やってみる方が良いと思ったので
m.ts10806

2019/03/19 22:36

そもそも出発点が間違ってるのでそこを修正してからでないと意味ないです。理解しようとすることは大変良いことですが体系的な学習の方が先です
guest

回答7

0

そろそろちゃんと体系的な知識を身に着けたほうが良いですよ。
ネット上の分散された情報を勝手に解釈しているので、一般的な認識との乖離が激しく、質問の意味が分かりません。

PHPをなぜhtmlに組み込んで使っている人がいるのかよく分かりません
phpをまるでJavaScriptのようにhtmlに組み込んで使っている人がいます。

php はサーバサイド言語なので、JavaScript のようにクライアントサイドブラウザで実行することはできません。
html に組み込んでクライアントで使用することはできないため、html に組み込んで使用する人もいないです。

phpでechoを使うと、なぜかサーバーマシンのコンソールでなく、ブラウザ上に文字列が表示されますが、これは、サーバーマシンがHTML文書を作成してブラウザに送信している、ということでしょうか?

Web サーバが php に「ブラウザに返すレスポンス」を作ることを要求し、作られたレスポンスをブラウザに返すため、ブラウザ上に php が作った内容が表示されます。

たとえ話の是非

質問の後半にあるたとえ話は読んでいません。
サーバとクライアントのやり取りはリクエスト/レスポンスを見れば良いのでたとえ話は意味がないです。
個人的見解ですが、技術をたとえ話で理解するのはエンジニアとして正しい理解に結びつかないです

用語の定義

CGI とは Common Gateway Interface の略です。
「Web サーバ」と各種の外部実行プログラムをつなぐ一般的なインターフェイスです。(仕様です)
php は Web サーバにモジュールとして直接組み込んで使用することもできるので、CGI を使用しないケースも多々あります。

勝手な用語定義や勝手なイメージが前提であるため、識者との会話が成立してません。まず用語の正確な定義を知った上で質問しなければ、双方にとって時間のムダです。最初に書きましたが、体系的な知識が必要です。

投稿2019/03/19 17:38

編集2019/03/20 00:32
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/03/20 00:11

>個人的見解ですが、技術をたとえ話で理解するのはエンジニアとして正しい理解に結びつかないです この考えに一票。 先輩や熟練者がまだ右も左も分からない初心者に持ち出すのはありかなと思いますが(オブジェクト指向でよく出る車のやつとか)、まだ右も左も分かってない初心者が自分で作った例え話は自分のためにすらならないですよね。 例え話考えてる間にサンプルコードの1つや2つ動かして作り方を覚えていった方が何倍も生産的です。
退会済みユーザー

退会済みユーザー

2019/03/20 00:36

たとえ話ってまやかしだし、そもそもずれるんですよねぇ^^;
m.ts10806

2019/03/20 00:42

ずれてますね・・。今目の前にあるのは妹のパーティー会場でも何でもなくプログラミング言語とその環境でしかないんですけどね。 登場人物にそれぞれの名前を持ってきたからってただのネーミングに過ぎませんし。。
miyabi_takatsuk

2019/03/20 01:44

> 個人的見解ですが、技術をたとえ話で理解するのはエンジニアとして正しい理解に結びつかないです 僕自身、よくやってしまうので気をつけねば・・・。 プログラムって、書いた通りにしか動かないから、ログなりエラーの結果見れば、どうすればいいかわかりますもんね。例え話はむしろ無用かもしれない。
m.ts10806

2019/03/20 01:49

miyabi_takatsukさん 蛇足に蛇足が乗っかるとそれはもう本題からは大きく離れてしまうので注意が必要です。
miyabi_takatsuk

2019/03/20 01:53

> mts10806さん ありがとうございます。今後十分注意していこうと思います。
guest

0

何を聞きたいのかいまひとつ分からないので私が理解した内容で回答します。

PHPマニュアルは読まれましたか?

phpでechoを使うと、なぜかサーバーマシンのコンソールでなく、ブラウザ上に文字列が表示されますが、これは、サーバーマシンがHTML文書を作成してブラウザに送信している、ということでしょうか?

いえ。ブラウザで見るからそうなるだけです。
サーバーのコンソールに出したければサーバー上でphpコマンドで実行してください。
結局のところ、<?php ?>以外のところは全部「出力」として扱われます。
<?php ?>はechoやprintやvar_dump()などの出力を伴う処理が書かれたところのみ「出力」として扱われます。

phpはあくまで文字列を出力するだけです。
それをhtmlとして解釈するのはブラウザの機能です。

phpで何を書いたところでhtmlファイルが作成されるなんてミステリーな出来事は起きません(もちろんfile_put_contents()などでhtmlファイルを作成する処理を書いてるなら別ですが)
あくまでphpファイルに書かれた内容を実行し、出力を行っているだけです。

そのあたり、「PHPが動作する仕組み」などで調べて記事を読んだ方がいいかもしれません。ブラウザからURLを打ち込んで実行したときにどのような流れで画面出力を行っているか。

php in htmlの場合

こういうこと?

php

1<HTML> 2<body> 3<?php echo "Hello World" ?> 4</body> 5</HTML>

html in phpの場合

こういうこと?

php

1<?php 2$hoge = "Hello World"; 3 4echo <<<EOF 5<HTML> 6<body> 7{$hoge} 8</body> 9</HTML> 10EOF;

画面出力結果は同じですよね。

ブラウザにとってはどう作られているかは全く関係ありません。
あくまで下記のような出力された文字列をうけ

<HTML> <body> Hello World </body> </HTML>

htmlとして解釈するだけです。

投稿2019/03/19 12:58

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

拡張子が.phpか.htmlか、みたいな話ですか?

.phpにしろ.htmlにしろ、しょせんただのテキストファイルなんで、同じようなものです。PHPで書かれた部分をサーバ内部で処理してから送ります。.phpだとPHPで実行されているという想像がつきやすいのかもしれませんが、.htmlでもPHPで実行してからレスポンスを返すという設定は可能ですし、普通に使われます。

サーバーが持っているhtmlファイルに対して、

サーバーマシン君がインターネット回線の向こう側からフラフラとやってきて、phpの記述の部分だけ横槍を入れる形で操作してくる、
というイメージになると思います。

きっとこの部分に誤解があって、どっちの中にどっちが入っていてもPHPはサーバの中で処理されて、クライアントに送られた時点でただのHTMLのテキストに化けてる訳です。クライアントサイドPHPというものはありません(たぶんきっと)。

なので、PHPをHTMLに組み込もうがHTMLをPHPに組み込もうが本質的な違いはありません。実行のされ方は基本的に同じです。
(ちゃんとそれ用の設定がサーバで為されているのが前提です)

同じことはわかったけど、じゃあなんでPHPをHTMLに組み込むような真似をするのかって? だいたい素のHTMLで構築されているページに少しだけPHP使う機能を入れたいとなったときに、自然に書くとしたらそうなるんじゃない? というのが一つの例です。他にもいろいろあるはずですが、基本的には書く人の都合で決まると思います。


ではJavaScriptなどクライアントサイドの言語でやるのとは何が違うか?

端的にいうと、以下のような違いがあります。

  • PHPでやればサーバ内で完結する。ユーザに届くときにはHTMLになっている。何かと楽
  • クライアントにJavaScriptを送ってからJavaScriptで処理させるとサーバのデータを取ってくるために余計な通信が発生するし、通信のためのインターフェースも別途作っておかないといけない

大雑把な話としては、一度だけ表示すればよく、動的な動作がなければPHPでいいと言えます。一定時間おきに自動更新するとか、ユーザ操作に伴って表示するデータを変えるみたいな処理があるのであれば、JavaScriptで書いてサーバと通信させながら動かす他ないでしょう。

たとえ話

「ケーキ屋さん」でたとえるとして、

  • できあがったケーキを配送してくれるのがサーバサイドでやった場合(PHP)
  • 職人さんが家に来て「お宅のキッチンでケーキ作らせていただきますね!」がクライアントサイドでやった場合。そして「えっ、オーブンないと作れないんですけど」とか言われる(そういうこと言わないのが優秀なケーキ屋さんです)。「お店行って材料取ってくるんで、ちょっと待っててください」とかも言われる(クライアントサイドJSなど)

投稿2019/03/19 23:50

編集2019/03/20 00:20
hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WeilSpinor

2019/03/20 00:43

ご回答ありがとうございます。 ご説明もケーキ屋の例もとても分かりやすく、大分すっきり理解できました。感謝いたします。
WeilSpinor

2019/03/20 00:55

余談ですが、 私は分からないことがあるとガンガン質問するのですが、 こういう質問は、一部の方々には「わけのわからない質問」らしく、基礎の自学自習を促されることが多いです。 もちろん、それは分かるのですが、私には基礎ではなく応用に思えてしまうので、 それなら教科書とにらめっこするよりも質問した方が思って質問するんですが… 勉強とは難しいものですね…。
hayataka2049

2019/03/20 01:15

私はこのサイトで回答している人たちのほとんどを尊敬しているので、たぶんその一部の方々の肩を持っちゃいますけど、それ私に言って良かったんですか?(笑) ガンガン聞くのは良いと思います。私も学校では「もっとわからないことを聞け」と教わりました。ただ、無料のQAサイトでガンガン回答させるのは虫がよすぎるんじゃないでしょうか。 月数万円出せばメンターがついてサポートしてくれるというサービスとかあるので、そういうのを使うと良いと思いますよ。
WeilSpinor

2019/03/20 01:32

そうですか…。 決して頂いたご指摘に対して文句があるとか、 自分の肩を持って欲しいとかそういう話では全くなく、 初学者の勉強の仕方はどうあるべきか、その難しさ、ということについて考えていただけです。 無料で答えていただいているのですから、回答者様方には本当に感謝してもし切れません。 私は、質問の度に全てのご回答に多大なる感謝の気持ちを忘れず、有難く参考にさせていただいています。 重ねて感謝申し上げます。
hayataka2049

2019/03/20 01:51 編集

私は実際にバリバリコーディングできるレベルのweb絡みの知識はないので、今後あなたに回答する機会は滅多にないでしょう。今回回答したのは自分の知識の範囲で書けたからと、気紛れです。pythonやりたくなったらそのときはよろしくお願いします。 いつも回答してくれている皆さんに感謝しているなら、私へのコメントに書いてもしょうがないです。
hayataka2049

2019/03/20 01:50

感謝してもしきれないなら、今後は感謝しきれる程度の質問に抑えて、基礎は独学とかお金払ったメンターさんに教えてもらうとかするのが筋ですね。その言葉はもうどうしようもないことに使うもので、やらかしますがよろしくお願いします宣言とかではないのです。
WeilSpinor

2019/03/20 02:02 編集

そうですか…。 やはり、このような無料の場でガンガン質問するのは迷惑なのでしょうか…。 今後Pythonを使うようになった時など、また機会があれば、よろしくお願いします。
m.ts10806

2019/03/20 05:03 編集

横槍すみません。 > やはり、このような無料の場でガンガン質問するのは迷惑なのでしょうか…。 マニュアルやリファレンスを見れば書いてあること、検索すれば解決方法が沢山出てくるエラーメッセージ  をガンガン質問されても「いや調べればすぐじゃん」と迷惑がられることは良くあります。 「質問するときのヒント」にもあるように https://teratail.com/help/question-tips#questionTips1-2 > 調べ方のコツを知っていることも今後プログラミングをしていくうえで重用な能力の1つ だからです。 「調べ方」を聞くならまだ良いと思います。「マニュアルのここを読んで試したけど分からない、理解ができていない」とかならまだ良いと思います。 つまり「調べ方」「見方」さえ知ってればダラダラと長文で質問を書く間に解決することの方が多いです。初心者が直面する問題であれば余計にその傾向は強いですよ。
WeilSpinor

2019/03/20 05:20

ご回答ありがとうございます。 今後は調べ方にも気を使ってみようと思います。
guest

0

今はオブジェクト指向ライクなプログラミング言語になっていますが、元来PHPは作成者がHTMLに気軽に動的な処理をするために埋め込み型の簡易なプログラムを作りたいと思ってできた言語だからです。

そのためHTMLにphpを埋め込むことは本来の使い方です。

他のプログラミング言語とは作られた思想が違います。

投稿2019/03/19 23:00

ykp_yk

総合スコア654

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WeilSpinor

2019/03/19 23:14

では、phpのような応用的なものは初めに勉強すべきサーバーサイドプログラム言語ではなかったのかもしれませんね。 C言語とかJava、Pythonなどの方が良かったのでしょうか?
ykp_yk

2019/03/19 23:21

PHPは現在オブジェクト指向プログラミング言語として成長しています。 しかし、元来は上記のような思想で作られていますので、HTMLに埋め込むという使い方も間違いではありません。 > 初めに勉強すべきサーバーサイドプログラム言語ではなかった そんな事はありません。 Webにおいて初学者が学習するコストは低い方ですし、疑問に思った際に回答者も多いでしょう。 JavaやPythonでWebアプリケーションを作成するとなると環境構築で挫折すると思います。 何を作りたいのか、何を学びたいのかによりますが、Web系を最初に学ぶには悪くないと思います。
WeilSpinor

2019/03/20 01:34

そうですか。では引き続きphpを勉強していこうと思います。 ご回答ありがとうございました
ykp_yk

2019/03/20 07:51

PHPはJavaを参考にしたオブジェクト指向となっていますのでしっかり学んで身につけていくと良いと思います! 楽しみながら頑張ってくださいね!
guest

0

意見が言いたいのか質問がしたいのかいまいちわかりませんが、
もしかして、バックエンドとフロントエンドを分けた方がいいって話でしょうか?
私が本質問を見る限り、そういう話だと解釈させていただきましたので、回答させていただきます。

PHPの細かい仕様や技術的なことは、他の回答者さまが答えられておりますので、
一意見として。

バックとフロント分けた方がいいと思うなら、ご自身がそうされればよろしいのでは?

今、私が勤めている会社でも、作業の分担や、制作効率を図るために、
バックとフロントを分ける方法を模索し、検証しています。
私がまさしく今担当をさせていただいております。
うちの会社のWebサイトも、質問者さんが”よくわからない”とおっしゃるような形でWebを実装しているのが現状です。

その中で、JavaScriptフレームワークを使用し、
PHPからは、APIのみの提供をし、フロント側はそれを受け取り、JavaScriptフレームワークによって、ビューを生成するという形を模索検討しています。

ですが、様々な障害がでております。
既存のサイトに組み込む際の組み替えの難しさ、ビュー表示までの時間のタイムラグ(サーバーサイドでHTMLを渡した方が、やはり表示自体は早い。ただしレスポンス自体の速さと、サーバー負担軽減効果は大きい)、APIの作成コスト。
など様々な問題が生じているため、思うようにいっておりません。
何より、フロントエンドエンジニアに生じるラーニングコストはかなりの重荷になることが想像に難くありません。

さて、ここまでだらだら書きましたが、
とかく、PHPという言語の性質上、HTMLの中で書いていくのは、フロント側の人間としても非常にわかりやすく、
バック側フロント側でいろいろと寄り合いやすいのも事実です。
確かに、バックとフロントは分けるべきなのかもしれません。
しかし、そういったやり方が、今主流としてあるのにも、理由や原因があります。
よくわからない、間違っている、で一蹴できる話ではないと思います。

なので、
言いたいことはただ一つです。

「よくわからない、それは違うと思う」
そう言うんだったら、”黙ってご自分でそれを実装”してごらんなさいな。

SPAがいいと思うなら、そうすればいい。
バック側はAPIを提供するだけの方がいいと思うならそうすればいい。
意見を言いたいなら、やる前から、それがよくわからないままのうちにものを言う前に、
まずやってみてはいかがですかね。
だって、そうしないと、何が難しく、何が問題で、
なぜ、現状は世にPHTML的なものの方が多いのかがわからんでしょうに。

以上です。
長文失礼しました。

投稿2019/03/19 15:41

miyabi_takatsuk

総合スコア9528

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WeilSpinor

2019/03/19 16:14 編集

ご回答ありがとうございます。 意見を言いたかったのではなく、こんがらがって理解ができなくなってしまったので質問しました。 プログラミング初心者としては、 「バック(CGI)とフロント(WEBページ、つまりUI)は別れているもの」 という自然な認識しかないんです。 ですから、「フロントであるhtmlにphpのバックプログラムの一部を組み込んでしまう」 というのは、 プログラミング初心者からすると、 『基本形を崩したトリッキーな高等テクニック』なんです。 なのに、初心者向けの本やサイトのの最初の方から、「phpはhtmlに組み込むことも出来るんです」とか出てきて、 以後当たり前のように例題のサンプルコードでこの変則型テクニックを多用しているので、 混乱が生じて、 「え?HTTP通信の基本形と矛盾しない?」 「CGIってバックエンドの作業をやってくれる窓口のことだよね?どうしてhtmlに書かれてるの?」 と、知識の整理がつかなくなってしまうんです。 (意見があるとすれば、こういう説明の順番の悪さなどでしょうか?) でも、サーバーの負荷を取るか、ブラウザの負荷を取るか、開発している人達の連携の取りやすさなど、 プログラミングそのものを超えたさまざまな事情に合わせて、そのように色々やり方があるのか、というのはわかった気がします。 どれも正解、不正解はない。 ただ、初心者の学習としては、初めからいきなり「基本形を崩したやり方」で色々進められると、わけわからなくなってしまうんです…。 (せめて、世の初心者向けの解説記事には、トリッキーなことをするなら、その理由について触れてほしいものです……まぁ、私のリサーチ能力不足かもしれませんが)
miyabi_takatsuk

2019/03/19 16:19

なるほどですね。 確かに、PHPとHTMLは混同して存在しているのが現状で、 時には、それが、わかりずらさを生んでいるのは事実でしょう。 しかし、正直、Webというもの自体が、様々なものの集合体であり、トリッキーな存在であると思います。 その存在をコントロールするには、時にトリッキーな方法が正解で、マッチする場合もあるのかなと思いますよ。 > でも、サーバーの負荷を取るか、ブラウザの負荷を取るか、開発している人達の連携の取りやすさなど、 > プログラミングそのものを超えたさまざまな事情に合わせて、そのように色々やり方があるのか、というのはわかった気がします。 この部分はとても重要です。 自分一人でやるなら、好きな方法をとっても大丈夫でしょう。 しかし、引き継ぎや、多人数での開発では、人が見てわかるものであることや、 実際にユーザー側で表示された時、どう見えるか、など様々なことを考えねばなりません。 一長一短に一気にやろうと理解しようと考えず、 一歩ずつやってみてはいかがでしょうか。 PHPで何ができるのか、フル活用すべきなのか、 静的HTMLではどこまでできるのか、 JavaScriptは何をすべきで、何をしてはいけないのか、 少しずつ勉強していってはいかがですかね。 ただ一つ、JavaScriptは何をしてはいけないのか、これだけは、重々調べ、考えていくべきでしょう。 なんせ、ソースコードを簡単に覗けますからね・・・。 セキュリティもクソもありませんからね。 だったら、最初からPHPで出力した方が、セキュリティ的にはるかに良かったりする場合があるんです。 頑張って学んでいっていただければと思います。
WeilSpinor

2019/03/19 16:25

もちろん、黙って自分で思ったように実装するつもりで進めていたのですが、 そのためにはphpのコマンドやらなんやらを調べる必要があり、それには教材が必要で、 みた教材では当たり前のように変則形式を取っていたので、 わけがわからず、この質問に至りました。 余談ですが、 いま自分なりの簡易なログインシステムを考案して作っている(このphpの勉強もそれの一環)のですが、 そちらの方でも、 車輪の再発明的な方式で学習しています。 それで、なにか不便性や、新しいアイデアの必要性を感じてから、 cookieやさセッションやらの概念を勉強する。 それが一番身につきやすい能動学習だと思うもので…。 ただ、なかなかその勉強方式って実行が難しくて、その方式でやるなら師匠の存在が必要な気がします…。 (他の方々には「効率が悪すぎる。普通に勉強したほうがいい」と批判されることもあります)
WeilSpinor

2019/03/19 16:31

ご返信ありがとうございます。 おっしゃる通り一歩ずつ理解するのが良いと思い、教材を読み通すのではなく、 疑問を持ったものや興味のある項目、今の目的に合致しそうな項目だけをつまみ食い的に読んだりしています。
miyabi_takatsuk

2019/03/19 16:40

そうか、質問者さんは、 きっと、 炊飯ジャーでご飯ができると説明書に書いているが、 本当にあってるのか、正しいご飯の作り方なのか?と迷っている。 ってタイプのように思います。 例えがあれですみませんが・・・。 新しいアイディアが浮かぶのはとても素晴らしいことだと思います。 でも、それって、実現するには、基本をマスターしてからだと思います。 アイディアは知恵です。 技術・基本は知識です。 知恵と知識を、ポンプに例えると、 ポンプは知識、知恵はそれによってくまれる水です。 つまり、知恵をアイディアを実現したいなら、まず基本と技術、知識をつけていくことが大事ってことです。 まずは、疑問やアイディアはあろうが、それはメモでもしておいてとっておいて、 まずは本に書いてある通りに全部作って、基本の知識と技術をつけていきましょう。 そうすることによって、よりよいアイディアも浮かぶようになるもんですよ。 知識をつけるうちに疑問も解決するかもしれません。
WeilSpinor

2019/03/19 22:06 編集

ご回答ありがとうございます。 自分は、炊飯ジャーで米を炊いたり、料理することに関しては、何も考えずに説明書通り覚えてやりますが、 でもプログラミングの場合は料理と違って、「各部分の処理がどうしてこうなっているか、なぜここはこのような機能を採用しているのか、説明出来ること」が求められるように思います。 そしてプログラムを理解するには、 「自分は今何を実現したくて、最低限なにができればいいのか」という大局的な骨格を理解した上で、 各工程の意味をちゃんと説明できる必要があります。 その際に、なぜそれが採用されているのかよく分からない、新しい概念や手法が出てきます。 (例えば、ログインでいえばcookieやセッションなどの概念) そういう新しいよく分からない概念や手法を学ぼうとすると、ただ机上で教科書を読んで勉強しても理解は難しいと思っていて、 「それの必要性にぶち当たる、出会いの体験」という『きっかけ』があって初めて、しっかりと(しかもすんなりと)理解出来て、記憶にも残りやすくなると思うんです。 ですから、自分は学習の際、その『出会いの体験』をできるやり方を工夫した学習法を考えています。 それは、教科書は脇に置いて、 「まず自分なりに仮説を立てて考えてみる」 「自分が実現したいシステムを、自分なりに仕組みを考えて設計して、プログラムを作ってみる」 というやり方です。 後から教科書や質問を通して修正したり、もっと上手いやり方を知ったりする中で、新しい概念の存在を自然に感じられるようになるんです。 「そんな車輪の再発明みたいなことしなくても、教科書などで覚えた方が早い」 「そういうのは、基本の知識や技術をしっかり身につけてからやること」 ということだと思いますが、 おそらく私は人よりワーキングメモリや理解力が貧弱なようで、 その『基本の知識や技術』を理解する段階でも、ストーリーとか手順とか、そういった部分に工夫が必要だと思っています。 皆さんのおっしゃる『基本型』が、 私からみると、 「途中の素朴な理解の筋道をすっ飛ばした超応用テクニック」 ばかりに見えてしまうので、 私には、このような少し回りくどいやり方の方が合っているのかもしれません。 とはいえ、こういう勉強の仕方って、 「頭が硬くなり新しいものを受け入れにくくなったお年寄りが、今までの自分の経験と擦り合わせて理解する方法」 に似ている、というのがあって、 それによって理解のスピードが上がるメリットもあるのですが、 自分の殻に閉じこもって頭が硬くなってしまいがちというデメリットもあるので、 気をつけるべきかもしれません。
guest

0

サーバーマシン君がインターネット回線の向こう側からフラフラとやってきて、phpの記述の部分だけ横槍を入れる形で操作してくる、

というイメージになると思います。

なりません。サーバがやってきたりはしません。サーバにあるリソースを取りに行く(リクエスト)に対してwebサーバ(apache)が、リクエストに応じて(多くの場合拡張子で判断して)phpに処理を移譲し、phpが(htmlであれphpであれ)処理した結果を返す。
jsはその中に書かれている文字列は、ブラウザのjsエンジンが解釈しはじめて動くもので、フェイズとしてもサーバ側スクリプトとクライアント側スクリプトの動くタイミングは全く別です。

「phpの内部でhtmlタグを宣言すると、htmlファイルが作成され、それがブラウザに送信される」

http://sub.domain.com/file.phpというアクセスをしたとき、webサーバ(apache)が、一定のルールで特定のフォルダに保存されている、file.phpを取得し、返そうとします。このとき、file.phpをそのまま返すのではなく、これもapacheの設定にある一定のルールによりphp.exeにソースコードとしての処理を任せます。
結果として、出来上がったものが、htmlなのかjsonなのかはphpのコード次第です。htmlとして送るかjsonとして送るかはレスポンスヘッダに記載があるので、ブラウザはそれをそういう文書として受け取ります。

投稿2019/03/19 14:32

編集2019/03/19 14:32
papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

>html in phpの場合
print で指定された文字列がそのまま html になります。

>php in htmlの場合
php の外に記述されたものがそのまま html になります。

どちらで書いても同じ結果に、同じ動作になります。

つまり、print で html を長々と書くと見ずらいので
php の外に書いた方が見やすいって場合によく使います。

投稿2019/03/19 12:51

iruyas

総合スコア1067

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問