-
cleemy desu wayoがに作成しましたc7480432
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.wav
を play
コマンドによって再生します。
(以下執筆中)
VRChatでの利用
いくつかの解説やサンプルについては、以下でみつかるかもしれません。
- 「2023年12月活動報告」 https://note.com/cleemy/n/nf9ea83c0c5e3
- 「2024年1月活動報告」 https://note.com/cleemy/n/n4ceff128e355
(以下執筆中)