プログラム

生成AIでAndroidアプリを作成する

GoogleのGeminiとAndroid Studioを用いて、Androidアプリを作成しました。

Kotlinは全くの初心者なのですが、Kotlinで綺麗に動くプログラムを作れました。

 

従来の方法との比較

従来の方法

まず、Kotlinの勉強から始めます。入門書を買ってきて一通りやります。

どこまでやるかによりますが、入門・基礎・応用・ライブラリ、などに進みます。

  • 入門編、基礎編、応用編、ライブラリ編
  • 動画教材、ネット教材、など

その後、ネットや書籍を見ながら、おもむろにプログラミングを始めます。

  1. Kotlinの勉強
  2. プログラミング
  3. プログラム完成

 

生成AIの方法

まず、生成AIにプログラムを作ってもらいます。

その後、「Run」か「Rebuild」して、エラーコードを表示します。

エラー箇所をネットで調べて修正します。

  1. 生成AI:元プログラム作成
  2. 元プログラム修正
  3. プログラム完成

 

 

Gemini

GeminiはGoogleの生成AIです。以前は、Bardという名前でした。

 

プログラム作成

プロンプト

Geminiにプログラム作成を依頼します。以下、プロンプトの例です。

  • 水準器のAndroidプログラムを教えてください
  • 水準器のAndroidプログラム(import付き)を教えてください
  • 水準器のKotlinプログラム(import付き)を教えてください
  • など

※プロンプト:依頼内容を言葉にしたもの

 

Gemini作成プログラム

下記プログラムは、Geminiが作成したプログラムの一例です。


import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import android.hardware.Sensor
import android.hardware.Sensor.TYPE_ACCELEROMETER
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
import android.widget.TextView

class MainActivity : AppCompatActivity(), SensorEventListener {
    private lateinit var sensorManager: SensorManager
    private lateinit var accelerometer: Sensor
    private lateinit var messageTextView: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        messageTextView = findViewById(R.id.messageTextView)
        sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
        //加速度センサー
        accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
        sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL)
    }

    override fun onSensorChanged(event: SensorEvent) {
        val x = event.values[0]
        val y = event.values[1]
        val z = event.values[2]
        val angle = Math.atan2(y, x) * 180 / Math.PI
        messageTextView.text = "傾き: $angle 度"
    }

    override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) {
        // Not used in this example
    }

    override fun onDestroy() {
        super.onDestroy()
        sensorManager.unregisterListener(this)
    }
}

 

ライセンス

「Gemini作成プログラム」の下の方に「ソース」の項目があります。

そこに、Geminiが参考にしたソースがありますので、それらの内容を確認します。

「Gemini作成プログラム」の内容に近い「ソース」をピックアップして、ライセンスに従います。

以下、今回、Geminiが作成したプログラムの「ソース」

 

 

 

Android Studio

Android Studioで、Gemini作成プログラムを動かして、バグを取り除きます。

最終的に、app-release.aabファイルを作成します。

  • Gemini作成プログラム → app-release.aab

app-release.aabファイルの作り方の詳細は、別記事をご参照ください。

 

 

新規プロジェクトの作成

  • 「File」-「New」-「New Project」
  • Empty Views Activityを選択
Empty Views Activity
Empty Views Activity:画像クリックで拡大表示

 

  • Project情報を入力
    • Language:Kotlin

 

Kotlin
Kotlin:画像クリックで拡大表示

 

 

プログラム作成

MainActivity.ktに「Gemini作成プログラム」をコピー&ペーストします。

  • Gemini作成プログラム → MainActivity.kt

 

 

プログラム実行

作成中のプログラムを「Run」もしくは「Rebuild Project」します。

  •  ← Runアイコン
  • 「Build」-「Rebuild Project」

そうすると、エラーのあるのが何行目かとエラー内容が表示されます。

  • プログラムの何行目
  • エラーの内容

エラー内容をコピー&ペーストして、Google検索するとエラー関連情報が得られます。

 

 

エラー修正

Google検索したエラー関連情報を元に、プログラムのエラーを修正します。

 

 

activity_main.xmlの修正

ソース(MainActivity.kt)の以下でエラーがありました。

  • class MainActivity内のprivate lateinit var messageTextView: TextView
  • エラー内容:「見つからない」といっている・・・

ググルと直ぐに解決しました。

下図(activity_main.xml)の右側にあるidが、デフォルトではmainですがそれを修正しました。

  • 修正:main → messageTextView

 

activity_main.xml
activity_main.xml:画像クリックで拡大表示

 

 

MainActivity.ktの修正

ソース(MainActivity.kt)にエラーが、残り3個あります。

これもググルりながら修正しました。

  • 修正前:sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
  • 修正後:sensorManager = getSystemService(SENSOR_SERVICE) as SensorManager

 

  • 修正前:
    //加速度センサー
    accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
  • 修正後:
    //加速度センサー
    val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
    if (accelerometer != null) sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL)

 

  • 修正前:
    val x = event.values[0]
    val y = event.values[1]
    val z = event.values[2]
  • 修正後:
    val x = event.values[0].toDouble()
    val y = event.values[1].toDouble()
    val z = event.values[2].toDouble()

 

 

Google Play Console

aabファイル(app-release.aab)ができたので、それをGoogle Play Consoleにアップロードします。

Google Play Consoleの内部テストにアップロードすることで、手元のスマホで動作確認できます。

  • app-release.aab → Google Play Console:内部テスト → スマホ:動作確認

aabファイルをGoogle Play Consoleにアップロードする詳しい解説は別記事をご参照ください。

 

今回作成した「水準器アプリ」は、手元のスマホで綺麗に動いています。

  • Gemini作成プログラム → 修正 → 完成!

 

 

参考

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です