Summer of Code 紹介ページ

Summer of Code 2008 logo 今年も Summer of Code がはじまり,多くの学生が採択されました.

はじめに

Google社が開催する Summer of Code (サマー・オブ・コード, SoC)は,オープンソース・フリーソフトウェアのプロジェクトに参加する世界中の学生を支援する大がかりなイベントです.2005年から毎年開催され,課題を達成した学生には修了証,Tシャツ,そして4,500ドルが支給されます.

これまでSoCはオンラインの開発者コミュニティによって進められてきたために教室で告知されることがなく,「SoCを知らなかった」「SoCを知っていれば応募したのに」という大学生や専門学校生の反応が多く見られます(参考記事).そこでFSIJ(特定非営利活動法人フリーソフトウェアイニシアティブ )では,これまでの参加経験をもとに日本語での参考情報を提供します. 学生のみなさん,そして開発者や教員のみなさんにとって,SoCがオープンソース・フリーソフトウェアについての理解を深める機会になることを期待しています.

最新情報

Google Summer of Code on media

昨年までのSoC情報(日本語)

Google's Summer of Code に参加して」(SEA & FSIJ 合同フォーラム 2006年5月 発表資料)::

2005年,2006年の日本からのメンターや学生の参加状況が報告されています.

Google's Summer of Code: 2年目の展望」(Open Tech Press 記事, 2006年06月04日)::

日本の状況も含めた紹介記事です.

GSoC 経験者の話

昨年学生として参加してGSoCを完走できた経験から

Google Summer of Codeについて: Summer of Code に採択された経験から

Google SoC: 「夏休みコード道場」とかいうありえないほど恥ずかしい名前になっていたものを 2,3 年前にやった


SoCの特色

多くの企業が夏の間にソフトウェア系の学生を対象にしてプログラミングコンテストやインターンシップを実施していますが,SoCは18才以上の学生であれば,全日制・通信制を問わず,どの専門分野の学生でも応募できます.また,リクルート活動を目的にしたものでもなく,書いたプログラムを全世界に公開できるという点も多くの企業プログラムとは異なります.また学生の指導をひきうける組織も多様で,名だたるソフトウェア企業や巨大プロジェクトから趣味のソフトウェアまで100以上の団体が参加しているので、SoCを通じてさまざまな指導を体験することが可能です.指導を受ける課題はプロジェクトやメンターによって期待されることがまちまちなので,気に入ったテーマをみつけるまでさがしてみましょう.

モデルスケジュール

フリーソフトウェアのプロジェクト参加を通じて「インターネットでのソフトウェア開発にチャレンジしたい」「アプリケーションとして世間の人たちに使ってもらえるようなものを作り上げたい」と考えている日本の学生のみなさんのために,モデルとなるスケジュールを(日本時間で)紹介します.

学部生(新1-3年生)の例: 面白そうなプロジェクトをさがそう

3月18日 SoCの参加団体と課題リストが発表される.
提案された課題が自分がやりたいことと近いかどうか各担当者に尋ねる(他の団体を勧められる場合もある).英語が苦手な人は日本語での指導を受けつける組織をさがしてみる.
Googleアカウントをつくってグループに参加する.アナウンス記事を参考にしてウェブアプリで参加登録をしておく
3月25日 学生からの申込の受付開始.Webアプリケーションの応募フォームを埋めてプロポーザルを完成させる.
4月07日 学生からの申込の受付終了.学生からのプロポーザルに優先順位がつけられる.
4月21日 採用された学生のプロポーザルが発表される.採用された学生は必要書類を読み,メンターやプロジェクトについて事前学習を進める.
5月14日 FSIJ月例会
5月26日 SoCのコーディングの開始.
当初の手当としてGoogleから50ドル(2007年の場合)支給.
7月08日 学生とメンターは中間審査のための提出物を作成する.
7月15日 中間審査終了.パスすればGoogleから2,000ドル(2007年の場合)支給.メンターからてほどきを受ける.
8月12日 作成作業終了(目安).清書したりテストを書いたりドキュメンテーションを完成させる作業に移る.
8月19日 最終成果の提出を行い,審査を行います.
9月02日 最終審査の〆切.
9月04日 学生はコードをGoogleに提出する.
審査をパスした人には2,000ドル(2007年の場合)と修了証が配られる.

学部生(新4年生)の例: 卒業研究との組合せ

3月 卒論の研究計画について指導教員と相談.もしも動作する作品やデモを提出するよう求められたら,SoCでの成果を卒業研究の一部として提出できるか相談する.
3月18日 SoCの参加団体が発表される.団体の担当者と自分がやりたいアイデアを交換する.卒業研究のどの部分をSoCでやりたいのか,指導教官と相談する.
4月21日 採用された学生のプロポーザルが発表される.採用された学生は必要書類を読み,メンターやプロジェクトについて事前学習を進める.指導教官と研究スケジュールを確認する.
就職活動をしている人は,夏休みの間はSoCに専念したい希望をリクルーターに伝えておく(研修参加を要求する企業もあるが,学生の希望は考慮される).
5月
6月 夏休みの計画について指導教員と相談.メンターは研究指導まではできないので,指導教官のアドバイスをもらう.
7月
8月
9月 他の人が書いたものを自分の研究として提出することはできないので,自分が作成したことについてGoogle担当者に公式書類を発行してもらう.
動くコードができたら,秋からは指導教官の指導のもと,卒業論文の執筆にはいる.

