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

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

ただいまの
回答率

90.38%

  • PHP

    25097questions

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

  • プログラミング言語

    773questions

    プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

  • 関数

    270questions

    関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

根本的な質問ですが、プログラムの「なんとか関数」 の仕組みが分かっていないので教えてほしい。

解決済

回答 10

投稿 編集

  • 評価
  • クリップ 3
  • VIEW 1,045

brainfog

score 2

私は今まで「なんとか関数」を記憶してプログラミングを行ってきました。

最近、職場に未経験の新人が入ってきて、「関数とは?」「メソッドとは?」
「クラスとオブジェクトの違いとは」・・・など根本的なことを聞かれたのですがハッキリと言うことができませんでした。

”私の仕事はWEBエンジニアです"
よく他人にこう言ってきたのに、こんな初歩的な質問にすら答えられない。

焦りと恥ずかしさから、もうウェブエンジニアを名乗るのを辞め、脳死コーダーと名乗ろうかと本気で考えたぐらいです。

話が逸れましたが、「なんとか関数(echoとかstringとか)」を書いたらなぜ効くのか、なぜ動くのかを
理解していないので、「書けば動く!覚えろ!」としかアドバイスできなかったのだと思います。

例えば、echoを書いたら裏でこうなって、こういう処理があって、だから出力されるんですよ

みたいな風に、根本から教えられるようになりたいです。

そのため、"なんとか関数"の根本的な仕組みを教えて頂けるとありがたいです。

_______
なんとか関数は組み込み関数のことでした。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • 退会済みユーザー

    2018/12/13 11:57

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

回答 10

checkベストアンサー

+14

私は若い頃「コンパイラの中身」がどうなっているのかとても知りたいと思いました。コンパイラこそがプログラミングの根源だと思ったからです。実際はそうでもなかったとあとで気づきましたが。
で、どうしたかというと、自分でコンパイラを作りました。まだインターネットのない頃でしたが、コンパイラの本は何種類もあるので、10冊以上買って読みました。自分で手を動かして、非常に小さなものから、少し大きめのものまでいくつも作りました。
最近では、非常に趣味的ですが、以下のものを作りました。

秀丸マクロを生成する秀スクリプトという言語処理系を作った

現在仕事でコンパイラを作ることはありませんが、「コンパイラの中身の勉強」は現在の仕事にも、間接的に役に立っています。私はソフトウェアの脆弱性を扱う仕事ですが、脆弱性の中には、コンパイラの動作の原理を知っていないとわからないものも多いです。

しかし、コンパイラの中身の原理を知らなくても、プログラミング言語は使うことができます。echo(厳密には関数ではない)の中身を知らなくても、echoを利用することは容易です。

そして、そのこと自体がプログラミングの本質だと思うのです。echoはブラックボックスであり、中身の動作原理をわからなくても使うことができる。だからこそ、echo等多数の機能や関数を使った巨大なプログラムを作ることができるのです。

だから、他の方も言っておられるように、ブラックボックスの中身を知ることには、あまりこだわらなくてもいいと思います。私も、echoの中がどうなっているかは知りません。だいたいこうだろうなと見当はつきますが、詳細を知る必要もないことなので、詳しく知ろうとは思いません。

一方、「中がどうなっているのか知りたい」という知的好奇心は、エンジニアとして大成する上でとても重要なものです。その気持は大切になさってください。ただ、ご質問はteratailのQ&Aで回答できるような小さなものではありません。かつて私がしたように、書籍その他の方法で勉強されるのがよいと思います。

10行で回答された内容は、所詮は 10行程度の価値でしかありません。そのようなちんけなものを求めているのではないと理解しました。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/12/13 12:31 編集

    組み込み関数の動作原理はブラックボックスのようになっており、
    理解するには言語仕様にまで突っ込まないと難しい。

    私も理解していないが、プログラミングは出来るし、仕事も問題なくこなせている。

    そのため、ブラックボックスの中身を知ることにあまり拘らなくても
    問題ない。

    専門知識がない中でブラックボックスの中身を空けるのは、子供が玩具を分解する心理と同じだ。その好奇心は素晴らしいし、エンジニアとして大成するのには重要なものだが、今やるべきことではないと言っておきます。

    キャンセル

  • 2018/12/13 13:17

    言語仕様はブラックボックスでもなんでもないので知っといてください。

    キャンセル

