ラベル GitHub の投稿を表示しています。 すべての投稿を表示
ラベル GitHub の投稿を表示しています。 すべての投稿を表示

2014年9月12日金曜日

参加出来るオープンソースプロジェクトを探す3つの方法

オープンソースプロジェクトに参加することはプログラマの楽しみであり、社会貢献であり、確かな実績にもなります。

メジャーなオープンソースプロジェクト・団体の名前を上げるならば、GNU, Linux, Mozilla, Ruby, Python, Boost....毎日使っているオープンソースだけでもいくらでもあるでしょう。ただし、概してこれらのプロジェクトに貢献することは非常に大きな傾注を要します。例えばEmacsやLinuxカーネルへの参加は最も優れたプログラマしか許されず、怪しいコードを書くと袋叩きにあうなどという話があります。袋叩きは冗談としても、そのようなインパクトの非常に大きいコードを書くということは簡単に出来ることではありません。

オープンソースへの貢献が非常にハードルの高いものだと思っている方は先のLinuxカーネルの例を良く出します。しかしオープンソースというのは五万とあり、貢献の機会や方法はいくらでもあります。

しかし、五万とあるプロジェクトからどれにコミットすべきなのか、どのようなプロジェクトがあるのか分からないというのが本音でしょう。以下、そんな行き場のない熱意を持ったプログラマの為の指針を紹介します。



1. 既に使っているオープンソースに貢献する

これが出来れば万々歳ですね。使っているうちに、不便な所や、バグを発見したり、あるいは日本語のドキュメントが不足しているなぁと感じることがあると思います。

機能を足して行くタイプのプロジェクトならどんどんパッチを書いていけるし、バグの発見はそれだけで評価されることでしょう。issueに症状を書いて、こういう原因じゃないかと推測し、あわよくばパッチ案を出せれば完璧でしょう。そこまでじゃなくても、バグについて説明があるだけでプロジェクトとしては大きな前進です。

日本語化というのは重要な貢献だと思います。ローカライズというのはどのプロジェクトでも困るものです。概してローカライズの効果は非常に大きいです。英語は共通言語ですが、母国語が英語である人が殆どという訳では全くありません。プロジェクトに依りますが、ローカライズするしないで製作物の影響する範囲は全く異なります。しかし、ローカライズはその言語を母語などにしている人が必要であり、そしてそのクオリティはプロジェクトの運営者には(その人の母語でない限り)分かりません。そうするとローカライズは限られた人しか出来ず、かつ泥臭い作業だけでなく運営部分まで関わることが出来ます。そういう意味でローカライズは価値が大きいです。


2. 日本発のプロジェクトに貢献する

日本発のプロジェクトはドキュメントが英語化されていなかったりするので人の出入りが少ないことがあります。人手が少ないプロジェクトへの参加は当然ありがたがられるし、パッチを当てる機会も多いでしょう。オープンソースというと国籍は関係ない、という話はありますが、実際日本人にとっては日本のプロジェクトの方がやりやすいことは多いと思いますし、ローカライズの重要性は誰もが知っていることでしょう。
やや古いですが、日本のオープンソースという記事があります。ここから探すのも手でしょう。あと有名なのはenchant.jsでしょうか。

3. スタートアッププロジェクトに貢献する

まだ1.0に到達していないプロジェクトもあります。未完成なのでやるべきことは沢山あります。かつ、歴史が短いので参加者も少ないです。ではスタートアッププロジェクトはどうやって見つければいいのでしょうか。プロジェクトのメンバーは様々な所で宣伝して、人を集めているはずです。アンテナを高く張っていればそれを見つけることもできるでしょう。或いはGitHubで検索してみるのも手です

  star:"100..500"

のように検索すれば中規模のプロジェクトが沢山見つかります。また、GitHubは最近のコミットの頻度が表示されます。これを見れば、今まさに伸びてきているプロジェクトなのか、既に沈静化したプロジェクトなのかも判断することが出来ます。



改めて。オープンソースへの貢献=パッチのコミットと狭義に捉えるべきではないと思います。オープンソースにおける成功とは参加することである、と言います。

パッチが最も直截的な貢献のように思えますが、ドキュメントを書いたり、テストを書いたり、宣伝したり、プロジェクトを成立させる為の要素はいくらでもあります。特に職人気質なエンジニアはこういう努力をしたがらない傾向にあります。

