# プラグインからわんコメ内 node\_modules を参照する実装についての確認

**URL:** <https://forum.onecomme.com/t/topic/2856>\
**Category:** 質問\
**Created:** [2026 年 3 月 14 日午後 2:30 UTC](https://forum.onecomme.com/t/topic/2856 "2026-03-14T14:30:36Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![sixleafs](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.onecomme.com/sixleafs/32/2685_2.png) [@sixleafs](https://forum.onecomme.com/u/sixleafs)\
**Post date:** [2026 年 3 月 14 日午後 2:30 UTC](https://forum.onecomme.com/t/topic/2856/1 "2026-03-14T14:30:36Z")

</div>

## 対象

わんコメ / プラグイン/ テンプレート / その他

## 利用OS

Windows

## 利用バージョン: Windows、わんコメやOBSのバージョン

Windows: 11  
わんコメ： 8.0.7  
OBS: 32.0.4

## PRO版を利用

していない

## 過去ログ確認 ([検索はこちらから](https://forum.onecomme.com/search))

していない

## ドキュメント確認 ([公式サイト](https://onecomme.com/docs/faq/))

した

## 内容

現在、わんコメ用のプラグインを開発しており、  
plugin をバックエンドとして動作させ、template 側の HTML + JavaScript にデータを渡す構成で実装しています。

当初は websocket や sqlite を通常の npm install で利用しようとしたのですが、  
ビルド後にエラーが発生してしまうため、  
AIの提案を参考にして、以下の方法で websocket と sqlite を取得する実装を試しています。

```js
const WS = eval("require").cache
const key = Object.keys(WS).find(k => k.includes('node_modules\\ws\\') && k.endsWith('websocket.js'))
const ws_module = key ? WS\[key\].exports : eval("require")('ws')

```

この方法は、わんコメ内部の node\_modules からモジュールを取得する形になるため、  
規約にあるリバースエンジニアリング等に該当する可能性があるのではないかと考え、  
このような取得方法が許容されるものか確認させていただきたいと思い、質問いたしました。

現在、GitLab 上の plugin リポジトリは一度削除してありますが、  
もし必要であれば現在の plugin の実装内容を共有することも可能です。

なお、現在の構成は以下のようになっています。

・plugin 側で SQLite データベースと WebSocket（port 19199）を起動  
・OnePlugin の subscribe(‘comments’) を使用してコメントイベントを取得  
・plugin の request API を用いて、贊助金額の累計と目標金額を管理し、SQLite に保存  
・金額が更新された際に WebSocket で通知し、template 側の募資バー（Goal Bar）やコントロール表示を更新

取得したデータはすべてローカルでのみ使用しており、  
外部サーバーや外部サービスへの送信は行っていません。

このような実装方法について、問題がある場合や  
推奨される別の方法があればご教示いただけますと幸いです。  
よろしくお願いいたします。

---

<div class="post-metadata">

**Author:** ![ASTIE](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.onecomme.com/astie/32/58_2.png) [@ASTIE](https://forum.onecomme.com/u/ASTIE)\
**Post date:** [2026 年 3 月 14 日午後 11:27 UTC](https://forum.onecomme.com/t/topic/2856/2 "2026-03-14T23:27:19Z")

</div>

> この方法は、わんコメ内部の node\_modules からモジュールを取得する形になるため、  
> 規約にあるリバースエンジニアリング等に該当する可能性があるのではないかと考え、  
> このような取得方法が許容されるものか確認させていただきたいと思い、質問いたしました。

非公開の内部APIやモジュールは参照しないようお願いいたします  
規約ももちろんですが、利用者の方が公式のサポートを受けられなくなってしまいます

* * *

SQLiteとWebSocketに関しては各々のプラグインプロジェクトとしてインストールして頂き、それらも含めてプラグインにバンドルしてください

> 当初は websocket や sqlite を通常の npm install で利用しようとしたのですが、  
> ビルド後にエラーが発生してしまうため、

ここでエラーの内容を確認しビルドを修正すべき段階かと思いますが、AIの誤った提案で違反を促された形になっているかと思います  
一度この段階まで戻って頂きエラーを再度確認ください

おそらく発生したエラーについては正攻法で解消可能なものです  
わんコメ手書きプラグインではwsを用いてサーバーを立ててテンプレートとやり取りを行なっています

> **[わんコメ 手書きオーバーレイプラグイン - わんコメ - BOOTH](https://booth.pm/ja/items/6908320)**
>
> OBSの仮想カメラの上からマウスやペンタブなどで書き込みができるわんコメプラグインです 書き込んだ内容は同梱のHTMLテンプレートをOBSに設置することでリアルタイムに配信画面にも内容が描画されます 従来の方式では配信画面のどのあたりかを感覚で探る必要がありましたが、OBS仮想カメラを重ねることでピンポイントに配信画面の狙った場所へ描画することができます さらにペンツールではブレ補正に加え筆圧検知にも対応しています ペン以外にも ・時間で描いた内容が消えるポインター ・色が変えられる図形スタンプ...

esbuildでのビルド例

```auto
const esbuild = require('esbuild')

esbuild
  .build({
    entryPoints: ['src/index.ts'],
    bundle: true,
    platform: 'node',
    target: ['node20'],
    format: 'cjs',
    outfile: '../app/public/plugin.js',
    external: [], // ← ws もビルドコードに含める
    minify: true,
  })
  .catch(() => process.exit(1))

```

また累計と目標額の設定でだけであればSQLiteではなくプラグインから提供しているstoreを通してjsonファイルとして記録する方が簡単かと思いました

---

<div class="post-metadata">

**Author:** ![sixleafs](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.onecomme.com/sixleafs/32/2685_2.png) [@sixleafs](https://forum.onecomme.com/u/sixleafs)\
**Post date:** [2026 年 3 月 15 日午前 5:33 UTC](https://forum.onecomme.com/t/topic/2856/3 "2026-03-15T05:33:29Z")

</div>

おはようございます、ASTIE様。

SQLite の読み込み方法についてですが、  
`better-sqlite3.node` を参照しにいく挙動があるようで、  
プラグインに組み込んだ際に **`better-sqlite3.node` が見つからないというログ** が出続けてしまう状況でした。

そのため、その他の部分については AI によって自動的に調整されたものになります。

WebSocket のみを単独で利用する構成については、  
現在のところ特に問題なく動作しているようです。

また、データ保存の部分については、  
ご提案いただいた通り `.json` で管理する方法の方が扱いやすいと感じましたので、現在はそちらの方式に変更して対応しています。

ビルドについては、  
ひとまず 現状の `webpack.config.js` を使用した方法のままで運用する予定です。

ご丁寧にご回答いただきありがとうございました。  
大変参考になりました。

※本内容の日本語は **GPT による翻訳の補助を利用しています。**

---

<div class="post-metadata">

**Author:** ![system](https://canada1.discourse-cdn.com/flex031/uploads/onecomme/original/2X/1/1d7fddb2644907a48a3e9213ff080fa3a038589d.svg) [@system](https://forum.onecomme.com/u/system)\
**Post date:** [2026 年 3 月 16 日午前 5:34 UTC](https://forum.onecomme.com/t/topic/2856/4 "2026-03-16T05:34:24Z")

</div>

このトピックは最後の返信から 24 時間が経過したので自動的にクローズされました。新たに返信することはできません。
