AIエージェント「Antigravity」を使ってAndroidアプリを開発してみた

何をするか

プログラミング(Androidアプリ開発)は完全未経験
でも、「〇〇分後や指定時刻にバイブレーションだけで静かに起こしてくれる、シンプルなアラームアプリが欲しい!」と思いやってみました。
※すでに類似アプリがあるが、広告ありのものしか見当たらず、、

そこで今回は、話題のAIエージェント「Antigravity」の力を借りて、Android Studioの設定から実際のコーディング、そして実機での動作確認までをゼロから行い、オリジナルの「Simple Vibe Alarm」アプリを完成させます!
※Android Studio自体も未導入の状態からスタートです

↓完成したアプリのイメージはこんな感じ

手順(Antigravityとの開発プロセス)

1. Antigravityに「作りたいもの」を伝える

まずはAntigravityに「Androidの電卓アプリを作りたい」「アラームアプリは作れる?」とチャットで相談するところからスタートしました。
私はAndroid開発の知識がなかったので、「こういうのが欲しい」と日本語で要望を伝えるだけ。 するとAntigravityが「Jetpack Composeを使った最新のUIで作りましょう」「ロック画面でも鳴るようにするにはこんな権限が必要です」と、必要な技術要素をすべて裏側で考えて提案してくれました。

2. Android Studioの環境構築とプロジェクト立ち上げ

Android Studioの準備もAntigravityのサポートのもとで進めました。
「新しいプロジェクトはどうやって作るの?」「エミュレータはどうやって起動するの?」といった初歩的な疑問から、遭遇した細かい設定エラー(ビルド設定やSDKバージョンの違いなど)まで、チャットで聞けばすぐに解決策を教えてもらいながら進められました。
しかも、Antigravityは私のPC(ローカル環境)のファイルを直接読み取ってくれるので、「〇〇行目でエラーが出てるんだけど…」という手間すら省けました。

3. プログラムのおまかせ実装

ここが一番感動したところです。
「ダークモードっぽくて、システムバーも黒くしたい」「『何分後』と『指定時刻』の両方を選べるようにしたい」と伝えると、Antigravityが実際のファイル(MainActivity.ktなど)を直接編集して、一気にコードを書き上げてくれました。

私は、時々出てくる「この設計(プラン)で進めていいですか?」というImplementation Plan(実装計画)に対して、「OK(Approve)」を出すだけ。まるで優秀なエンジニアとペアプログラミングをしているような感覚でした。

4. バグへの遭遇と修正(AIとのトラブルシューティング)

順調に見えた開発ですが、大きな壁にぶつかりました。
「スリープ状態(画面オフやロック画面)の時に、指定時刻ならアラーム画面が出るのに、『〇〇分後』だと鳴らない・画面が出ない!」という動作不良が発覚したのです。

初心者の私ならここで挫折していたかもしれませんが、Antigravityに「ロック画面でうまく動かないんだけど…」と伝えると、すぐさま調査を開始。
Android 12以降の権限(SCHEDULE_EXACT_ALARM)の問題や、省電力機能(Dozeモード)下での AlarmManager.setAlarmClock の使い方の違いなどを分析し、自動でコードを修正してくれました。

5. 実機での確認と完成!

修正後、自分のAndroidスマホにアプリを転送してテストしました。
アプリを起動して「10分後」にタイマーをセットし、スマホの画面を消して待ちます……。

10分後、真っ暗だったスマホの画面がパッと点灯し、ロック画面を突き破ってアラーム画面が表示され、指定通りにしっかりとバイブレーションが作動しました!!

できた!!


まとめ

「プログラミング未経験だから…」と諦めていた自作アプリですが、Antigravityという頼もしいAIエージェントのおかげで、想像以上にサクサクと(しかも本格的なコードで)完成させることができました。
アイデアさえあれば、誰でも形にできる時代になったことを実感しています。次はどんなアプリを作ろうか、今からワクワクしています!

(ESXi)リモートでESXiをシャットダウンさせる

何をするか

ESXiホストをネットワーク経由でシャットダウンさせます。

手順(パターン1)

SSHで接続

