乙Py先生のプログラミング教室
初学者のためのプログラミング学習サイト

Google

AI計算資源の覇権はどっちになるのか
NVIDIA GPU vs Google TPU
という内容で動画を作りました。

解説動画はこちら

 
個人的にはGemini Pro 3 が
恐ろしく役立っているので
TPU勢力拡大の構図は見えました。


今回はGoogleの新しいAIエージェント搭載エディター
Antigravity のご紹介です


解説動画はこちら




Google Antigravityとは

Google が 2025-11-18に発表した
エージェントファーストの開発プラットフォーム(IDE)
VS-CODEがベース



主な特徴

VS-CODEと同様のインターフェースで
エージェントファースト開発体験

エディタ・ターミナル・ブラウザを横断して
タスクを自律的に遂行できる



マネージャービューとエディタビュー

「マネージャービュー」では
複数ワークスペース・複数エージェントを一元管理し
各エージェントの進行状況や成果物を俯瞰できる

「エディタビュー」では
従来のコード編集画面に近い操作感の中で
エージェントとの対話や修正も行える



インストール方法

以下のサイトよりダウンロード
ダウンロード先


対象OS
MacOS
Windows
Linux

MacOSは
ダウンロード後に
imgファイルを開いてドラッグ



利用方法

ソフトウェアを開くのみ

初回起動時
Agent利用方法は選択式
「Agent-assisted development」 を選択

Agent利用はGoogleアカウントが必要
未作成の人は要作成
アカウントある人はログインが必要



日本語化の方法

1
左側メニューのExtensionから
Japanese Language Pack for Visual Studio Code
を探してインストールする

インストールが失敗して手動でインストールする場合は
MS-CEINTL.vscode-language-pack-ja-x.xxx.x.vsix
を手動ダウンロードしてから

Extensionメニューの ... マークから
Install From VSIX を選択してファイルを選択してインストールする


2
Shift + Command + P でメニューを開き
Configure Display Language を選択
対応言語から ja を選択して再起動する



その他設定

ブラウザーのChrome 拡張機能である
Antigravity Browser Extension 
をインストールしておくと便利(Chrome用)
(ブラウザー実行時にAntigravityが起動する)

回答を日本語にしてもらう

Agentパネル右上の「…」から
「Customizations → Rules → +Global」で
「日本語で回答してください」と設定



使い方

Editorモード
初期使用はこのモード
VS-CODEと同様のインターフェースでコードを編集する

利用できるエージェント
gemini 3 pro(High)
gemini 3 pro(Low)
Claude Sonnet 4.5
Claude Sonnet 4.5 (Thinking)
GPT-OSS 120B(Midium)


利用モード
Planning : 複雑タスク向け
FAST : シンプルタスク向け



エージェントの利用料金

現在は無料のパブリックプレビュー版のため料金なし
ただし、利用制限はあり
(クォータは5時間ごとにリフレッシュされるが)



Agent Managerモード

「⌘E」で「Agent Manager」に切り替えできる
今回は利用方法は割愛



早速作ってみる

gemini pro で回答してもらいました

数独ゲームを作ってみるプロンプト

数独ゲームを実行することのできる
sudoku.htmlを作成して下さい

以下の仕様にてJavascriptで数独ゲームを作成してください

# 仕様
画面中央に 9x9 マスの数独版を表示し
初期配置は30マス分を表示する
入力用の数字選択用の入力ボックスを数独版の下に配置する
入力ボックスは1~9の数字と、消去用のボタンを配置する
入力ボックスの数字を選択した状態で
数独版のマスをクリックすることで
数独版の該当マスに
入力した数字を表示する
数独版の該当マスをクリックすることで
数独版の該当マスの数字を消去する
全てのマスを埋めることで数独ゲームを完了する
数独ゲームを完了したら
数独版の下に数独を完了したことを表示する

リスキーダイスを作ってみるプロンプト

以下の仕様にてJavascriptでサイコロゲームを作成してください
risky_dice.htmlを作成して下さい

# 仕様
画面中央に 正20面体 のサイコロを表示する
サイコロの1面だけが「大凶」、残りの19面が「大吉」と文字列を表示させる
サイコロの下に「サイコロを降る」ボタンを配置して
クリックしたらサイコロを降ることができる
サイコロを降ったらサイコロの面の文字列を表示する
「大凶」の場合はゲームオーバーのポップアップを表示する



まとめ

まだプレビュー版のため
エージェント利用枠などが低く
お試し利用しかできていないですね

ただgemini pro を無料でも
IDEで使用できるのは大きいです

エージェントモードの詳しい使い方などが
分かり次第、また解説していきたいと思います。






今回はGoogleColabの
うれしいアップデート情報です

解説動画はこちら


 
Google Colabのアップデート


Google Colabに
うれしいアップデートが発表されました
それが「シークレット機能」の追加です

Google ColabでSecretsが
管理できるようになりました

シークレット(Secrets)というのは
API キーやパスワードなど機密情報の断片のことで
外部に公開するとまずいことになる
環境変数などで指定する文字列のことです


今までは外部にコード共有する際などは
これらの文字列を気にする必要が有ったのですが
これからはColabの機能で管理できるので
コード側を書き換える必要が無くなります

ということで
早速使い方を見ていきましょう



Secrets機能の使い方

画面左側の「鍵」マークから
「Secrets」管理画面に移行できます
aaa1




画面上で新しい情報として
追加していく事ができます

スクリーンショット 2023-11-04 16.08.39


「目」のマークをクリックすると
値が見れる様になります