+9

どこが根本的な質問?かはさておき

「人間はどうやって生きていられるのか」「空はなぜ青いのか」
と同類の質問の仕方だと思います。
もちろん理由はきちんとあるにはあるのですが(知るのも説明するのもかなり困難ですが)、それを知ってどうしたいの?
というところを考えた上で質問させてください。
そこまで気にしながら生きている人間は大人にはそうそういないのと同じように、そこまで気にして開発に携わっている技術者もいません。

まあ知ったところでその関数やら機能を使えることにはならないのですが(どういう効果をもつか持つか、サンプルコードならPHPマニュアルにあるし大抵はそれで事足りるから)、
もし「自分も言語を作りたいのだ」というのでなければ、頓珍漢なことを聞いているのだと気づかせてあげる必要がありますし、本当にそう思ってるなら言語の開発者のもとに務めるようにすすめてください。
それかPHP自体はC言語で作られているのでそのC言語のソース(公開されてますので探せばすぐ見つかるはず)を読むように言うか。

いずれにしてもQAサイトで「ちょっと教えてよ」で済む話ではないですね。
失礼を承知で言うとこの質問自体も場所を間違えてます。

まあ、私なら
興味を持つのは結構だけど多少でも一人前にコード打てるようになってから言えと、追い払いますけど。(私もCのソースほとんど読んだことないですけど)
自分の仕事もその新人の仕事も進みませんし、一文のお金にもなりませんし。 
所謂、言語を取り扱う開発者、技術者は利用者であって研究者ではありません。

このあたりで気づいてもらえたらいいのですが、つまり

”私の仕事はWEBエンジニアです"
よく他人にこう言ってきたのに、こんな初歩的な質問にすら答えられない。
焦りと恥ずかしさから、もうウェブエンジニアを名乗るのを辞め、脳死コーダーと名乗ろうかと本気で考えたぐらいです。 

あなたはエンジニアとしてやってきてるので何の問題もありません。
初歩でもなんでもないので。


ちょっと回答の方向性ずれてたかもしれないので追記。

雰囲気からOJTでの指導を行っていてあなたはその先輩側のようですが、OJTにもルールはあります。
Wikipedia:OJTの「OJT概史」の4つのステップより

2.作業をして見せる - 注意深く、根気よく、説明し、見せ、図示し、そして質問する。キーポイントを強調すること。一度に1点ずつ、はっきりと完全に教えること、しかし彼らがマスターできる限度を超えてはいけない。

既に別回答についていますけど、その新人君はそこまで求めてるんでしょうか。
私も単に使い方や意味(どういう場面でどのように使えるか)くらいのものだと思うのですが・・・
もしその求める範囲を超えていたり離れていることを教えようとしているのだとしたら、
あなたも新人君も共倒れになるので今すぐ軌道修正してください。
PHPマニュアル読ませてその効果を実感できそうなちょっとした課題でミニマムコード組ませるだけで終わるかもしれないですよ。
※もちろんあなた自身がそれができる前提。もしできそうにないのでしたら新人君が見ていないところで猛勉強してください。

蛇足。

「なんとか関数(echoとかstringとか)」

かなり細かいですがechoはPHPマニュアル的にはfunctionの中にありますが、実際は関数ではないですし、
PHPマニュアルより:echo は実際には関数ではありません (言語構造です)。このため、使用する際に括弧は必要ありません。
stringに至っては型なので「関数」として括るのは無理があります。(文字列操作系の関数を総合して仰っているなら表現は正確にすべきです)
そのあたりの用語と用法をしっかりすると見えてくることもあるのではないでしょうか。
間違った知識や技術を教える前にあなた自身がやれることはたくさんあります。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/12/13 05:42

    いっそのこと「そういう風に動くように設計されて作られてるから」で逃げてもいいですけどね。
    これがフレームワークの機能ならまだ追う価値はありますしそれこそコード読み進めるのも勉強になって役に立つこともあるでしょうけど、言語仕様のこととなるとまた違う領域の話。

    キャンセル

+8

