Kotlin による Google Summer of Code 2024
この記事には、Google Summer of Code with Kotlin 2024 のプロジェクト案のリストと、コントリビューター向けガイドラインが含まれています。
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 のタイムラインと競合がある場合は、あらかじめ開示してください。
ありがとうございます!皆様からのご応募をお待ちしております。
プロジェクト案
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(宣言的 Gradle)プロジェクトを発表し、プロジェクトに高レベルな Kotlin DSL を導入しました。 GSoC コントリビューターの皆様には、この新しい DSL の開発者体験の向上に取り組んでいただくことを期待しています。具体的には、静的解析や Kotest などのテストフレームワークといった、最も一般的な Kotlin および Java プロジェクトの統合をサポートするための Gradle プラグインの拡張性を実装します。
期待される成果
Gradle 向け Kotlin DSL における拡張機能の実装と、一般的なプロジェクト統合のサポート改善。
必要なスキル(推奨)
Kotlin, Gradle, Java, 静的解析
メンター候補
Oleg Nenashev, Gradle
Kotlin DSL ドキュメントサンプル用テストフレームワーク [難易度: 初級〜中級, 90時間または175時間]
Gradle を含む多くのプロジェクトには、多数の Kotlin DSL サンプルとコードスニペットがあります(例として Gradle Docs を参照してください)。 これらを複数のバージョンに対してテストすることには、いくつかの課題があります。スニペットは簡潔にするために不完全なコードであることが多いためです。 私たちは、GitHub Actions や Teamcity 上のユニットテストフレームワーク(Kotest または JUnit 5)内で、これらのサンプルの検証を簡略化するテストフレームワークを構築したいと考えています。
期待される成果
継続的なテストのために GitHub Actions と統合された、Kotlin DSL サンプル向けの基本的なテストフレームワークの実装。
必要なスキル(推奨)
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 チームと密接に協力し、Kotlin/Native メモリマネージャーから割り当てデータにアクセスするための API を作成します。 目標は、JVM 形式に合わせたレポートを生成し、プラットフォーム間でのデータ表示の一貫性を確保することです。 さらに、このプロジェクトには、他のライブラリ機能のレポート形式における不一致の特定と修正が含まれており、包括的なクロスプラットフォーム分析のためにベンチマーク出力を標準化します。
期待される成果
kotlinx-benchmark における Kotlin/Native 向けのメモリ使用量プロファイリングの実装と、標準化されたベンチマーク出力。
必要なスキル(推奨)
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 ベンチマークのクリック実行(click-to-run)機能の統合と、ユーザー体験の向上。
必要なスキル(推奨)
Kotlin, IntelliJ IDEA プラグイン開発, ベンチマーク
メンター候補
Abduqodiri Qurbonzoda, JetBrains
