Skip to content

Kotlin による Google Summer of Code 2023

この記事には、Kotlin による Google Summer of Code 2023 のプロジェクトアイデア一覧が掲載されています。

Google Summer of Code 2023 は既に終了しました。 GSoC 2024 への参加をご希望の場合は、こちらのプロジェクトアイデア一覧を確認してください。

プロジェクトアイデア

Kotlin マルチプラットフォームの Protobuf 対応 [難易度:高、350 時間]

説明

Kotlin/Native (iOS) ランタイムと Objective-C 相互運用(interop)を備えた protoc に、Kotlin/Common プロトコルバッファ(protos)のサポートを追加します。

動機

プロトコルバッファには多くのプラットフォーム実装がありますが、Kotlin マルチプラットフォーム(Kotlin Multiplatform)プロジェクトで使用する方法が現在ありません。

期待される成果

Kotlin マルチプラットフォームの Protobuf サポートを設計・構築し、最終的に以下のプロジェクトへの貢献を目指します:

必要なスキル(推奨)

  • Kotlin
  • Objective-C
  • C++

Kotlin コンパイラのエラーメッセージの改善 [難易度:高、350 時間]

説明

K2 Kotlin コンパイラに改善されたコンパイラエラーメッセージを追加します。具体的には、Rust のように、より具体的な対策が示され、詳細な情報を含むものを目指します。

動機

Rust コンパイラのエラーメッセージは、あらゆるコンパイラの中で群を抜いて役立つと評されることが多いです。 Kotlin K2 コンパイラは、Kotlin におけるより良いコンパイラエラーのための優れた基盤を提供していますが、その可能性はまだ十分に活用されていません。

期待される成果

StackOverflow などのデータソースを使用して、ユーザーにとって大きな価値のある一般的なコンパイラエラーを特定します。 それらのエラーメッセージを改善するために、コンパイラへのフィードバック貢献を行います。

必要なスキル(推奨)

  • Kotlin
  • コンパイラアーキテクチャ(Compiler architecture)

Kotlin マルチプラットフォームライブラリ [難易度:低または中、175 または 350 時間]

説明

一般的に必要とされる Kotlin マルチプラットフォームライブラリを作成し、Maven Central に提供します。 例えば、圧縮(compression)や暗号(crypto)などです。

動機

Kotlin マルチプラットフォームはまだ比較的新しく、プラットフォームに依存しない(Kotlin/Common)、あるいはプラットフォーム固有の実装(expect/actual)を持つ追加のライブラリが必要です。

期待される成果

少なくとも1つの Kotlin マルチプラットフォームライブラリを設計・提供します。その際、他のターゲット(Kotlin/JS)よりも JVM/Android および Kotlin/Native (iOS) を優先します。

必要なスキル(推奨)

  • Kotlin
  • Objective-C

Groovy から Kotlin への Gradle DSL コンバーター [難易度:中、350 時間]

説明

このプロジェクトは、Gradle スクリプトを主な対象とした、Groovy から Kotlin へのコンバーターを作成することを目指します。 まずは、ユーザーが Groovy スタイルの依存関係宣言を Kotlin スクリプトに貼り付けたときに、IDE が自動的に変換するような基本的なユースケースから始めます。 その後、より複雑なコード構造やファイル全体の変換のサポートを開始します。

動機

Kotlin Gradle DSL の人気が高まっており、間もなく Gradle でプロジェクトをビルドする際のデフォルトの選択肢になる予定です。 しかし、Gradle に関する多くのドキュメントやリソースは依然として Groovy を参照しており、Groovy のサンプルを build.gradle.kts に貼り付けるには手動での編集が必要です。 さらに、Gradle に関する多くの新機能は最初に Kotlin で提供されるため、結果としてユーザーは Groovy DSL から Kotlin DSL へ移行することになります。 ビルド設定の自動コード変換は、この移行を大幅に容易にし、多くの時間を節約します。

期待される成果

Gradle DSL を主な対象として、Groovy コードを Kotlin に変換できる IntelliJ IDEA 用のプラグイン。

必要なスキル(推奨)

  • Gradle の基礎知識
  • パーサーおよび一般的なコンパイラの動作に関する基礎知識
  • Kotlin の基礎知識

Eclipse における Gradle KTS の編集改善 [難易度:中、350 時間]

このプロジェクトに関するブログ記事を読む(英語)

説明

Eclipse における Gradle Kotlin スクリプト (KTS) の編集体験を改善します。

動機

IntelliJ IDEA や Android Studio は KTS Gradle ビルドスクリプトの編集を強力にサポートしていますが、Eclipse のサポートは不足しています。 定義への Ctrl+クリック(Ctrl-Click)、コード補完、コードエラーのハイライトなどは、すべて改善の余地があります。

期待される成果

