2026年8月2日日曜日

タイ(チェンマイーバンコク)への旅行記(7/12 - 19)

今回は日本からタイのチェンマイへ行き、そこからバンコク経由で日本に帰国するスケジュールです。今回は前半のチェンマイでのスケジュールは、朝から詰まっていて、常に寝不足で頭が重い感じでした。バンコク入りしてからは少し余裕ができたので、そこで体調がある程度回復した感じですね。

7月6日の時点で、タイへの入国に 10,000バーツ相当の現金をもっていないと入国拒否される可能性があるという情報を得ました。タイ国政府観光庁のウェブサイトでも掲載されていましたし(7月9日時点で削除されている)、旅行会社からも注意喚起がありました。

以前からあったルールではあるものの、注意喚起されたということはその程度の金額は持っていかないといけないなと思いました。まぁもともと、10,000バーツ相当の現金(5万円ぐらいもっていくと安心)ぐらいは持っていく予定でしたので、普段と変わりません。 実際にタイでの入国審査では、何も聞かれませんでした。


 Google検索(2026年7月9日)


タイ入国のための申請


入国3日前から、Webでの事前登録が必須になっています。
入国審査の手前でも登録できますが、ネットが使えない、時間がかかってしまうなどのロスが生じるため、事前登録が必須といってもよいでしょう。

登録サイト

https://tdac.immigration.go.th/arrival-card/

書き方については下記を参考にしました。

TDAC(タイデジタル到着カード)登録方法 ※一番下の「Q&A-よくある質問」までお読みください。 | 【公式】タイ国政府観光庁

https://www.thailandtravel.or.jp/tdac/


両替


スワンナプーム国際空港の入国前や荷物置き場あたりはレートが非常に悪いのでそこでは両替しないほうがよい。といっても前回時間がなかったこともあり 5万円も両替して数千円レベルで損をしてしまったのではあった。

今回はお土産などをチェンマイでいくつか買ってしまって持っていったお金が足りなくなってきたので、Asok駅近くにある地下鉄のところの両替。

  • SuperRich 1965 (Phra Ram 9 MRT)
  • 0.2055バーツ/円

でした。チェンマイのほうがレートが良かったと同行者はいっていました。

Terminal 21 の同じ店は、0.2070バーツ/円でした。


eSIM(Amazon)


今回は下記を購入しました(899円)

【タイ eSIM】7日間 無制限データ|5G/4G対応|タイ最大手 TrueMove 回線|TikTok・ChatGPT・Google対応|QRコード即日メール送信|簡単設定|LINEカスタマーサポート(365日)|タイ simカード|タイ sim

事前に iPhone に登録したのですが、うっかり消してしまって、LINEサポートでQRコードを即時再発行してもらって事なきを得たのでした。サポートが早いのはいいですね!

バンコクのスワンナプーム国際空港、そしてチェンマイでも問題なく使えました。

モバイル Wi-fi (Global Wi-fi)


チェンマイ



こちらもバンコクのスワンナプーム国際空港、そしてチェンマイでも問題なく使えました。
チェンマイのホテルでは、6.7 Mbps程度の速度(fast.com調べ)でした。
ただ、あまり速度がでないときもあったので、Wi-Fiオフにして eSIMの方を使う場面もありました。とはいえ、PCを使う時は重宝したのでした。


バンコク経由でチェンマイ - 荷物が!?


今回利用した航空会社は、バンコクおよびチェンマイまでタイ航空。したがって、特になにもいわなくても関西国際空港で荷物はチェンマイ行きになります。もちろんスーツケースに貼り付けられたタグがチェンマイ行きになっていることを確認。

バンコクのスワンナプーム国際空港で入国審査をして、少し休憩してから国内線でチェンマイへ。この飛行機がものすごく寒くて半袖のみで出たので震えていました。それはともかく、チェンマイへついてから荷物がでてきません。

出てこない乗客はいずれも関西国際空港から出発した人たちの模様。空港職員がやってきて、BAGGAGE CLAIMのシールを肩に貼られて、再度荷物チェックをして国際線の荷物置き場まで誘導されました。そこに荷物が届いていたのです。これ、国際線ー国内線乗り継ぎの場合、毎回同じ問題が起こっている気がする。つまり、国際線から乗り継いでチェンマイにいった場合、チェンマイでは国際線側の荷物置き場に荷物がでる。しかし乗客は国内線から出るので、場所が違う。空港職員が手慣れていることから、このケースが少ないことからアナログ的な対応をしているのかなぁと感じました。

なお、羽田からチェンマイ入りした別の同行者は、飛行機から降りてすぐのところに待機していた空港職員から別途誘導された国際線の荷物置き場に連れていかれたらしい。羽田からは日中だったので空港職員がいたが、関西国際空港からは夜着だったので空港職員の誘導もなく、こうしたアナログ的な対応をしたのかなぁと思いました。

