もじれつとがめん

プログラムの忘備録とゲームとかその他色々。

hogehogeという文化について

hogehoge についてもっと説明がほしい!

プログラムでよく見かける"hogehoge"だけど、これについてキチンと初学者に説明したほうがいい気がする... これはプログラムを触る人にとってある種の常識なのだから。 (とはいえ、僕自身もうまく概念を説明できないでいる)

hogehoge という文化について

僕達プログラムを触る人にとって、何かしら技術的な問題に詰まって検索したり、Qiita、個人ブログをみたりしてサンプルコードや具体例、解説を探すことが日常的にあるとおもう。 勿論、初学者や簡単なコーディングをするために情報を集める人も探すだろう。 そしてようやくたどり着いた記事や情報を読んで、インプットしようとすると...

$hogehoge = array(
    'piyo' => 5,
    'fuga' => 9
);

$fugafuga->save($hogehoge);

このようなコードを見かけることが多々ある。 このサンプルコードを見た人の反応だが、 経験者「ふむふむ、なるほど」 初学者「$hogehoge ってなんだ?」 というおおまかに2つに別れるはずだ。そうであるに違いない。僕はそうだった。

hogehoge って?

日本語的にしっくり来る表現は「アレ」、「ソレ」、「コレ」等の抽象的な表現であると、僕は思う。 実際にプログラムの世界では結構頻繁に使われてる(はず)。 サンプルで示す、適当な変数名やメソッドにファイル名やフォルダ名とか もう名前がつけられるすべてのものに使われる素晴らしい特に意味が存在しない名称(表現)が"hogehoge"。 困ったらhogehogeしとくみたいな。

ちなみに、hogehoge以外にも piyopiyo, fugafuga あたりは亜種としてよく見る。

僕が推すのは imoimo なんかかわいいしね。

hogehoge が引き起こす問題

それは、初学者や察しが悪い人が勘違いをする。 例えば関数の説明をするとして、安直にhogehogeを使うとしよう。

関数の説明
・"function" の後ろにあるのが関数の名前
・()の中にあるのが引数
・引数は関数の内部に値を引き渡せる

function imoimo ( $hoge = null ) {
    print($hoge);
}

関数の呼び出し方
・定義した名前を()つけて呼び出す
・()の中に値を渡すことで引数になる

imoimo('kumokumo');

みたいな説明とサンプルコードだとして、経験者は"hogehoge"とかは意味のない名称で自由に設定することができるという暗黙のルールといか知識を知っているので すんなりと頭に入って理解ができると思う。 しかし、初学者ではどうだろうか? まず、この説明文では"$hoge"はそういうものだと、誤解をしてどの関数でも"$hoge = null"を引数に設定するのだな、と誤った解釈をする可能性が非常に高いはずだ。 昔の僕はそうでした。 hogeのルールを理解せずに、とりあえずサンプルと同じようにやってみてソレが定着してしまうと見事に実際のソースコードhogeを書いてしまう事件になる。

極論かもしれないが...

hogehoge はやめるべき?

しかし、hogehogeはやめるべきではないとも思う。 暗黙のルールさえ理解していれば、コレほどサンプルだと明示的に書かれていることがわかる命名は存在しないと思う。 命名にローマ字で"sample"という変数をつけたとして凄く長い命名になってしまう。"sample_function"、"sample_1"とか分かりづらいし。

面白いのが、誰に言われるわけでもなくいつの間にか"hoge"という概念を理解している点で 少なくとも僕は何度かコードを書くうちに、hogeという概念を理解していた。あぁ、コレには意味が無い命名なんだなって。 だから、多分みんなあえてこのことに深く触れずにシレッとhogeを使ってサンプルを示したり使っているのだと思う。

hogehoge は不思議

結論、僕が話したかったことは

hogehogeについて、初学者にわかるように説明をしてあげたほうが、学習初期においては効率がいいんじゃないのか?

という事です。

理解できると当たり前のことになるほどに便利というかなんというか... 他の業界でもhogehoge的な概念はあるのかちょっと気になる。

みんなもレッツ hogehoge

(追記 2016/08/04) http://togetter.com/li/832718 http://tamezatu.com/hoge-hogehoge-notthrough/ hogeについてやっぱりわからない人も一定数いるみたい。 以外なのは年代によって通じないという話が驚き...