大学院生(修士 新1年生)の例: 卒業研究の応用

3月 卒論提出.自分の卒業研究に関係あるプロジェクトの動向を調べてみる.
3月18日 SoCの参加団体が発表される.自分の卒業研究の成果を使える提案がないか調べ,尋ねる.
大学卒業・大学院進学.
4月7日 学生からの申込の受付終了.学生からのプロポーザルに優先順位がつけられる.
4月 大学院進学.時間割および夏までのスケジュールを決める.
4月15日 採用された学生のプロポーザルが発表される.採用された学生はSoCの時間をどれくらい確保するのかメンターと相談する.そして指導教官とも研究スケジュールを確認する.
5月
6月
7月 夏休みになったら集中的にSoCに打ち込む.
8月
9月 審査をパスした人には2,000ドル(2007年の場合)と修了証が配られる.
修了証をもらったら,履歴書に「Google社のSummer of Codeに採用され,ソフトウェア開発を行う」と書いておく.

大学院生(修士 新2年生)の例: 修士論文との組合せ

3月修論執筆計画について指導教員と相談.もしも動作するデモや実証コードを提出するよう求められたら,SoCでの成果を修論の一部として提出できるか相談する.
4月 新学期.時間割および夏までのスケジュールを決める.
4月21日 採用された学生のプロポーザルが発表される.採用された学生は必要書類を読み,メンターやプロジェクトについて事前学習を進める.指導教官と研究スケジュールを確認する.
6月
7月
8月
9月 他の人が書いたものを自分の研究として提出することはできないので,自分が作成したことについてGoogle担当者に公式書類を発行してもらう.
動くコードができたら,秋からは指導教官の指導のもと,修士論文の執筆にはいる.

FAQ

google summer codeってやるとどんなメリットあるの?::

メンター組織にとっては若い共同開発者を見つけることができます。 学生にとっては、現実世界でおこなわれているソフトウェア開発にかかわってみるいいチャンスです。英語の練習にもなるでしょう。開発できれば$4500をもらうことができます(誰でもできるバイトよりコーディングを楽しむことで!)。GSoCをやった経験は将来の就職する時に役だつ可能性があります(過去にはApple, Google, IBM Research, NetApp, Nokiaなどに就職したGSoC卒業生がいます)

具体的にはどんな感じで開発を行うのか::

基本的にフリーソフトウェアの開発と同じです。コードを書いてパッチをレビューしてもらいリポジトリにコミットして開発をすすめていきます。詳細はプロジェクト次第です。そのやりかたを学び経験することもGSoCの目的の一つです。

英語がぺらぺらじゃなくても良いのか::

プロジェクトおよびメンター次第です。メンターが日本語が使えなければ英語です。ぺらぺらである必要はありませんが、英語でコミュニケーションできる/やる気があることが必要です。GSoC web appでのapplicationおよびreportは英語でする必要があります。英語でコミュニケーションするいい練習になります。「not to be shy or worried about your English skills」

アメリカとか海外まで行く必要があるのか::

ありません。基本的にネット上でやりとりして開発をすすめていきます。フリーソフトウェアの開発と同じです。

期間が5月から8月だけど、その間は学校を休まないといけないか::

いいえ。目標としているものの開発さえできればそれ以外に何をしていても問題ありませんが、基本的には「バイトするくらいならコードを書くことに集中しよう」(そのための$4500です)

自己負担が必要な金額はいくらくらいか::

開発用のPCとネットワークにつなぐくらい? プロジェクトによっては必要なハードウェアなどがあるかもしれません。

その他、SOCに関する具体的な情報::

FAQ Knowledge base wiki など。Google Summer of Code discuss (Japanese)に参加するとよいでしょう。

GSoC2008/BinaryScanner?:

ELFバイナリをスキャンして、特定のバイナリパターンを見つけるツールを開発しています。
それによって、特定の命令下で起きる事があらかじめ分かっている、ホスト・ハードウェア側の
バグの発生を事前に検知できることを目標にしています。

現時点での成果物は、以下のようなRubyスクリプトによるプロトタイプのみです。今後は、C言語に移植・
拡張して、バイナリを操作するライブラリによる更に本格的なツールを作成することを目指します。
#!/usr/bin/ruby

require "strscan"

PATTERN_RE = /[[:xdigit:]]{2}|\./

unless ARGV.size == 2
  abort "usage: #{$0} <pattern> <targetfile>"
end

pattern, file = ARGV
unless /^#{PATTERN_RE}+$/ =~ pattern
  abort "invalid pattern #{pattern}"
end

re_str = "" # regexp string compiled from pattern
pattern.scan(PATTERN_RE) do |byte|
  case byte
  when "."
    re_str << byte
  else # xdigit
    re_str << '\x' << byte
  end
end

AROUND_DIG = 8
AROUND = "(?:.{#{AROUND_DIG}})?"
bin_re =  Regexp.new(AROUND + re_str + AROUND, Regexp::MULTILINE, 'n')

body = IO.read(file)
scanner = StringScanner.new(body)
while scanner.scan_until(bin_re)
  printf "%08X ", scanner.pos - scanner.matched.length
  scanner.matched.each_byte do |b|
    printf "%02X ", b
  end
  print "\n"
end

Attachments