こうしたときには慌てず、空港職員へ相談しましょう。

なお 

20:34 着陸
20:46 国内線の荷物置き場
21:15 国際線の荷物置き場からスーツケースを受け取り、手配していた送迎ドライバーと会う
21:24 出発
21:34 ホテル着

という感じ。こうしてみるとあまり時間ロスはしていないですね。


チェンマイにて


いくつかの大学へ訪問する用事があったため、いろいろ見て回る時間はありませんでした。

到着した日は日曜日の夜。ホテルの宿泊した部屋からナイト・マーケットが見えましたが、行く気力がありませんでした。休日のみ開催しているようで、翌日にはしまっていました。



ホテル近くには、ターペー門があったので、少し立ち寄ったり、


大学訪問の帰りに通りかかった「ワット パー ダーラーピロム」に15分ほど寄ったりしたぐらいでした。


そうそう、チェンマイ大学の食堂では、車型の出店が結構あって賑わっていました。


チェンマイ大学で食べた昼食はこちら。スープはビニール袋に入っていて、それをこぼさないように気をつけて入れると、こんな感じになります。緑の唐辛子(辛い!)に気をつけるぐらいで、とても美味しかったです。

食事


現地でのオススメレストランということで訪れました。冷房もよく効いていて、ゆっくりと歓談しながら食べることができました。結局2日連続で夕食に訪れたのでした。セットメニューを2種類頼みました。






現地大学の方に連れて行ってもらいました。



麺とスープの両方が美味しく、すべて飲み干しました。
他のメンバーはカレー麺を食べていました。こちらはちょっと辛いみたいですね。



M Hotel Chang Mai


チェンマイで宿泊したホテルです。



一通り必要なものは揃っています。必要なのはブラシや歯磨きぐらいですね。ドライヤーもありました。

ネットワークについてはパケットロスもあり、時間帯によっては接続できなくなるなど不安定なこともありました。

朝食



おしゃれな場所でした。ただ、暑くて外のテラス部分で食べようとは思いませんでしたが。


美味しかったですね。

ネットワーク


ネットは 26Mbps とそこそこ。

ただし、パケットロスが出ることもありました。

今回は Codex を使ってチェックツールを作って実行。後日、Claude Code + Codex を使って GitHUBへツールを公開。

https://github.com/kimipooh/network-checker

今回は、Claude Codeを司令塔に、Codexを実装・レビュー担当とした、検証ゲート付きの単発ループエンジニアリングで実行しました。Claude Code側のリソースは 29% ぐらいですね(Pro版)。まぁいくつか省エネ系プラグインをいれているので、必ずしもこの程度のリソースで済むかどうかはわかりません。あとは出来たあとに、多言語対応など実際につかってみてほしいなと思った機能を追加したぐらいですね。


概要

  • 測定日時: 2026-07-13 06:37:46 +07
  • 測定場所: タイ・チェンマイ / M Hotel
  • 測定対象:
    • www.yahoo.co.jp
    • www.sinet.ad.jp
  • 測定方法:
    • 各対象に ping -c 10 を 5 回実施
    • 各対象に traceroute -n -q 1 -w 2 を実施

結果サマリー

対象解決されたIPアドレス送信受信パケットロスRTT最小RTT平均RTT最大判定
www.yahoo.co.jp124.83.184.12450484.0%114.578 ms119.739 ms130.456 ms一部 timeout あり
www.sinet.ad.jp150.100.1.2550500.0%94.047 ms99.691 ms129.931 mstimeout なし



実行例

% ping www.yahoo.co.jp PING edge12.g.yimg.jp (124.83.184.124): 56 data bytes 64 bytes from 124.83.184.124: icmp_seq=0 ttl=47 time=120.737 ms 64 bytes from 124.83.184.124: icmp_seq=1 ttl=47 time=117.152 ms 64 bytes from 124.83.184.124: icmp_seq=2 ttl=47 time=116.564 ms 64 bytes from 124.83.184.124: icmp_seq=3 ttl=47 time=115.099 ms 64 bytes from 124.83.184.124: icmp_seq=4 ttl=47 time=116.264 ms 64 bytes from 124.83.184.124: icmp_seq=5 ttl=47 time=115.511 ms Request timeout for icmp_seq 6 64 bytes from 124.83.184.124: icmp_seq=7 ttl=47 time=120.808 ms 64 bytes from 124.83.184.124: icmp_seq=8 ttl=47 time=117.396 ms 64 bytes from 124.83.184.124: icmp_seq=9 ttl=47 time=115.227 ms ^C --- edge12.g.yimg.jp ping statistics --- 10 packets transmitted, 9 packets received, 10.0% packet loss round-trip min/avg/max/stddev = 115.099/117.195/120.808/2.055 ms


