KotlinとGoogle Summer of Code 2024
この記事には、KotlinとGoogle Summer of Code 2024のプロジェクト案のリストと、貢献者向けガイドラインが含まれています。
Google Summer of Code (GSoC)におけるKotlin貢献者向けガイドライン
はじめに
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コンパイラ向けインクリメンタルコンパイル [Hard, 350 hrs]
インクリメンタルコンパイルは、プログラム全体を再コンパイルする(クリーンビルドを実行する、とも呼ばれる)のではなく、変更されたファイルのみを再コンパイルすることでコンパイル速度を向上させる手法です。Kotlin-to-Wasmコンパイラは現在、クリーンビルドのみをサポートしていますが、このプロジェクトではインクリメンタルコンパイルもサポートするように強化します。
期待される成果
Kotlin-to-WebAssemblyコンパイラにおけるインクリメンタルコンパイル機能の実装により、開発ワークフローを高速化します。
必要なスキル(推奨)
Kotlin
想定メンター
Artem Kobzar, JetBrains
Node.jsネイティブバインディングによるSkia向けCompose Multiplatform [Hard, 350 hrs]
Compose Multiplatformは、Kotlinで構築されたUIを複数のプラットフォームで共有するための宣言型フレームワークです。現在、デスクトップアプリケーションのレンダリングにはJVMがプラットフォームとして使用されていますが、Compose MultiplatformをWeb向けに使用し、Skiaのネイティブバインディングでブラウザ外でアプリケーションを実行しようとするとどうなるでしょうか?これにより、デスクトップアプリケーションのパフォーマンスとメモリ消費は改善されるでしょうか?それとも逆効果になるでしょうか?このプロジェクトで解明します!
期待される成果
SkiaバインディングとCompose Multiplatformの統合、およびデスクトップアプリケーションのパフォーマンスへの影響評価。
必要なスキル(推奨)
Kotlin, Node.js, C++, or Rust
想定メンター
Artem Kobzar, JetBrains
Compose Multiplatformコンポーネントギャラリージェネレーター [Medium, 350 hrs]
Compose Multiplatformは、Kotlinで構築されたUIを複数のプラットフォームで共有するための宣言型フレームワークです。Web開発のReact時代の初期にStorybookが作成され、Storybookが提案したコンポーネントの状態を記述し、UIライブラリ全体のギャラリーを生成するアプローチは、Web開発におけるドキュメント作成の重要なアプローチの一つとして今も利用されています。Compose Multiplatformを使用して、Web UI要素のギャラリー、およびモバイルやデスクトップ用のギャラリーを生成できるでしょうか?このプロジェクトで試してみましょう。
期待される成果
Compose Multiplatformを使用して、Web、モバイル、デスクトッププラットフォーム用のUIコンポーネントギャラリーを生成するツールの作成。
必要なスキル(推奨)
Kotlin, Jetpack Compose, UI/UX Design
想定メンター
Artem Kobzar, JetBrains
宣言型Gradle向けKotlin DSLの改善 [Medium, 175 hrs]
昨年11月、Gradleチームは新しい宣言型Gradleプロジェクトを発表し、プロジェクトに高レベルのKotlin DSLを導入しました。GSoC貢献者の皆様を招待し、特に最も一般的なKotlinおよびJavaプロジェクトの統合(静的解析、Kotestなどのテストフレームワーク)をサポートするためのGradleプラグインの拡張性を実装することで、新しいDSLの開発者体験を改善する作業に参加していただきたいと考えています。
期待される成果
Gradle向けKotlin DSLの拡張機能の実装と、一般的なプロジェクト統合のサポート改善。
必要なスキル(推奨)
Kotlin, Gradle, Java, Static Analysis
想定メンター
Oleg Nenashev, Gradle
Kotlin DSLドキュメントサンプルテストフレームワーク [Easy or Medium, 90 hrs or 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 or Hard, 175 hrs or 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形式に合わせたレポートを生成し、プラットフォーム間でのデータ表示の一貫性を確保することです。さらに、このプロジェクトでは、他のライブラリ機能におけるレポート形式の不一致を特定して修正し、包括的なクロスプラットフォーム分析のためにベンチマーク出力を標準化することも含まれます。
期待される成果
Kotlin/Native向けkotlinx-benchmarkにおけるメモリ使用量プロファイリングの実装と、ベンチマーク出力の標準化。
必要なスキル(推奨)
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でのベンチマークをサポートしていません。このプロジェクトは、そのギャップを埋めることを目的としています。計画としては、androidx.benchmarkなどの既存のAndroidライブラリをバックエンドで活用してこの機能を統合することです。プロジェクトの重要な側面は、現在他のプラットフォームで利用可能なすべての機能が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プラグイン開発, Benchmarking
想定メンター
Abduqodiri Qurbonzoda, JetBrains