第9講: ぶっちゃけ、関数を使えないと…嫌われます。

車輪の再発明(しゃりんのさいはつめい、英: reinventing the wheel)は、車輪を題材にした慣用句であり、世界中で使われている。

「 広く受け入れられ確立されている技術や解決法を知らずに(または意図的に無視して)、同様のものを再び一から作ること」を意味する。

wikipediaより

***

こんにちは。

「なんでも自分でできないと、無人島に行ったとき困るやん!」と思ってしまう、黒田道哉です。

でも、無人島にいく予定なんて、ないんですけどね。笑

さて、
今回は前回の最後に出た質問

「何故関数を使う必要があるの?」

に答えていきたいと思います。

 

Q.「プログラマーが避けるべき悪いテクニックはなんですか?」

Yahoo!知恵袋ってご存知ですか?
…って知ってますよね。w

 

その、知恵袋の実名バージョンのようなサイトがあります。
Quoraっていうんですけど。(クリックしないように!面白すぎて戻って来れません笑)

 

Quoraは、エンジニアとか、研究者とか、頭良さそうな方が多いイメージです。
質問の内容も、面白い(interesting)です。

毎日自動で、おもしろQ&Aをメールで通知してくれるのですが、そのメールを開いたが最後、ぐるぐるといろんなQ&Aをみてしまいます。

 

 

今日もそんなことをしていると、こんな記事を見つけました。

「プログラマーが避けるべき悪いテクニックはなんですか?」

 

ご覧の通りQuoraの吸引力は、ダイソン並で危険です。

リンク先に飛んだが最後、帰ってこれません。
なので、リンク先に飛ばなくてもわかるようにご説明します。

 

いろんな回答があるんですが、
現役エンジニアさんたちから、

(自分にしか)わからないコードを書くこと
・車輪の再発明

という回答が主に挙げられています。
つまり悪いテクニックだってことですね。

このどちらも、避けることができるのが、

そう、

関数

なんです。

車輪の再発明って何?

「車輪の再発明」って何かというと…

 

先人が脳みそに汗をかきながら考えた「車輪」という便利な道具・仕組み。
どの車にも、バイクにも、電車にも使われて、これだけ広がって、使用されています。
それをもう一度自分の手でゼロから発明する…。

 

こういう、無駄な努力を「車輪の再発明」と呼びます。
(私はなんで、よりによって車輪なんやろう?って思ってますけど…別に「傘の再発明」とか「電球の再発明」でも良いですよね。笑)

 

これをプログラミングでやると、嫌われるということですね。

もう既に、ある目的のために用意されている関数があるにも関わらず、
一生懸命考えながらベタ打ちで計算式を打つ…。


まさに「車輪の再発明」です。
(もちろん、学習期に「写経」するのは別ですよ。)

 

そんなもんに時間かけちゃダメです。
人日」をかけちゃダメです。笑

※プログラミングの世界では見積もりを「人日(にんにち)」という単位で計算します。3人の人が5日かけてする仕事を15人日と言います。

 

じゃあどうするのか?

 

関数使いましょう。
たったの一行で済みます。

 

関数力がコーディング力に直結する理由

関数ってのは、まあ常識みたいなもんで、

「知らなかったら知らないほうが悪い、調べろ。」

みたいな感覚です。(ひえー。)

 

だから、関数が(他人から見て)わかりにくいってのもありません。

「それはお前が悪い、わかるまで読め」

って話だからです。(ひえー。)

 

 

何故Google Mapが現在地をピンポイントで示せるのか?
そんな理由知らなくても、目標地点までの道のりがわかります。

それと同じです。

関数を使えば、

「あいつのコードわかりにくいな」

「関数使えば一発やのに、こんなことに時間つぶして。給料泥棒ってこのことや」

みたいな風に思われずにすみます。

逆に、
あなたに関数の知識があり、使いこなせれば、

 

「●●さんって仕事早いよね!
「●●さんのコードはシンプルで読みやすい!」

 

という評価につながるわけです。

 

 

どうでしょうか?

前回のラストの疑問「なぜ関数が要るの?」の理由をお分かりいただけましたでしょうか?

それは、

労力を無駄にしない・最小にするため
周りの人に読みやすくするため

です。

義務教育で教わった「カンニングするな」「横着するな」「楽しようとするな」に真っ向勝負の世界ですね。笑

 

関数は銃弾と同じ。使える数は多ければ多い程、良い。

ということで関数の知識は、イケイケエンジニアになるためには必須です!

 

たくさんググって、たくさん関数の引き出しをつくってくださいね!

本屋で関数の図鑑みたいなの(リファレンス)を売ってたりするので、
それを一冊手元に置いておいても良いと思います。

特に、
「よく使う言語じゃないけど、要る言語」なら必須ですね。
忘れるんで。(よく使う言語なら覚えていられますけど。)

そして、

使った関数に付箋をはって、
使うときの注意点を一言メモしておけば、
また次に使うときにスグ使い方を思い出せるので、良いですよ。

ということで、

関数の勉強は重要です。
ガンガン使っていきましょう!

というお話でした。

 

次回予告

おっと!

でも、関数を使うに、ある特別注意が必要です。

それを次回、お話ししますね!

P.S.
映画『バッドジーニアス 危険な天才たち』って、観たことあります?

第10講: 映画『バッドジーニアス 危険な天才たち』に学ぶ、ワールドワイド・カンニングの技術。
「プログラミングではカンニングが大事!」というのは聞いたことありますか?そのカンニングの仕方(関数の定義や、ライブラリについて)解説しました。

 

 

おまけ:今日のエンジニアジョーク

とあるエンジニアが、ある日道を歩いていると一匹のカエルが呼びかけてきました。

「私にキスしてくれたら、とても美しいお姫様に戻ることができるのよ」

彼は身をかがめてカエルを拾い上げると、自分のポケットにしまいこみました。

カエルは再び言いました。「もしあなたがキスしてくれて私を姫に戻してくれたなら、あなたと一週間一緒に過ごしますわ」

エンジニアはカエルをポケットから取り出して、微笑むとまたポケットにしまいこみました。

するとカエルは泣き叫ぶように、「もし私を姫に戻してくれるなら、あなたと一緒にいて、もう何だってあなたの望みどおりのことをします」

またもやエンジニアはカエルをポケットから取り出すと、やはり微笑みかけるだけでポケットに戻しました。

カエルはようやくそこで尋ねました。

「いったいどういうことなの? 私は美しい姫で、あなたと一週間一緒にいて、何でも望みどおりのことをすると言ってるのですよ?
どうしてキスしてくださらないの?」

するとエンジニアはこう答えました。

「僕はエンジニアだよ。恋人のために費やす時間なんてないんだ。だけどしゃべるカエル、こいつはカッコいい」

 

 

 

次の講座へ

第10講: 映画『バッドジーニアス 危険な天才たち』に学ぶ、ワールドワイド・カンニングの技術。
「プログラミングではカンニングが大事!」というのは聞いたことありますか?そのカンニングの仕方(関数の定義や、ライブラリについて)解説しました。