21:34 にホテルについたこともあり、夕食は食べていません。そのため、夜食として近くのコンビニ(セブンイレブン)で、スナック菓子を食べてしまったのでした。




朝食は下記のような感じ。



バンコクにて


15日にバンコク入りしました。
バンコクは最終日の18日以外は曇ったり、雨が降ったりとそこまで厚くはありませんでした。


バンコク市内は変わらず大混雑ですね。
夜になるとある程度混雑は解消されていました。




以下、バンコク市内での食事をした情報です。

七里香

Asok近くの中華料理店とはいえば、大体はここによっています。
そこそこの値段で美味しい中華料理を食べることができます。
ここも2度訪れました。


大長令(Dae Jang Gum)


韓国料理。こちらではサービスでいろいろなものをつけてくれるのが嬉しいところですね!




2度目は、水冷麺を頼みました。こちらではサービスでいろいろなものをつけてくれるのが嬉しいところですね!


MKレストラン(ターミナル21の 4F)


タイのしゃぶしゃぶを食べに夕食に訪れました。








鍋は2つに分かれていて、辛い方とそうでない方に分かれていたのが、辛いのが苦手な私の取って良かったです。


フラマ エクスクルーシブ アソーク(ホテル)


今回は11F(最上階)に宿泊しました。同行者はそれぞれ別の階のため、どの部屋にあたるのかは、ある程度は運なのか。いずれにせよ、かなり広い部屋でした。





朝食



ホテルの朝食はいつも食べすぎる感じです。それぞれ美味しかったです!

ネットワーク


ホテル内のネットワークは安定していました。



概要

  • 測定日時: 2026-07-15 21:33:11 +07
  • 測定場所: タイ・バンコク / FuramaXclusive Asoke Hotel
  • 測定対象:
    • www.yahoo.co.jp
    • www.sinet.ad.jp
  • 測定方法:
    • 各対象に ping -c 10 を 5 回実施
    • 各対象に traceroute -n -q 1 -w 2 を実施
  • 生ログ:
    • furamaxclusive-asoke-japan-connectivity-20260715-213311.raw.txt

結果サマリー

対象解決されたIPアドレス送信受信パケットロスRTT最小RTT平均RTT最大
www.yahoo.co.jp182.22.31.25250468.0%96.794 ms127.564 ms978.736 ms
www.sinet.ad.jp150.100.0.25, 150.100.1.2550500.0%98.447 ms128.156 ms321.867 ms


バンコク最終日(18日)


この日は深夜便で帰国するため、少しバンコクを観光しました。

朝8時ぐらいに地下鉄に乗って移動。いつもBTSだったので、今回が本格的な地下鉄利用です。


タニヤ通り




こちらを抜けると、ジム・トンプソン本店です。

ジム・トンプソン本店(スラウォン店)




なかなか良いバッグを見つけたので妻へのプレゼントにしました。
VAT還元手続きを聞かれたのでやってもらいました。

そこからGrabタクシーで、Talad Noi Museum まで行ってもらったのですが、実際には途中入れないようなので、大通りで下車。

 Talad Noi Museum


博物館には入らず、まずは桟橋へ。



風も吹いていて、とても景色がよかったです。

Talat Noi Street Art


そして、博物館を横目に、複雑な路地をGoogle Maps という文明の利器を最大限活用して、壁アートに向けて移動。


方向音痴な私は、 Google Maps がなければ方向感覚を失って迷子になっていたことでしょう。


途中「32Bar X」というバーを見かけました。

そこから近いところにある、So Heng Tai Mansion(蘇恒泰)は有名みたいですね。気づかず素通りしたので、機会があればまた訪れてみたいものです。


こちらは「ロンクアク神社」(漢王廟)です。有料ということもあり、素通りしてしまいました。

さらに歩いていくとついに目的地の「Talat Noi Street Art」に到着!


なかなか良い眺めでした。

カフェで一休み!

そこから中華街門までブラブラと歩きました。



さすがに汗びっしょりになってカフェーで休みたいなー、でもあまり遠いところまでは歩きたくない!ということで見つけたのが、ユニークな「ロントウカフェ」



一瞬、この上側に座ってみようかなーと思ったのですが、登るのが面倒という気持ちが強くなって、結局普通の机にしたのでした。

メニューにあったオススメの LHONG TOU THAI MILK TEA にしました。美味しかったです。


さて、そこから地下鉄 Wat Mangkon まで歩いたのでした。




途中、産毛取りをしているところに出会う。

午後からはワット・アルンに行きました。

ワット・アルン




