車輪の再発明(しゃりんのさいはつめい、英: reinventing the wheel)は、車輪を題材にした慣用句であり、世界中で使われている。
「 広く受け入れられ確立されている技術や解決法を知らずに(または意図的に無視して)、同様のものを再び一から作ること」を意味する。
wikipediaより
***
こんにちは。
「なんでも自分でできないと、無人島に行ったとき困るやん!」と思ってしまう、黒田道哉です。
でも、無人島にいく予定なんて、ないんですけどね。笑
さて、
今回は前回の最後に出た質問
「何故関数を使う必要があるの?」
に答えていきたいと思います。
Q.「プログラマーが避けるべき悪いテクニックはなんですか?」
Yahoo!知恵袋ってご存知ですか?
…って知ってますよね。w
その、知恵袋の実名バージョンのようなサイトがあります。
Quoraっていうんですけど。(クリックしないように!面白すぎて戻って来れません笑)
Quoraは、エンジニアとか、研究者とか、頭良さそうな方が多いイメージです。
質問の内容も、面白い(interesting)です。
毎日自動で、おもしろQ&Aをメールで通知してくれるのですが、そのメールを開いたが最後、ぐるぐるといろんなQ&Aをみてしまいます。
今日もそんなことをしていると、こんな記事を見つけました。
ご覧の通りQuoraの吸引力は、ダイソン並で危険です。
リンク先に飛んだが最後、帰ってこれません。
なので、リンク先に飛ばなくてもわかるようにご説明します。
いろんな回答があるんですが、
現役エンジニアさんたちから、
という回答が主に挙げられています。
つまり悪いテクニックだってことですね。
このどちらも、避けることができるのが、
そう、
関数
なんです。
車輪の再発明って何?
「車輪の再発明」って何かというと…
先人が脳みそに汗をかきながら考えた「車輪」という便利な道具・仕組み。
どの車にも、バイクにも、電車にも使われて、これだけ広がって、使用されています。
それをもう一度自分の手でゼロから発明する…。
こういう、無駄な努力を「車輪の再発明」と呼びます。
(私はなんで、よりによって車輪なんやろう?って思ってますけど…別に「傘の再発明」とか「電球の再発明」でも良いですよね。笑)
これをプログラミングでやると、嫌われるということですね。
もう既に、ある目的のために用意されている関数があるにも関わらず、
一生懸命考えながらベタ打ちで計算式を打つ…。
まさに「車輪の再発明」です。
(もちろん、学習期に「写経」するのは別ですよ。)
そんなもんに時間かけちゃダメです。
「人日」をかけちゃダメです。笑
※プログラミングの世界では見積もりを「人日(にんにち)」という単位で計算します。3人の人が5日かけてする仕事を15人日と言います。
じゃあどうするのか?
関数使いましょう。
たったの一行で済みます。
関数力がコーディング力に直結する理由
関数ってのは、まあ常識みたいなもんで、
「知らなかったら知らないほうが悪い、調べろ。」
みたいな感覚です。(ひえー。)
だから、関数が(他人から見て)わかりにくいってのもありません。
「それはお前が悪い、わかるまで読め」
って話だからです。(ひえー。)
何故Google Mapが現在地をピンポイントで示せるのか?
そんな理由知らなくても、目標地点までの道のりがわかります。
それと同じです。
関数を使えば、
「あいつのコードわかりにくいな」
「関数使えば一発やのに、こんなことに時間つぶして。給料泥棒ってこのことや」
みたいな風に思われずにすみます。
逆に、
あなたに関数の知識があり、使いこなせれば、
という評価につながるわけです。
どうでしょうか?
前回のラストの疑問「なぜ関数が要るの?」の理由をお分かりいただけましたでしょうか?
それは、
周りの人に読みやすくするため
です。
義務教育で教わった「カンニングするな」「横着するな」「楽しようとするな」に真っ向勝負の世界ですね。笑
関数は銃弾と同じ。使える数は多ければ多い程、良い。
ということで関数の知識は、イケイケエンジニアになるためには必須です!
たくさんググって、たくさん関数の引き出しをつくってくださいね!
本屋で関数の図鑑みたいなの(リファレンス)を売ってたりするので、
それを一冊手元に置いておいても良いと思います。
特に、
「よく使う言語じゃないけど、要る言語」なら必須ですね。
忘れるんで。(よく使う言語なら覚えていられますけど。)
そして、
使うときの注意点を一言メモしておけば、
また次に使うときにスグ使い方を思い出せるので、良いですよ。
ということで、
関数の勉強は重要です。
ガンガン使っていきましょう!
というお話でした。
次回予告
おっと!
でも、関数を使う前に、ある特別注意が必要です。
それを次回、お話ししますね!
P.S.
映画『バッドジーニアス 危険な天才たち』って、観たことあります?
おまけ:今日のエンジニアジョーク
とあるエンジニアが、ある日道を歩いていると一匹のカエルが呼びかけてきました。
「私にキスしてくれたら、とても美しいお姫様に戻ることができるのよ」
彼は身をかがめてカエルを拾い上げると、自分のポケットにしまいこみました。
カエルは再び言いました。「もしあなたがキスしてくれて私を姫に戻してくれたなら、あなたと一週間一緒に過ごしますわ」
エンジニアはカエルをポケットから取り出して、微笑むとまたポケットにしまいこみました。
するとカエルは泣き叫ぶように、「もし私を姫に戻してくれるなら、あなたと一緒にいて、もう何だってあなたの望みどおりのことをします」
またもやエンジニアはカエルをポケットから取り出すと、やはり微笑みかけるだけでポケットに戻しました。
カエルはようやくそこで尋ねました。
「いったいどういうことなの? 私は美しい姫で、あなたと一週間一緒にいて、何でも望みどおりのことをすると言ってるのですよ?
どうしてキスしてくださらないの?」
するとエンジニアはこう答えました。
「僕はエンジニアだよ。恋人のために費やす時間なんてないんだ。だけどしゃべるカエル、こいつはカッコいい」
次の講座へ