Hatena::ブログ(Diary)

このブログは証明できない。

2010-05-25

[]コピペプログラミングの基本。どんどんコピペしなさい。

コピペプログラミングの基本です。どんどんコピペしなさい。って、スラムダンクに書いてあった気がしますが、気のせいかもしれません。私はコピペ推進派です。コピペプログラミングの基本なので、がしがしコピペすればいいと思います。今日は、この辺の話をしていきますが、話題がそれて三井寿を語る場になったらスミマセン。




まず、プログラミング初心者。これはもう、わしゃわしゃコピペすべきです。ホントは写経の方がいいのですが、コピペでも構いません。構いませんとも。かまいたちの夜です。プログラミング初心者が参考書プログラムを理解するには、読むだけでは足りません。まず、サンプルプログラムを動く状態にして、それを改造すべきなのです。大幅な改造は必要ありません。まずは、変数の中身を変えるとか、そこから始めます。


英語を学習するときに、1単語を覚えるよりも、ひとかたまりのフレーズで覚えた方がいい。って、スラムダンクに書いてあった気がしますが、気のせいかもしれません。プログラムも、ひとつひとつの命令の意味は後から覚えればいいのです。まずは、ひとかたまりのプログラムがどんな動きをするのかを覚えるべきです。


例えば、ファイルを開くopenメソッドを単体で覚えるよりも、下のかたまりを覚えておくほうが効率的です。

open("hoge.txt") {|file|
  while l = file.gets
    puts l # ←ここをいろいろ変える。
  end
}

このプログラムコピペで使い回して、コメントを入れている箇所をどんどん改造していけばいいのです。これは単純な例ですが、もっと複雑なかたまりでも構いません。構いませんとも。かまいたちの夜です。ひとつの命令を組み合わせてプログラムを作るより、かたまりを組み合わせる方が効率良くアプリケーションを作ることができます。初心者には、それが重要なのです。


最初は、かたまりの意味がわからなくても構いません。こういう場合は、このかたまりをコピペしてくればいいと分かっていればいいのです。おまじないでOKです。いずれ、おまじないの部分も改造したくなります。そうなったときに、おまじないの意味を理解すればいいのです。勉強ばっかりしてないで、わさわさ動くモノを作りましょうよ。




次に、プログラミング中級者。これはもう、もしゃもしゃコピペすべきです。こういうことをやりたい!と思ったら、Google先生に聞いてみましょう。プログラムのサンプルを公開している人がたくさんいます。中級者ともなると、サンプルの意味も理解できると思います。完全に理解できている必要はありません。とりあえず、自分のプログラムに埋め込んで動かしてみましょう。思い通りの動きでなかったら、そこは学習チャンスです。サンプルを改造していきます。


はい。三井くん。何か反論がありそうですね。コピペばかりしていたら、スキルアップできないのではないか?この、バカティンがぁ!何事もまずは模倣から始まるのです。その前に、目的はモノを作ることですね。モノを作るために、コピペは超効率的なんです。で、コピペしてきて、それがそのまま動くとは限りません。改造することになります。その時に、コピーしてきたペ(つまりコピペのことですが)の意味を理解するのです。


とにかく書くことだよ。三井くん。悩み続けて何もしないよりも、コピペしてきて書いた方がいいのです。やった後悔より、やらない後悔のほうが大きいのです。君のスリーポイントがあるから、リング下の攻撃が活きるのです。もっと言えば、コピペしてきたものが本当にベストなのか考えてみてください。もっとシンプルに書けたり、エレガントに書けたりするかもしれません。守破離です。守破離って言ってみたかっただけです。


はい。もうひとつ反論がありそうですね。意味のわかってないプログラムコピペしてきて、バグの発生源になりはしないか?この、バカティンがぁ!そのためのテスト駆動開発です。わかってる人の書いた意味のわからないプログラムコピペするよりも、わからない人がわからないまま書いたプログラムのほうがよっぽど危険です。どっちにしろ、テストが通ればOKですが。




最後に、プログラミング上級者。これはもう、ぴきゃぴきゃコピペすべきです。上級者なので、プログラムの再利用はバッチリです。大きなかたまりをコピペすることはないでしょう。自信のない人は、リング下のシュートを2万本練習してください。上級者ともなると、頭の中にプログラムができていて、後は手の運動です。タイプするよりも早い場合は、コピペしましょう。


バッチリバチバチと言っても、プログラムの再利用は常に意識しておいてください。ライブラリ設計はもちろん、普通だと再利用できないところはメタプログラミングです。上級者は黒魔法を使ってもいいのです。コピペした時点で、なぜコピペしたのか自問自答してください。人生を振り返ってください。そのコピペ、あなたの人生に本当に必要ですか?こうして、コピペするごとに頭と心を磨り減らし、より高みへと登っていくのです。




いかがでしょうか。時に罪悪として扱われるコピペコピペによる逮捕者は後を絶ちません。ですが、プログラミングの基本はコピペなのです。って、スラムダンクに書いてあった気がしますが、気のせいかもしれません。


注意点としては。まず、ライセンスに気をつけてください。誰が書いても同じようなプログラムであれば問題ないと思いますが、ライブラリをまるっとコピペするときは注意が必要です。と言うより、ライブラリをまるっとコピペするのは、ここに書いてあることに当てはまりませんね。


もうひとつの注意点としては。コピペして満足しないでください。基本的にコピペしただけでは不十分である。と言うことを常に念頭においてコピペしてください。コピペが罪悪になりうるのは、コピペしただけで満足してしまうケースがあるからだと思います。また、テストはしっかりと。




追伸。コピーしたペ(つまりコピペのことですが)自体に修正が入ると、修正箇所が複数になるためバグの温床になると、関東地方の一部地域では言い伝えられています。それって、テストを追加してないですよね。あと、その規模の開発になると、上級者がライブラリの設計をバッチリバチバチやってくれてるはずです。上級者がいない開発チームは、コピペを否定する前に、人材育成を頑張りましょう。要は、チームとしてはコピペしなくていい方向に進むべきで、プログラマー個人としては、ぷりぷりコピペすべきなのです。




コピペとともにあらんことを。




netmanmanetmanma 2010/05/29 16:52 とても面白い記事!
ニヤニヤしながら読ませてもらいました

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証