地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

Google Colab-mcp、wslのgemini cliとwindows(host)のブラウザで動作させる。

Colab-mcpは、パワフルなGPUがちょこっと必要な時に便利。しかし、

Gemini Cli(wsl)からwindows(host)のブラウザで開いたGoogle Colabをmcpにて接続しようとしたら、mcpにて接続しようとしたら・・・意外と難航したのでメモ。

 

github.com

 

Colab-mcpのセットアップは終わっているものとします。

 

networkingMode=mirroredでミラーモードにする。

Windows 11(バージョン22H2以降)で導入された「Mirrored Networking(ミラーモード)」を有効にすることで、WindowsとWSL2が同じIPスタックを共有するようになります。

 

設定方法

Windowsホスト側で %USERPROFILE%\.wslconfig (通常は C:\Users\<ユーザー名>\.wslconfig)を作成または編集し、以下を追記します。

[wsl2]
networkingMode=mirrored

 

設定後、PowerShellで wsl --shutdown を実行してWSL2を完全に終了させ再起動します。


wslu でwindows側のブラウザを起動できるようにする


次に、WSL2からWindows側のブラウザを起動できるようにします。ここではwsluパッケージに含まれるwslviewというツールを使用します。wslviewは、Linux側の「URLを開け」という命令を、Windows側のShellExecuteAPIへ転送するプロキシのような役割を果たします。


設定方法

WSL2のターミナルで以下のコマンドを実行し、wsluをインストールします。

sudo apt update && sudo apt install wslu

続いて、~/.bashrc または ~/.zshrc に以下の環境変数を追記し、標準のブラウザ処理をwslviewにオーバーライドします。

export BROWSER=wslview

これにより、Gemini CLIやColab MCPがブラウザを呼び出す際、「Windows側のブラウザで開く」という明示的な指示が出されるようになります。

 

以上の設定で動作するようになりました。
なんか、もやっとするのですが・・・。

Wiki風Markdownを生成し、Obsidianで閲覧・編集するRAGを試作してみた

はじめに

雑多なドキュメントをRAGで利用する場合、ノイズ除去や要約といった前処理が不可欠です。しかし、一度DBに入れてしまうと、その後の更新や誤りの修正が面倒になるという課題があります。 そこで、「LLMにWiki風Markdownを生成させ、それをObsidianで人間がメンテナンスする」というフローを試してみました。

Wiki形式は便利かも

  1. メンテナンス性: LLMによる抽出が間違っていても、Obsidianで直接編集してDBに即座に反映できる。

  2. 自己完結: RAGを動かさずとも、Wikiを眺めるだけで解決することも多い。

  3. ポータビリティ: Markdownなので、他の便利ツールをすぐに使えるかも。

システムの構成

  • データの構築: LLMを用いてドキュメントから「ページ内容」と「用語集(Wikiリンク付き)」を抽出。

  • DB: ハイブリッド検索(ベクトル+キーワード)用に Qdrant を採用。

  • インターフェース: Obsidian を使用。編集内容はGit経由での差分管理やDB更新のトリガーに利用。

「自律追跡型」RAG検索エンジン

検索アルゴリズムもWikiを活かします。

  1. 初期検索: Qdrantからクエリに関連するテキストを抽出。

  2. 再帰的展開: 抽出されたドキュメント内の「Wikiリンク(例: [[用語]])」を検出し、その解説ページもコンテキストに自動で継ぎ足す。

  3. 回答生成: 関連知識が網羅されたリッチなコンテキストをもとに回答。

RAGの検索方法はいろいろな手があると思います。目的に応じて組み替えればよいので気楽です。また、wiki自体はmarkdownなので、様々なツールに放り込めるというのも利点です。

 

終わりに



とりあえず動作させてみて遊んでいます。gitを使ったwiki更新の差分管理も入れ込んだりしています。まだ雑なのでポチポチ進めてみようと思っています。もう、こんなアプリありそうですけど。

 

図:Gemini(nano banana2)で作成


論文から生成させたページ

"SELF-RAG: LEARNING TO RETRIEVE, GENERATE, AND CRITIQUE THROUGH SELF-REFLECTION" Akari Asaiら


用語ページ

 

グラフビュー例

 

RAGの回答例

