DockerとGoで実現!遠隔操作ブラウザ「ネコ」があなたの開発を変える


DockerとGoで実現!遠隔操作ブラウザ「ネコ」があなたの開発を変える

m1k1o/neko

2025-07-27

やあ、諸君! プロのソフトウェアエンジニアである君なら、きっと「もっと自由に、もっと安全に、ウェブの向こう側を覗き見たい」なんて考えたことがあるはずだ。まるでルパン三世がどんな厳重なセキュリティも掻い潜るようにね。今日紹介するのは、そんな君の願いを叶えるかもしれない、とびきりのツール「m1k1o/neko」、通称「ネコ」だ。

「ネコ」は、ルパン一味がどこかの隠れ家に秘密基地を構えるように、君自身のサーバーに仮想ブラウザを構築できる代物なんだ。しかも、ただのブラウザじゃない。Dockerでサッと起動できて、中ではGo言語がキビキビと動き、遠く離れた場所からでもWebRTCを使ってリアルタイムで操作できる。これって、まるで不二子ちゃんがルパンの代わりに現場の状況を遠隔操作で確認するようなもんだろ?

「ネコ」がソフトウェアエンジニアの君にとって、どんなお宝になるのか、いくつか例を挙げよう。

安全なサンドボックス環境でのブラウジング
怪しげなサイトを調査するとき、あるいは未知のウェブサービスを試すとき、君のPCを危険に晒したくないだろう? 「ネコ」は隔離された環境でブラウザを動かすから、万が一マルウェアに感染しても君のシステムには影響がない。まるで、ルパンが偽のターゲットを使って敵の罠をあぶり出すかのようだ。

Webスクレイピングの高度化
特定のウェブサイトから情報を収集したいけど、IPアドレス制限やボット対策に悩まされることがあるだろう。「ネコ」を使えば、プロキシと組み合わせたり、異なるIPアドレスからアクセスしたりといった工夫がしやすくなる。まさに、銭形のとっちゃんを欺くルパンの変装術に近い。

自動化されたE2Eテスト
ウェブアプリケーションのテストって、手動でやるのは骨が折れるし、毎回同じ結果になるとは限らない。「ネコ」はプログラムから操作できるから、GUI操作を含むE2Eテストを自動化できる。何度も同じ潜入を繰り返すのではなく、事前に計画された自動的な潜入で確実に目的を達成するイメージだ。

プライバシー保護の強化
自分のIPアドレスやブラウザのフィンガープリントを晒したくない場面もあるだろう。「ネコ」を使えば、君の本当の素性を隠し、まるで別人がアクセスしているかのように見せかけることができる。これは、ルパンがその姿をくらますのに長けているのと一緒だ。

遠隔でのデモンストレーション
開発中のウェブサービスを遠方のクライアントに見せたいとき、VPNや複雑な設定は避けたいもの。「ネコ」を使えば、ブラウザの画面を共有するだけで、どこからでもアクセス可能なデモ環境を提供できる。次元と五ェ門が連携して、離れた場所からでもルパンをサポートするかのようだね。

導入は驚くほど簡単だ。まるで、ルパンが最新の金庫を破るように、数行のコマンドで完了する。

まずは、Dockerが君のサーバーにインストールされていることを確認してくれ。Dockerがなければ、話にならない。まだなら、公式ドキュメントを参考にしてインストールしておこう。

君のターミナルを開き、以下の呪文を唱えるだけだ。

docker run -d \
  --name neko \
  --shm-size=2gb \
  -p 8080:8080 \
  -e NEKO_SCREEN="1920x1080@30" \
  -e NEKO_PASSWORD="your_super_secret_password" \
  m1k1o/neko:latest

一つずつ解説しよう。

docker run -d
「ネコ」をバックグラウンドで起動する、という意味だ。これで君は他の作業に集中できる。

--name neko
コンテナに「neko」という名前をつける。ルパン一味がアジトに名前をつけるようなもんだ。

--shm-size=2gb
ブラウザがスムーズに動作するために、共有メモリを2GB確保する。

-p 8080:8080
君のサーバーの8080番ポートを、「ネコ」の8080番ポートに接続する。これが、外界からアジトにアクセスするための入り口だ。

