意味悲鳴

PythonとかUnityとか.技術ブログでしたが,研究ブログにシフトしました.

車輪の再発明について 日記:2016/06/29

こんにちは.どうでもいい話ですが,今日からタイトルをちゃんとタイトルにします.今まで「日記:(その日の日付)」だったものに追加して,ちゃんと記事そのもののタイトルを付けることにします.そんだけです.

今日はゼミのためにソースコードを書いていました.量としては全然少ないのですがだいぶ時間がかかってしまいやっちまった感があります.とは言え,それなりに綺麗にかけたと思っているので,満足と言えば満足.

で,その過程で色々思ったので,今日は車輪の再発明の話をしたいのです.

車輪の再発明の効用 - プログラマが知るべき97のこと

だいたい言いたいことはすべて上記した記事にかかれているのですが,一応自分でも思うところがあるので書きます.

(私の中では)一般にプログラマ界隈では車輪の再発明はdisられる行為だと思っています.というのも,誰かが作ったものを作るのは無駄でしか無いですし,なにより時間がかかります.特に自分が作ったものを自分がもう一度作るみたいな状況は,もう,もう,最悪です.無駄の極みです.苦しみしかありません.

また,それなりに著名なライブラリが存在しているものを自分で書くというのもこれまた悲しさがあります.このご時世で画像ファイルを読み込んだり,HTTP通信をしたりするコードを自分で0から書く人はそうそういないように思います.

とは言うものの,上記した記事が言うように,車輪の再発明をすることによって,ライブラリがやってくれている処理を自分で理解することもできます.これを無駄であると言ってdisる人はなかなかいないでしょう.

現に研究室でやっている課題の中にも,既にライブラリが世間に出回っていて,それを使えば一発で済むような処理を自前で実装するようなものがあります.この課題が意図するものも,やはり車輪の再発明を経由して学べ,ということなのでしょう.

しかしここで思うのですが,この車輪の再発明が有用になるのってどこからなのでしょうか.

例えばの話ですが,Pythonのitertoolsにあるモジュールを自前で実装するのは,おそらく車輪の再発明の悪い方,つまり無駄な努力をしていると言う部分に当たると思います.逆に,たとえばRequestsのどこか一部のモジュールを自前で実装するのは,車輪の再発明の良い方,開発を経由して技術を学ぶ部分に当たるでしょう.

要するに,この良い方と悪い方の間には何らかの境目が存在していて,それって何基準でどこなんだろうね?ということを考えたのです.単位とか言ってますけど,そもそも単位として置きたいものがわかっていないという,色々残念な理屈です.私がもうちょっと頭良かったらこんなことにはならないんだろうけども.

それでちょっとの間ぼーっと考えたんですけど,私はこの境目はプログラマのスキルによって動的に変化するのではないかと思っています. 例えば私のようなプログラミング初心者であるならば,itertoolsの中身を実装するのも勉強になると思うんですが,それなりにプログラムが書ける人間からすると,そんなものは勉強にも何もなりませんし,実装する際には少しも苦労せずに書けるんでしょう.

要するにこの話って,本人のスキルに合わせていい感じに苦労すると,それって勉強になりますよね?という,冷静に考えると少しも面白く無い話に繋がるんじゃないかと思います.

もちろん,これは研究にも言えて,自分の身の丈にあった研究を選ぶのが一番自分の勉強になるんでしょうね.

そういえば研究課題はやく考えて決めないとなぁ…….

ちょっと長くなったので今日はここまで.