恐らく、こういう良く見せる為の工夫というのに拘るというのはあまりアジアにある文化ではないのでしょう。そもそもオープンソースというのがアジアの文化にそぐわないものかもしれません。

泥臭い作業も重要な貢献です。それを無碍にされることはないでしょう。また、ドキュメントやテストを書くことは必ず次につながります。 パッチを書くための下準備であったり、コミュニティの雰囲気を知ったり。



とにかく何でもいいから参加する。コミュニケーションを取る。それがオープンソースにおける成功といいます。

2014年8月6日水曜日

タダで読めるプログラミングの本

幸運にも世の中にはたくさんのfreeのプログラミングの本があります。これは情報科学の強みの一つでしょう。

一番有名なのは「計算機プログラムの構造と解釈」でしょうね。この本が和訳でタダになっているのは本当に素晴らしい。(絵柄はあれですけれど中身は美しいです。)

http://sicp.iijlab.net/fulltext/

しかし思うに情報が氾濫していて、どこに良い情報があるかが分かりにくくなっているというのが現状でしょう。また、和訳版が少ないのもソフトウェア産業には問題でしょう。

free-programming-booksはfreeのプログラミング教材の情報をまとめようというプロジェクトです。プログラミングの本だったり、オンラインチュートリアル、あるいはビデオレクチャーなど。

日本語の本の情報もまとまっています。まだ少ないですが、新しい分野・言語の最初の一冊などを探すには便利だと思います。(かく言う私もcommitしています。)

こういうプロジェクトが広がっていくのは面白いですね。

2014年4月26日土曜日

一人の開発でもGitを使おう

Gitを使っていますでしょうか?

Gitは版管理システムというものの一つで、簡単に言うとチームで開発するときにコードがこんがらがらないように一ヶ所にまとめて管理し、かつ各々が自由に開発できるという便利なシステムです。

元々はLinux開発の為にリーナスが一週間かけて開発したシステムだそうです。ので多くのオープンソースで使われております。つまり、オープンソースのように不特定多数の開発者間でも開発することを可能にする、頑強なシステムになっています。

そうすると一人の開発で使うものじゃないと思われるかもしれませんが、実はこれは一人での開発にも非常に役立ちます。どういうことかというと、例えば一ヶ月前・一ヶ月後の自分なんて他人もいいところだということです。

自分で書いたコードでもちょっと前のものだとよく分からなくなるというのはよくあることだと思います。また、ある変更を加えた後にやっぱり変更前のものの方が良かった、ということもあるでしょう。テキストエディタなら結構履歴が残っているものですが、この時点に戻したい、というのを探し出すのはかなり時間がかかります。加えてそれが複数のファイルに跨る変更だった場合、ファイル間の変更も同期させないといけない訳ですから、これは非常に面倒ですね。

そこで便利になるのが版管理システム、Gitです。単独での開発においてもGitを使うと何が便利なのかというと、


・「ここの時点のコードに戻したい」というのをすぐに戻せる。

・複数のファイルを同期して戻すことが出来る。

・GitHubにあげれば色んなパソコンで共有出来る。

などがあげられます。


ただ、Gitは使い方が難しいということで敬遠されがちです。最低限必要なコマンドが結構あり、かつコマンドの順序が定まっている部分もあります。ので習熟に時間はかかるでしょう。

なぜ難しいのか。それは「正しい使い方を簡単に、間違った使い方を困難に*」というインターフェイスの原則に従っているからです。つまり、何でもかんでも制御可能にしてしまうと共同開発には使えない訳です。ので、望ましくないコマンドを受け付けないことで頑強性を実現していると言う訳です。そして、一度正しい使い方を理解すれば非常に簡単に版管理システムを使うことが出来ます

最近では非常に明解なGUIが整備されています。WindowsならTortoiseGit, Linuxならcola-gitとか。

いずれどこかで使いますし、ここで覚えてしまっては如何でしょうか。



・参照リンク
Windows用GUI:TortoiseGitの使い方
サルでもわかるGit入門

Gitの構造・システムについて解説されている、入門Git。
サルでもわかるGit入門はコマンドの使い方等の説明は非常に丁寧なので慣れたらこれを読めばいいと思いますが、UIの説明に重心が寄っていて、Gitというシステム全体についての解説が薄いように思えます。Gitの設計を知ることこそGitを習熟する肝だと思うので、この本をお勧めします。





*「正しい使い方を簡単に、間違った使い方を困難に」というのはプログラマが知るべき97のことより。