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