Kotlin での Google Summer of Code 2023
このドキュメントでは、Kotlin 2023を使用した Google Summer of Code のプロジェクトアイデアのリストを紹介します。
Google Summer of Code 2023 はすでに終了しています。 GSoC 2024 に参加したい場合は、こちらのプロジェクトアイデアのリストをご確認ください。
プロジェクトアイデア
Kotlin Multiplatform protobufs [難易度: 高, 350 時間]
説明
Kotlin/Native(iOS)ランタイムと Objective-C 間の相互運用性を用いて、Kotlin/Common protos のサポートを protoc
に追加します。
モチベーション
protobufs には多くのプラットフォーム実装がありますが、Kotlin Multiplatform プロジェクトで使用する方法はありません。
期待される成果
Kotlin Multiplatform Protobuf のサポートを設計および構築し、以下に貢献することを目指します。
- GitHub – protocolbuffers/protobuf: Protocol Buffers – Google's data interchange format
- GitHub – google/protobuf-gradle-plugin
- Kotlin Multiplatform Gradle Plugin
必要なスキル (推奨)
- Kotlin
- Objective-C
- C++
Kotlin コンパイラのエラーメッセージ [難易度: 高, 350 時間]
説明
K2 Kotlin コンパイラに改善されたコンパイラエラーメッセージを追加します。Rust のように、より実用的で詳細な情報を提供します。
モチベーション
Rust コンパイラのエラーメッセージは、他のコンパイラの中で最も役立つものとして認識されています。 Kotlin K2 コンパイラは、Kotlin でより優れたコンパイラエラーを実現するための優れた基盤を提供しますが、この可能性はまだ十分に活用されていません。
期待される成果
StackOverflow などのデータソースを使用して、ユーザーにとって大きな価値のある一般的なコンパイラエラーを特定します。 コンパイラに貢献して、これらのエラーメッセージを改善します。
必要なスキル (推奨)
- Kotlin
- コンパイラアーキテクチャ
Kotlin Multiplatform ライブラリ [難易度: 易または中, 175 または 350 時間]
説明
一般的に必要な Kotlin Multiplatform ライブラリを作成し、(Maven Central に)配信します。 たとえば、圧縮、暗号などです。
モチベーション
Kotlin Multiplatform はまだ比較的新しく、プラットフォームに依存しない(Kotlin/Common)追加ライブラリ、および/またはプラットフォーム実装(expect
/actual
)が必要となる可能性があります。
期待される成果
少なくとも 1 つの Kotlin Multiplatform ライブラリを設計および配信します。他のターゲット(Kotlin/JS)よりも、JVM/Android および Kotlin/Native(iOS)を優先します。
必要なスキル (推奨)
- Kotlin
- Objective-C
Groovy to Kotlin Gradle DSL Converter [難易度: 中, 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 editing [難易度: 中, 350 時間]
説明
Eclipse での Gradle Kotlin Scripts(KTS)の編集エクスペリエンスを改善します。
モチベーション
IntelliJ IDEA および Android Studio は、KTS Gradle ビルドスクリプトの編集を強力にサポートしていますが、Eclipse のサポートは不足しています。 定義への Ctrl-Click、コード補完、コードエラーの強調表示などを改善できます。
期待される成果
KTS の編集に関する開発者エクスペリエンスを向上させる Gradle Eclipse プラグインに貢献します。
必要なスキル (推奨)
- Kotlin
- Gradle
- Eclipse プラットフォームとプラグイン
IntelliJ IDEA 用の Kotlin プラグインにおけるパラメータ転送のサポートを改善する [難易度: 中, 350 時間]
説明とモチベーション
Kotlin プラグインは、IntelliJ IDEA と Android Studio で Kotlin 言語のサポートを提供します。 このプロジェクトの範囲内で、プラグインのパラメータ転送サポートを改善します。
継承よりもコンポジションを優先することは、広く知られている原則です。 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 (Quality of Life) 機能が不足しています。
ドキュメント、統合テスト、および例も遅れています。
モチベーション
ライブラリはすでに実装されていますが、正しく使用することが難しい場合があり、一部のユーザーを混乱させます。 ライブラリのユーザーエクスペリエンスを改善することは、Kotlin コミュニティに大いに役立ちます。
期待される成果
- ライブラリには、使用例を含む明確なドキュメントがあります。
- ライブラリ API はシンプルで使いやすいです。
- Kotlin/JVM コードのベンチマークのオプションは、他のプラットフォームでのコードのベンチマークにも使用できます。
必要なスキル (推奨)
- Kotlin
- Gradle の内部構造
デバッガーの Kotlin コルーチンの並列スタック [難易度: 高, 350 時間]
説明
コルーチンデバッグエクスペリエンスを向上させるために、Kotlin コルーチンの並列スタックビューを実装します。
モチベーション
現在、IntelliJ IDEA でのコルーチンのデバッグサポートは非常に限られています。 Kotlin デバッガーには、すべてのコルーチンとその状態を表示できるコルーチンパネルがありますが、多数のコルーチンを含むアプリケーションをデバッグする場合はあまり役に立ちません。 JetBrains Rider には、ユーザーがスレッドとそのスタックトレースをグラフビューで検査できる並列スタック機能があり、これはコルーチンを検査する優れた方法になる可能性があります。
期待される成果
Kotlin コルーチンデバッガーAPIを使用して、コルーチンの並列スタックビューをデバッガーに追加するIntelliJ IDEAプラグインを開発します。 コルーチンのグラフ表現を改善する方法を見つけます。
必要なスキル (推奨)
- Kotlin
- Kotlin コルーチン
- IntelliJ IDEA プラグイン開発