Google Summer of Code と Chrome 拡張機能

私は中国出身の 2 年生で、ウェブ開発に情熱を注いでいます。1 年目は、大学の技術クラブに参加しました。このクラブで、私はコーディングとオープンソースに触れました。このクラブで、コーディングを愛する志を同じくするパートナーのグループに出会いました。2023 年の初めに、私は彼らから Google Summer of Code について知りました。Google が主催するこのグローバル プログラムは、学生とオープンソース組織をつなぎ、オープンソース アクティビティに参加して夏を有効に活用できるようにサポートします。

試しに応募しました。幸い、承認されました。Chrome 拡張機能のサンプル リポジトリに貢献した夏は、思い出深く、貴重な時間でした。もちろん、効果的なコミュニケーション、コーディング スキル、計画能力など、多くのことを学びました。

GSoC 2023 も終わりに近づいてきましたので、GSoC での経験をいくつか共有したいと思います。この投稿では、私が参加した GSoC の一般的なプロセスについて簡単に説明します。

GSoC に貢献した私のストーリー

私は Chromium GSoC 2023 プロジェクトに応募しました。主なタスクは、関連するスクリプトやドキュメントなど、既存の Chrome 拡張機能のサンプルをアップグレードして Manifest V3 で動作させることです。

最初から

私は 2023 年 2 月に GSoC を初めて知りましたが、まだ応募するかどうかは決めていませんでした。当時、私はいくつかの懸念を抱いていました。

  • 私は内向的であり、英語が母国語ではないため、メンターとのコミュニケーションが難しいかもしれません。
  • GSoC コミュニティは世界中から参加しているため、タイムゾーンの違いに対応するのは難しい場合があります。
  • GSoC は非常に有名なプログラムで、競争が激しいため、参加できる可能性は低いように思えます。

ただし、これらのいずれも問題ではなかったと自信を持って申し上げられます。

私の話をする前に、2022 年の初めに私に起きた出来事についてお話しします。この出来事は、GSoC に参加する機会にもなりました。Manifest V2 に基づくブラウザ拡張機能を Manifest V3 に移行したいのですが、移行を完了するには、ドキュメントを参照して API の変更をすべて把握する必要がありました。また、参考になる関連サンプルがあるかどうかも検索する必要がありました。新しい API を理解してコードを移行するのは、私にとってかなり難しい作業です。

そのため、GSoC プロジェクト リストを閲覧して MV3 に関連するアイデアを見つけたときは、非常に興奮しました。Manifest V3 拡張機能のサンプルの改善に貢献し、将来のデベロッパーに便利なツールを提供したいと考えました。

3 月に、担当メンターの 1 人である Oliver に、私の意向について簡単なメールを送信しました。

GSoC プロジェクトへの参加申請

お客様