-e NEKO_SCREEN="1920x1080@30"
仮想ブラウザの解像度を1920x1080ピクセル、フレームレートを30fpsに設定する。ここはお好みに合わせて調整してくれ。

-e NEKO_PASSWORD="your_super_secret_password"
「ネコ」にアクセスするためのパスワードだ。絶対に君だけの秘密のパスワードを設定してくれ! ルパンが隠し金庫のパスワードを教えないのと同じだよ。

m1k1o/neko:latest
「ネコ」の最新版イメージを使う、という指定だ。

このコマンドを実行したら、ブラウザで http://君のサーバーのIPアドレス:8080 にアクセスしてみな。先ほど設定したパスワードを入力すれば、もう君は「ネコ」の世界に足を踏み入れている!

さて、ただブラウザを動かすだけなら、普通のブラウザと変わらない。ここからが「ネコ」の真骨頂だ。君のプログラムから「ネコ」を操る方法をいくつか紹介しよう。

「ネコ」はWebRTCを使ってブラウザの画面をストリーミングし、操作するためのWebSocket APIを提供している。これにより、様々な言語から操作が可能になる。ここではGo言語を使った簡単な例を示すが、原理は他の言語でも応用できるはずだ。

これは、君のプログラムが「ネコ」に接続し、特定のウェブページを開いてスクリーンショットを撮る例だ。

package main

import (
	"context"
	"fmt"
	"log"
	"time"

	"github.com/go-rod/rod" // RodはHeadless Chromeを操作するためのGoライブラリ
)

func main() {
	// 「ネコ」のURLに接続 (環境に合わせて適宜変更してください)
	browser := rod.New().ControlURL("ws://localhost:8080/webrtc").MustConnect()
	defer browser.MustClose() // 終了時にブラウザを閉じる

	// 新しいページを開く
	page := browser.MustPage("https://www.google.com").MustWaitLoad()

	// 5秒待機 (ページが完全にロードされるのを待つため)
	time.Sleep(5 * time.Second)

	// スクリーンショットを撮影
	if err := page.MustScreenshot("google_screenshot.png"); err != nil {
		log.Fatalf("スクリーンショットの撮影に失敗しました: %v", err)
	}

	fmt.Println("スクリーンショットを撮影しました: google_screenshot.png")
}

このコードを実行するには、go-rod/rod ライブラリが必要だ。以下のコマンドでインストールできる。

go get github.com/go-rod/rod

解説

rod.New().ControlURL("ws://localhost:8080/webrtc").MustConnect()
ここがポイントだ。Rodライブラリを使って、「ネコ」のWebRTCエンドポイントにWebSocket接続している。これにより、Rodが通常のHeadless Chromeを操作するのと同じように、「ネコ」内のブラウザを操作できるんだ。

browser.MustPage("https://www.google.com").MustWaitLoad()
Googleのページを開き、完全にロードされるのを待っている。

page.MustScreenshot("google_screenshot.png")
開いたページのスクリーンショットをgoogle_screenshot.pngというファイル名で保存している。

これで君は、プログラムから「ネコ」の仮想ブラウザを操り、ウェブの情報を捕らえることができるようになったわけだ。

「ネコ」は、君のソフトウェア開発に新たな自由と可能性をもたらす、まさに切り札のようなツールだ。安全な環境での実験、自動化されたテスト、プライバシーを保護した情報収集など、その使い方は君の想像力次第で無限に広がる。


m1k1o/neko




Dockerだけじゃない!Moby Projectで自作コンテナ環境を構築する

Moby Project ってのはな、一言で言うと「コンテナをベースにしたシステムを作るための、オープンソースのツールキット」だ。例えるなら、俺たちが事件現場で使う道具一式、例えば手錠とか懐中電灯とか、そういうのを全部まとめて提供してくれるようなもんだな。


【ソフトウェアエンジニア必見】Dokployで始める自由なデプロイメントの冒険

「Dokploy」は、まさにディズニーランドの隠れたアトラクションのような存在です。Vercel、Netlify、Herokuといった有名どころのサービスをご存知の方も多いと思いますが、それらはまるでビッグサンダーマウンテンやスプラッシュマウンテンのように、手軽に楽しめて、素晴らしい体験を提供してくれます。


