読者です 読者をやめる 読者になる 読者になる

sifue's blog

プログラマな二児の父の日常

GitHubが生み出すソーシャルコーディングがOSSの世界を急速に進化させている

ここ2,3年でオープンソースソフトウェア(OSS)の世界は大きく変わってきました。それはGitHubの台頭とソーシャルコーディングの普及によるものが大きいと考えています。


ご存知の通り、ソフトウェアというのは、日々変わる状況、例えば生産性の高い言語の登場や新しいAPIや仕様、便利なフレームワークの登場、セキュリティホールの発見や新しいアーキテクチャへの対応をし、進化をし続けねばすぐに陳腐化して使えなくなってしまいます。


そこに登場にしたのがこのソーシャルコーディングという概念です。人はソースコードを利用して問題に直面すると、その状況に対応するコードを書き直し対処します。このGitHubでは、Gitという分散リポジトリの概念と内包するSNSの機能によって、その新しく書かれたコードの構成管理と情報の共有、伝播を一気におこなってくれます。


これはすごいことです!誰かが苦労して新しい状況に対応したソフトウェアのコードをソーシャルというフィルターを介して選別、共有し、集約されることで加速的に人類全体のITに関する生産性を高めていけるのです。一つのパラダイムシフトが起こったのではないかと思います。


今までソフトウエア開発と言えば、Googleで調べたり、その結果をブログにまとめたりしながすすめていくという感じでした。その営みがGitHubという構成管理が可能なリポジトリ内包の、有機的なシステムの中で全て繋がっているのです。これはどういうことかといえば、最近のGitHubと有機的な結びつきの強いシステムの例えで言えば、

などを使えば、自動的にその情報集約の結果を利用できるのです。具体的には、brew install scalaとコンソールで実行することで、今の最新の状況のインストール方法(formula)が自動的に参照されてインストールされ、さらにその依存関係として必要な最新のものも全てインストールされます。これには最新の状況に対応するための世界中の人の苦労と叡智が詰め込まれています。
また、問題があった際には、GitHubのIssueやwikiですぐに管理され、元のリポジトリが修正されることもあれば、有志がそのリポジトリをフォーク(コピーして別のリポジトリを作る)して、その修正した結果を公開してそれを使うこともできるのです。そして、システムの参照も良いリポジトリが参照されて全体として、有機的に最適化されていきます。これはすごい!


あと、これらのGitHubの結びつきの強いシステムの素晴らしいことは基本的CUI(キャラクターユーザーインターフェース)なことです。これは実は素晴らしい利点があります。それはメンテナンスコストがGUI(グラフィカルユーザーインターフェース)のソフトウェアに比べて圧倒的に低いのです。


このことでソフトウェアは、進化を素早く進めていくことができます。状況が固定化したソフトウェアに関しては、GUIのアプリケーションというのはユーザーに優しく非常に便利ですが、変わる状況に対して素早く対応していくためには、CUIの方が圧倒的に有利なのです。
EclipseなどのIDEが開発環境として便利で人気がある一方、先端技術を追いつつけるソフトウェアエンジニアの中では、VimEmacsが開発環境として人気があるのは、新しいフレームワークや言語の開発サポートというのは、まずはVimEmacsでしかされないというところにあると思います。つまり、CUIを使うことで先進的な技術に常に触れることができるのです。また、今はこのソーシャルコーディングの恩恵を強く受けることができる。GitHubとの連携ツールはCUIものが、更新が速く便利なものが多いと感じています。というか、GUIのものはそんなに多くないです。


GitHubは、このCUIのソフトウェアの生態系と合わせて、生産性の向上の速度を更に高めてくれる加速剤のようなものです。今までのエンジニアがGoogleとブログを使ってポチポチ進めていっていた結果を意識することなく全て利用することができます。


これから、このソーシャルコーディングというGitHubの生態系をシステムの中に取り込んでいないOSSはどんどん取り残されていくのではないかと思います。
オープンソースを利用するエンジニアもどんどんGitHubを利用し、さらに自分たちのコーディングの結果をGitHubに公開することでよりよいITの世界を創造していくことにつながるのではないかと思います。


また、このGitHubの副産物ですが、最近は就職活動でもこのGitHubが使われるそうです。GitHubのアカウントを登録するだけでエントリー完了だそうです。また転職エージェントもこのGitHubのアカウントを見て、そのエンジニアを評価するのに使えたりもします。
ワンクリック採用|面白法人カヤック、こんなものも話題になりました。
確かに転職エージェントが技術もわからず、メールを送りまくるのに使われるのにはちょっと問題はありますが、少なくとも今までよりソフトウェアエンジニアのリクルートはずっとやりやすくなるのではないでしょうか。またGitHubを使いこなせるようになるためには、ソフトウェアエンジニアとしての基礎知識も必要となるので、かなり良いふるいになるとは思います。


ぜひ、これからもしっかりGitHubを使ってソーシャルコーディングしていければと思います。

追伸

ちなみにソフトウェアは、日々進化し、それに追随しなくては陳腐化するという話を書きましたが、残念ながら日本の多くの会社がその社内のシステムを新しいトレンドに追随できず、未だにIE6を使っています。これがどれだけ新しいIT技術の恩恵を受けられない損失かというのは、わかっていない人が非常に多い。IE6開発はChrome開発の何倍工数(コスト)がかかるのか知っているでしょうか...。
確かに、これにはITバブル期に高い値段で構築したシステムなので非常に保守、改修にコストがかかるというSIerの商売上の問題も含まれているので悩ましいところですが、どこかでこのレガシーコストを払わなければ、ITの良さをどんどん取り込めなくなってしまいます。
今、ソフトウェアは進化し続けなくてはいけないという特性が実感されやすい状況が来た所で、今後は、より可搬性や柔軟性の高いフレームワークを使ってシステムを構築していくというのがトレンドになっていくのではないかと個人的には思っています。