echo を使うと裏で加工されて適切にエンコードされ、標準出力に出力され、OS を経由して HTTP サーバーに渡され、ネットワークを通じてクライアントに渡され、ブラウザによってデコードされて構文解析され、レンダリングして OS とデバイスドライバを通して画面に描画されます。だから表示されるんですよ。TCP/IP のパッケージ処理とか色々省きましたが、大まかにこんなところです。

ただ、その後輩はそんな答えは求めていないと思います。

先輩から「何とか関数を使え」って言われたら私でも「何とか関数って何ですか?」って聞きます。

先輩と自分が違う言葉をしゃべっていたのでは話が通じませんから、まず独自の言葉を作るのをやめて正しい用語を使ってください。

裏でどう動いているかなんてどうでもいい場面です。「関数とは」と聞かれたら、たとえ知っていても自分のイメージを語るのではなくその場で調べ、それを後輩とともに読んで共通認識を作ってください。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/12/13 06:13

    自分の回答の視点がちょっとずれてたのに気づかされました。
    質問者さんの先走りでしたね。

    キャンセル

  • 2018/12/13 06:20

    シミュレーションします。

    「関数って何ですか?」
    「PHP では関数を使って処理の単位を作るんだよ。ちょっと待ってね。こんな時は『PHP 関数』で調べると、http://php.net/manual/ja/language.functions.php ほら出た。大まかにユーザー定義関数とビルトイン関数があるね。一つ一つ見ていこうか」

    キャンセル

  • 2018/12/13 06:26

    分かりやすい。
    そしてキリがない^^;
    OJTの方向性がずれていって上司に怒られるパターンだ

    キャンセル

  • 2018/12/13 06:29

    そうですね。どこで切り上げるか、どこまで宿題にするかが問われますね。
    その辺りは目の前に質問者がいれば質問サイトよりやりやすいとは思いますが……

    キャンセル

+7

「関数とは?」「メソッドとは?」「クラスとオブジェクトの違いとは」

「なんとか関数(echoとかstringとか)」を書いたらなぜ効くのか、なぜ動くのか

は問題のレイヤというか在り処というか質というか、みたいなものが違うと思いますが、その違いは認識できていますか。

前者はしょせん振る舞いと言葉の定義の問題なので、入門書とか仕様書を読めば答えが得られる質問です。

後者は、とりあえずソフトウェアのレイヤに限るとしてもインタプリタ、ソケット通信、OSあたりの各レイヤで(もっとあると思いますが、思いついたのを)どんな処理がされるのかを問うている訳で、とても大変な問題です。普通の「エンジニア」は明確には答えられません。
(エンジニアは自分の仕事に直接関わる領域だけ詳細に理解していて、あとはその周辺をなんとなく雰囲気で知っている……という形で理解しているのが普通です。なので、たとえば言語のエンジニア、ソケット通信のエンジニア、OSのエンジニアの3人を呼んできてそれぞれ話を聞けば答えが得られるかもしれません(実際問題、そんなに単純なものでもありませんが))

前者を聞いた新人は分をわきまえているというか、とりあえず答えられる質問をしています。teratailで聞いても直接的な回答がつくと思います。
(低評価がたくさんついた挙げ句、「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典とかが貼られそうではありますが(要するに「ggrks」「そんな面倒くさいことをQAサイトで他人に書かせようとするな」ということ))

質問者様はなぜ後者の、

「なぜ効くのか、なぜ動くのかを理解していないので、「書けば動く!覚えろ!」としかアドバイスできなかったのだと思います」

という発想に飛んだのでしょうか。

心情的にはわからなくはありません。「よくわからないものは分解してみると仕組みを理解できてわかるようになる」みたいな。子供が玩具を分解する心理ですね。

ただ、分解して仕組みがわかるのは作りが単純なものだけで、今どきの玩具を子供が分解しても緑色の基板が出てきて「なんだ、いくら眺めても仕組みがわからない、ダメだこれ」となるのがオチだと思います。

なので、そのアプローチは一回封印した方が良いです。


ところで以前の質問では確かwebデザイナーと名乗られていましたが、違うんですか?

