Kotlin と Google Summer of Code 2025
この記事には、Kotlin と Google Summer of Code 2025 のプロジェクト案の一覧、および貢献者ガイドラインが含まれています。
Kotlin リソース:
- Kotlin GitHub リポジトリ
- Kotlin Slack および #gsoc Slack チャンネル
質問がある場合は、[email protected] 経由でお問い合わせください。
Kotlin の Google Summer of Code (GSoC) 貢献者ガイドライン
はじめに
GSoC FAQ と プログラムのアナウンスを確認してください。
Kotlin 言語に慣れましょう:
- 公式の Kotlin ウェブサイトは、開始するのに最適な場所です。
- 言語をより深く理解するために、公式ドキュメントを読んでください。
- JetBrains Academy の Kotlin コースや、Android チームの トレーニングオプションを確認してください。
- 最新のニュースや動向を把握するために、Kotlin X または Kotlin Bluesky アカウントをフォローしてください。
- チュートリアル、ヒント、最新情報については、Kotlin YouTube チャンネルをチェックしてください。
Kotlin オープンソースコミュニティについて知りましょう:
- 一般的な Kotlin 貢献ガイドラインを確認してください。
- Kotlin Slack チャンネルに参加して、他の開発者とつながり、質問への回答を得てください。
- #gsoc チャンネルに参加して質問し、GSoC チームからのサポートを受けてください。
応募方法
- プロジェクトのアイデアを確認し、取り組みたいものを選択してください。
- Kotlin に詳しくない場合は、Kotlin ウェブサイトの入門情報を読んでください。
- GSoC 貢献者ガイドラインを参照してください。
- GSoC ウェブサイトから応募してください。
- 提案されたプロジェクトに関連する、動作するコードサンプルを作成することをお勧めします。また、特に自信のあるコードサンプルがあれば、それを見せていただくことも可能です。
- なぜ Kotlin に興味があるのか、および Kotlin での経験について説明してください。
- オープンソースプロジェクトに参加している場合は、これまでの貢献履歴を記載してください。
- GitHub、Twitter アカウント、ブログ、または技術的・科学的出版物のポートフォリオがある場合は、それらも参照させてください。
- 試験や休暇など、他の予定のために GSoC のタイムラインと競合がある場合は、あらかじめ開示してください。
ありがとうございます!皆さんの応募を楽しみにしています!
プロジェクトのアイデア
Build Server Protocol: Kotlin サポートの追加 [難易度: 高、350時間]
Kotlin チームは、公式の Kotlin サポートを Gradle や Maven ビルドシステムだけでなく、他のあらゆるビルドシステムにも拡大し、最小限の労力で JetBrains IDE でネイティブにサポートできるようにしたいと考えています。一方で、JetBrains 以外の IDE でも基本的な Kotlin サポートを提供したいと考えています。そのようなサポートの一部として、Kotlin をサポートするあらゆるビルドシステムから Kotlin 特有の情報を取得できるようにすることが挙げられます。
これらの要件に対する解決策として、ビルドシステムと IDE の間に抽象化レイヤーを提供する Build Server Protocol (BSP) が考えられます。
このプロジェクトの目標は、BSP プロトコルを使用してユーザープロジェクトから IntelliJ IDEA に必要なすべての情報を取得し、プロジェクト内で Kotlin コードを扱えるようにするプロトタイプを実装することです。このプロトタイプのスコープを限定するため、ユーザープロジェクトは自動的にビルドするために Gradle を使用するものとします。
推奨されるスキル
- Kotlin の知識
- Gradle プラグインの書き方の理解
- ボーナス: IntelliJ IDEA 用プラグインの書き方の理解
メンター候補
Yahor Berdnikau, Bálint Hegyi, Reinhold Degenfellner
応募者への課題
課題 #1 なぜこのプロジェクトに興味があるのですか?
課題 #2 実技課題: 特定のタスクを公開する Gradle プラグインを作成してください。このタスクは、Kotlin Gradle プラグインが存在する場合に、すべての Kotlin ソースの構造を取得して出力する必要があります。テストを含めると加点対象となります。
Vertex AI in Firebase を使用した Gemini 向け Kotlin Multiplatform での Android および iOS ターゲットのサポート [難易度: 中、175時間]
このプロジェクトは、Android および iOS を少なくともサポートする、Firebase 上の Vertex AI を使用した Gemini をサポートするオープンソースの Kotlin Multiplatform (KMP) ライブラリを作成することを目的としています。既存のサービス向けの KMP ライブラリ作成におけるベストプラクティスを、適切な製品実装(例えば、適切な API キー管理、ユーザー管理の API キーのサポート、クライアントのスロットリングなど)に焦点を当てて実演します。
期待される成果
- 既存の Google サービスをサポートする新しい Kotlin Multiplatform ライブラリ
- サンプルコードとドキュメント
推奨されるスキル
- Kotlin
- Kotlin Multiplatform
- モバイル開発 (Android および iOS)
メンター候補
Matt Dyor、および Google チーム
Bazel における Kotlin Multiplatform サポートの追加 [難易度: 高、350時間]
Bazel の Kotlin サポートは進化していますが、適切な Kotlin Multiplatform (KMP) の統合は依然として課題となっています。このプロジェクトは、依存関係解決の問題に対処し、rules_kotlin と rules_jvm_external の互換性を強化し、クロスプラットフォームビルドを可能にすることで、Bazel の KMP サポートを改善することを目的としています。
主な改善点は、プラットフォーム固有の依存関係(expect/actual メカニズム)の処理、Gradle メタデータサポートの向上、Bazel における KMP のよりスムーズな開発体験の確保に焦点を当てます。
期待される成果
- Bazel における Kotlin Multiplatform の依存関係解決の強化
rules_kotlinおよびrules_jvm_externalとの統合の改善- シームレスなマルチプラットフォーム開発のための、Bazel で動作する KMP ビルド設定
推奨されるスキル
- Kotlin Multiplatform および Gradle
- Bazel ビルドシステム
- 依存関係解決戦略
メンター候補
Shauvik Roy Choudhary、および Uber チーム
Kotlin Language Server (LSP) [難易度: 高、350時間]
Language Server Protocol (LSP) は、オートコンプリート、定義への移動、リファクタリングなどのコードインテリジェンス機能を、さまざまなエディタや IDE で利用可能にする広く採用されている標準です。現在、公式の Kotlin LSP サーバーはありませんが、コミュニティからは大きな需要があります。公開され、コミュニティ主導で維持される実装は、コードの移行、AI を活用したコード支援、さまざまな開発環境へのシームレスな統合など、幅広いユースケースをサポートできます。
このプロジェクトは、Kotlin LSP の実装を開発し、主要な LSP 機能との互換性を確保し、開発環境全体で Kotlin のアクセシビリティを広げることを目的としています。
期待される成果
Kotlin LSP 実装の開発
推奨されるスキル
- Kotlin
- Language Server Protocol (LSP)
- IDE 用のプラグインまたは拡張機能の開発
メンター候補
Shauvik Roy Choudhary、および Uber チーム
新しい API を使用した Gradle 用 Maven Central 公開プラグイン [難易度: 中、175時間]
Maven Central は、JVM 向けのライブラリやプロジェクトを公開するための最も人気のある Maven リポジトリの 1 つです。Apache Maven や Gradle ベースのオープンソースプロジェクトで活発に使用されており、現在は Sonatype Nexus v2 に基づいていますが、新しいバージョンへの移行を控えています。オープンソースプロジェクトを新しい Maven Central インスタンスに移行する作業が進行中ですが、このインスタンスは API 実装が大きく異なり、ビルドツールプラグインでの特別なサポートが必要になります。新しい Maven Central 公開 API と互換性のある Gradle プラグインを開発することで、Gradle でビルドしているライブラリ作成者が新しいプロセスをスムーズに体験できるようになります。
現在、Gradle には複数の Maven Central 公開プラグインの実装があります。例えば、Maven Publish Plugin や、すでに新しい API の採用を試みている New Maven Central Publishing などです。応募期間またはコミュニティボンディングフェーズ中に、潜在的な貢献者はこれらの実装をレビューし、既存のプラグインの更新を提案するか、新しいプラグインの構築またはフォークを決定する必要があります。成果物には、Maven Central 公開用の既存プラグインの新バージョン、または Gradle 用の新しいプラグインが含まれます。実装は Kotlin または Java で行い、適切なテストカバレッジとドキュメントを備えていることを想定しています。追加の成果物として、プラグインの使用を簡素化するための Kotlin DSL 拡張機能や Declarative Gradle 拡張機能が含まれる場合があります。
期待される成果
- 更新された Maven Central 公開プラグイン、または新しいプラグイン
推奨されるスキル
- Kotlin
- Gradle
- Maven リポジトリ
メンター候補
Oleg Nenashev、および Gradle チーム
主要な Gradle プラグインにおける Configuration Cache の改善とロック競合の解消 [難易度: 低〜高、90時間〜350時間]
Gradle は、パフォーマンスをさらに向上させるために Configuration Cache を大幅に拡張する新機能 Isolated Projects に取り組んでいます。これは特に Android Studio と IntelliJ IDEA の同期パフォーマンスを向上させるもので、開発者の利便性の観点から、Gradle で最も期待されている機能の 1 つです。
Isolated Projects の課題の 1 つは Gradle コアにおけるロック競合であり、プラグインが並列実行を妨げることがあります。Java、Kotlin、Android、および Kotlin Multiplatform エコシステムの主要な Gradle Build Tool プラグインを中心に、ロック競合を減らしたいと考えています。貢献者は、自身の興味や希望するプロジェクトの規模に基づいて成果物を選択できます。
潜在的な成果物には以下が含まれますが、これらに限定されません:
- Configuration Cache Report ツールを Gradle Profiler に組み込む(または「そのための GitHub Action を実装する」)
- さまざまなプロジェクトで Gradle およびいくつかの人気のある Gradle プラグインをプロファイリングし、GHA 上でテストスイートを自動化する
- Configuration Cache の有無にかかわらず、ロック競合を減らせる可能性のある領域やプラグインを特定する
- 並行して、対象プラグインにおける他の Configuration Cache 互換性 領域に貢献する
- 発見された改善点の一部を実装する
期待される成果
Gradle 用 Kotlin DSL における拡張機能の実装、および一般的なプロジェクト統合のサポート改善
推奨されるスキル
- Kotlin
- Gradle
- Java
- パフォーマンス分析
- プロファイリング
メンター候補
Oleg Nenashev, Laura Kassovic
Jenkins プラグイン開発用の Gradle コンベンションプラグイン [難易度: 低〜高、90時間〜350時間]
Gradle で実装されている Jenkins プラグインは 50 以上あります。Gradle JPI プラグイン が存在しますが、Jenkins のホスティング要件に完全には準拠しておらず、更新が必要です。このプロジェクトのアイデアでは、Jenkins の Gradle 開発フローを回復し、Apache Maven フロー(Parent POM、Plugin Compatibility Tester、Jenkins Bill of Materials など)との機能パリティを達成し、Gradle で Jenkins プラグインを開発する人々の開発体験を向上させることを目的としています。
貢献者は、自身の興味や希望するプロジェクトの規模に基づいて成果物を選択できます。
潜在的な成果物には以下が含まれますが、これらに限定されません:
- Gradle JPI プラグインを刷新し、ホスティングのベストプラクティスに準拠させる
- Gradle JPI プラグインのコードベースを Groovy から Kotlin に移行する
- Kotlin および Kotlin DSL を使用して、Jenkins プラグイン Parent POM の主な機能をカバーする、Jenkins プラグイン用の新しいコンベンションプラグインを実装する。これには、プラグインのビルドだけでなく、Jenkins のベストプラクティスに従ったテストや静的解析も含まれる
- 刷新されたプラグインやコンベンションプラグインを、最も人気のある Gradle プラグイン(Gradle プラグイン自体を含む)に採用する
- Gradle プラグインを Plugin Compatibility Tester および Bill of Materials に統合する
- Jenkins プラグイン向けに更新された Gradle 開発フローをドキュメント化する
期待される成果
更新された Gradle JPI プラグインおよび/または Jenkins 用の新しいコンベンションプラグイン。これらは Jenkins Update Center および Gradle Plugin Portal で公開される
推奨されるスキル
- Kotlin DSL
- Kotlin
- Gradle
- Jenkins
- Java
メンター候補
Oleg Nenashev, Stefan Wolf
Kotlin DSL および Declarative Gradle ドキュメントサンプルのテストフレームワーク [難易度: 低〜中、90時間〜175時間]
Gradle を含む多くのプロジェクトには、多数の Kotlin DSL サンプルやコードスニペットがあります(例については Gradle Docs を参照)。簡潔にするためにスニペットが不完全なコードであることが多いため、複数のバージョンに対してそれらをテストすることは一定の課題を伴います。GitHub Actions や TeamCity 上のユニットテストフレームワーク(Kotest または JUnit 5)内で、それらのサンプルの検証を簡素化するテストフレームワークを構築したいと考えています。将来的には、Declarative Gradle サンプルについても同様のことを行う予定です。
期待される成果
Gradle 用 Kotlin DSL における拡張機能の実装、および一般的なプロジェクト統合のサポート改善
推奨されるスキル
- Kotlin
- Gradle
- Java
- 静的解析
メンター候補
Oleg Nenashev, Laura Kassovic
IntelliJ Platform Gradle Plugin – Gradle レポートと並列検証 [難易度: 中、175時間]
Gradle ビルドシステム用プラグインである IntelliJ Platform Gradle Plugin は、IntelliJ ベースの IDE 用プラグインのビルド、テスト、検証、および公開のための環境設定を簡素化します。このプラグインは、IntelliJ Platform で導入される絶え間ない変更に追従しながら、ビルド、テスト、検証のステップを管理します。IntelliJ Platform Gradle Plugin は、JetBrains、サードパーティの開発者、および外部企業によって、ワークフローを JetBrains ツールと統合するために使用されています。
期待される成果
- 詳細で設定可能な検証タスクレポートを提供するために Gradle Reporting を導入する。
- Gradle Worker API を活用して、複数の IntelliJ Platform バージョンに対する
verifyPluginタスクの並列実行を可能にし、タスク実行時間を短縮する。 - プラグイン開発ワークフローをさらに改善するための、追加の Gradle 強化策を調査する。
推奨されるスキル
- Kotlin
- Gradle
- IntelliJ Platform
メンター候補
Jakub Chrzanowski, JetBrains
Kotlin OpenRewrite レシピの追加 [難易度: 中、175時間]
OpenRewrite は、構造化された方法でコードの移行とリファクタリングを自動化するための強力なフレームワークです。OpenRewrite は Java を強力にサポートしていますが、Kotlin エコシステムにおいても、開発者がコードベースをシームレスに移行するのに役立つ、より包括的な OpenRewrite レシピセットがあれば有益です。
このプロジェクトは、Java ベースの AutoValue クラスを慣用的な Kotlin データクラスに移行したり、ベストプラクティスに従って Kotlin コードを現代化したり、Kotlin バージョン間のよりシームレスな移行を可能にしたりするような、より多くの自動変換を追加することで、Kotlin OpenRewrite レシピコレクションを拡大することを目的としています。これらのレシピは、Kotlin 開発者が最小限の手作業で、クリーンで最新の慣用的なコードベースを維持するのに役立ちます。
期待される成果
- Kotlin コード移行のための新しい OpenRewrite レシピの開発
推奨されるスキル
- Kotlin
- OpenRewrite フレームワーク
- Java から Kotlin への移行戦略
メンター候補
Shauvik Roy Choudhary、および Uber チーム
Bazel rules_jvm_external への BOM サポートの追加 [難易度: 高、350時間]
Bazel の rules_jvm_external は外部 Java 依存関係を宣言するための構造化された方法を提供しますが、現在は Bill of Materials (BOM) ファイルの適切なサポートが欠けています。BOM ファイルは Maven や Gradle で広く使用されており、開発者が個別のバージョンを指定することなく、一貫した方法で依存関係を管理できます。このプロジェクトは、BOM サポートを追加することで rules_jvm_external を強化し、開発者が Bazel 内で BOM ベースの依存関係解決を使用できるようにすることを目的としています。このプロジェクトには、既存のオープンソースの取り組みへの貢献や、rules_jvm_external への直接的な BOM サポートの実装が含まれる可能性があり、広く使用されている依存関係管理アプローチとの互換性を確保します。
期待される成果
- Bazel
rules_jvm_externalにおける BOM サポートの実装 - Bazel ユーザーのための依存関係解決と使い勝手の向上
- Bazel で BOM サポートを使用するためのドキュメントと例
推奨されるスキル
- Starlark (Bazel のスクリプト言語)
- Bazel ビルドシステム
- 依存関係解決戦略
メンター候補
Shauvik Roy Choudhary、および Uber チーム
Kotlin 用 Gradle コード品質プラグインのための、クリーンで実用的なレポート機能 [難易度: 低〜中、90時間〜175時間]
Gradle は最近、新しい Problems API を導入しました。これにより、Gradle およびサードパーティのプラグインが、統合された方法で問題や警告を伝播できるようになります。この API は、クリーンで実用的なエラーレポートを提供し、コンソール出力、専用の HTML レポート、および接続されたオブザーバビリティツールにより多くの洞察を提供します。IntelliJ IDEA や Android Studio などの IDE も、Gradle の API 統合ツールを介して詳細にアクセスでき、コードエディタ内に直接警告を表示できます。Java コンパイル、依存関係解決エラー、非推奨の警告など、すでにいくつかのコア機能やプラグインが Problems API を採用しています。Kotlin 用のコード品質プラグインもこの API を採用することを望んでいます。これにより、Gradle を使用している 10 万人以上の Kotlin 開発者の開発体験が大幅に向上します。
このプロジェクトでは、貢献者に Ktlint、Detekt、Diktat、ArchUnit、または Kotlin 用 Checkstyle などの Kotlin コード品質プラグインをいくつか選択し、それらを Problems API と統合していただきます。また、Kotlin DSL で定義された Gradle ビルドに対して同様の解析を統合する作業に取り組むことも可能です。
期待される成果
- 前述のプラグインにおける Problems API 統合の実装
推奨されるスキル
- Kotlin
- Gradle
メンター候補
Oleg Nenashev, Balint Hegyi, Reinhold Degenfellner