私は中国の CS 学部生です。GSoC で Chrome 拡張機能のサンプル関連プロジェクトについて学び、Manifest V3 サンプルの改善に興味を持ちました。API サンプルの作成経験はほとんどありませんが、ウェブ開発と MV3 拡張機能の開発(https://github.com/daidr/paimon-webext)の経験があり、MV3 API サンプルの重要性を認識しています。そのため、学習と貢献の両方を希望しています。このプロジェクトにまだ申し込むことはできますか?

ありがとうございました。

しばらくして、Oliver と Ali(Oliver の上司)から返信がありました。質問に回答し、GSoC の具体的なルールとタイムラインについて詳細な情報を提供しました。また、多くの貴重な参考資料も共有していただきました。

前進する決意を固め、勇気づけられました。GSoC 2024 など、今後開催されるオープンソース イベントに参加することに興味をお持ちの場合は、まず一歩を踏み出すことが重要です。躊躇せず、勇敢に挑戦してください。

応募する前に、プロジェクトのコードを確認し、ドキュメントをざっと確認しました。GSoC では、参加者がコミュニティに慣れ親しむためのコミュニティの結びつき期間が約 1 か月間設けられていますが、事前に知識を得ておくことでプレッシャーが軽減され、より的を絞った提案書を書くことができました。

プロジェクトで提供されているスターター バグを解決しようとしました。これらの問題は比較的単純で、プロジェクトをすばやく理解するのに役立ちました。メンターのオリバー(当時はメンターではありませんでしたが)に感謝しています。不明な点があるたびに、迅速にメールで返信し、辛抱強く問題を解決してくださいました。提案書の作成中に問題が発生した場合は、メンターに送信して改善が必要な部分がないかどうかを確認することもできます。

承認を受ける

提案書の作成は、申請前の最後の作業です。提案書には、申請フォームに加えて、アイデア、目標、スケジュールを含める必要があります。希望するプロジェクトによっては、提案書の追加テンプレートが提供される場合があります。オンラインには、参照用に多数の提案書の例が用意されています。

下書きを完成させたら、フィードバックを求めてメンターに送信しました。申請を送信してから、長い待ち時間があります。5 月上旬に、承認されたという通知が届きました。

コード作業

最初のオンボーディング期間中は、まず残りのスターター バグに対処し、学習する必要がある新しいスキルがないかどうかを確認しました。残りの時間はドキュメントを読んでいます。

メンターと話し合った結果、タスクに割り当てる時間をより合理的にするために、いくつかの目標を調整しました。また、すべての API サンプルを一覧表示し、デベロッパーが必要なサンプルをすばやく見つけられるようにする基本的なフィルタ機能を備えた、developer.chrome.com の新しいページを作成するアイデアについても議論しました。私にとってはかなり複雑なタスクでした。メンターと私でプロジェクトを定義し、プロダクト要件ドキュメント(PRD)を作成するのには、かなりの時間がかかりました。

この大規模なタスクでは、リポジトリを走査して拡張機能サンプルとそれらが使用する API のリストを含む JSON ファイルを生成する、サンプル リポジトリ内の自動化スクリプトが必要であると判断しました。developer.chrome.com のドキュメント リポジトリでは、このファイルを使用してページが作成されるようになりました。

まず、Babel を使用してサンプルコードの抽象構文木を分析し、使用されている API を特定することを検討しました。このアイデアをメンターに伝えたところ、メンターは以前に同様の取り組みを行ったことがあり、このアプローチの実現可能性を確認できました。コードを完成させた後、メンターとそのチームのメンバーから、コードのセグメンテーション、コードスタイルの標準化、関数の適切なドキュメント化など、貴重な提案をいただきました。

大小さまざまなレビューを何度か行った後、コードは正常に統合されました。スレッド全体は GitHub で確認できます。また、ライブページで確認することもできます。

まとめ

GSoC で得たものを尋ねられたら、まずブラウザ拡張機能 API に関する知識を挙げます。ドキュメントを読み、新しいサンプルを作成することで、さまざまなブラウザ拡張機能 API について詳しく理解できました。

また、GSoC に合格する前はほとんど経験していなかった多くのスキル(包括的なコードレビュー プロセスに従う、PRD を作成するなど)を習得しました。また、GitHub Actions を使用してワークフローを自動化し、Babel を使用してすべての拡張機能サンプルを走査し、使用されている API を追跡する方法を学びました。また、Nunjucks テンプレート エンジンを初めて使用しました。これらの能力はプログラミングに不可欠であり、学習できてよかったです。オープンソース コミュニティに参加することは、私にとって楽しいことです。

この夏は、多くの忘れられない思い出ができました。コーディングは私にとって非常に満足のいくものです。私を導き、興味深い知識を教えてくれた患者メンターがいて、経験を豊かにしてくれました。

コンピュータ サイエンス分野の知識は尽きることがありません。他の人と比較したとき、自分のオープンソースに関する理解は氷山の一角に過ぎないことに気づきました。ただし、少しでもご協力いただければ幸いです。GSoC は、オープンソースに参加するための素晴らしい出発点だと思います。

また、私の経験が、今後のオープンソース アクティビティへの参加の参考となることを願っています。

Google Summer of Code に参加したい方には、次のようなおすすめの方法があります。

  1. 自分に合ったアイデアを選択する: アイデアを見つける際は、興味を優先し、次にスキルを優先すべきだと思います。この戦略により、寄付プロセス全体で熱意を維持できます。
  2. 質よりも量: 多くの提案を送信して、GSoC への参加の可能性を高めることができます。ただし、人間のエネルギーには限りがあるため、品質の方が重要であると考えられます。2 ~ 3 つのアイデアに絞ったほうが、最終的には有益な結果が得られる可能性があります。
  3. 新しいことに恐れず挑戦する: プロジェクトで使用したことのないテクノロジーをためらわずに試す。コミュニティで 1 か月近く過ごし、慣れないテクノロジーに慣れ親しむことができます。また、夏の間はテクノロジーを導入できます。ぜひお試しください。
  4. 事前にプロジェクトに慣れ親しんでください。たとえば、開発ドキュメントを読み、過去の commit 履歴と問題を確認し、過去の pull リクエストをざっと確認します。事前にプロジェクトの全体像を把握しておくと、より包括的な提案書を作成できます。
  5. コミュニケーションを維持する: メンターと定期的にコミュニケーションを取り、問題に直面したときは、応募前でも入社後でも、遠慮なく質問してください。ほとんどのメンターは、問題の解決をサポートし、あなたの進捗状況を把握したいと考えています。

ご精読ありがとうございました。