uv run python main.py --query "CRAGにおけるCorrectとIncorrectの違い、およびWeb Searchの役割は何ですか?

 

CRAG における「Correct」-「Incorrect」の違い

Correct(正確): 取得文書がクエリに適合し生成タスクに有用な状態。軽量評価器(T5-large)が閾値 τ_up 以上と判定した際に発動し、そのまま生成部に渡される。
Incorrect(不正確): 取得文書の適合度が低く、ノイズや誤情報を含む状態。評価スコアが閾値 τ_low 以下の時に判定され、静的コーパスを放棄して外部 Web 検索が実行される。
Web Search の役割

代替知識の取得: 判定が「Incorrect」または「Ambiguous」となった際、Google Search API を経由して動的に外部から関連文書を補正取得する。
クエリの書き換え: 質問から ChatGPT 等を介して最適化されたキーワードクエリを自動生成し、ノイズを抑えた検索を実行する。
知識の精錬: 取得したWebページを「decompose-then-recompose」で文単位に分解、評価器で再フィルタリングして最も純度の高い知識として統合する。

(略)

 

 

github.com

Ubuntu 26.04でSSHからDockerといった最初の一歩を設定してみた。

計算に使っていた古いPCのSSDが「Offline_Uncorrectable」を表示されるようになり、SSDの寿命かも・・・という状況に陥った。色々と値段が高騰している時期にとボヤキながら、出来る限り安いSSDを買ってきてOSからセットアップしたのでメモ。他にもファイヤーウォール設定あたりもありますが、まずは最低限の開発環境を構築しました。

 

対象OS

Ubuntu 26.04 LTS

 

SSHをインストール

sudo apt update
sudo apt -y install openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
sudo systemctl sutatus ssh

 

Windows側(クライアント側)

ssh-keygen -t ed25519 -C "your_email@example.com"

pubキーを作ります。秘密キーは所定の場所に保存します。

 

Ubuntu側(サーバー)

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

pubキーを追記します。

 

パスワード無効化も必要ならば。

 

Docker & Docker Compose のインストール

公式リポジトリから入れます。

# 古いバージョンを削除(念のため)
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

# セットアップ
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# リポジトリ追加
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# sudoなしで実行できるように設定(要再ログイン)
sudo usermod -aG docker $USER

uv (Python Package Manager) のインストール

# uvのインストール

curl -LsSf https://astral.sh/uv/install.sh | sh

特定のバージョン(例: 3.12)をインストールしテスト

# テスト用の適当なディレクトリで
uv python install 3.12
uv venv # 仮想環境の作成

自動化ワンライナー(まとめ)

例えば、一気に実行したい場合は、以下の内容を setup.sh として保存して実行。

#!/bin/bash
set -e

echo "Updating system..."
sudo apt update && sudo apt upgrade -y

echo "Installing Docker..."
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER

echo "Installing uv..."
curl -LsSf https://astral.sh/uv/install.sh | sh

echo "Setup complete. Please logout and login again to reflect Docker group changes."

 

NVIDIA Container Toolkit のインストール

NVIDIAドライバの確認

ツールキットを入れる前に、ホスト側にドライバが入っている必要があります。

nvidia-smi
このコマンドでGPUの情報が表示されない場合は、先にドライバをインストールしてください。
sudo ubuntu-drivers install
インストール後は再起動してください
sudo reboot

NVIDIA Container Toolkit のインストール

公式のリポジトリを追加してインストールします。

# リポジトリのGPGキーとリストを追加
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /etc/apt/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/etc/apt/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

# インストール
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

Dockerのランタイム設定

DockerがNVIDIA GPUを認識できるように設定を書き換えます。
# Dockerのランタイムとしてnvidiaを構成
sudo nvidia-ctk runtime configure --runtime=docker
# 設定を反映させるためにDockerを再起動
sudo systemctl restart docker

Dockerの動作確認

最後に、コンテナ内からGPUが見えるかテストします。
docker run --rm --runtime=nvidia --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
これでホスト側と同じ nvidia-smi の結果を確認して終了。

NVIDIA Dockerの「デフォルト化」

毎回 --runtime=nvidia を打つのは手間なので、daemon.json を書き換えて、常にNVIDIAを使うようにしてみる。

