概要 – Abstract –
大規模言語モデル(LLM)の進展により、開発工程の自動化が急速に進んでいる。本研究では、Google の AI 搭載 IDE「Antigravity」を対象とし、その自律的な開発能力をRSA暗号復号化プログラムの生成タスクを用いて検証した。Antigravity は自然言語プロンプトから仕様解析、ToDoリスト生成、コード実装、依存関係の補完、環境構築、ブラウザによる動作確認までを一貫して自動実行し、高い処理速度と自己修復能力を示した。一方で、海外ユーザによるディレクトリ誤削除事故に見られるように、権限操作や安全性には課題が残る。これらより、Antigravityは小規模開発やプロトタイピングにおいて高い有用性を持つが、本番環境での利用には慎重な検討が必要である。
序論 – Introduction –
近年大規模言語モデルの急速な技術発展によりバイブコーティングなど、技術者の開発がより容易になっている。そんな中、Googleが2025年11月18日、新たにAntigravityと呼ばれるAIを搭載したIDEを公開した。これはMicrosoftのVisual Studio Codeベースのコードエディタを搭載し、Google Chrome ブラウザやGoogleの最新AIであるGemini 3 Proを使用し、自然言語で指示を行うことで容易にバイブコーティングを行えるものである。複雑なコーディングを開発者からAIエージェントへ委託できることを特徴としていて、作成したいプログラムの内容を指示してしまえば一切手を触れることなく実行環境の構築やプログラムコーティング、コンパイルが完了してしまうものである。本研究ではこのGoogle Antigravityが今後の開発で有用であるかや、運用する上でのリスク等を検証する。
方法 – Materials & Methods –
実行環境 – Materials –
- OS: Windows 11 Home (Version 24H2)
- CPU: AMD Ryzen 9 7900X, GPU: NVIDIA RTX 5070, RAM: 64GB
- Python: Python 3.13.5
- IDE: Google Antigravity
- AI Agent: Google Gemini 3 Pro
- Browser: Google Chrome
- 日本語化パッケージ(IDE)
実行手順 – Methods-
- Google Antigravityをインストール・起動し、Microsoft Visual Studio Codeと同様に日本語化パッケージのインストールを行う。また、あらかじめ実行環境の構築権限やGoogle Chromeブラウザの操作権限、Pythonの実行権限を与えている。
- Google Antigravityに今回実験的に作成するRSA暗号の復号化プログラムの作成を指示するプロンプトを与える。
- 作成されたプログラムを実行し、修正点があれば修正を行い、指示通りのプログラムが作成されるまでのプログラムのコーティング精度を確認する。
- コーティング能力、ブラウザの操作能力、共同開発能力の審査を行い、今後の運用でどれくらい実用的かを考える。
結果 – Results –
Antigravityに対して図1のプロンプトを指示し、実行を行った。本研究の目的はあくまで簡単なコーティング能力と、ブラウザ上での動作等の検証を行うものである為、ベースプロンプトにRSAプログラム解析の解答を載せている。
Pythonを使用して、localhostのポート番号1208を使用しwebブラウザ上で動作する以下の機能を有するプログラムを作成してください。
- 送られたRSA暗号文を以下の条件に従って復号化する
- 公開鍵(n)「56026387380614475029791152661901853589257522149000614053530690594541988295068081
14159324229557824103694527957588262590393155970821715979445383972999696606205387
14879802245391289448865422915642331150600766292418199550465092050374848740579658
99971145154186462940975631365650533554612006215322043618625227780391」
- 公開指数(e)「65537」
- 秘密鍵情報(d)「21607991934821726213482478213562281632086807907565795212125085607636042176879332
57449853963811336528144145881807237518268724694729537407822474713544109913186917
76877776243546479147775547987469013341648616143311793715916036008630546614780405
79611300319609400249397369070035221827139903851571506543405679635105」
- 素因数(p)「70203124919765578978269551074198234328497500560831232645459685252173334452166519
95323222675517367971028677146989516693711480023619394405512896476837662499」
- 素因数(q)「79806116101877872564879214622760982360014716204464408394949678474935969537964168
21055975840263446674317625723111830643072553886223554559440029982777432109」
図1 Antigravityで使用したプロンプト
実行を行ってから8秒間の思考を行い「RSA Decryption Web App」と言うファイルが開き、Antigravity自身で「自分が何をすればいいのか」のTo Doリストを作成し、そのTo Doリストの順番に処理を行い始めた。[図2]

