まずは上記の検索結果を見てくれ。これは
- ファイル名が
version.h
- 内容に"
#define RUBY_VERSION
"
という検索クエリで、もちろん、そのようなコードはプログラミング言語Rubyの本体に由来することはいうまでもないわけだが、自分からは7,918件の検索結果が見える。これにはforkやリビジョン違いを含んでいない。
なぜこんなに多いのか? これは、Rubyがコピペを助長するような製品だからか?
どうもそうでもないらしい。たとえば同様のことをCPythonでやると
https://github.com/search?q=%22%23define+PY_VERSION+%22+filename%3Apatchlevel.h&type=Code
自分からは6,079件ヒットしているように見えるし、同様のことをPerlでやると
https://github.com/search?q=%22%23define+PERL_REVISION+%22+filename%3Apatchlevel.h&type=Code
自分からは695件ヒットしているように見える。
なんなんだ? これは。
コピペすんなボケが。
そもそもコピペがよくないという話は、Githubとしても分かりきったことのはずだ。Githubにはわざわざforkという仕組みがそなわっている。これはコピペではなく彼らの言葉で言うと「シェア」する仕組みだし、見え方としても親があって、子があるという見え方で、完全にすっきりしている。べつに無限にコピペ増殖することを意図して設計されているわけではないことは観測からも推測される。
にもかかわらずのこの検索結果であるから、やはり根本的に使い方を間違ってコピペする輩が後を絶たないのだろうということが強く示唆されるわけである。
これは、個人の努力とかそういう問題じゃない。デザインだ。誤った設計が誤った運用を生んでいるんだ。
なにがいけないのか
Pythonの例をよく見るとヒットしてきている大多数は、どうやらvenvの中のヘッダファイルのようだ。pyvenv
がコピペを誘発するアーキテクチャになっている是非にはここでは触れない(よく知らないけど、たぶん何か考えがあってのことなんだろう)。問題はこういうコピペされたコードがGithub側に無思慮にコピペされてきていることのほうにある、と思う。
思うに、ユーザーのローカル環境とか、あるいはデプロイ先とか、そういうところにコピペされたファイルがあるのは、RubyだのPythonだのの場合はある意味で不可避なわけだけれども、だからといってGithubにまでそれをそのまま無思慮にコピペしてくる輩がいるのが問題なのではないか。もちろん.gitignore
を適切に書けという話はあるかもしれない。が、ユーザーが無思慮なところに向かって「ちゃんとしろ」と言ってみたところで。そこはコントロールしようとしても不毛なだけ。
ただのホスティングサービスに成り下がってるのが問題
ようはユーザーの 書いた コードじゃなくて、ユーザーの手元にあるコードが全部アップロードされてくるのが間違いだったと言わざるをえない。「デプロイの都合を考えると全部のファイルがgitで落とせる方が…」いや、問題はGithubからデプロイするところにあるんだよ。Githubをただのファイル置き場として使ってるでしょ? そうなってると、そりゃ自分の著作じゃなくてもとりあえず突っ込むって思想が出てくるわ。でも本来違うことを意図していたはずなんだよ。
本来Githubはプログラムの「開発」をする場であって、便利なうpろだじゃないはずなんだよ。目指してたのはね。でも現状ではそう使われちゃってるわけ。なので検索とかにただのうpろだ的な用途が引っかかってきててSN比が低下しているんだ。
べつにうpろだの必要性を否定したいわけではないが、わざわざGithubに担わせるべき役割だったのかというと疑問だ。少なくとも当初は違ったんだろう。でも今やGithub Pagesとかあるから、ある時期にそういう、コピペのファイルを突っ込んどく用途を許容するように方向転換があった(意識的になのかは知らん)。その結果としてコミュニティ部分が弱まって、なんかよくわからん、いかにもメンテされてないコピペの残滓みたいのが跋扈するようになってしまった。ということなんだとおもう。
まとめ
コミュニティ機能とホスティング機能があっていい。その両方ともを別に否定したいわけじゃない。ただ混ざってるのは良くない。コミュニティ機能の側にコピペ不要。SN比の低下を防ぐように分離することを考えるべきだと思う。