ESXiのデフォルトではSSH経由での接続ができないので、SSHサービスを立ち上げてTeraTermを使ってシャットダウンさせます。

vSphere clientでESXiホストにログインします。
「構成」タブより左のメニューから「セキュリティプロファイル」をクリック。
「SSH」を選択して「オプション」を押下する。
次回から自動起動させる為に「ホストに連動して開始および停止」を選択。
「開始」を押下して「OK」「OK」を押下する。

TeraTermを起動してESXiホストにSSH接続をする。
「ユーザー名」を入力して、「キーボードインタラクティブ認証を使う」を選択。

パスワードを入力する。

シャットダウンコマンドを入力

poweroff

手順(パターン2)

PowerCLIで接続

PowerCLIをインストール → PowerCLI 6.5

PowerCLIを起動して下記2行を実行。

Connect-VIServer –Server ESXiホスト –User ユーザ –Password パスワード -Force
Stop-VMHost ESXiホスト -Force:$true  -Confirm:$false

※この方法だと仮想マシンのシャットダウンはできないので、ttlなどで仮想マシンのシャットダウンをしてから「Stop-VMHost」コマンドを実行する

感想

パターン1,2ともにマクロ化(スクリプト化)すればvSphere clientからやるよりは簡単かな。

(VBS)vbsからTTLを実行する

どんな処理か

vbsでttlファイルを実行する。
(コマンドラインからttpmacro.exeを実行し、引数にマクロファイルを指定してマクロを実行する。)

事前準備

user1のデスクトップの「TTL」フォルダに「test.ttl」が存在すること

コード

Dim oShell
Set oShell = CreateObject("WScript.Shell")

'ttpmacro.exeの場所は環境によって変わるので事前に確認する
command = """C:\Program Files (x86)\teraterm\ttpmacro.exe"" ""C:\Users\user1\Desktop\TTLi\test.ttl"""
oShell.Run command

WScript.Sleep 5000

oShell.Run command

powershellでping疎通確認

どんな処理か

テキストに記載されているIPアドレスに対して
上から順番にpingを実行して結果を出力する。

事前準備

user1のデスクトップに「ping_target.txt」が存在すること

コード

#ping対象ホスト読み込み(txtのパスは適宜修正する)
$target = (Get-Content C:\Users\user1\Desktop\ping_target.txt) -as [string[]]

$i=1
foreach ($l in $target) {
    #CountでPingRequestを投げる回数を記載
    $pingAlive = @(Test-Connection -ComputerName $l -Quiet -Count 3)

    #結果出力
    if ($pingAlive -eq $True) {
        Write-Host ('→' + $l + ' = 届きます')
    } else {
        Write-Host ('→' + $l + ' = 届きません')}
    $i++
}
$input = Read-Host "Enterを押して画面を閉じて下さい"

テキストファイル(ping_target.txt)

192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4

実行結果

PS C:\Users\security\Desktop> C:\Users\security\Desktop\ping.ps1
→192.168.1.1 = 届きます
→192.168.1.2 = 届きません
→192.168.1.3 = 届きます
→192.168.1.4 = 届きます
Enterを押して画面を閉じて下さい: 

(TTL)TeraTermマクロでsshログイン

何をするか

TeraTermマクロによるSSHログイン、
コマンドの実行を実現する

事前準備

 以下のパスに下記2つのテキストを準備する。
  C:\Users\user1\Desktop\TTL\
  ・host_list.txt
  ・ホスト名.txt(例:SW1.txt)

host_list.txt

処理対象のホストのIPアドレスが記載されたテキスト

192.168.1.1
172.16.1.1
10.1.1.1

続きを読む

(TTL)TeraTermマクロによるCiscoルータ、スイッチのリストア

何をするか

Ciscoルータ、スイッチの現在のconfigを削除して
別途テキストにて用意したconfigを流し込む

事前準備

 ・コンソール経由で接続
 ・コンフィグが記載されたtxt(基本的にはsh runのコピーでOK)が以下のフォルダに存在する
  C:\Users\engineer\Desktop\TTL\config\
  上記のフォルダに「ホスト名.txt」の形式で保存して下さい

続きを読む