GitHubの現状を見て、t-wadaさんの言葉を振り返る

現在、Ruby on Railsを使用したシステム開発が進行中にあり、gemからの参照設定であったり、プラグインの振る舞いを理解するためにGitHubを利用する機会が増えました。
実際に触れていく中で色々思うところがあり、この場で少し意見を述べたいと思います。

gitとは

gitとは分散した環境下でバージョン管理を実現したシステムです。

問題はgitじゃない。GitHubで起こりつつあるんだ

 GitHubとはgitのホスティングサービスです。無料でできるディスクスペースが提供されていることもあり、自由に利用されています。それ自体を否定するつもりはないし、活性化も期待できるので積極的に利用していくといいと思います。
 先日、「Restful」でGitHubで検索したら、接尾辞の異なる「Restful Authentication」が6件位ヒットしました。また、Rails2.1からgemからgit://を参照できるようになったので、URIを登録すると900件近いインデックスが新規に作成されました。

 すべてが有益であれば問題視しませんが、亜種も含まれてくると推測すると、Rails本体の魅力がプラグイン層の複雑性・多岐性で半減し、結果的として初めて触れる方へ敷居を高くしている可能性が懸念されます。

自由であるがゆえ、テストコードを書きませんか?

 ひと通り参照した結果、せっかくの良いソースコード、または、プラグインを組合せたテンプレートが、テストコードや説明がないために第3者に振る舞いが伝わらず、結果として似たようなコード、リポジトリがアップされているようです。ディスクスペースの心配より、この類似した存在、亜種の存在が全体の検索性を損ねていくのは非常に残念でなりません。


 Railsはテストコードのテンプレートが自動生成されます。それなら、テストコードを書いて活用する事を意識しませんか?
 
 機能概要を説明する仕様書はソースコードが担えます。別途、仕様書を作成すると、ソースとの整合性を維持していくのが難しいので、必要可否は述べません。

 ただ、テストコードは違います。対象を機械的に評価することができるし、要求を満たしているか判断する指標として非常に有益な資産です。

「分散開発環境」を広義に捉え、共有できるメリットを享受しましょう。

 顔を見たこともない相手とソースコードを共有できる可能性、これはひと昔前では考えられなかったことです。もし開発者として余裕があるのであれば、一から開発する発想から、良い仕組みは共有して育てていく考えに発展させてみませんか。
 今までは特定のメンバーにロールを割り当てて、専用の管理サーバを構築していた事が、GitHubで自由度の高い構成が実現できます。共有できることはメンターの負荷も分散できるしメリットです。メンテナンス対象のリポジトリが絞られていけば、新たな良いソースコードと出会える機会が増えると期待します。

何が言いたいのか?

 現状のGitHubを「既にカオス」と見るか、「自由な空間」と捉えるかは個人差があると思います。ただ、現状のWeblogが置かれている状況と同様に、情報過多により貴重な情報・資産が他の情報に埋もれている、検索しても欲しい情報にたどり着くまで時間がかかるいったことが、GitHubにも目の前に迫っているのではないかと危惧します。
 「RubyForgeに飽きた技術者がGitHubに移動しただけ」とか、「Railsの終焉がせまっているから関係ない」とか、切ないことを考える前に、今一度、より良い方向で末永く利用できるように意識してみませんか?

 せっかく良いソースコード、気に入った言語や技術について、情報が整備されないが故に浸透されなかった現実を目の当たりにしたのは一度ならずともあるはずです。偏った意見かもしれませんが、情報が整備されているが故に好みでない技術が結果的に生き残り、ライセンス料や対価を支払って利用し続けることになるかもしれません。

 などと考えているときに、東京Ruby会議01のt-wadaさんのセッションを思い出しました。


TDDと黄金の回転は、他の言語からの移植シナリオだけに適用されるわけではありません。


 IT業界に関っている者としては、無用なHackはなるだけ避けて、できる事なら家に帰ってビールをHackしたいなと。ただそれだけなんです。(おわり)