仮想通貨ボットの最前線!Hummingbotで始めるアルゴリズム取引入門

まずは、Hummingbotがどんなもんなのか、ざっくり説明しとくわな。Hummingbotいうのはな、仮想通貨の自動売買ボットを作るためのオープンソースソフトウェアのことどす。しかも、普通の自動売買と違ごうて、高頻度取引(High-Frequency Trading、HFT)にも対応できるように設計されとるんや。Pythonで書かれとって、Dockerも使えるから、環境構築も比較的楽にできるのがええところやね。


社内ドキュメントが宝の山に。Yuxi-Knowで実現する構造化ナレッジ共有の未来

これ、エンジニアから見ると「かゆいところに手が届く」かなり贅沢な構成なんです。美容院で例えるなら、カット(LLM)だけでなく、極上のトリートメント(RAG)と頭皮ケア(グラフDB)がセットになったフルコースメニューのようなものですね。それでは、さっそく解説していきます!


エンタープライズRAG基盤 WeKnora:Go言語で構築する、高速・高信頼なLLM知識検索フレームワークの解剖

今回は、中国の巨大テック企業Tencentが公開している、文書理解・検索・質問応答のためのLLM(大規模言語モデル)活用フレームワーク「Tencent/WeKnora」について見ていきましょう。「え、また新しいLLMフレームワーク?もうお腹いっぱいだよ


現役エンジニア魔法少女が解説する「バイトボット」入門

今日は、最強の魔法ツール「バイトボット」について、ソフトウェアエンジニアの視点から、その秘密と使い方を特別に教えちゃうよ!バイトボットは、あなたのパソコンを自動で動かしてくれる、賢い魔法の使い魔みたいなもの。物語の始まりは、いつも忙しいソフトウェアエンジニアの魔法少女。バグ退治や新しい魔法の開発で毎日てんてこまい。


もうリモートを意識しない。XPipeで実現するシームレスなサーバー管理術

お前、散らばったサーバーの鍵(SSHキー)や、どこにあるかもわからねぇDockerコンテナ、それにKubernetesのクラスターの管理で、頭がパンクしそうになってるんだろ?俺たち「裏のエンジニア」にとっちゃ、証拠を残さず、素早く、スマートにターゲット(サーバー)へ潜り込むのが鉄則だ。そこで使えるのが、この 「XPipe」 って代物さ。


「整理・計画・効率化」の三拍子、Tandoor Recipesを使いこなそう

今回は、レシピ管理ツール「Tandoor Recipes」について、ソフトウェアエンジニアの視点からその魅力や活用方法を解説していきます。一言で言うと、レシピの管理、献立の計画、買い物リストの作成などを一括でできる多機能なウェブアプリケーションです。


開発効率爆上げ!Lissy93/Dashyで自分だけのダッシュボードを作ろう

やあ!みんな元気?ミッキーマウスだよ!今日はね、みんながもっとハッピーに、そしてもっとスマートにお仕事ができるようになる、とっておきのツールを紹介するよ!その名も「Lissy93/Dashy」!わんだふる!Dashyはね、自分でホストできるパーソナルダッシュボードなんだ!まるで自分だけの秘密基地みたいに、必要な情報やツールをぎゅっと詰め込めるんだよ。ソフトウェアエンジニアのみんなにとって、これがどれだけ便利か、ミッキーがよーく知ってるからね!


35の雑音をAIが「大吟醸」に精製!ソフトウェア開発者のための情報過多対策ツール最前線

さあ、今宵は情報過多を乗りこなすための特選ツールの飲み比べです!これが今回ご紹介する「TrendRadar」です!口に含むと、情報が雑味なく整理されて、まるでクリアな大吟醸のようにスッと入ってきます。味わい(機能) 35以上のプラットフォーム(ニュース、SNS、専門メディア)から熱点を集約し、AIが「これは重要だ!」という情報だけを厳選してくれます。さらに、AI対話分析でトレンド追跡、感情分析、相似検索など13種のディープな分析が可能。