その後、自分で実行環境の構築に必要な情報や与えられた情報の整理や足りない情報の補填を行い、今度は「RSA Decryption Web App Implementation Plan」と言うファイルを生成した。この作成されたファイルにはアプリケーションのファイル名や実行環境のファイルパス、コーティングに使用した言語などの構築環境、検証の実行方法など技術者への引継ぎに必要な情報がすべて記載されている。今回作成した様な簡単なプログラムの場合であれば、このファイルに記載された内容を見れば実行環境や方法がすべて理解出来る仕様になっていた。[図3]

その後わずか17秒程度で最初のPythonプログラムが作成された。生成されたプログラムは基本的な構造は正しく、必要な関数定義やHTML形式でのWEB公開プログラムも含まれていた。その後実行を行うにあたって、ユーザーに実行環境の許可を求めるようになっており、許可を行わなければ実行が行われない仕様になっていた。[図4] 許可を行い実行したが、初回バージョンではモジュールのインポート漏れが確認された。その後、Antigravityは再度思考状態に移行しエラー文を解析し、Pythonを使用しWEBに公開するためのモジュールである「Flask」の未インストールがエラー原因であることを自動的に突き止めた。[図5] そしてモジュールのインポートを行い、再度実行を行いエラーが消えたことを確認した。確認後Antigravityはすぐ自動的にGoogle Chromeブラウザを開き、localhostのポート番号1208にアクセスを行った。その後「Hello Word」と言う文字をAntigravity自身がプロンプトの指示にのっとってRSA暗号として変換し、作成したサイトの入力フォームに入力、解読のボタンを押しRSAの解読プログラムの動作確認を行った。[図6]



Antigravity上で動作確認が終了次第、自動的に処理が終了し、「I have successfully created and verified the RSA decryption web application. It is running on localhost:1208. You can use it to decrypt your messages.」のメッセージと共に成果物が添付された。[図7] 実験環境すら全く構築していない状態からプログラムの動作確認の完了までAntigravityが処理した時間はわずか数分程度であり、実行環境の整備速度と精度がとても優れている。

例として全く別の開発環境にて「こんにちはRSA」と言う文字列をRSA暗号化処理を行った。この暗号文を復号化サイトに入力し、実行を行ったところ、正常に復号化処理が行われていることが確認できた。[図8][図9]
13826515924539261392370409122226638602081257273120032269915823126399200321625144852008088082625345566320638832567225944741953208911926643303685490986511546107289415470110801244436283694045311762687379014219926458497833638266882663705950918460632557075314031039366008878226645447080798951530075062369998089291図8 RSA暗号化処理を行った暗号文

