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

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

ただいまの
回答率

88.58%

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

解決済

回答 7

投稿 編集

  • 評価
  • クリップ 3
  • VIEW 4,506

WeilSpinor

score -34

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2019/03/20 06:06

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

    キャンセル

  • WeilSpinor

    2019/03/20 07:27

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

    キャンセル

  • m.ts10806

    2019/03/20 07:36

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

    キャンセル

  • 退会済みユーザー

    2019/05/08 17:00

    複数のユーザーから「問題・課題が含まれていない質問」という意見がありました
    teratailでは、漠然とした興味から票を募るような質問や、意見の主張をすることを目的とした投稿は推奨していません。
    「編集」ボタンから編集を行い、質問の意図や解決したい課題を明確に記述していただくと回答が得られやすくなります。

回答 7

+12

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

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/20 10:44

    > 個人的見解ですが、技術をたとえ話で理解するのはエンジニアとして正しい理解に結びつかないです

    僕自身、よくやってしまうので気をつけねば・・・。
    プログラムって、書いた通りにしか動かないから、ログなりエラーの結果見れば、どうすればいいかわかりますもんね。例え話はむしろ無用かもしれない。

    キャンセル

  • 2019/03/20 10:49

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

    キャンセル

  • 2019/03/20 10:53

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

    キャンセル

+7

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

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の場合

こういうこと?

<HTML>
<body>
<?php echo "Hello World" ?>
</body>
</HTML>

html in phpの場合

こういうこと?

<?php
$hoge = "Hello World";

echo <<<EOF
<HTML>
<body>
{$hoge}
</body>
</HTML>
EOF;

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

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

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


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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

+4

拡張子が.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/20 11:01 編集

    そうですか…。
    やはり、このような無料の場でガンガン質問するのは迷惑なのでしょうか…。

    今後Pythonを使うようになった時など、また機会があれば、よろしくお願いします。

    キャンセル

  • 2019/03/20 13:57 編集

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

    だからです。
    「調べ方」を聞くならまだ良いと思います。「マニュアルのここを読んで試したけど分からない、理解ができていない」とかならまだ良いと思います。
    つまり「調べ方」「見方」さえ知ってればダラダラと長文で質問を書く間に解決することの方が多いです。初心者が直面する問題であれば余計にその傾向は強いですよ。

    キャンセル

  • 2019/03/20 14:20

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

    キャンセル

+3

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/20 08:14

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

    キャンセル

  • 2019/03/20 08:21

    PHPは現在オブジェクト指向プログラミング言語として成長しています。
    しかし、元来は上記のような思想で作られていますので、HTMLに埋め込むという使い方も間違いではありません。

    > 初めに勉強すべきサーバーサイドプログラム言語ではなかった
    そんな事はありません。
    Webにおいて初学者が学習するコストは低い方ですし、疑問に思った際に回答者も多いでしょう。
    JavaやPythonでWebアプリケーションを作成するとなると環境構築で挫折すると思います。

    何を作りたいのか、何を学びたいのかによりますが、Web系を最初に学ぶには悪くないと思います。

    キャンセル

  • 2019/03/20 10:34

    そうですか。では引き続きphpを勉強していこうと思います。

    ご回答ありがとうございました

    キャンセル

  • 2019/03/20 16:51

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

    キャンセル

+2

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

サーバーマシン君がインターネット回線の向こう側からフラフラとやってきて、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として送るかはレスポンスヘッダに記載があるので、ブラウザはそれをそういう文書として受け取ります。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

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

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

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

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

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

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

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

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/20 01:31

    ご返信ありがとうございます。

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

    キャンセル

  • 2019/03/20 01:40

    そうか、質問者さんは、
    きっと、
    炊飯ジャーでご飯ができると説明書に書いているが、
    本当にあってるのか、正しいご飯の作り方なのか?と迷っている。
    ってタイプのように思います。
    例えがあれですみませんが・・・。

    新しいアイディアが浮かぶのはとても素晴らしいことだと思います。
    でも、それって、実現するには、基本をマスターしてからだと思います。
    アイディアは知恵です。
    技術・基本は知識です。
    知恵と知識を、ポンプに例えると、
    ポンプは知識、知恵はそれによってくまれる水です。

    つまり、知恵をアイディアを実現したいなら、まず基本と技術、知識をつけていくことが大事ってことです。
    まずは、疑問やアイディアはあろうが、それはメモでもしておいてとっておいて、
    まずは本に書いてある通りに全部作って、基本の知識と技術をつけていきましょう。
    そうすることによって、よりよいアイディアも浮かぶようになるもんですよ。
    知識をつけるうちに疑問も解決するかもしれません。

    キャンセル

  • 2019/03/20 06:37 編集

    ご回答ありがとうございます。

    自分は、炊飯ジャーで米を炊いたり、料理することに関しては、何も考えずに説明書通り覚えてやりますが、

    でもプログラミングの場合は料理と違って、「各部分の処理がどうしてこうなっているか、なぜここはこのような機能を採用しているのか、説明出来ること」が求められるように思います。

    そしてプログラムを理解するには、
    「自分は今何を実現したくて、最低限なにができればいいのか」という大局的な骨格を理解した上で、
    各工程の意味をちゃんと説明できる必要があります。

    その際に、なぜそれが採用されているのかよく分からない、新しい概念や手法が出てきます。
    (例えば、ログインでいえばcookieやセッションなどの概念)

    そういう新しいよく分からない概念や手法を学ぼうとすると、ただ机上で教科書を読んで勉強しても理解は難しいと思っていて、
    「それの必要性にぶち当たる、出会いの体験」という『きっかけ』があって初めて、しっかりと(しかもすんなりと)理解出来て、記憶にも残りやすくなると思うんです。

    ですから、自分は学習の際、その『出会いの体験』をできるやり方を工夫した学習法を考えています。

    それは、教科書は脇に置いて、
    「まず自分なりに仮説を立てて考えてみる」
    「自分が実現したいシステムを、自分なりに仕組みを考えて設計して、プログラムを作ってみる」
    というやり方です。
    後から教科書や質問を通して修正したり、もっと上手いやり方を知ったりする中で、新しい概念の存在を自然に感じられるようになるんです。

    「そんな車輪の再発明みたいなことしなくても、教科書などで覚えた方が早い」
    「そういうのは、基本の知識や技術をしっかり身につけてからやること」
    ということだと思いますが、

    おそらく私は人よりワーキングメモリや理解力が貧弱なようで、
    その『基本の知識や技術』を理解する段階でも、ストーリーとか手順とか、そういった部分に工夫が必要だと思っています。

    皆さんのおっしゃる『基本型』が、
    私からみると、
    「途中の素朴な理解の筋道をすっ飛ばした超応用テクニック」
    ばかりに見えてしまうので、
    私には、このような少し回りくどいやり方の方が合っているのかもしれません。


    とはいえ、こういう勉強の仕方って、
    「頭が硬くなり新しいものを受け入れにくくなったお年寄りが、今までの自分の経験と擦り合わせて理解する方法」
    に似ている、というのがあって、
    それによって理解のスピードが上がるメリットもあるのですが、
    自分の殻に閉じこもって頭が硬くなってしまいがちというデメリットもあるので、
    気をつけるべきかもしれません。

    キャンセル

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

  • ただいまの回答率 88.58%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る