コード側でこの値を使用する際は
「google.colab」の「userdata」を用いて
読み込みしたい環境変数の文字列を指定します

from google.colab import userdata

api_key = userdata.get('API_KEY')

openaiのAPIキーなど
コード上で指定していたものは
シークレット機能側に入力しておけば
コード側はそれを読み取るだけで良いので
安全かつ楽になりました!!!


ますます便利になる「Google Colab」
生成AI系のコード試しが捗りますね


今回はここまでです
それでは

今回は覆面算です

解説動画はこちら



さて覆面算とは、0から9の数字が対応する
別の記号に置き換えられた計算式を与えられて
どの記号が何の数字に対応しているかを推理して
完全な計算式を導き出すパズルのことです。

 
   A B C
+ A C B
————
   C B A

A=4,B=5,C=9


ルール
同じ文字には同じ数字
違う文字には違う数字が入る(0-9 , 最多で10種類)
一番左側の文字は0にはならない

これを解くプログラムを考えてみましょう。

1問目は

    S E N D
+   M O R E
------------------------
  M O N E Y


文字と数値の変換を行い
何も考えず総当たりでこの計算式が解けるかどうかで
判定してみます。
import itertools
from time import time
tm=time()

d1 = "SEND"
d2 = "MORE"
d3 = "MONEY"

for n in itertools.permutations(range(10) , len({a for a in d1 + d2 + d3})):
    data = dict(zip(sorted({a for a in d1 + d2 + d3}),n))
    if data[d1[0]]*data[d2[0]]*data[d3[0]]!=0:
        a1 = int(''.join([str(data[d]) for d in d1]))
        a2 = int(''.join([str(data[d]) for d in d2]))
        a3 = int(''.join([str(data[d]) for d in d3]))
        if a1+a2 == a3:
            print(data)
            print(a1)
            print(a2)
            print("-------")
            print(a3)
            print()
            break
            
print(time()-tm)

{'D': 7, 'E': 5, 'M': 1, 'N': 6, 'O': 0, 'R': 8, 'S': 9, 'Y': 2}
9567
1085
-------
10652

6.051903963088989

とりあえずは答えが出ましたね。

10個の数字から8個を取り出した
数字の順列は結構な数があります。

このプログラムだと
結構時間かかっちゃう感じなので
少し改良してみましょう。

変数に直接数字を受けたり
文字列に直すのやめたり
少し条件を加えてみましょう。
import itertools
from time import time
tm=time() 

def calc(p,q,r,s,t):
    return p*10000 + q*1000 + r*100 + s*10 + t

"""
  SEND
+MORE
----------
MODEY
"""
for p in itertools.permutations(range(10),8):
    s,e,n,d,m,o,r,y=p
    if s*m!=0 and (d+e==y or d+e==10+y):
        send  = calc(0,s,e,n,d)
        more  = calc(0,m,o,r,e)
        money = calc(m,o,n,e,y)
        if send+more==money:
            print(send)
            print(more)
            print("-------")
            print(money)
            print("")
            break

print(time()-tm)
9567
1085
-------
10652

0.5969181060791016

先ほどと比べると
10分の1くらいの時間で
終わるようになりました。


2問目です。

これはGoogleの入社試験の
問題らしいです。

  WWWDOT
ー GOOGLE
-----------------------
  DOTCOM

今度は引き算ですが
やることは一緒ですね。
import itertools
from time import time
tm=time() 

"""
WWWDOT
GOOGLE
-------------
DOTCOM
"""
for p in itertools.permutations(range(10),9):
    W,D,O,T,G,L,E,C,M = p
    if W*G*D==0: continue
    wwwdot = 100000*W+10000*W+1000*W+100*D+10*O+T
    google = 100000*G+10000*O+1000*O+100*G+10*L+E
    dotcom = 100000*D+10000*O+1000*T+100*C+10*O+M
    if wwwdot-google==dotcom:
        print(wwwdot)
        print(google)
        print("-------")
        print(dotcom)
        print()
        break

print(time()-tm)
777589
188103
-------
589486

2.180610179901123


こいつもまあまあ時間かかっちゃうので
早くなるように改良してみましょう。

こんな感じにしてみました。
import itertools
from time import time
tm=time() 

"""
WWWDOT
GOOGLE
-------------
DOTCOM
"""

for q in itertools.permutations(range(10),3):
    T,E,M = q
    if (T-E==M) or (10+T-E==M):
        for p in itertools.permutations(list(set(range(10)) - set(q)),6):
            W,D,O,G,L,C = p
            if W*G*D==0: continue        
            wwwdot = 100000*W+10000*W+1000*W+100*D+10*O+T
            google = 100000*G+10000*O+1000*O+100*G+10*L+E
            dotcom = 100000*D+10000*O+1000*T+100*C+10*O+M
            if wwwdot - google==dotcom:
                print(wwwdot)
                print(google)
                print("-------")
                print(dotcom)
                print()

print(time()-tm)

777589
188103
-------
589486

777589
188106
-------
589483

0.25487303733825684


1秒切るくらいに早くなりましたね。

注目すべきは1桁目です。
TからEを引いたらMになるはずなので
この3つの数字の関係性を先に計算し
合致するものだけ次に進みます。

残る6個の数字と組み合わせて
計算式を満たせば終了です。

そうすることで、だいぶ計算量が減りますね。

この覆面算パズルは
アルゴリズムを練習するのには
とても良い題材ですね。

色々改良して
早くしてみてください。

それでは。




このページのトップヘ