
ケーススタディ Personal project
チャットから様子を確かめ、電源も落とせるコンピューター。
- クライアント
- Personal project
- 種類
- デスクトップアプリとリモートエージェント
- 役割
- デザインとフルスタック開発
- 年
- 2026
01概要
コンピューターを Telegram のチャットから扱えるようにする、デスクトップアプリとローカルエージェント。Electron のパネルがセットアップをすべて行い、Node.js のエージェントが許可された 1 つのチャットからの 37 のコマンドに応答します。
02課題
手元にないマシンの様子を確かめるには、たいていリモートデスクトップのソフト、開いたポート、VPN のいずれかが必要です。そして、コンピューター上でコマンドを実行できるボットの安全性は、それが受け入れる最も危険なメッセージで決まります。
02アプローチ
持ち主がいつも持ち歩いているチャットアプリを使い、主導権はコンピューター側に残すこと。エージェントは外向きに Telegram をポーリングするので、ネットワーク上で待ち受けるものはありません。設定された 1 つのチャットにだけ応答して他はすべて無視し、マシンを変更する操作は必ず事前に確認を求めます。
03開発内容
実際につくったもの
- 01
Electron のセットアップパネル。ボットのトークンとチャット ID を貼り付けると、Telegram で検証し(getMe とテストメッセージ)、エージェントをインストールして起動時に立ち上がるよう設定し、各ステップの完了を順に表示します。
- 02
ランタイム依存ゼロの Node.js エージェント。offset を保存するロングポーリングで古いメッセージを再処理せず、システム、ネットワーク、プロセス、ファイル、メディア、電源にわたる 37 のコマンドをプラットフォームごとに実装。安全な実装がない場合は「まだ利用できません」とはっきり返します。
- 03
あらゆる機密操作にガードレール。シャットダウン、再起動、サスペンド、画面ロック、クリーンアップ、アップグレードには、4 つのボタンから 30 秒以内に 6 桁のコードを選ぶ確認が必要です。/cmd では汎用の sudo をブロックし、破壊的なパターンを拒否。特権操作は範囲を限定した sudoers で許可された固定のラッパースクリプト経由でのみ実行し、NOPASSWD: ALL は決して使いません。
- 04
Linux では systemd サービス、Windows ではタスクスケジューラ、macOS では LaunchAgent を作るインストーラー。設定ファイルはパーミッション 600 で保存し、トークンは画面上でマスクされ、エラーメッセージからも取り除かれます。
技術
- Electron
- Node.js
- JavaScript
- Telegram Bot API
- systemd
- Bash
- PowerShell
04体験





05現在の状況
動作するプロトタイプ(v0.1.0)。Linux で開発しており、サポートも Linux が最も充実しています。Windows と macOS は一部のみ対応で、README にも未解決の問題が記載されています。1 つのパネルで複数の PC を管理する機能はロードマップ上にあり、まだ作られていません。