sudo nvidia-ctk runtime configure --runtime=docker --set-as-default
sudo systemctl restart docker
 

SSHのパスフレーズを一度だけ入力するようにする。

Windows側ssh-addで

ssh-add C:\{Users\myusername}\.ssh\id_ed25519"
Windowsで自動化
Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
Get-Service ssh-agent
 
Ubuntu
sudo apt install keychain -y
起動時に読み込む
if command -v keychain >/dev/null 2>&1; then
  eval $(keychain --eval --quiet ~/.ssh/id_ed25519)
fi
 

Node.jsをnvmで

 
 
 
参考サイト:

 

www.linuxmaster.jp

 

docs.docker.com

github.com

 

blog.lycolia.info

zenn.dev

qiita.com

github.com

なんとなく作ってみたコードで、神(方眼紙)エクセルの解析を比較

試してきた神(方眼紙)エクセル解析を比較してみる。

1. 動機

帳票とか複雑なテキストの表は、企業の中ではよく見かけるのではないでしょうか。そこで、「方眼紙エクセル」からの構造化データ抽出について、2つの手法を作ってみていました。それらをそれなりに統合的にパースしたら楽できるなと基本的なお勉強をしてきました。その途中で作成した docling-markdown-generator (IBMのdoclingを使ったmarkdownによる再現) と kami_excel_extractor (VLM/LLMを使った情報抽出) を比較しました。

これまで、なんとなく、ポチポチとdebugしていましたが、それぞれの特徴があります。これらを使って簡単に評価してまとめてみます。

github.com

github.com

2. 評価手法

  • 対象: 7カテゴリのダミー方眼紙エクセルファイル
  • 手法 A: docling (docling-markdown-generator)
  • 手法 B: kami (kami_excel_extractor)
    • モデル B-1: gemini-3.1-flash-lite-preview (Googleさんのgemini API)
    • モデル B-2: ollama/gemma4:latest (ローカルLLM/Ollamaなので量子化モデル)

ダミーモデル達を適当に生成して使いました。

# ファイル名 カテゴリ 難易度 特徴
1 01_simple_table.xlsx 単純表形式 ★☆☆ 通常のヘッダー+データ行(セル結合なし)
2 02_houganshi_form.xlsx 方眼紙レイアウト ★★☆ 細かいセル結合で構成された「申請書」
3 03_complex_report.xlsx 複合帳票 ★★★ ヘッダー情報 + 経費明細表 + 承認欄が混在する複雑な構成
4 04_chart_data.xlsx グラフ付き ★★★ 月別売上データ + 埋め込み棒グラフ
5 05_multi_sheet.xlsx マルチシート ★★☆ 複数シート(社員一覧・部署別集計・注記)のデータ参照
6 06_extreme_merge.xlsx 極端な結合 ★★★ 100列×50行の組織図風で不規則かつ大量のセル結合
7 07_styled_invoice.xlsx スタイル重視 ★★☆ 罫線の太さ・背景色・フォントで視覚的に区分けされた請求書

3. 比較

3.1 抽出結果の具体例(03_complex_report の場合)

「複合帳票 (03_complex_report.xlsx)」の実際の抽出結果の一部を例として挙げます。

手法 A (Docling) の出力

Doclingは罫線を基準に表を認識するため、独立した複数のHTMLテーブルとして断片的に出力させています。データの関連性や帳票の階層構造は、こんなものでしょう。

<table><tbody><tr><th colspan="5">株式会社 経費報告書</th></tr></tbody></table>

<table><tbody><tr><th>項番</th><th>日付</th><th>摘要</th><th>金額</th><th>備考</th></tr></tbody></table>

<table><tbody><tr><th>合計</th></tr></tbody></table>

<table><tbody><tr><th colspan="2">課長</th><th colspan="2">部長</th><th colspan="2">承認</th></tr></tbody></table>

手法 B-1 (Kami + Gemini 3.1 Flash-Lite Preview) の出力

kamiは視覚的特徴(スタイル)とVLMによる意味理解を組み合わせています。ヘッダー、明細行、合計式、承認欄などの「帳票の論理構造」を正確にJSONとして抽出できました。また、不要な空白行(空のセルの連続)を自動的にフィルタリングしているので見やすい結果ですね。計算式は蛇足かもしれませんが、「合計」という表現を補足できるように抽出させています。

