Skip to content
スニペット グループ プロジェクト

Outvoke

これはライブラリであると同時にフレームワークです。そして同時に内部DSLです。

If you need English Edition of this README, see README.md

注意

作者であるcleemy desu wayoは、Linuxでしか動作確認してません。

システム要件

  • Ruby 3.0 or later

概要

Outvokeを使用すれば、流れていくデータストリームをフックするようなコードが容易に書けます。

セットアップ

カレントディレクトリに outvoke.rb を置き、実行権限を与えてください。

以下のように -e オプションを使用して起動し、5秒おきに出力があるなら、とりあえず起動はできています。

$ ./outvoke.rb -e 'hook "every-sec", /:.[05] /'
# starting Outvoke 0.1 ---- 2023-12-31 17:50:16 +0900
# ----
# given ruby code:
# hook "every-sec", /:.[05] /
# ----

[2023-12-31 17:50:17 +0900] [outvoke-system] vrchat-001: first time log check has done.
[2023-12-31 17:50:20 +0900] 2023-12-31 17:50:20 +0900
[2023-12-31 17:50:25 +0900] 2023-12-31 17:50:25 +0900
[2023-12-31 17:50:30 +0900] 2023-12-31 17:50:30 +0900
[2023-12-31 17:50:35 +0900] 2023-12-31 17:50:35 +0900
[2023-12-31 17:50:40 +0900] 2023-12-31 17:50:40 +0900

終了は Ctrl + C で行います。

VRChatがインストールされていなかったり、ログファイルの場所が違っていれば、エラーの行があるかもしれません。

VRChatがインストールされていて、かつVRChatが起動されてから長い時間が経過しているような場合、Outvoke を起動してから first time log check has done. の行が出るまでに長い時間がかかる場合があります。VRChatを再起動すれば、この時間は短縮できます。

設定ファイル

カレントディレクトリに outvoke.conf.rb というファイルがあると、Outvokeはまずそのファイルをインクルードします。

例えば outvoke.conf.rb に以下のような行があれば、VRChatのログファイルを探すディレクトリを指定することができます。

$outvoke.sources['vrchat-001'].log_dir = "#{Dir.home}/.steam/debian-installation/steamapps/compatdata/438100/pfx/drive_c/users/steamuser/AppData/LocalLow/VRChat/VRChat"

基本的な使い方

引数なしでOutvoke本体を起動すると、カレントディレクトリの main.rb を探してインクルードします。

ファイル名を指定することもできますし、-e オプションによってワンライナーを書くこともできますが、話を分かりやすくするためにこのREADMEでは main.rb に書いていくものとします。

この main.rb の先頭で 「using OutvokeDSL」 としておくと、内部DSLのモードになります。設定ファイルを書くような気軽さで記述できます。

main.rb はRubyのスクリプトとして解釈されますので、複雑なプログラムを書くこともできます。

以下は main.rb の例です。

using OutvokeDSL

hook 'every-sec', / 05:00:00 / do
  spawn 'play', '-q', '-t', 'wav', '-v', '0.6', 'ring.wav', 'repeat', '50'
end

午前5時になるとカレントディレクトリの ring.wavplay コマンドによって再生します。

(以下執筆中)

VRChatでの利用

いくつかの解説やサンプルについては、以下でみつかるかもしれません。

(以下執筆中)