Google Summer of Code with Kotlin 2024
この記事には、Google Summer of Code with Kotlin 2024 のプロジェクトアイデアのリストと、コントリビューター向けガイドラインが含まれています。
Kotlin リソース:
- Kotlin GitHub リポジトリ
- Kotlin Slackと #gsoc Slack チャンネル
ご質問がございましたら、[email protected] までお問い合わせください。
Google Summer of Code (GSoC) 向け Kotlin コントリビューターガイドライン
はじめに
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 に興味を持った理由と、これまでの経験を説明してください。
- オープンソースプロジェクトに参加している場合は、貢献履歴を参照してください。
- GitHub、X (旧 Twitter) アカウント、ブログ、または技術的・科学的出版物のポートフォリオをお持ちの場合は、それらも参照してください。
- 試験や休暇など、他のコミットメントによる GSoC のタイムラインとの競合があれば開示してください。
ありがとうございます!皆様からのご応募をお待ちしております!
プロジェクトアイデア
Kotlin-to-WebAssembly コンパイラ向けインクリメンタルコンパイル [難易度: 高, 350 時間]
インクリメンタルコンパイルは、プログラム全体を再コンパイルする(クリーンビルドの実行としても知られています)のではなく、変更されたファイルのみを再コンパイルすることで、コンパイル速度を向上させる技術です。Kotlin-to-Wasm コンパイラは現在、クリーンビルドのみをサポートしていますが、このプロジェクトではインクリメンタルコンパイルもサポートするように拡張します。
期待される成果
Kotlin-to-WebAssembly コンパイラにおけるインクリメンタルコンパイル機能の実装。これにより、開発ワークフローの高速化に貢献します。
必要なスキル (推奨)
Kotlin
メンター候補
Artem Kobzar, JetBrains
Skia 用 Node.js ネイティブバインディングによる Compose Multiplatform [難易度: 高, 350 時間]
Compose Multiplatformは、Kotlin で構築された UI を複数のプラットフォーム間で共有するための宣言型フレームワークです。デスクトップアプリケーションのレンダリングにおける現在のアプローチでは、JVM をプラットフォームとして使用していますが、Web 用 Compose Multiplatform を使用し、Skia のネイティブバインディングでブラウザ外でアプリケーションを実行しようとした場合はどうでしょうか?これにより、デスクトップアプリケーションのパフォーマンスとメモリ消費は改善されるでしょうか?それとも、その逆の結果になるでしょうか?このプロジェクトで明らかにします!
期待される成果
Skia バインディングと Compose Multiplatform の統合、およびデスクトップアプリケーションへのパフォーマンス影響の評価。
必要なスキル (推奨)
Kotlin, Node.js, C++, または Rust
メンター候補
Artem Kobzar, JetBrains
Compose Multiplatform コンポーネントギャラリージェネレーター [難易度: 中, 350 時間]
Compose Multiplatformは、Kotlin で構築された UI を複数のプラットフォーム間で共有するための宣言型フレームワークです。Web 開発の React 時代の始まりに Storybook が作成され、コンポーネントの状態を記述し、UI ライブラリ全体のギャラリーを生成するという Storybook の提案するアプローチは、Web 開発におけるドキュメント作成の重要なアプローチの一つであり続けています。同様のことを Compose Multiplatform でも行い、Web UI 要素のギャラリーだけでなく、モバイルおよびデスクトップ用のギャラリーも生成できるでしょうか?このプロジェクトで試してみましょう。
期待される成果
Compose Multiplatform を使用して、Web、モバイル、デスクトッププラットフォーム向けの UI コンポーネントギャラリーを生成するツールの作成。
必要なスキル (推奨)
Kotlin, Jetpack Compose, UI/UX デザイン
メンター候補
Artem Kobzar, JetBrains
宣言型 Gradle 向け Kotlin DSL の改善 [難易度: 中, 175 時間]
昨年11月、Gradle チームは新しい Declarative Gradle プロジェクトを発表し、プロジェクトに高レベルの Kotlin DSL を導入しました。GSoC コントリビューターの皆様には、この新しい DSL の開発者体験を改善する作業にご参加いただきたいと考えております。特に、Gradle プラグインに拡張性を実装し、静的解析、Kotest などのテストフレームワークといった最も一般的な Kotlin および Java プロジェクトの統合をサポートすることを目的としています。
期待される成果
Gradle 用 Kotlin DSL における拡張機能の実装と、一般的なプロジェクト統合のサポート改善。
必要なスキル (推奨)
Kotlin, Gradle, Java, 静的解析
メンター候補
Oleg Nenashev, Gradle
Kotlin DSL ドキュメントサンプルテストフレームワーク [難易度: 低または中, 90 時間または 175 時間]
Gradle を含む多くのプロジェクトには、多数の Kotlin DSL サンプルとコードスニペットがあります (例についてはGradle Docsを参照してください)。複数のバージョンに対してこれらをテストすることは、スニペットが簡潔さのために不完全なコードを表すことが多いため、特定の課題を提起します。GitHub Actions および Teamcity 上で、単体テストフレームワーク (Kotest または JUnit 5) 内でこれらのサンプルの検証を簡素化するテストフレームワークを構築したいと考えています。
期待される成果
Kotlin DSL サンプル向けの基本的なテストフレームワークの実装と、継続的テストのための GitHub Actions との統合。
必要なスキル (推奨)
Kotlin, テストフレームワーク, CI/CD
メンター候補
Oleg Nenashev, Gradle
Gradle ビルドサーバー – Android プロジェクトのサポート [難易度: 中または高, 175 時間または 350 時間]
Kotlin と Gradle は、Android プロジェクトを構築するためのデフォルトの選択肢です。2023年11月、Microsoft チームはGradle Build Server プロジェクトを発表しました。これは、Build Server Protocol (BSP)の Gradle 固有の実装です。そこに Android ビルドの完全なサポートを導入できれば素晴らしいでしょう。小規模なプロジェクトの場合、Gradle Build Server で Gradle タスクの自動検出とキャンセルを実装することが可能です。
期待される成果
Gradle Build Server における Android プロジェクトのサポートの実装 (自動検出とタスクキャンセルを含む)。
必要なスキル (推奨)
Kotlin, Gradle, Android 開発, Visual Studio Code
メンター候補
Oleg Nenashev, Gradle
Kotlin/Native ベンチマーク向けメモリ使用量プロファイリングの実装 [難易度: 中, 175 時間]
オープンソースツールキットであるkotlinx-benchmark ライブラリは、様々なプラットフォームでの Kotlin コードのベンチマークを容易にします。現在、JVM 向けには GC プロファイリング機能があり、各ベンチマークメソッドの割り当てレートを詳細に示しています。このプロジェクトは、同様のプロファイリング機能を Kotlin/Native に拡張し、プラットフォーム全体で統一されたベンチマーキング機能の実現を目指します。コントリビューターは、Kotlin/Native メモリマネージャーから割り当てデータにアクセスするための API を作成するため、Kotlin/Native チームと密接に協力します。目的は、JVM フォーマットに合致するレポートを生成し、プラットフォーム間でのデータ表示の一貫性を確保することです。さらに、このプロジェクトには、他のライブラリ機能のレポート形式における不一致を特定し修正すること、それによって包括的なクロスプラットフォーム分析のためにベンチマーキング出力を標準化することが含まれます。
期待される成果
Kotlin/Native 向け kotlinx-benchmark におけるメモリ使用量プロファイリングの実装と、標準化されたベンチマーキング出力。
必要なスキル (推奨)
Kotlin, Kotlin/Native, ベンチマーキング, メモリプロファイリング
メンター候補
Abduqodiri Qurbonzoda, JetBrains
Alexander Shabalin, JetBrains
kotlinx-benchmark における Android ターゲットのサポート [難易度: 中, 175 時間]
kotlinx-benchmark ライブラリは、JVM、JS、WasmJs、Native を含む複数のプラットフォームで Kotlin コードのベンチマークを行うために設計されたオープンソースツールです。幅広い互換性があるにもかかわらず、このライブラリは現在 Android でのベンチマーキングをサポートしていません。このプロジェクトは、そのギャップを埋めることを目的としています。計画としては、androidx.benchmark のような既存の Android ライブラリを内部的に利用してこの機能を統合することです。プロジェクトの重要な側面は、現在他のプラットフォームで利用可能なすべての機能が Android でもサポートされるようにし、ライブラリのマルチプラットフォームユーティリティを維持することです。
期待される成果
kotlinx-benchmark における Android プラットフォーム向けのベンチマーキングサポートの統合 (他のプラットフォームとの機能パリティを確保)。
必要なスキル (推奨)
Kotlin, Android 開発, ベンチマーキング
メンター候補
Abduqodiri Qurbonzoda, JetBrains
Rahul Ravikumar, Google
IntelliJ IDEA における kotlinx-benchmark ベンチマーク向けクリックして実行する機能の有効化 [難易度: 中, 175 時間]
kotlinx-benchmarkは、Kotlin で書かれたマルチプラットフォームコードのベンチマーキングを行うためのオープンソースライブラリです。これには Gradle プラグインが含まれており、適用するとベンチマークを実行するためのタスクを提供します。しかし、これらのタスクを実行するには、IDE の Gradle パネルに移動するか、ターミナルを使用する必要があります。さらに、特定のベンチマークを実行するには、追加の手順が必要となり、複雑さが増します。この不便さを軽減し、プロセスを効率化するため、このプロジェクトは、単体テストで提供される利便性を反映し、IntelliJ IDEA インターフェースから個別のベンチマークまたはスイート全体を直接実行できるようにすることを目指しています。この目標を達成するには、IntelliJ IDEA チームとの協力、および/または IntelliJ プロジェクトへの直接の貢献が必要となる場合があります。
期待される成果
IntelliJ IDEA における kotlinx-benchmark ベンチマーク向けクリックして実行する機能の統合と、ユーザー体験の向上。
必要なスキル (推奨)
Kotlin, IntelliJ IDEA プラグイン開発, ベンチマーキング
メンター候補
Abduqodiri Qurbonzoda, JetBrains