KTS 編集のデベロッパーエクスペリエンスを向上させるために、Gradle Eclipse プラグインへの貢献を行います。

必要なスキル(推奨)

  • Kotlin
  • Gradle
  • Eclipse プラットフォームおよびプラグイン

IntelliJ IDEA 用 Kotlin プラグインにおけるパラメーター転送サポートの強化 [難易度:中、350 時間]

説明と動機

Kotlin プラグインは、IntelliJ IDEA および Android Studio における Kotlin 言語のサポートを提供します。 このプロジェクトの範囲では、プラグインのパラメーター転送(parameter forwarding)のサポートを改善します。

「継承よりもコンポジションを優先する」ことは、広く知られた原則です。 IntelliJ IDEA は継承を使用するコードの作成については優れたサポート(IDE が提案する補完やクイックフィックス)を提供していますが、継承の代わりにコンポジションを使用するコードのサポートはまだ実装されていません。

コンポジションを多用するコードを扱う際の主な問題は、パラメーターの転送です。 特に:

  • IDE は、現在デフォルトのパラメーター値を使用している他の関数に引数として転送できるパラメーター宣言の補完を提案しません。
  • IDE は、転送されたパラメーターのチェーンを一度にリネームしません。
  • IDE は、転送可能なパラメーターを使用して、必要なすべての引数を埋めるクイックフィックスを提供しません。

このようなサポートが非常に喜ばれる顕著な例の1つが Jetpack Compose です。 Android の最新の UI 構築用ツールキットである Jetpack Compose は、関数のコンポジションとパラメーター転送を多用します。 @Composable 関数は多くのパラメーターを持つため、それらを扱う作業はすぐに退屈なものになります。 例えば、androidx.compose.material.TextField には 19 個のパラメーターがあります。

期待される成果

  • IntelliJ IDEA におけるパラメーターおよび引数補完の提案の改善。
  • 必要なすべての引数を、同じ名前と型を持つ転送可能なパラメーターで埋めることを提案する IDE クイックフィックスの実装。
  • 名前の変更(Rename)リファクタリングによる、転送されたパラメーターのチェーンの改名。
  • パラメーター転送および多数のパラメーターを持つ関数に関する、その他のあらゆる IDE の改善。

必要なスキル(推奨)

  • Kotlin および Java の知識
  • 大規模なコードベース内を読み解く能力

kotlinx-benchmark ライブラリの API およびユーザーエクスペリエンスの強化 [難易度:低、175 時間]

このプロジェクトに関するブログ記事を読む(英語)

説明

kotlinx-benchmark は、Kotlin で記述されたマルチプラットフォームコードをベンチマークするためのオープンソースライブラリです。 基本的な骨組みはありますが、きめ細かなベンチマーク構成(時間単位、モードなど)、JVM と Kotlin/Native ベンチマーク間の機能パリティ、コマンドライン API、最新の Gradle サポートといった QoL(利便性)機能が不足しています。ドキュメント、統合テスト、例の整備も遅れています。

動機

ライブラリは既に実装されていますが、正しく使用するのが難しい場合があり、一部のユーザーを混乱させています。 ライブラリのユーザーエクスペリエンスを向上させることは、Kotlin コミュニティにとって大きな助けとなります。

期待される成果

  • 使用例を含む明確なドキュメント。
  • シンプルで使いやすいライブラリ API。
  • Kotlin/JVM コードをベンチマークするためのオプションが、他のプラットフォームでのコードベンチマークでも利用可能になること。

必要なスキル(推奨)

  • Kotlin
  • Gradle の内部構造(Gradle internals)

デバッガーにおける Kotlin コルーチンの並列スタック表示 [難易度:高、350 時間]

このプロジェクトに関するブログ記事を読む(英語)

説明

コルーチンのデバッグ体験を向上させるために、Kotlin コルーチン用の Parallel Stacks(並列スタック)ビューを実装します。

動機

現在、IntelliJ IDEA におけるコルーチンデバッグのサポートは非常に限られています。 Kotlin デバッガーには、すべてのコルーチンとその状態をユーザーが表示できる Coroutines パネル がありますが、多数のコルーチンが含まれるアプリケーションをデバッグする際にはあまり役に立ちません。 JetBrains Rider には、スレッドとそのスタックトレースをグラフビューで検査できる Parallel Stacks 機能があり、これはコルーチンを検査するための優れた方法となる可能性があります。

期待される成果

Kotlin コルーチンデバッガー API を使用して、デバッガーにコルーチン用の並列スタックビューを追加する IntelliJ IDEA プラグインを開発します。 コルーチンのグラフ表現を改善する方法を見つけ出します。

必要なスキル(推奨)

  • Kotlin
  • Kotlin コルーチン
  • IntelliJ IDEA プラグイン開発