「コーディングも多少できるwebデザイナーです」って名乗れば、それで良い気がするのですが。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/12/13 12:36

    書けば動く。

    この単純明快な問いでは納得してなかったので、おそらく質問の問いが欲しいものだと思います。

    キャンセル

  • 2018/12/13 12:45 編集

    であれば、「君の疑問はもっともだが、とりあえず最初のうちはそういうものだと思い込んで覚えた方が良い」とできるだけ丁寧な説明で伝えてあげてください。その根拠とか理由付けとかはこの質問の回答でいろいろ上がっていると思うので、噛み砕いて理解した上で、「説得」してあげてください。
    あと、質問者様ご自身のレベルをちゃんと相手に理解させること。実力以上に有能だと思われても、あまり良い結果は生みません。むしろ「俺もそんなのわからないけど使えてるから大丈夫だよ~」とか言った方がベターかもしれません(知ったかぶりするよりは相対的にまし、という意味。決してベストな指導ではない)。

    キャンセル

  • 2018/12/13 12:46 編集

    >brainfogさん
    さすがに気になったので横からすみません。

    それって「いいからやれ」って言ってるのと同じじゃないですか。そりゃ誰でも納得しませんし反発すら生まれます。
    なぜその機能がそこで必要なのかどういう効果を得られるのかを説明すればいいだけです。
    指導側の問題です。
    「おそらく」と不確定な自己判断するのではなく「どういう話をしてほしい?」と聞けばいいのでは?
    hayatakaさんも「謎の見栄張らないで」と書いてくれてるのはまさにそこですよ。
    先輩が全知全能でないことは誰でも分かってます。もしすっ飛んだ解説が返ってきたら不信感が加速するだけなのでそのあたり擦り合わせるのは必須ですし、コミュニケーションのとりかたの指導にもなります。

    キャンセル

+6

php の根本的な事が知りたいのであれば、マニュアルが網羅的です。
PHP マニュアル

合わせて
PHP: The Right Way 
の内容が説明できれば、新人に説明する程度には十分だと思います。

質問内容の修正に伴っての補足というか蛇足
コンピュータの世界って、関連する技術が非常に広い範囲にわたるので、先人達は「なんとか責務を分解しよう」と工夫してきました。ワリと大きな区分としては「OSI参照モデル」や、プログラミングの世界では「オブジェクト指向」とか。これらは、隣接した内容すら内部詳細を知らなくても良いように、利用の手続きのみを公開し詳細は隠蔽してしまいます。

少し複雑なことを行おうとすると、内部詳細を確認していく必要が発生しますが、新人に内部詳細の調査方法を伝えるのは先人の知恵に逆らうことになります。逆に「知らなくて良いための方法が提供されている」ことと「知らなくて良い仕組みの作り方」を教えてあげることが、先輩の役割になると思います。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/12/13 01:31

    PHPの公式ドキュメントは分かりやすいですよね。

    質問内容が悪かったと思います。
    echoとかstringがなぜ効くのか、なぜ動くのか そういうことが聞きたくて質問しました。

    キャンセル

  • 2018/12/13 01:50

    ソース読めばいいと思うけど、多分その先も学ばないと意味ないです。
    後輩に教える教え方としては、非常にズレた感覚だと思います。

    キャンセル

+5

あなたが知らない事は教えなくて大丈夫。
だって知らなくても仕事に差支えは無いって事ですから。
早くに戦力になってもらうには無駄を排除するのも必要ですから、仕事に必要のない事を教えるのは非効率というものです。

ただ、質問してくるというのは好奇心の現れですから、それを阻害しない指導に腐心されてはどうですか。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/12/13 12:05

    確かに、言われてみればそうですね!

    説明できない私でも業務はこなせているので
    今の教え方で問題なく身に付けさせることができそうですね

    キャンセル

+4

学習法は2種類あるといわれます。

  • ボトムアップ式 (詳細情報を各個撃破で覚えていく)
  • トップダウン式 (全体像を掴んでから、詳細を覚えていく)

その新人は典型的なボトムアップ型だと思いますが、ボトムアップは各個撃破する前にその前提となる知識を積み重ねている必要があります。
「メソッドとは?」と質問するなら、「関数」の知識が必要ですし、「クラスとオブジェクトの違いとは?」なら、データ型や変数の知識が前提になります。

