無職がGSoC 2026に採択されるまで
GraphiteでGeneralized graphical data rendering representationをやります
Google Summer of Codeとは
Googleが毎年主催する、18歳以上のOSSコントリビューターをサポートするプログラムです。候補者が希望するOSSでやりたいプロジェクトのプロポーザルを提出し、それが採択され完遂できるとGoogleから報奨金を受け取る事ができます。報奨金はLarge sizeで日本なら$5,400です。プロジェクトにはそのOSSからメンターを付けてもらえて、6月から8月の3か月ほどに渡って行われます。2026年は184のOrganizationsに対して23,371のプロポーザルが提出され、1,141人が採択されました。
どこでなにするの
Graphiteというブラウザ上で動くベクターグラフィックス編集ツールにLarge sizeのプロポーザルを提出し採択されました。大体週に30時間、12週間に渡って作業します。 GraphiteはIllustratorやFigmaに大枠は似ていますが、ノードによる手続き的な非破壊編集ができることが特徴です。コードはほぼRustで書かれていて、フロントにSvelteが用いられています。
今回私はGeneralized graphical data rendering representationというプロジェクトに取り組みます。これは主にSVGのペイントサーバーを拡張した仕組みを持てるようにPaint周辺のアーキテクチャ改善を行うというものです。現在GraphiteではStrokeは単色塗りのみ、Fillは単色とグラーデーションにのみ対応しています。これを将来的にはパターンはもちろん、レンダリングが可能などんな要素でもPaintのソースとして使えるようにしたいという目標があります。私のプロジェクトの主目的はその土台を作成することで、具体的には新規ノードの追加、Vello / SVGへのレンダラーの改善、新機能のUIへのつなぎ込みなどをやることになります。それに加えてConic GradientやStrokeの複数Paintソース対応などの機能追加も行う予定です。
応募から採択まで
私はドイツで2年フロント寄りのWebエンジニアとして働いていて、2月に退職、3月に日本に帰国しました。帰国準備中にOSS活動をしてみようと思いGraphiteの公式サイトを覗いたところ、GSoCなるものが存在することを知りました。
別業界からのキャリアチェンジ組のため、年齢制限によって未踏などこの手のプログラムには応募できないことがほとんどなのですが、GSoCなら社会人でも参加可能。しかもちょうどUoLはFinal Projectのみを残してキャリアブレイクのため半年休む予定、かつ帰国してからしばらくはOSS活動をしつつ無職を堪能しようと思っていたので、渡りに船だと思い応募を決めました。
これが3月に入って直ぐぐらいの頃で、プロポーザルの提出期限が3/31。引っ越し期間と被るのもあって、ギリギリ間に合うか?というタイミングでした。しかしGraphiteは自分の興味範囲とビッタリ一致していたので、絶対に採択される!と意気込み100点で準備を始めたのでした。
●
Graphiteでは応募の前にいくつかPRを出すこと、テーマを決めたらプロポーザルを本書きする前にメンターとディスカッションして詳細を詰めることが主な条件として挙げられていました。テーマ案はGraphite側が既にいくつか提示していたので、その中からベクターグラフィックスのレンダラーに関連している今回のテーマを見つけ、3月前半に周辺のPRを2個作成。3月の後半からプロポーザルのドラフトをざっくり作ってディスカッション→修正というのを3,4往復ぐらいして、メンターからも概ね良いのではないかとお墨付きをもらったところで提出しました。
プロポーザル提出後も、採択者を組織側が確定する4/22までに作成されたPRは加点対象になるとのことだったので、プロポーザルからの先取りPRを2つと、Mesh GradientのPoCを作ってディスカッションするなどの活動を行っていました。
その他考えていたことや戦略は以下のとおりです。
- Graphiteはコアコントリビュータが4人で、ファウンダーさん(かつ今回のメンター)がかなりの役割を担われていることもあって、PRの個数よりもプロポーザルの最初のレビュー依頼を早くすることを意識しました。実際、提出期限直前は恐らくプロポーザルのレビュー依頼が多すぎて回りきらない状態になったみたいです。なので同程度のサイズ感のOrganizationに提出する場合、遅くとも提出期限の2週間前ぐらいには最初のレビューをお願いするようなスケジュールにできるとベストだと思います。
- 他でどうかはわかりませんが、独創的なアイデアというよりは、プロダクトとして必要な新たな機能を、今のアーキテクチャに沿いつつどうクリーンに実装するかの提案を求められているように感じました。特にプロジェクトのアイデアリストに乗っているものについては、メンテナの頭の中にある程度思い描いている最終形があるはずなので、それをドラフト作成→ディスカッションの往復の中で少しずつ聞き出していきました。どこまでは既にデザイン済みでどこが未確定なのかが分かれば、プロポーザルが一気に書きやすくなります。これはGraphiteがまだベータリリース前で、必要な機能の実装が最優先されていることが主な理由かもしれません。
- ライバル達が半年以上前から準備していたのに比べ自分は遅めの参加だったので、最初は存在を認知してもらえるように積極的にコミュニティに顔を出し、提出直前は割と朝から深夜までプロポーザルの完成度向上と、ディスカッションへ直ぐ反応できるようにPC前に貼り付いていました。若干根性論的で身の置きどころがない気持ちですが、技術力で横並び、コミュニティ貢献度でややマイナスかもという状況で、他でプラスに持っていける可能性があるなら数日ぐらい丸ごと突っ込んでもOK、中途半端で後悔するのは嫌、という心持ちでした。
おわりに
技術でゴリ押しできるだけのパワーは(まだ)持ち合わせていなかったので、割とメタ的な戦略も使いつつ泥臭く採択まで漕ぎ着けたという感じです。また今回のプロポーザル作成に当たっては、日本の先人達の記事や公開されているプロポーザルに大変助けられました。私のプロポーザルも参考になるか分かりませんが、以下で公開しています。
採択されて一安心、でもこれからが本番!日本での新生活を楽しみながら、GSoCやっていきます。良い夏にするぞ!