{
  "title": "株式会社経費報告書",
  "table_data": {
    "headers": ["項番", "日付", "摘要", "金額", "備考"],
    "rows": [], // 不要な空白行は文脈を読んで自動で省略される
    "summary": {
      "label": "合計",
      "value": 0,
      "formula": "=SUM(D8:D25)"
    }
  },
  "approval_fields": {
    "section_manager": "課長",
    "department_manager": "部長",
    "approval": "承認"
  }
}

手法 B-2 (Kami + Gemma4) の出力

Gemma4(ローカル推論)でも結構頑張ります。表内の空白セル(未入力のダミー行)を null としてすべて律儀に出力してしまうなど、Geminiと比べると推論結果がやや冗長ですが、プロンプトの工夫次第な印象。ゲームPC程度のGPUで動かせるGemma4でここまでやれれば嬉しい。

{
  "title": "株式会社経費報告書",
  "table_data": {
    "headers": ["項番", "日付", "摘要", "金額", "備考"],
    "rows": [
      { "A8": null, "B8": null, "C8": null, "D8": null, "E8": null },
      { "A9": null, "B9": null, "C9": null, "D9": null, "E9": null }
      // ... 以降の空白行も同様に null として出力される
    ],
    "summary": {
      "label": "合計",
      "value": 0,
      "formula": "=SUM(D8:D25)"
    }
  },
  "approval_fields": {
    "section_manager": "課長",
    "department_manager": "部長",
    "approval": "承認"
  }
}

3.2 手法別再現性・精度の目視検証結果

カテゴリ 手法 A (Docling) 手法 B (Kami/Gemini) 手法 B (Kami/Gemma4)
構造再現性 非常に高い (テーブル定義のみ) 極めて高い (帳票の階層を理解) 高い (一部の座標推論に揺らぎ)
意味的抽出 不可 (テキストのみ抽出) 良好 (項目と値を対で抽出) 良好 (冗長な説明が含まれる場合あり)
レイアウト耐性 ルールベースで安定 複雑な結合セルに強い 複雑な結合に強いが推論ミス稀有

3.3 結果として

1. ルールベースの限界と堅牢性 (Docling)

docling は Markdown 変換の安定性に特化して、複雑なセル結合があっても「テキスト」として漏らさず取得するという観点では優秀です。表形式をHTMLで表現させたので、Markdown式の表の表現限界を回避させるだけで使い方が広がります。帳票のフッターや注釈といった、レイアウト上の「意味的な区分」はなくなるので、2次利用の時には注意ですね。

2. VLM モデル比較 (Gemini vs Gemma4)

  • Gemini 3.1 Flash-Lite Preview: さすがの文脈理解力。そこそこ複雑な結合セル群 (06_extreme_merge) でも論理単位を的確にグループ化し、JSON 構造に落とし込んでいました。Flash-Liteでこれなら良し。
  • Gemma 4 (Local): 空間推論において Gemini に肉薄し、実際の出力でも 03_complex_report のような複雑な帳票の計算式や承認欄を構造化できています。十分使えるレベルでは?

4. 運用・技術的推奨指針

運用フェーズ 推奨手法 理由
Markdownに変換したい Docling 環境構築が容易で、帳票の「内容」を素早くテキスト化できるため。
抽出重視 Kami + Gemini 帳票の意味を解釈し、データ抽出ミスを最小限に抑える必要があるため。
コスト重視 Kami + Gemma4 外部 API に依存せず、高度な論理構造抽出(計算式の解釈や項目と値のペアリングなど)が可能であるため。

5. 結びに

「方眼紙エクセル」の解析は、確かに見た目の解析に目が向きます。Docling がその「形式」に着目したのに対し、Kami はその構造を考えています。構造化データを求めるのであれば Kami に優位がありそうです。要件に合わせて両手法を適切に使い分ける(あるいは組み合わせる)運用になると思います。色々な表現ができちゃうのがエクセルです。逆に言えばmarkdownの表現に限界がある以上、元データをちゃんと整理して保存しておくことが重要であると、改めて感じました。

エクセルが中途半端なWYSIWYG風なのは結構辛いですね・・・。

