Skip to content

Kotlin と参加する Google Summer of Code 2023

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

NOTE

Google Summer of Code 2023 は既に終了しています。

GSoC 2024 に参加したい場合は、こちらのプロジェクトのアイデア一覧をご確認ください。

プロジェクトのアイデア

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

概要

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

動機

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

期待される成果

Kotlin Multiplatform Protobuf のサポートを設計および構築し、以下のプロジェクトへの貢献として結実させます。

必要なスキル (推奨)

  • Kotlin
  • Objective-C
  • C++

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

概要

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

動機

Rust コンパイラのエラーメッセージは、これまでで最も役立つコンパイラの一つとして高く評価されています。 Kotlin K2 コンパイラは、Kotlin におけるより良いコンパイラエラーの素晴らしい基盤を提供しますが、その可能性はまだ十分に活用されていません。

期待される成果

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

必要なスキル (推奨)

  • 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 から 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-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 サポートといった品質向上のための機能が不足しています。 また、そのドキュメント、統合テスト、および例も遅れています。

動機

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

期待される成果

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

必要なスキル (推奨)

  • Kotlin
  • Gradle の内部構造

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

概要

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

動機

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

期待される成果

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

必要なスキル (推奨)

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