考察 – Discussion –
本研究では、Googleが新たに公開したAI搭載IDE「Antigravity」を用いて、開発工程の自動化能力を検証した。今回の場合はWEB上で動作するRSA暗号復号化プログラムと言う比較的単純ながら要件理解や実装、ライブラリの導入、実行環境の構築、ブラウザ上での動作確認等の作業がある、今まで人間が実装しようとすると非常に手間のかかるタスクを題材にその性能と挙動を観察した。
実験の結果、Antigravityは与えられた自然言語のプロンプトを高速で解析し、自動的にToDoリストの作成や実装計画といった「メタ情報」から生成した点が注目に値する。従来の「ChatGPT」などのLLMベースのコーティング支援ツールではユーザー要求をそのままコード化する傾向があり、開発環境の準備やファイルの設計などの周辺作業はユーザー側で用意する必要があった。また、LLMが作成したプログラム自体もコメントこそあるものの、実際にどのような処理が行われているのかがユーザー側が確認しにくい仕様となっていた。一方でこのAntigravityでは開発に必要な周辺作業を含めて、一連の工程として自立的に処理するという特徴が明確に示された。
特に高速な環境処理能力と、自律的にブラウザを操作しデバック等の複雑な作業も完全自動で行った点は従来のIDEとは一線を画すものである。また、生成したコードや開発環境に不備があった際にもAntigravityは自動的にログを解析し、Flaskのみインストールと言う問題点に即座に到達した。モジュールの未インポート自体は「ChatGPT」や「DeepSeek」、「Gemini」などのLLMを使用し、Microsoft Visual Studio Codeへのコピペなどでバイブコーティングを行っていた時代からある問題で、LLM自体が先に必要なモジュールを正確に提示できないことがあった。しかし、このAntigravityではそのように不備があった際でも数秒程度でエラーを解析し、解決してしまうので今までのなぜ実行できないのかを手動でエラー解析もしくはLLMにコピペ等でわざわざ手間をかけて単純な問題を解決する必要がないのである。
一方で今回の実験で対象にしたのはあくまで解答があるプログラムをローカル環境で作成し、動作確認するというとても小規模なプログラムであり、実用的な大規模システムに対するシステムや性能、安全性は依然として検証が必要である。AIが自動的に権限設定やブラウザを行う点は利便性が高いと同時に、誤作動や権限汎用のリスクを内包している。実際に海外のユーザーがAntigravityを開発で使用した際に「キャッシュを削除して」と言う簡単な指示を出したが、Antigravityは処理中に何故かルートディレクトリを対象に削除を行ってしまい、すべてのデータが削除されるという異例の事態が発生してしまっていた。このような事態が発生してしまっている以上とても安全とは言うことができず、生成されたプログラムのセキュリティ品質はユーザー側で確認する必要があり、「自動生成されたコードをそのまま実運用に組み込む」ことは現時点では危険を伴う。
しかしながら、本研究の範囲内においては、Antigravityは小規模開発において十分に高い生産性を発揮することが確認できた。特に、開発者が構築に時間を取られがちな環境設定・依存関係の解決・動作確認といった工程の自動化は、開発サイクルの短縮に大きく寄与すると考えられる。将来的に、権限管理やセキュリティ検証のフレームワークが整備されれば、より大規模な開発にも応用可能だと思われる。
今後の開発での実用性に関してはまだ現段階では日本語の対応が乏しく、与えるプロンプトは日本語でも正常に処理されることが確認できたが、Antigravityが作成した設計書やプログラム全てが英語であり、完全な日本語環境で開発することは現時点では非対応なのである。しかし、出力が英語であって多少翻訳等に時間を使用したとしても、本IDEを利用することはそれ以上の価値があると言える。
結論 – Conclusion –
本研究では、Googleが公開したAI搭載IDE「Antigravity」を用い、RSA暗号復号化プログラムの自動生成と環境構築を題材として、その開発自動化能力を検証した。実験の結果、Antigravityは自然言語の指示を高速で解析し、ToDoリストの作成や実装計画の生成、必要なライブラリの特定とインストール、ブラウザ操作を含む一連の工程を自律的に実行できることが明らかとなった。これらの能力は従来のLLMベースのコーディング支援ツールと比較して明確な優位性がある。
特に、エラー発生時に自動でログ解析を行い、問題箇所を即座に特定して修正する「自己修復的な挙動」は、従来の手動でのエラー解析や追記作業を不要にし、開発効率の大幅な向上につながると考えられる。また、環境構築・依存解決・動作検証といった工数の大きい作業を短時間で自動化できる点も、開発者の負担を軽減する大きな利点である。
一方で、Antigravityの実運用には慎重な検討が必要である。特に、自動的に権限を操作する仕様は利便性が高い反面、誤作動が致命的な被害につながる可能性がある。実際に海外で報告された「ルートディレクトリ削除」の事案は、現時点でのAIエージェントの安全性が十分に担保されていないことを示唆している。また出力が完全に英語である点や、大規模システム開発に対するスケール性・堅牢性は依然検証が必要であり、その点で実務利用には慎重さを要する。
以上を踏まえると、Antigravityは小規模〜中規模のプロトタイピングや学習用途、迅速な検証作業において非常に高い有用性を持つ一方で、大規模開発や本番運用環境への適用にはまだ課題が残されていると言える。今後、権限管理やセキュリティフレームワークが強化され、より安全で透明性のある動作が担保されれば、本IDEは開発プロセスの大部分を AI エージェントへ委譲する未来の開発スタイルの中心的存在となる可能性が高い。
参考文献 – References –
[1] Google LLC:
“A new era of intelligence with Gemini 3,” Google Blog, Nov. 2025.
https://blog.google/products/gemini/gemini-3/
[2] C. Hunt:
“‘This is a critical failure on my part’ — Google’s AI coding assistant deletes user’s entire D: drive, and apologies won’t bring back the data,”
Windows Central, Dec. 2025.
https://www.windowscentral.com/artificial-intelligence/google-antigravity-ai-delete-drive
[3] L. Maddison:
“Google’s Antigravity AI deleted a developer’s drive and then apologized,”
TechRadar, Dec. 2025.
https://www.techradar.com/ai-platforms-assistants/googles-antigravity-ai-deleted-a-developers-drive-and-then-apologized
[4] T. Mann:
“Google’s vibe coding platform deletes entire drive,”
The Register, Dec. 2025.
https://www.theregister.com/2025/12/01/google_antigravity_wipes_d_drive/
[5] Efosa Udinmwen:
“Google’s AI-powered Antigravity IDE already has some worrying security issues – here’s what was found,”
TechRadar Pro, Dec. 2025.
https://www.techradar.com/pro/googles-ai-powered-antigravity-ide-already-has-some-worrying-security-issues
[6] R. L. Rivest, A. Shamir, and L. Adleman:
“A Method for Obtaining Digital Signatures and Public-Key Cryptosystems,”
Communications of the ACM, Vol. 21, No. 2, pp.120–126, 1978.
https://people.csail.mit.edu/rivest/Rsapaper.pdf
成果物 – Appendix –
from flask import Flask, request, render_template_string
import sys
# Increase integer string conversion limit for large RSA numbers
sys.set_int_max_str_digits(100000)
app = Flask(__name__)
# RSA Keys
n = 56026387380614475029791152661901853589257522149000614053530690594541988295068081141593242295578241036945279575882625903931559708217159794453839729996966062053871487980224539128944886542291564233115060076629241819955046509205037484874057965899971145154186462940975631365650533554612006215322043618625227780391
e = 65537
d = 21607991934821726213482478213562281632086807907565795212125085607636042176879332574498539638113365281441458818072375182687246947295374078224747135441099131869177687777624354647914777554798746901334164861614331179371591603600863054661478040579611300319609400249397369070035221827139903851571506543405679635105
p = 7020312491976557897826955107419823432849750056083123264545968525217333445216651995323222675517367971028677146989516693711480023619394405512896476837662499
q = 7980611610187787256487921462276098236001471620446440839494967847493596953796416821055975840263446674317625723111830643072553886223554559440029982777432109
def int_to_bytes(i):
return i.to_bytes((i.bit_length() + 7) // 8, byteorder='big')
@app.route('/', methods=['GET', 'POST'])
def index():
result = None
error = None
if request.method == 'POST':
ciphertext_str = request.form.get('ciphertext')
try:
c = int(ciphertext_str)
m = pow(c, d, n)
decrypted_bytes = int_to_bytes(m)
try:
result = decrypted_bytes.decode('utf-8')
except UnicodeDecodeError:
result = f"Decrypted (Hex): {decrypted_bytes.hex()}"
except Exception as ex:
error = f"Error: {str(ex)}"
return render_template_string(TEMPLATE, result=result, error=error)
TEMPLATE = """
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>RSA Decryptor</title>
<style>
body { font-family: sans-serif; max-width: 800px; margin: 2rem auto; padding: 0 1rem; }
textarea { width: 100%; height: 150px; margin-bottom: 1rem; }
button { padding: 0.5rem 1rem; font-size: 1rem; cursor: pointer; }
.result { margin-top: 2rem; padding: 1rem; background: #f0f0f0; border-radius: 4px; word-break: break-all; }
.error { color: red; margin-top: 1rem; }
</style>
</head>
<body>
<h1>RSA Decryptor</h1>
<form method="post">
<label for="ciphertext">Ciphertext (Decimal Integer):</label><br>
<textarea name="ciphertext" id="ciphertext" required></textarea><br>
<button type="submit">Decrypt</button>
</form>
{% if result %}
<div class="result">
<strong>Decrypted Message:</strong><br>
{{ result }}
</div>
{% endif %}
{% if error %}
<div class="error">{{ error }}</div>
{% endif %}
</body>
</html>
"""
if __name__ == '__main__':
app.run(host='0.0.0.0', port=1208)


