😊

ChatGPTを使って、AndroidアプリのGradleスクリプトをGroovyからKotlin スクリプト(KTS)に変換する

2023/10/01に公開

AndroidのGradleスクリプトは、Groovyで記述されていますが、最近ではKotlinで記述することが推奨されています。
しかし、既存のGroovyで書かれたスクリプトをKotlinに変換するのは、かなり面倒な作業です。
少なくとも、2023/10/01現時点では、公式のマイグレーションツールは提供されていません。

そんな作業も、ChatGPTを利用すれば簡単に行うことができます。

今回やったこと

私が個人開発しているアプリのスクリプトを、ChatGPTを使ってKotlinに変換しました。

実際の会話ログはリンク先を参照してください。
https://chat.openai.com/share/114aacad-4146-45c5-a718-c032063a9536

build.gradleをbuild.gradle.ktsに変換する

あなたは優秀なAndroidエンジニアです。
以下のbuild.gradleをbuild.gradle.ktsに書き換えてください。

====

ここにbuild.gradleの内容をコピペ

出力された内容をコピーし、build.gradle.ktsに貼り付けます。

app/build.gradleをbuild.gradle.ktsに変換する

続いて、以下のapp/build.gradleも.ktsに書き換えてください。

====

ここにapp/build.gradleの内容をコピペ

dependenciesが省略されてしまう場合は、以下のように追加で指示を行ってください。

dependenciesも省略せず全て書いてください。

出力された内容をコピーし、app/build.gradle.ktsに貼り付ける。

バージョンカタログを適用する

ありがとうございます。
続いて、これらのGradleファイルに、Version Catalogsを適用してください

出力された内容をコピーし、gradle/libs.versions.tomlに貼り付けます。[1]

ChatGPTの情報は若干古いため、以下の追加を指示されますが、最新バージョンでは不要です。

次に、settings.gradle.kts または settings.gradle に以下の設定を追加して、Version Catalogsの機能を有効にします。

enableFeaturePreview("VERSION_CATALOGS")

今回は、ChatGPTの回答が期待通りでなかったため、以下の追加指示を行いました。[2]

省略せず全て書いてください。
また、librariesは以下のように記述すべきではないでしょうか。

====

[libraries]
androidx-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "ktx" }

適宜、手作業で直す

当然ながら、ChatGPTによる変換は完璧ではありません。今回の場合、 minifyEnabled = trueisMinifyEnabled = true に直すなど、いくつか修正が必要でした。
しかし、全てを手作業で行うよりはずいぶん楽でした。

公式の移行ガイドを見ればおおよそ問題なかったです。
https://developer.android.com/studio/build/migrate-to-kts?hl=ja

まとめ

GroovyからKotlinへの変換や、バージョンカタログの適用は、人力で行うのはかなり面倒な作業です。
いずれ自動化されるのではないかと期待していますが、いつになるか分かりませんし、ChatGPTを使える環境であればぜひ使ってみてください。

脚注
  1. 「ありがとうございます」は不要ですが、私はChatGPTを上手に使うコツを「人間と接する時と同じように説明すること」だと考えています。
    その延長で、たまにお礼を言っています。
    それほど意味のない、ちょっとしたこだわりですw ↩︎

  2. 特に責めるつもりはなかったですが、こういう言い方をすると 申し訳ございません。おっしゃるとおりです。 と返されてしまうので、罪悪感が……。 ↩︎

Discussion