ChromeOS Flexを古いノートPCに入れてみる。

ChromeOSって、いつまでサポートされるのかな、と不安に思いつつも、最近、USBキットを発売らしいので、まだしばらくは安心。ということでChromeOSを古いPCに入れました。

 

k-tai.watch.impress.co.jp

 

イメージのダウンロードが若干分かり難かった。こちらのヘルプから進みます。

support.google.com

 

このサイトから「イメージをダウンロードする。」に進みインストーラーイメージのリンクからダウンロードします。

 

Windows環境でインストール用のUSBドライブ作成にはRufusを使いました。

rufus.ie


あとは、USBドライブをインストール対象のPCに入れて再起動。

 

方眼紙Excelから情報を抽出してみる。

方眼紙Excel(紙/神Excel)」からのデータ抽出は、その使い方の多様さゆえに、単純な表形式変換では困難を極めます。しかし、最近ではDoclingなどにより、生成AIと親和性の高い抽出が現実的になってきました。

セルの結合を多用したシートは特に難易度が高いですが、VLM(視覚言語モデル)を活用し、画面キャプチャをそのまま入力するだけでも、かなりの精度で情報を抽出できます。ただし、VLMには画像サイズの制限があり、巨大なシートでは文字や罫線が潰れて精度が低下するほか、再利用し難いという課題もあります。

そこで、方眼紙Excelからの情報抽出にチャレンジしました。Excelの実体であるOffice Open XMLを直接解析し、構造を再構築する手法を採りました。具体的には、罫線情報を保持したままHTML形式に変換してLLMに渡すことで、正確な構造化を実現しています。さらに、LibreOfficeによる画像レンダリングを併用してLLMの理解を補完させます。ただし、画像レンダリングは、方眼紙エクセルに関しては大きな効果はありませんでした。だいたい、HTMLで表現できているためだと考えています。

 

上記の考えで作成したパイプライン:

github.com

 

例えば、以下の様なシートを変換してみます。

 

Markdown(key Value形式)

# 報告書

- **title**: 業務完了報告書
## reporter
- **name**: 山田 太郎
- **date**: 2026-03-02
## content
- **summary**: 本日、プロジェクトAの主要なマイルストーンを達成しました。
### details
- XMLマップ抽出ロジックの構築
- Gemini 2.0 Flashによる構造化テスト
## work_details
- id: 1, task_name: 環境構築, duration_hours: 2
- id: 2, task_name: コード実装, duration_hours: 4.5
- id: 3, task_name: テスト, duration_hours: 1.5

 

YAML形式

title: 業務完了報告書
reporter:
  name: 山田 太郎
date: 2026-03-02
content:
  summary: "本日、プロジェクトAの主要なマイルストーンを達成しました。"
  details:
    - "XMLマップ抽出ロジックの構築"
    - "Gemini 2.0 Flashによる構造化テスト"
work_details:
  - id: 1
    task_name: 環境構築
    duration_hours: 2
  - id: 2
    task_name: コード実装
    duration_hours: 4.5
  - id: 3
    task_name: テスト
    duration_hours: 1.5

 

gemini-3.1-flash-lite-previewを使って、巨大な方眼紙エクセルでも試してみましたが、無事にそれらしい出力が得られました。ちょっとした工夫ですが、有効でした。

 

まだ、細部が雑ですが、XML解析で対応できる範囲も分かったので収穫でした。

 

 

 

Doclingを工夫してMarkdown出力を好みにしてみる。

Doclingは各種ドキュメントからの生成AI向け情報抽出が可能です。IBMのチームが開発しています。現在も開発は活発です。PDF, DOCX, PPTX, XLSXなど多様なフォーマットに対応している優れものです。このDoclingでお好みのMarkdownの形式にできるようにしてみました。

 

github.com

 

数表ならいざ知らず、表組してある日本語文書では複雑な構造となっているケースが多い。縦横にセル結合してあるような奴です。それをMarkdownに変換しようとすると、GitHubのMarkdown表形式では表現力が不足します。それを補うためHTML形式で出力するように固定にします。図もついでにリンク埋め込みにします。

 

github.com

 

