[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ここまでに何度かゆとシートのすばらしさや応用的な利用方法については書いてきた。だが、ゆとシートに期待しているのは「シートとして素晴らしい」に留まる話ではない。その真価が発揮されるのはゆとチャットとの連携だと常々考えていた。ゆとらいず工房に TALE さんといえばゆとシートが強いが、TRPG 向けに作られたゆとチャットも忘れてはならない。ゆとチャットを使ってセッションしているコミュニティはよく見られる。百の剣亭とか。
【#ゆとチャ adv.】
— ゆとらいず工房 (@yutorize) November 16, 2019
レンタルサーバーなどに設置出来るオンラインセッション向けチャットです。
β版の配布を開始しました。https://t.co/VdTzj4CNtz
今回、ゆとチャットの新版である ゆとチャ adv. が公開されたので触ってみた。
なお、私が触ったのは 0.04.0 (2019/11/22) である。
今後の更新でここに書かれていることは覆る可能性がある。
さらに言えば覆ることが期待される部分もあるだろう。
開発リポジトリからコードは容易に入手できる(リポジトリにアクセス)。
また、公開版はゆとらいず工房にて公開されている。(トップページ / ゆとチャット adv.)
設置は容易で README.txt に書かれた手順通りにやればよいのだが、
index.cgi と config.cgi の改行コードがダウンロード直後は CR+LF になっていた。
これを LF に変える必要が私の手元では上手く動かすためにあった。
適当なテキストエディタなどで変更すること。
部屋は管理者が config.cgi
を変更することで追加・削除ができる。部屋の命名もここで実施する。変に部屋を乱立させた結果「どれ?」とかそういったことが起こりにくい。手綱を管理者が握れるのは利便性かもしれない。
逆に言えば、部屋をユーザが自由に作れない。このことからわかるようにゆとチャ adv. は現時点では公開サーバ向けではないしこれは配布ページにも あくまで、自分のサーバーに設置する運用を想定しています
と記載がある。ただし、今後管理者が望めば部屋をユーザが任意で作成できるようになる可能性はある、という認識である。
とりあえず読みやすいフォントをデフォルトのフォントにしてくれているのは本当にありがたい。
背景が設定できない現状では黒い背景に文字となる。視認性は高いはず。しかし、背景が加わった場合の視認性は不明。
どどんとふのタブめいた複数のスレッドが用意できるが、送信先を間違えることは少なそうだ。これは単一の入力欄に対してタブを切り替えて送信するのではなく、それぞれのスレッド用に入力欄があるためである。
GM が NPC を切り替えながら発言したい場合などには非常に便利だろう。メインの送信先については発言者の名義を切り替えられる機能があるからだ。切り替えはワンクリックで実施されるためスムーズな切り替えが可能。他にも SW2 ならば妖精使いや騎獣を使う PC についてもこの機能で誰が動作しているのかを明示できる。
複数の発言者を扱う場合に発言者の文字色を任意設定できる。また、任意設定ではなくランダムで色を振ることもできる。重複などが少々怖いがいちいち決めるのが面倒だが色をばらけさせたい場合には便利だ。色の重複対策は何かされているのだろうか?
また、後で使いたい文面を取っておいて発言させることも可能。後述のチャットパレットとは別に発言用チャットが用意されており、ワンクリックでそこの入力内容を発言できるためだ。普通のチャットは発言した直後入力欄はクリアされるがこちらはクリアされないので繰り返し判定したい場合に連打する、なんてことも可能。
既存のチャットパレットを使いまわせる。どどんとふとほぼ同一のチャットパレットを用意。チャットパレットはダブルクリックで即送信が可能な他、手元で少し編集して送信する機能もある。バフ・デバフや対象等の一時的な加筆が可能である。同じ文を頻繁に使うならチャットパレットにいれてしまえばいい。
チャットパレットからの発言はチャットでの発言者とは独立している。つまりチャットの発言者が誰であろうとチャットパレットはそのチャットパレットを持っているキャラクターの発言として扱われる。
なお、HP/MP のリソース管理・共有も可能。
トピックなるものを表示する機能がある。これが何をするための機能なのかは正直良く分からなかった。全体で共有されるようなので「〇〇にいる」「〇〇と交戦中」「〇〇の手番」といった状況を共有し「今何をしているんだっけ」を明確にする機能だろうか。
アプリを見てわかる通りゆとシートとの連携を前提としている。私が出してきた SWEET のようなチャットとシートの連携がチャットツールに組み込まれるとなれば大変にうれしい。SWEET の開発はやめてこちらに MR を投げていく方が今後はいいかもしれない。
背景と BGMの実装予定はあるようだが未実装。期待したい
BCDice への対応を検討しているとのこと。一部のシステムを除けばゆとシートとの連携が前提とできなくなるためどの程度性能を発揮できるのかは正直不明。しかし、慣れたインタフェースでやれる、となればゆとチャ adv. から入ったユーザには便利かもしれない。
サーバ設置型であり P2P ではないので外からコマンドを叩く機能にも期待したいが、どうだろう。考えるより MR 送った方が早いかも。
DiscordでBCDiceを使えるようにするdiscord-bcdicebotが結構使いやすかった。せっかくなので、Linux/macOS環境でも手軽に使えるようにするPRを作った。https://t.co/yxN59VLjJD
— おちゃ@BCDiceコミッタ (@ochaochaocha3) November 9, 2019
早速確認・マージ・配布バージョンに反映した。ありがてぇ……
(雛´-`).。oO(https://t.co/cTbmCHkEtf#TRPG #Discord で BCDice (どどんとふのダイス) を振る bot を動かすアプリを更新しました。@ochaochaocha3 さんが作成・追加してくださった Linux/macOS 上でアプリを動かすためのスクリプトを配布物に含めました。ありがとうございます!) https://t.co/yg21FMuM8E
— しゅんしゅんひよこ (@Shunshun94) November 10, 2019
Amazon Route 53 に登録されている Record Set の一部を消したいのだが上手い方法が思いつかない。300件ほどを消したいのでコンソールから手作業はやりたくない。十中八九事故になる。 cli の change-resource-record-sets を使うのが妥当そうだが、これは入力に json を要し若干重いので踏ん切りがつかずにいる。
なんかいい感じに隠蔽してくれているツールないかな…
タイトルまんまな質問を頂いたので調べてなんとかした。1988/12/13T07:29:00
とかを読ませたいようだ。
DateTimeFormatter.ofPattern("yyyy/MM/ddTHH:mm:ss"); // ← IllegalArgumentException を吐く。上手くいかない
調べたところ、リファレンス (日本語) には Any unrecognized letter is an error. Any non-letter character, other than '[', ']', '{', '}', '#' and the single quote will be output directly. Despite this, it is recommended to use single quotes around all characters that you want to output directly to ensure that future changes do not break your application.
(認識されない文字はエラーです。英文字でない文字は、'['、']'、'{'、'}'、'#'、および一重引用符を除き、直接出力されます。ただし、将来の変更によってアプリケーションが破壊されないようにするには、直接出力したいすべての文字を一重引用符で囲むことをお薦めします。
) とあるではないか。
ということで以下を試したら上手くいった。
DateTimeFormatter.ofPattern("yyyy/MM/dd'T'HH:mm:ss");
Jenkins のパイプラインで次のようにする。
def hiyoErrorReturner(str) { if(str.equals("hiyo")) { error "ひよだー"; } else { echo "${str}だったー" } } node { hiyoErrorReturner("hitsu"); hiyoErrorReturner("hiyo"); }
すると以下のように Error で止まる。
hitsuだったー ERROR: ひよだー Finished: FAILURE
Error に来たら処理が止まる、というのは自然な動きなのだが時に途中で失敗しようがどうしようが処理を回しきってほしい、ということもある。例えば、多数のリソースに対して処理を実施する場合にそう思うことがあるのではないか。どれに失敗したのかをレポーティングしたうえで処理を継続してほしい、と。そのような場合は try-catch が使える。
def hiyoErrorReturner(str) { if(str.equals("hiyo")) { error "ひよだー"; } else { echo "${str}だったー" } } node { def list = ["hitsu", "hiyo", "neko"]; list.each{word-> try { hiyoErrorReturner(word); } catch(thrownObject) { echo "${word}の処理に失敗したっぽいー"; } }; }
このように書くと次のような結果となる。
hitsuだったー hiyoの処理に失敗したっぽいー nekoだったー
Groovy を普段から書いている人には当然なのかもしれないが、pipeline で使っていてうーんってなったのでメモメモ。
なお、こんな風にも使える。
def executeCommand(command) { sh command; } node { def list = ["ls", "pwd", "unknownCommand"]; list.each{command-> try { executeCommand(command); } catch(Error) { echo "${command}が実行できなかったよ"; } }; }
すると次のようになる。
+ ls + pwd /var/lib/jenkins/workspace/jobName + unknownCommand /var/lib/jenkins/workspace/jobName@tmp/durable-bd3798d3/script.sh: 1: /var/lib/jenkins/workspace/jobName@tmp/durable-bd3798d3/script.sh: unknownCommand: not found unknownCommandが実行できなかったよ
sh
で実行したコマンドが失敗しても Error を投げてくれるのでそれをキャッチしてハンドルできる。なので大量のリクエストを送信する際なんかにも使えそうだ。