この記事はOUCC Advent Calendar 2015のために書かれたものです.
先日OUCCのデキそうな後輩にGSoCとか興味ない?と聞いたところつらそうなイメージがあるからいいです(要約)と言われてしまい, 苦労話をしすぎたかなとちょっとショックだったのでそんなに辛くないよむしろ楽しいよ!というノリで書いていく.
他の参加者に話を聞くと僕が参加したプロジェクトはかなり特殊なやり方をしていたようなので, より一般的な話はしゅうう先生の以下の記事などを参考にすることを推奨する.
学生諸君、Google Summer of Code 2013に参加して50万円貰ってオープンソースソフトウェアのコミッターになろう - かーねる・う゛いえむにっき
OSSのためにコードを書いてGoogleから5000ドルもらうイベント.
"OSSのために":
人やお金が足りないOSSの団体がGoogleに応募し, Googleによる審査を通過した団体が個別に学生の募集をかける. 今年だとRuby本体だとかJRuby, あとはSymPyとかGNOME, Boostなど有名どころが色々参加している. 学生はproposal(提案書)を提出して期間中何をやるかを宣言したあと5月から9月まで約半年間かけてコードを書く.
"Googleから"
Googleはお金を出してくれるだけで直接やり取りする機会はない. 優秀だとインターンとか誘われるらしいがよく知らない.
"5000ドルもらう"
半期ごとにどこまでできたかの審査があり, 通過すると半額ずつお金が振り込まれる. 表記どおり米ドルでもらえる.
SciRubyという団体でnyaplotというソフトを開発した. ちゃんと完走してお金ももらった.
以下, 時系列順にやったことを書いていく. 1年前のことなので記憶が曖昧でどこか間違えているかもしれない.
2013年の年末に @yus_no_s さんにこういうのあるでーと教えてもらい適当に手元で調べたところRuby関連でSciRubyという団体があるのがわかった. が, 当時割と忙しかったのもあり放置していた.
その後年が明けてからしばらくして @naota344さんにGSoC興味ないですかと聞いてもらった. SciRubyのことを伝えるとBioRuby関連で@kozo2さんを紹介してもらい、本格的に動き始めた.
とりあえずMLにメールを投げて, 俺Visualizationプロジェクトやってみたいんやけどとお伺いを立ててみる. その後MLでの反応を見ながらproposalを書く. ちょうどその頃情報処理学会に参加していたので昼間は学会に出て夜ホテルに帰ってからの作業になりこの頃からかなりひいこらしてた.
@kozo2さんにチェックしてもらいつつproposalを仮提出する. SciRubyの人からコメントがつき, テストどうするつもりよとか3Dとかどうよとか聞かれる.
審査の足しになるかもしれないからなんか書いてみるかと思いコードを書くことにする. 既存のソフトウェアをベースにすすめるつもりだったので適当にいじってみたり:
https://github.com/domitry/plotrb/tree/serverSpike
WebGLとか使った3Dプロットのためのライブラリを作ったりする.これらはコメント欄で逐一報告した.
https://github.com/domitry/elegans
審査期間中にIRCに呼ばれ, 1対1で面接っぽいのを受ける. 何を聞かれたのかはあまり覚えてないがプロジェクトに関する割と詳しい話を聞かれた気がする.
その後しばらくしてproposalが通ったよの連絡がきて歓喜する.
memtorさんからproposalをもうちょい具体化して、との連絡が来る. 既存のproposalをベースにしてやるつもりで書いて提出したら強烈なダメ出しをくらう.
アドバイスを元にもう一度書き直すがまだ甘い, ともう一度書き直しを命じられる. 今思うと筋が通っているのだがちょっとつらかった.
とりあえずリポジトリを作る. (超懐かしい!!)
プロジェクトの初日, 大学で授業を受けた後適当にコードを書いてみて, うまくいかなかったのでとりあえず寝る. 翌日起きるとなんでGitHubにコミットしてへんのやというメールが来ていてびっくりする.
向こうからはこちらが何をしてるかわからないのであとでrevertしてもいいからとりあえずpushしろとのこと. これから毎日コードを書いてpushする生活を始める.あと毎日夜にmentorさんに進捗報告をするよう言われる.
すでにバイトとかでコードを書いていたら苦ではなかったのかもしれないが, 当時バイトも始めたばっかりだったのでちょっとつらくなる.
一度だけmemotrさんと学生を集めて対面でチャットをした. 英語でチャットは初めてだったのでかなりビビる. 英語はぐだぐだだったがPCの画面にIRuby(ブラウザ上でRubyを動かす環境)の上でグラフが表示できているところを見せたらかなり受ける.
その後はひたすらコードを書く.
中間審査は通った. お金も振り込まれた. それなりの成果を出せていたのでmentorさんにお願いして中間テスト時期はお休みさせてもらう. 半月ほど進捗報告もストップした.
その後pencil down(プロジェクトの終わり)までに追い込みで機能を付け足したりする. 夏休みとGSoCの期間は最初の1周間半ほどしか被っていなかったが, 時間ができた分ごりごりかけた記憶がある. pencil downでは簡単なアンケートに答えた後成果物をzipにかためてアップロードし, 終わり. 成果物に関してブログ記事を書く.
pencil downの時点でそれなりの成果が出せていたのでどこかのコンテストに応募することを検討しはじめる. ちょうど前年度お世話になったサイボウズがスポンサーでU22プロコンというものをやっていたので応募してみた. トントン拍子に話が進み, 最終的に経済産業大臣賞をいただく.
その後プロジェクトを継続するためにRuby Associationからお金をいただきつつMikonという新しいソフトウェアを開発する. その成果物も含め2015年の春にフクオカRuby大賞, 秋にはRuby Prizeをいただく.
自分の場合,
- Rubyあんまり経験ない
- お金ない
- 成果物ない
- 時間ある
だったのが,
- Rubyまあ経験あるかな
- お金まあある
- 成果物ある
- 時間ない
になった. 個人的には人に見せられる成果物ができたこと, また英語でやりとりしながらコードを書くきっかけが得られたことがよかったと思う. 成果物のnyaplotはRuby界隈の色々な人に評価していただき, 現在も開発を続けている.
GSoCとそれを勧めてくれた人(@yus_no_sさん, @naota344さん), またproposalの時期から支援していただいた人(@kozo2さん)がなければ今の自分はないと思うし, もし周りに興味がある人がいたら今度は自分が勧めたいと思う.
興味が出てきた人はOUCCに関係がある人だと僕かておくれ側転大破さん(@kotatu_mi), あるいはついにOBになってしまわれた@naota344さんにリプなど投げるといいかもしれない.
翌日の記事は @spring-raining さんの「gifアニメが作れるWebアプリ Giraf 2 を公開しました」です.