ブログ | XIMIX

"動くけど、これじゃない"からの脱却 - 古参エンジニアがAntigravityとの対話で見つけたこと

作成者: XIMIX 棚橋|2026.01.21

はじめに

こんにちは。長年エンジニアとして現場を歩いてきた私ですが、最近話題の「AI駆動型開発」という新しい波には、正直なところ期待と不安が入り混じった感情を抱いていました。

「もう開発にAIなしではいられなくなっているとは思うけど、
 AIとどう付き合っていけばいいのか?」

実はこの問いに挑むため、私たちはある実験シリーズを立ち上げました。それは、「期待の新人エンジニア」と「古参エンジニア(私)」が、同じお題に対して色々なAI駆動型開発ツールを使って開発を行い、それぞれのツールの特性やAI開発の勘所を浮き彫りにするという試みです。

本記事はその第一弾として、古参エンジニアである私がGoogleのAIコーディングエージェント「Antigravity」を使って行った実験の記録をお届けします。
※Antigravityについては弊社ブログ[導入編][デモ編]をご覧ください。

テーマは、「できるだけそっけない指示(プロンプト)」からスタートし、どこまで自分が期待する『常識的なプロダクト』に近づけるか。

これはAIツールの性能テストであると同時に、私自身の中に眠る「エンジニアとしての常識」を言語化し、このツールの特性(人となり?)を理解するプロセスでもありました。

今回の「お題」

今回の「お題」=作成するものの要件は以下です。

お題1: HelloWorld - Jupyter Notebook
フレームワーク: 使用しない(単純にチャットベースで指示をする)
実行環境: Google Colab
実装概要: CSVデータを表形式で表示する
  CSVファイルをuploadできる
  pandas dataflameにデータロードする
  dataflame内のデータを表形式で出力/画面表示する
シンプルなPythonのプログラムで試してみます。

実験:プロンプトの変遷とアウトプットの変化

Phase1:「機能さえあればいい」

最初のプロンプトは、あえて必要最小限に留めました。
「お題」をそのまま伝えます。

# 以下のアプリを作ります。
## アプリ概要: CSVデータを表形式で表示する
- CSVファイルをuploadできる
- pandas dataflameにデータロードする
- dataflame内のデータを表形式で出力/画面表示する
## 実行環境:Google Colab

結果: すごいですね。これだけの指示でちゃんと動く.ipynbファイルが出来上がりました。CSVをアップロードすれば、確かに表が表示されます。「お題」に書かれた機能は100%満たしています。

しかし、「これじゃない」感が否めません。 まず、テストコードが一行もありません。さらに、エラーメッセージはシステムが出力する無機質な英語の例外情報のまま。ユーザーが誤ったファイルをアップロードしたときにどうすればいいのか、全く案内がありません。

気づき: 私たちエンジニアが普段息をするように行っている「テストを書く」「例外をハンドリングする」「ユーザにわかりやすいメッセージを出力する」といった行為は、AIにとっては「指示されなければやらなくていいオプション」だったのです。

Phase2:「品質」を定義してみる

次に「エンジニアの常識」?をプロンプトに追加しました。

## 特記事項
- 作成したプログラムの全パスをテストする

結果: 指示通り、しっかりとしたテストコードが生成されました。信頼性は格段に向上しました。

しかし、ここで新たな「常識のギャップ」に気づきます。

一つはテストの対象です。 AIは確かにテストを書き、パスさせました。しかし、それはロジックだけを別ファイルに抽出し、そのロジックに対してテストを行っていたのです。実際にデプロイされるコードそのものがテストされているわけではありませんでした。「本番コードをテストする」というのも、もしかすると私だけの勝手な常識(思い込み)だったのかもしれません。

もう一つは言語です。 生成されたコードのコメント、チャットのやり取り、そしてアプリが出力するメッセージがすべて英語に変わりました。 私は日本人であり、このアプリを使うのも日本人です。「日本語で」とわざわざ言わなくても分かるだろう……というのは、私の勝手な甘えでした。

気づき: AIには「空気を読む」機能はありません。しかし、「スコープ」を決めてあげれば、その範囲内では驚くほど従順に完璧な仕事をしてくれます。私の頭の中にあった、「プロダクトコードをテストする」、「日本人向けのツールを作る」という前提(常識)が、言語化されていなかったのです。

Phase3:エンジニアの「おもひ」を吹き込む

最後に、私が気づいた「当たり前」を言葉にしてプロンプトに盛り込みました。

## 特記事項
- Chatのやり取りやコードのコメント、出力するメッセージはわかりやすい日本語にすること
- エラーメッセージには「何が起こったのか」に加えて「ユーザはどうしたらよいか」を表現すること
- 作成したプログラムの全パスをテストする
  - テスト対象はリリースするコードそのものをテストすること
  - テストカバレッジを出力すること

結果: 出てきたものは、私が最初にイメージしていたものに近づきました。

丁寧な日本語のメッセージ、ユーザーのミスを優しく指摘し解決策を提示するエラー処理。そして、それを保証するテストコード。 「到達した」とまでは言いませんが、これなら「エンジニアが作ったプロダクト」としていいかな?というレベルです。

ここまでで感じたこと

今回の実験を通して、強烈に感じたことがあります。

「AIへのプロンプトは、そのまま自分の要件定義能力の鏡である」

AIは「察して」はくれませんが、「言えば」その通りに動きます。 Phase1のそっけない結果は、AIの無能さではなく、指示を出した私の「言葉足らず」が招いたものです。

逆に言えば、私たちがこれまで培ってきた「エンジニアとしての常識」や「こだわり」こそが、AI時代における最大の武器になるということかな?とも思いました。 「ここはテストが必要だ」「ここはユーザーがつまずきやすいポイントだ」。そういった勘所をわざわざ言語化し、AIに伝える力。これがあれば、AIは最高のペアプログラミング相手になってくれるのだろうと。

おわりに:旅はまだまだ続く...

私はまだ、AI駆動型開発という大海原に漕ぎ出したばかりの「古参エンジニア」です。 しかし、今回のPhase1~3の変遷を経て、Antigravityの特性:『すごく頼もしい職人。ただしアタマの中の「常識」は丁寧に共有すべし。』といった(ある意味人間相手でも同じ?)特性を肌で感じた第1回目でした。

でもまだまだこれから。今回やこれからの経験を弊社内の「新しい標準」として共有すべく、さらにAIとの対話を深めていくつもりです。

さて、冒頭でも触れましたが、これはシリーズ企画です。 今回は「古参エンジニア × Antigravity」の視点でお届けしましたが、近いうちに「期待の新人エンジニア」による別ツールの実践ブログも公開される予定です。 世代も経験も常識も異なる私たちが、同じお題に対してどのようなアプローチを取り、どんな「特性」や「付き合い方」を見つけ出すのか。私自身も非常に楽しみにしています。

このAI駆動型開発を巡る旅は、まだ始まったばかりです。次回のポストにもぜひご期待ください。