経産省が公開している表組の文書をMarkdownにしてテストをし利用できそうなレベルでmarkdown化できました。人間が見ても分かり難いお役所的高度構造化表組文書を生成AIで利用しやすく、かつ、投入データ(markdown)を人間が見ても分かるのは便利でした。といっても、もとの表組文書そのものが、理解しにくいという根本的に改善してほしい。

 

DoclingではHTML形式の表埋め込みの実装も進んでいるので、そのうち、オプションだけでよくなるのでしょう。また、画像データを用いてOCRをする場合は、日本語性能がよいOCRで予め文字埋め込みPDFとしておいた方が良いかも。force_backend_text=Trueとしておけば、埋め込みを優先してくれます。

 

チャートの読み取りなどなど、これからもDoclingには実装が予定されているようです。汎用的なVLLMをOCR代わりに使うのはお手軽ですが、モデル固有の制限もあります。結構なページ数のものを一気にできないこともあります。

 

他にもアイデアが出てきたので、継続的に神エクセル、文書エクセルにチャレンジしてみます。

 

 

Marp Editable UIをFolkして機能を追加してみる。

簡単なプレゼンの場合、手元のMarkdownのメモをそのまま投影すればいいことも多いですよね。そこで、Sunwood-ai-labs Makiさんが作成されたMarp Editable UI にLLMによる自動生成支援機能を追加し、数式、Mermaid図も対応させることにチャレンジしました。ざっくりとしたプレゼンはできますし、LibreOfficeを利用できるようにすれば、なんとかパワーポイントにも出力できます。

 

優秀なサービスが他にあると思いますが、実用を兼ねてpython以外のコーティングにもチャレンジしてみました。

 

Antigravityを主として使ってコーティングを進めました。ウインドウの仕切りを可動できるようにしつつ、他の機能を盛り込もうとすると、あっちの機能を足すと、ウインドウの可動が効かなくなったり、コツをつかむまで苦労しました。ダラダラとやりとりすると、コンテキストを圧縮するようなときに重要な内容を忘れてしまいます。今現在は、AntigravityよりもGemini CLIの方が安定感がある気がします。

 

 

github.com

PyxelのSKILLSを作ってみる(2026/3/8更新)。

PyxelはPython 向けのレトロゲームエンジンです。道具もそろっていてPythonを利用したゲームが作成できます。ブラウザ上でも動作する優れものです。このPyxelにAgent Skillsがあったら、もっと気軽にゲームが出来るんじゃないでしょうか。Gemini CLIを使い、Agent Skillのお勉強もかねて作成しました。加えて、Pyxel 2.7.8で3D描画が強化されたので、スキルに簡単に落とし込んでみました。2.7.9で若干の変更があったため、そちらに対応するように構築しなおしました。


Pyxelのレポジトリ:

github.com

 

テストとして、ゲームを作ってみました。音楽やタイトル画面もGemini君に指示して作りました。SKILLってどうレポジトリに上げると良いのか分からなかったので、.agent配下をごっそりpushしました。

 

スキルを更新しながら作ると、今回Web(WASM)用の出力時にimportのエラーで困ったのですが、それも、スキルに書いておくと変換時に自動的に注意してくれるのは助かります。

 

Skillsと作ったゲームのレポジトリ:

github.com

 

サンプルゲーム画面:

 

 

VS Codeの機能拡張も出ていて便利。ただ・・・エラーが実行画面に出るのが難点です。ターミナルに出ればGemini君にエラーメッセージをそのまま投入できるのですが・・・。

 

marketplace.visualstudio.com

NDLOCR-LiteのREST APIを作ってみる。(2026/3/14更新)

NDLOCR-Liteは軽量な日本語OCRです。colabで試してみたらいい感じでした。REST APIとして実装してみました。APIができたので、いろんなプログラムから呼べるので便利です。

 

bwgift.hatenadiary.jp

 

`/v1/ocr` で同期処理に加え、非同期処理もサポート。負荷テストも簡単に実施しました。落ちたりしませんでした。

 

APIを簡単にテストできるようにstreamlitによるUIを実装しました。画像をupload出来るほか、オリジナルのレポジトリのテスト用画像データを利用することも出来るようにしました。

 

 

色々と使い手がありそうです。

 

github.com

 

公開していただきありがとうございます。