タイの伝統衣装を着飾った女性たちがカメラマンと写真を撮っていました。
衣装レンタルからヘアメイク、カメラマンまでセットになっている感じですね。
衣装レンタルとヘアメイクで150Bぐらいだとか。



この日は天気もよく、ものすごく暑かったです。

スワンナプーム国際空港での夕食



バーガーを食べました。味は、まぁ普通といったところでしょうか。

という感じで日本へ帰国したのでした。

お土産




タイ紅茶やコーヒーを中心に、ジム・トンプソンやあとチェンマイの空港で娘へのバッグ(chiangmaiの文字入り)をいくつか購入したのでした。

2026年8月2日 @kimipooh


2026年7月19日日曜日

Unicodeの通常表示できない文字を表示するには(U+2CF00 を例にして)

 

 出典:Wikipedia「して」よりスクリーンショット(2026年7月19日取得, https://ja.wikipedia.org/wiki/%E3%81%97%E3%81%A6)

たとえば、上記は通常では下記のように文字化けします。



 出典:Wikipedia「して」よりスクリーンショット(2026年7月19日取得, https://ja.wikipedia.org/wiki/%E3%81%97%E3%81%A6)

これを表示と入力する方法を調べてみたので残します。

筆者の環境は、macOS 26.5.2 (Mac) で試しています。


STEP 1. Chromeブラウザで表示できるようにする


この字は、下記フォントの「HanaMinB.tif」に含まれています。これをインストールします。

花園明朝|いいフォント
https://goodfreefonts.com/7987/

HanaMinAと、HanaMinB を開いてインストールします。



マイフォントに、花園明朝Aと花園明朝Bがインストールされていることを確認します。
*アプリケーションフォルダの「Font Book」アプリからも、上記フォント管理画面を開くことができます。

一度ページを閉じて、開き直せば、下記のように表示されるでしょう。


出典:Wikipedia「して」よりスクリーンショット(2026年7月19日取得, https://ja.wikipedia.org/wiki/%E3%81%97%E3%81%A6)


STEP 2. 入力する(単語登録する)


Macに標準搭載されている「Unicode 16進入力」は 4桁のコード(U+0000 〜 U+FFFF)までしか対応していない仕様のようで、今回は使えませんでした。したがって、単語登録になります。

Chromeで表示できるものの、コピー&ペーストしたら文字化け状態にはなっています。

Wordなどではホントを花園明朝Bにすれば表示されることでしょう。

文字化けのままで構わないので単語登録します。

すると、今後は「して」で変換されるでしょう。


2026年7月19日 @kimipooh


2026年5月6日水曜日

Quora 大阪オフ会に参加して(2026年5月6日)

 2年ぶり、2回目の Quota 大阪オフ会に参加してきました。


 左の写真は、Quora大阪オフ会 Kumiさんとランチ♪で Asuka ✿ Oさんが公開

今回は少し早めに訪れてカフェで歓談、その後オフ会の流れとなりました。
景色の良い場所で、穏やかな雰囲気の中、いろいろなお話が聞けてとても楽しかったです!





どれも、とても美味しい料理でした。

2026年5月6日 @kimipooh

2026年3月15日日曜日

【備忘録】Chrome ウェブストアに登録してみた!

それまで Chrome拡張機能自体はいくつか作成してきましたが、Chrome ウェブストアで公開するのはどうしたらいいのだろう、と思いました。そこで YouTube Live チャットの要約ツールを探していたこともあって(どれも不要な機能が多くてシンプルなものがほしかった)、作ってみようと思い立ったのでした。

その過程について備忘録として残しておきます。

まず最初にこの拡張機能の説明をしておきます。

YouTube Live Chat Summarizer


2026年3月3日に思い立って、生成AIの Gemini の力を借りつつ生成。
2026年3月9日に公開されました!

Gemini AI を活用した YouTube ライブチャット(アーカイブ含む)のリアルタイム要約。

右サイドパネルで AIがライブの盛り上がりを一定間隔で要約し、所定の言語(Gemini 対応の75言語以上/2026年3月9日時点)で出力するものです。最終的に簡易版と詳細版にわけて、5つのパートにわけて出力しています。プロンプトもカスタマイズできるようにしました。あとウィンドウごとに、すべての「タブ」をチェックするので、複数のタブでライブチャットがあるなら、統合されて表示されます。それぞれのタイトルを表示するので、どのチャットかはわかりやすいでしょう。


ちょっと凝りすぎて、設定項目がものすごく多くなったので、下記で説明しておきます。
どのように設定するかは、特に APIキーや必要な予算について詳しく拡張機能のオプションでも説明しています。

設定説明(オプション)


  • UI表示言語:日本語と英語(デフォルトは日本語)
  • Gemini API キー:Google AI Studio 等で取得
     *現状は支払い登録はした上で、1時間 2円ぐらいを想定したらいい感じ(2時間ぐらいのライブ動画のアーカイブを途中で飛ばしながらみるとぐらいなレベル)
     *支払い登録していなければ1日20回程度しか使えないのでお試し程度(30秒に1度程度なら、10分ぐらいしか使えない)
     *キーは他人には絶対に共有しないこと
  • 使用モデルの選択
    • 詳細:https://ai.google.dev/gemini-api/docs/models
      2026年3月時点では、3.1 Pro, 3.1 Flash-Lite, 3 Flash は Preview であり、いつのまにか新しいモデルが出ていたり、廃止されていることもあります。
      デフォルトは、もっとも安価で高速な、2.5 Flash-Lite になっています。それで物足りないなら、3.1 Flash-Lite。それでもだめなら、2.5 Flash → 3 Flash 等をためしていけばよいでしょう。
    • したがって、モデルコードを手動設定できるようにした。
  • モデルコードの手動指定 (優先)
    • https://ai.google.dev/gemini-api/docs/models にあるモデルコードを入力
    • 入力されていると「使用モデルの選択」ではなくこちらが選ばれる。
      3.1 Flash-Lite のモデルコードは、gemini-3.1-flash-lite-preview とか。存在しないなどエラーになったら、無視される。
  • 思考レベル
    • Gemini 3.x からは、思考レベルが使えるようになっています。思考レベルなし、低、中、高といった選択できます。もちろん、より思考レベルが高いと消費するトークンも増えて、結果としてお金が掛かります。
  • 要約モード:簡易版、詳細版
  • 要約の出力言語:
    • 日本語だけ、日本語+英語というモードを用意しています。
    • それ以外は、「Gemini ウェブアプリを利用できる言語と国 / 地域」(Google公式)を全部収録しています。結局のところ、プロンプトで ***言語で出力してといっているだけではありますけどね。
  • 要約の間隔(秒)(デフォルト: 30)
    • デフォルトは30秒に1度、Gemini に聞いてその出力結果を表示します。間隔をあけると必要なコストも減ります。ただし60秒ぐらいにすると、1分後に要約が表示されてしまうため、すでに次の場面に移っている可能性はあります。
  • 要約を開始する最小チャット数(この数に達するまで送信を待機します)
    • デフォルトは 5 です。チャットが流れていないと、Gemini にデータを送るのは無駄になるためです。デフォルトでは要約の間隔 30秒の間に、5以上のチャットが流れたら Gemini に要約を依頼します。そうでなければ、待機します。
  • 1回あたりの最大解析文字数(コスト節約のため、超過分はカットして送信します)
    • 要約の間隔の間に大量のチャットが流れた場合、入力トークンが膨大な量になる可能性があります。そのため、デフォルトは2000トークンにしています。
    • デフォルトでは、要約の間隔 30秒の間に、2000文字に到達したら、Gemini に送信するのはそこまでに抑えます。ですので要約の間隔が長いのに文字数が少ないと、無視されるチャット内容が多くなってしまいます。
    • 値に 0 をいれると無制限になります。
  • カスタムプロンプト ({{LANG}} = 要約の出力言語に自動置換)
    • 英語で書かれていますが、そのほうが要約を出しやすいからと、英語対応のためです。日本語で書いてもいいです。自由に変更もできます。デフォルトの値に戻したければ「プロンプトをデフォルトに戻す」ボタンを使えばよいです。


動いているかどうか知るためには?


拡張機能を開いて、 Service Worker のリンクをクリックしてください。


出てきたウィンドウで「Network」タブを選んでください。

そして Gemini へデータが送信されると、下記の赤枠のように、Status 200(成功)で、Type が fetch、 Name にURLが出てきます。APIキーも表示されますから、スクショなどは他人に見せないでください(下記はAPI部分を塗りつぶしています)。

なお、チャットのちょっとセンシティブな言葉(卑猥そうな言葉など)が入っていると、Gemini API側でエラー(ブロック)になる場合もあります。そうした場合には、Status 200 以外になるのでわかります。


必要なコストは?


1週間ほど試したぐらいですが、下記のデフォルト値であれば、

使用モデル:2.5 Flash-Lite
要約の間隔(秒)(デフォルト: 30): 30
要約を開始する最小チャット数(この数に達するまで送信を待機します): 5
1回あたりの最大解析文字数(コスト節約のため、超過分はカットして送信します): 2000

支払い登録はした上で、1時間 2円ぐらいを想定したらいい感じかなぁといったところです。*2時間ぐらいのライブ動画のアーカイブを途中で飛ばしながらみるとぐらいなレベル
一番多く使ったのは、文字数制限せずに(0にすると制限無し)、数時間テストでつかっていたときは、入力トークンが 2.5 Flash Lite で 431,504トークンで 7円でした。これは相当いろいろやらないといかないトークンですね。Pro とか使うとかなりコストがかかるので注意!

入力トークン(流れるチャットをどの程度取得するかの文字数)

出力トークン(AIが出力する文字数)

によって変わってくるのであくまで推定値です。

下記は4日間ぐらいでテストもかねて使ったトークンと費用です。あくまで一例です。
使用量RPDは、利用回数です。2.5 Flash Lite は、402回つかって12円。30秒に1度なら、1時間に120回ですから、3時間以上つかって12円といったところでしょうか。ただし、このときはいろいろ実験していたので、想定よりも高いコストを支払っています。3.1 Pro なんて1度しか使っていないのに1円かかっている.. って感じですねぇ。


各モデルの料金体系は、https://ai.google.dev/gemini-api/docs/pricing で公開されています。

推定だと次の通り。あくまで推定のため実際にどの程度かは自分で計測してください。

実行間隔: 30秒に1回(1日 2,880回)
1回あたりの推定量: 入力 2,000トークン / 出力 200トークン
為替レート: 1ドル = 158円(想定)

思考レベル (Thinking Level) を有効にした場合の推定コスト(3.x系)

Gemini 3.x系モデルで「思考レベル」を有効にすると、最終的な回答を出す前にAIが「思考プロセス」を生成します。この思考プロセスは「出力トークン」として課金されるため、レベルを上げるほどコストが増加します。

※以下の表は、通常の出力(200トークン)に加えて、思考レベルごとに以下の追加トークンが発生したと仮定した1時間あたりの推定値です。
(Low: +200, Medium: +500, High: +1,000 トークン)

Google AI Studio 経由で、各モデルごとの1日の使用量合計は簡単にわかりますから(ただし1日経過した後でないと前日分は出てこない模様)、それで確認するのがよいでしょう。


細かく知りたいとき


Google Cloud Console を見てください。
下記のように条件をつけて検索すれば、出てきます。
下記の場合には、2.5 flash lite の input token は33834 であることがわかりますね。



どのように条件設定(フィルタ)をするのか


  1. https://cloud.google.com/cloud-console よりログイン
  2. 上部より該当プロジェクトを選択
  3. 左サイドメニュー(上部の三 のマーク)より、課金を選択
  4. 「レポートの詳細を表示」
これで、条件設定がでてきます。

プロジェクト:チェックしたプロジェクトのみ選択
SKU:Gemini に関する設定だけ選ぶ
*2.5 flash lite しか使わないなら、
Generate content output token count gemini 2.5 flash lite short output text non-thinking
と
Generate content input token count gemini 2.5 flash lite short input text
の2つのチェックをいれるだけでいいでしょう。
使用日により期間:1日だけを選択するなど適当に

うまくでてきたら、このURLをブックマークにいれておきましょう。
そうすれば、期間だけ変更したら、どの日にどれだけ使ったのかがわかるでしょう。

以下、どうやって作ったのか、どうやって登録したのかを書いておきます。


どうやって作った!?


YouTubeライブチャットの人間が見ることができるレベルを超えている流れをみて、Chrome拡張機能でなんとかならないかと探したのですが、余計な機能がついていたり使い方がいまいちわからなかったりしたので、「作ってみるか!」と思ったのでした。

いまなら生成AIなどの助けを借りることで、そこまで苦労しなくても作れるのでは?と思ったのもの大きな点です。そこで Google Gemini のみをつかって作ったのでした(思考モードと 3.1 Pro を併用)。Gemini でどの程度できるだろう、正式登録ぐらいの完成度までいけるか!?ということを知りたいという目的もありました(せっかく Google AI Proを契約しているので)。実際には8割ぐらいまでは手軽にできたものの完成度を上げるためには、生成AI側が機能を忘れたり、勝手に削除したり、特に利用マニュアル系を多言語にすると、日本語以外は存在を忘れたりと、ある程度厳格な指示をしているのにもかかわらず、うまくいかないことがあってかなり格闘しました。

さらにコストをできるだけかからないようにという方向性もっていくと、全くデータを拾わなくなったりなど、相当いろいろ調整しました。

残念ながら、上にスクロールしても途中までしか戻らないので、どの程度の文字数やトークンをつかったかわかりません。下記を見ると、2割ぐらいの分量の気がします。


さて下記を参考に登録してみました。

参考:Chrome拡張機能をChromeウェブストアで公開するまでの手順のまとめ

以下、2026年3月9日時点の情報です。


1. GitHUBでのソース公開


サポートURLや、プライバシーポリシーの公開などもいるので、ソースを公開していいなら、そうしておいたほうが楽です。

https://github.com/kimipooh/youtube-live-chat-summarizer


2. デベロッパー登録


Chromeウェブストアデベロッパーダッシュボード
https://chrome.google.com/webstore/devconsole

にアクセスして、同意してから、登録料の支払い(5ドル)を支払いします。
最初に1度だけで維持費などは不要ということです。いいですね! 




うまくいけば、下記の画面になります。


次に、下記を聞かれます。
非取引業者アカウントを選択しました。個人的に使うだけのためです。


次にアカウント設定で、
  • 連絡先メールアドレス(公開される)
    • サブのメールアドレスにしました。
  • 住所(非取引業者アカウントならウェブストアからは非公開)
  • 通知
    • アイテムの審査が完了
    • アイテムのサポートが必要な問題が報告
    • アイテムが公開されたとき
あたりのを設定しておきます。





3. Chrome拡張機能の申請準備


  1. プログラム全体を ZIP圧縮してアップロード
  2. 商品の概要
    1. カテゴリー、言語、スクリーンショット,
    2. ホームページURL,サポートURL(GitHUB)
  3.  プライバシー
    1. 単一用途
    2. 権限が必要な理由(manifest.json で指定した権限ごとに理由が必要)
      1. ここで一度申請が拒否された
    3. リモートコードを使用していますか
  4. データの使用(YouTube Live Chatデータのため)
    1. 個人的コミュニテケーション
    2. ウェブサイトのコンテンツ
  5. プライバシーポリシー
    1. ユーザーデータを収集するため必須


3-1. プログラム全体を ZIP圧縮してアップロード


.DS_Store など不要な隠しフォルダやファイルは削除した上で、拡張機能を ZIP圧縮します。

アイテムから、「新しいアイテム」を選択


圧縮していた Chrome拡張機能をアップロードします。



3-2. 各種説明


説明とカテゴリー、言語を選択します。
言語は英語対応ではありますが、とりあえず日本語にしておきます。
あまり問い合わせが大量に来ても困るため。


なお審査前であれば、「パッケージ」から、「新しいパッケージをアップロード」より差し替えができます。

データ使用

この拡張機能については、チャット情報を得るため、「個人的コミュニティケーション」「ウェブサイトのコンテンツ」の2つにチェックが必要です。


3-3. 権限が必要な理由


manifest.json に下記のように権限を求めているなら、それごとに理由が必要になります。
  "permissions": [
    "sidePanel",
    "storage"
  ],
私の場合には最初、下記4つ(permissions以外にもある)を求めていました。しかし後述しますが、tabsは権限範囲が広すぎるので審査で reject されてしまったのでした。
いずれにせよ、しっかりとした理由が必要です。




3-4. プライバシーポリシー


個人チャットを使うために、プライバシーポリシーの作成と公開が必要です。
どこかのウェブサイトでもよいのですが、今回 GitHUBでソース公開するので、GitHUB Pages を使いました。



どのように設定するかは、いろいろマニュアルもあるので割愛します。
私の場合には独自ドメインをもっていたのでカスタムドメインを割り当てて、GitHUBの docs フォルダを GitHUB pages に割り当てたのでした。

4. 審査のための送信


すべてを埋めると、上部の「審査のための送信」をクリックできるようになります。
十分にテストして問題ない!とおもったら送信してください。




さて私の場合には2、3日後に「拒否」されました!
理由は権限の tabs が不要だろう(そこまでの権限は不要だろう)ということでした。


実際に精査してみると、確かにそこまでの権限は不要でした。このあたりは生成AIの問題ですね。とりあえず動かすために、ある程度大きな権限を付与しておいたということでしょう。今回はコード部分は全部生成AIに任せたということもあるので、そのあたりのチェック漏れ(目視)していたのでした。

早速出し直して、2、3日後に、審査通って公開されたのでした!




2026年3月15日 @kimipooh

2026年2月22日日曜日

AIエージェント「Google Antigravity」 を使って、World Monitor をローカルサーバーで起動してみた

まぁただそれだけの話です。AIエージェントを使って手軽に何かをする備忘録として残しておこうかなぁと思った次第です。

さて本日、下記のニュースが目に飛び込みました。

自分の部屋がCIAみたいになる? 国際情勢ダッシュボード「World Monitor」話題 開発は「週末にClaudeで」 - ITmedia NEWS

実際には、下記のURLにアクセスすると、映画で出てくるような世界を監視しているような気持ちにさせるサービスですね。まずは下記にアクセスしてどのようなものか見てみてください。

・https://worldmonitor.app:地政学、軍事、紛争、インフラ ・https://tech.worldmonitor.app:スタートアップ、AI/機械学習、クラウド、サイバーセキュリティ ・https://finance.worldmonitor.app:グローバル市場、取引、中央銀行、湾岸地域への外国直接投資

ローカル環境でも動作させることができるということで、ソースを探すと GitHUBで公開されていました。

REAMDEが長い...
生成AIで生成しているのかなぁと思いつつ、インストール方法を探すと、「Quick Start」という項目に書いてありました。わかる人には簡単にインストールできるだろうとは思います。
生成AIに聞いても、それなりにヒントを貰えます。

とはいえ、

何も考えずにローカルで起動させたい!


と思ったりしませんか。いやまぁこれぐらいならそう難しくはない、、、とはいえ普段からターミナルや git, npm などをインストールしていない人にとっては、そこが第1関門になって諦めてしまうかもしれません。

ならば AIエージェントならできるだろうということで試してみました。

Google Antigravity のインストール


ここでは割愛します。下記辺りを参考にしてみてください。
動画などをみればインストール自体は難しくありません。

(81) 【Google Antigravity】日本語化セットアップ - YouTube

なお筆者は、M2 MacBookPro 14inch (24GB) で試しました。

Google Antigravity(model: Gemini 3.1 Pro(high)、Conversation mode: Planning)


せっかくなので、Gemini 3.1 Pro (high) という Gemini の一番最新のモデルを使ってみました。Gemini を無料版で使っている場合には、途中でエラーになるかもしれません。そのため最初から Gemini 3 Flash を使っておくとよいかもしれません。
さて、まずは最初にフォルダを設定して、その下に今回のためのフォルダを別途作ります。
たとえば
antigravity を今後 Google Antigravity 用のフォルダにした場合、その下に、worldmonitor というフォルダを作る感じです。


このあたりは本質的なところからずれるので割愛します。

さて、Antigravity の右下あたりにプロンプトがあります。
その下に小さく、Conversation modeと Modelを選択するプロダウメニューがあります。
今回は、Modeを Gemini 3.1 Pro (High) にしました。


さて、まずはやりたい目標を書きましょう。
非常にシンプルに下記を入力して Enterを押すか、◯の右矢印のマークをクリックします。

https://github.com/koala73/worldmonitor をローカル環境で起動できるようにして。



すると AIエージェントが考え出します。
git clone https://github.com/koala73/worldmonitor
をして、
npm install をするけどいいか?と聞いてきます。

Run ボタンを押して、「やってくれ!」と指示します。

その後も、
.envを作成するけどいいか? 
npm run dev を実行するけどいいよね?
って聞いてくるので、全部「やってくれ!」(Runボタンをクリック)
とします。

するとしばらくして、http://localhost:3000 がブラウザで開きます。
おお、もう動きましたね!



プロンプトには、 curl -I http://localhost:3000 を実行して動くことを確認したといってきます。その後に下記のように出てきます。おお、親切!



さて次に、Tech 限定のモニタも動作させてみましょう。

Tech 限定の World Monitor をローカル環境で実行


・https://tech.worldmonitor.app:スタートアップ、AI/機械学習、クラウド、サイバーセキュリティ

AntiGravity のプロンプトに次の1文を入力します。

tech のほうにアクセスしたい!

npm run dev:tech を実行するけどいいよね?

などと確認してくるので、
「やってくれ!」(Runボタンをクリック)
と指示を出します。もう指示しかしてません。



すると、切り替えたので http://localhost:3000 を再度開いてくれといってきます。

ただ再度開き直しても変化がありません。

いや、変わっていない

というと下記のように修正してくれました。これについてはキャッシュがかなり残ってしまっていただけで、実際は修正せずとも直っていたはずでした。



Chromeを使っている場合には、シークレットウィンドウで開き直してみてください。
先程は「世界」でしたが、下図のように「テック」になっているかと思います。



今回は起動するまでなので、これで終了です。

で、使い終わったらどうするの?


そうローカルにサーバーを起動したわけですから、放置するとMacのリソースを無駄に使い続けることになります。また自宅ならともかく、外でネット接続するとこれを起点に不正侵入などされてしまうかもしれません。
というわけで終了方法をきいてみましょう

サービスの停止方法は?

すると、下記のように気を利かせて停止してくれましたね。
そしてターミナルからの停止コマンドも提示してくれました。ターミナルって見たくもないと思う人でもプロンプトで指示すればサービス停止や開始してくれるならいいですよね!


本当にサービス停止しているかは
http://localhost:3000 にアクセスしてみます。

下記のようにアクセスできないとエラーになりました。いいですね!

念の為、プロンプトからサービス再開できるかやってみましょう

再度サービスを開始して

すると下記のように npm run dev:tech を実行していい? と聞いてきます。
「やってくれ!」(Runボタンをクリック)と指示します。


すると、ブラウザで http://localhost:3000 を開いてくれて、ローカル版 World Monitor が起動しました。プロンプトへの返事も下記の通りです。



最後にわすれずに

サービスを停止して

として終了したのでした。

2026年2月22日 @kimipooh