Skip to content

Kotlinと取り組む Google Summer of Code 2023

この記事には、Google Summer of Code with Kotlin 2023 のプロジェクトのアイデアのリストが含まれています。

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

プロジェクトのアイデア

Kotlin Multiplatform protobufs [難易度:高, 350時間]

概要

protoc に対し、Kotlin/Native (iOS) ランタイムと Objective-C 相互運用を用いた Kotlin/Common プロトのサポートを追加します。

動機

protobufs には多くのプラットフォーム実装がありますが、Kotlin Multiplatform プロジェクトでそれらを使用する方法がありません。

期待される成果

Kotlin Multiplatform Protobuf のサポートを設計および構築し、最終的には以下に貢献します。

必要なスキル(推奨)

  • Kotlin
  • Objective-C
  • C++

Kotlin Compiler error messages [難易度:高, 350時間]

概要

K2 Kotlin コンパイラに改善されたコンパイラエラーメッセージを追加します。具体的には、Rust のように、より実用的で詳細な情報を提供します。

動機

Rust コンパイラのエラーメッセージは、あらゆるコンパイラの中で群を抜いて最も役立つと評価されることがよくあります。 Kotlin K2 コンパイラは、Kotlin におけるより良いコンパイラエラーのための優れた基盤を提供しますが、この可能性はやや未開拓です。

期待される成果

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

必要なスキル(推奨)

  • Kotlin
  • Compiler architecture

Kotlin Multiplatform libraries [難易度:低または中, 175または350時間]

概要

一般的に必要とされる Kotlin Multiplatform ライブラリを作成し、(Maven Central に)提供します。 例えば、圧縮、暗号化など。

動機

Kotlin Multiplatform はまだ比較的新しく、プラットフォームに依存しない(Kotlin/Common)か、またはプラットフォーム固有の実装(expect/actual)を持つ、いくつかの追加ライブラリが必要とされています。

期待される成果

JVM/Android および Kotlin/Native (iOS) を他のターゲット(Kotlin/JS)よりも優先して、少なくとも1つの Kotlin Multiplatform ライブラリを設計し提供します。

必要なスキル(推奨)

  • 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 スクリプト (KTS) の編集体験を向上させます。

動機

IntelliJ IDEA および Android Studio には KTS Gradle ビルドスクリプトの編集に対する優れたサポートがありますが、Eclipse のサポートは不足しています。 定義への Ctrl+クリック、コード補完、コードエラーのハイライト表示はすべて改善の余地があります。

期待される成果

KTS の編集における開発者体験を向上させる Gradle Eclipse プラグインへの貢献。

必要なスキル(推奨)

  • Kotlin
  • Gradle
  • Eclipse プラットフォームとプラグイン

Improve support for parameter forwarding in the Kotlin Plugin for IntelliJ IDEA [難易度:中, 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 クイックフィックスの実装。
  • リネームリファクタリングで、転送されたパラメータのチェーンがリネームされること。
  • パラメータ転送や多くのパラメータを持つ関数に関する、その他すべての IDE の改善。

必要なスキル(推奨)

  • Kotlin および Java の知識
  • 大規模なコードベースをナビゲートする能力

Enhance the kotlinx-benchmark library API and user experience [難易度:低, 175時間]

このプロジェクトに関するブログ投稿を読む

概要

kotlinx-benchmark は、Kotlin で書かれたマルチプラットフォームコードのベンチマークを行うためのオープンソースライブラリです。 このライブラリには最低限の骨格はありますが、きめ細かなベンチマーク設定(時間単位、モードなど)、JVM と Kotlin/Native ベンチマーク間の機能パリティ、コマンドライン API、最新の Gradle サポートといった QoL (Quality-of-Life) 機能が不足しています。 ドキュメント、統合テスト、およびサンプルも遅れています。

動機

このライブラリは既に実装されていますが、正しく使用するのが難しい場合があり、一部のユーザーを混乱させています。 このライブラリのユーザーエクスペリエンスを改善することは、Kotlin コミュニティに大いに役立つでしょう。

期待される成果

  • ライブラリに明確なドキュメントと使用例が提供されていること。
  • ライブラリ API がシンプルで使いやすいこと。
  • Kotlin/JVM コードのベンチマークのオプションが、他のプラットフォーム上のコードのベンチマークにも利用できること。

必要なスキル(推奨)

  • Kotlin
  • Gradle internals

Parallel stacks for Kotlin Coroutines in the debugger [難易度:高, 350時間]

このプロジェクトに関するブログ投稿を読む

概要

Kotlin コルーチンのデバッグ体験を向上させるため、Parallel Stacks ビューを実装します。

動機

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

期待される成果

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

必要なスキル(推奨)

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