まず、質問者に対し、「自分が理解している範囲を相手に共有する必要性」と「質問の意図をめいかくにする重要性」を伝えて実践させて下さい。
その上で「理解している部分」「理解できない部分」を明確にすれば、容易に説明出来ると思います。
取り上げられた質問はあまりにも端的すぎて、回答する為の情報が足りていません。

前提知識があまりにも欠如しているなら、質問の解消を保留して、前提知識を一つずつ学習させて下さい。
(※特に初心者は「仮定に仮定を積み重ねて覚えているケース」が多く、仮定で思い込む考え方を改めさせる必要がある場合があります)

Re: brainfog さん

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/12/13 12:52

    回答を書いている間に解決したようですが、質問者との対話が足りてないのが大きな要因だと思います。
    「~とは?」の質問だけで意図をくみ取って回答するのは早計に思います。

    キャンセル

+3

PHPの入門書を読む(読ませる)のが良いんじゃ無いでしょうか。
ただ、近頃の若者は本を読めない(文章の意味を読み取れない)人も多いらしいので、無理かも。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/12/13 01:36

    質問を訂正しました。
    申し訳ありませんが、再読していただけると助かります。

    お手数をお掛けしますが、よろしくお願いします。

    キャンセル

+3

質問者はすごく違う方向に行っている印象です。

例えば子供にテレビの使い方を教えるときには「チャンネルリモコン」の使い方を教えると思います。

子供には
「1から12くらいのボタンがあって、押したボタンに対応したチャンネルになる」
ことを教えればいいですよね。
「なぜリモコンの1のボタンを押したらそのチャンネルになるのか」
「そもそもリモコンでなぜ離れたテレビが操作できているのか」
とかは子供にとってはどうでもいいと思います。無意味とまではいいませんが理解の有無で結果が変わらず影響を与えられないですし、それが正しいかどうか証明することもほぼ不可能なので不毛です。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/12/13 12:10 編集

    わかりやすい例えですね。

    現在の私の状況を付け加えると、私はテレビメーカーのエンジニアで、子供が
    「パパ、チャンネルってなんで効くの?」
    「リモコンを押したら、なんでテレビの放送が切り替わるの?」

    と聞かれたとき「押したら効く。」とエンジニアでない人でも出来る回答をしてしまって
    子どもの知的好奇心を削いでいる状況です。

    そして、それで私はこれからエンジニアと名乗っていいものかと
    自分自身に疑問を持っているのが今の現状です。

    キャンセル

  • 2018/12/14 10:10

    私は「パパ、チャンネルってなんで効くの?」と聞かれて
    「リモコンを押したら効く。」といっているのではなく
    「テレビの使い方を教えて?」と聞かれたときに
    「リモコンを押したら効く。」といえばいいのでは?と言っています。

    WEBエンジニアの後輩に「WEBプログラムはどうすれば作れますか?」
    と聞かれれば「関数やらなんやらを覚えて使え」でいいです。
    「そもそも関数ってなんですか」と聞かれれば
    「そんなもんは知らん、興味があるなら自分の時間で調べて」でいいです。

    大工さんがかなづちや釘の製造方法を知る必要がないように
    自分が使うものは使えればいいのであって知っている必要はないというのが
    私の考えです。

    キャンセル

0

関数は、プログラムを塊にしたもの。

ちなみに、echo は関数じゃないです。ステートメントと言います。
何れにしてもステートメントも、ビルトイン関数も、誰かが、動く様に作ってくれてるから、動くのです。効くのです。

クラスもオブジェクトもオブジェクト指向の用語だけど、同じ。

慣用的に、オブジェクトの定義をクラスと言って、
クラスをインスタンス化したものをオブエジェクトと言う方が多いかも。

クラスの中に書いたfunctionを、メソッドというだけ。

メソッドを、クラスの中の関数と言うと笑う人は居るけど
functionで定義するんだから関数なのですよ。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

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

  • PHP

    25097questions

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

  • プログラミング言語

    773questions

    プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

  • 関数

    270questions

    関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

  • トップ
  • PHPに関する質問
  • 根本的な質問ですが、プログラムの「なんとか関数」 の仕組みが分かっていないので教えてほしい。