LaMer(ラメール)の延長機能とかがこっそり運用されているらしいので試してきた

概要

以下の内容で、

告知があった延長機能が実はこっそりと運用されているらしいので、ひとまず試してきたというもの。

延長機能とは

読んでそのまんまで、通常の予約と+追加でキャストとの楽しい時間を延長できる機能。 使い道としては

  • 話の切りが絶妙に悪い状態
  • 遊んでいるゲームとかをもう少し一緒に遊びたい

とかのタイミングをたぶん想定されている感じでしょうか。

利用方法

利用方法としては、そこまで難しい問題はありません。

  1. 「キャストさん」に延長したいという意思と時間を相談
  2. 「キャストさん」からOKが出たら、「キャストさん」から「運営さん」に連絡
  3. 「運営さん」から「ゲスト」に対して、メールが届く
  4. メールに、カードで支払うボタンを押す場所があるので、それを押して、いつもの予約みたいにクレジット番号を入力
  5. 「運営さん」側で、支払いの角煮ができたら、延長時間分の継続

といった流れになります。

VRCでの標準についているデバック機能について

概要

VRCには、ワールドなどを作る際にデバック機能的なものが存在します。 それを有効にするためのやり方として、あ、ここでやればいいのねっていう事があったのでそれらをまとめるものです。

起動オプションの追加

まず、このデバックを有効にするためには、起動オプションというものをつけなければいけません。

--enable-debug-gui --enable-sdk-log-levels --enable-udon-debug-logging

といったものです。

これをどこでするかというと

SteamのVRChatのプロパティを選ぶと以下のような画面が出てきます。

f:id:herie270714:20210926102007p:plain
コマンドを入れるところ

この起動オプションの部分が起動オプションになります。

※半角/全角を一応いれていますが、入れなくても動く時はある感じ

これらを入れて、「自分のワールド」で右シフト + 半角/全角 +8で以下のようなデバック機能が見れます。 f:id:herie270714:20210926111442p:plain

右シフト + 半角/全角 + 3で以下のようなログを見る画面が見れます。これは、Unityから流れてくるログの内容のようです。

f:id:herie270714:20210926112517p:plain

エラーとかもここで見れるので、結構便利な感じです。

VRCStationに対して、座っている座っていないという状態を保持する機能をもたせようとしたその2

概要

以前に以下の記事を書いたが、これだけだと、少し機能的に足りていない状態だという事がわかったので、それの補足レベルのミニな記事です。

herie270714.hatenablog.com

結論だけ言ってしまうと、上記の記事だけだと、状態保持しようとしているクラスを介さずにVRCStationを利用できてしまって、状態が持てない状態になってしまっていたというものです。 今回は、それらの回避方法の内容です。

開発環境

今回の検証では、以下の環境を使用しています。 Unity2019.4.29f1 VRCSDK 2021.08.11.15.16 UdonSharp v0.20.2

なぜ介さずにVRCStationが利用できてしまうか?

これは単純な話で、VRCStation側で、BoxColiderがVRChatの実行環境において、BoxColiderが自動生成されてしまうからです。 また、このBoxColiderに恐らくIntractの機能が動いており、Intractする事でVRCStationを直接利用する形になってしまい、状態保持するクラスを介さない状態になってしまう。

対策

これも単純な話で、状態保持するクラス側で、VRCStationのGameObjectの参照を持っておき、そこからGetComponentでBoxColiderを取得して、enable = falseするだけ。

UnitからSlackApiを通して、連続投稿時スレッドで投稿する。

記述日:2021年8月21日

概要

Unityなどの環境から、SlackApi(以下App)を通して投稿する際に、スレッド投稿するのをやるにはどうすればいいか?といったものを解説するためのもの

ターゲット

この記事は、SlackApiに関して権限の理解(今回ならば、write:chat,write:uploadがわかっている)している状態で、UnityWebRequestを使用して、すでに投稿とかはできるけどスレッドの投稿がやり方がわからないという人向け。 そもそもそれらがワカラナイ場合は、以下の記事を行ってからすると理解が進みやすいと思います。

https://herie270714.hatenablog.com/entry/2021/08/15/165146

今回のやる内容

  1. UnityWebRequestを使用して、チャットメッセージを指定のチャンネルに投稿する。
  2. 投稿した際のレスポンスに入っているスレッドを指し示す情報(以下 ts)を取得する
  3. UnityWebRequesetを使用して、以降投稿するものに対してtsを付属して投稿する。

の3ステップです。

1.Step1 チャットメッセージをチャンネル投稿をする。

基本的には、ここのチャットメッセージを送るのは、基本的には、tsを取得するためのものです。 なお、チャットメッセージと指定しているのは、ファイルをアップロードするという投稿の場合は、このts情報がなんかしらの理由で含まれていないため、取得することができません。

そのため、チャットメッセージで送る必要があるのです。

なおチャットメッセージを送るサンプルは以下の通りです。

サンプルコード

    //送るURL
    private const readonly string SlackApiUrl = "https://slack.com/api";
    private const readonly string ChatPostURL = "/chat.postMessage";

    private const readonly string BotAccessToken = "xoxb-あなたのappのAOuthToken";
    private const readonly string Channel = "#あなたのチャンネル名";
    private const readonly string UserName = "投稿した際の名前";


    eprivate string thread_ts;


    private class AAA
    {
        public string ts;
    }
        
    //チャットを送るためのフォームを使用する。
    private WWWForm BuildChatMessageRequest(string message)
    {
        var form = new WWWForm();
        form.AddField("token", BotAccessToken);
        form.AddField("channel", Channel);
        form.AddField("text", message);
        form.AddField("username", UserName);

        return form;
    }

   //投稿する
    public IEnumrator Send()
    {

        var form = BuildChatMessageRequest("メッセージを送る");
        var request = UnityWebRequest.Post(SlackApiUrl + ChatPostURL, form);
        request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
        var operation = request.SendWebRequest();


        while (!soperation.isDone)
        {
            yield return null;
        }

        if (request.isHttpError)
        {
            Debug.LogFormat("requestError:{0}", request.error);
        }
        else
        {

            //これで特定の要素だけ取得する事が出来る
            AAA ts = JsonUtility.FromJson<AAA>(request.downloadHandler.text);
            if(null != ts)
            {
                thread_ts = ts.ts;
            }


        }
    }

Step2.tsを取得する

先ほどのサンプルコードの以下の部分がそれになります。

            thread_ts = "";


            //これで特定の要素だけ取得する事が出来る
            AAA ts = JsonUtility.FromJson<AAA>(srequest.downloadHandler.text);
            if(null != ts)
            {
                //スレッド情報を取得
                thread_ts = ts.ts;
            }

これは、送った後に帰ってきたtextデータから、特定の情報を取得しているものです。

なお、AAAクラスは、クラス名としてはなんでも大丈夫なのですが、定義されている変数名は、かならず取得するパラメータにする必要があります。 今回で言うならばtsがそれにあたります。

Step3.スレッドを使用して、投稿するものに対してtsを付属して投稿する。

これは、単純にWWWFormのFieldに対して以下のフィールドを付与するだけで完了します

        if (thread_ts.Length != 0)
        {
            form.AddField("thread_ts", thread_ts);
        }

フィールド名はthread_tsです。 なお設定する値としては、文字列形式、1629509002.003900  といった文字列がセットされます。

Unityから、SlackApiを通して、スクリーンショットやテキストファイルを上げる

概要

Unity Slack 投稿 などとかで調べると結構な記事がでるけれど、それぞれ、Token ってどれ?とか、それはSlackApi側のどこから取ってくるの? とか。 SlackApiとそれを送るフォーマットとかにおいて、むっちゃつまってしまっていたので、とりあえず、自分が、この手順で行ったらできるようにするためのものです。

環境

Unity2018.4.20f

2021年8月15日現在時点でのSlackApi周りの内容です。 これはタイミングによっては、権限に当たるもののWeb上でのUIが変化する場合があります。

前提

Slackのワークスペースを持っている状態である。 SlackのチャンネルにAppなどの追加する権限をそのワークスペース内で保有している。

というのが前提です。

これを通してやった結果できる事

Unityから、Slackに対して、テキストファイル や 画像ファイル(今回はスクリーンショット)を送る事ができる

ひとまず必要な作業内容

やる内容としては以下の通りです。 主にSlack側での準備が主になります。

  • Slack側
    • SlackApiの準備
      • 権限周りの付与
      • Accesstokenの取得
    • Cannel側
      • 作成したSlackApiをCannelに入れる
  • Unity側
    • 送る部分の実装

Slack

SlackApiの準備

以下のサイトにアクセスします。

https://api.slack.com/

このタイミングだと、ちょうど以下のようなページに飛ぶと思います。

f:id:herie270714:20210815170504p:plain

これの右上の [Your apps] というのがあるので、それをクリックします。 するとこの画面になるので、ここから [Create New App]というのがあるので、それをクリックします。するとポップアップみたいな画面が出てくるので、 そこから[From Scratch]->AppNameを入力します。 名前はなんでも構いません。

f:id:herie270714:20210815172822p:plain

次に、Pick a workspace to develop your app in: というのがあるのですが、場合によっては候補として出ない場合があります。 出ない場合は、少し舌のSign into a different workspaceを選んで、Appを入れたいワークスペースに一度自分の認証を通す事で出てきます。

終わったら、CreateAppを押しましょう。 すると以下の画面です。

f:id:herie270714:20210815170538p:plain

これでSlackApp(以下App)が作成されました この画面で、作成するAppに対して、権限の付与や、Tokenの取得を行います。

 権限周りの付与

さて、いよいよ権限まわりの付与です。 現状のAppは、あなたのワークスペースに入れたとしても権限がないので、チャンネルに書き込みもできないし、まして画像も投稿できない状態です。 なので、権限を付与する必要があります。

f:id:herie270714:20210815170802p:plain

権限の付与は、[Add feature and functionality]を押すと 折り畳みが展開されて以下のような感じのものが出てきます。

f:id:herie270714:20210815170824p:plain

これの[Permissions]というのを選択します。 すると画面が変わって、 OAuth&Permissionsというタイトルの画面に変わります。

f:id:herie270714:20210815170923p:plain

ここを下にスクロールすると Scopesという項目があります。 ここで、BotTokenとUserTokenというものがありますが 今回は、BotTokenの方に権限を付与していきます。

このBotTokenとUserTokenの違いはこの記事では言及しませんが、 個人的な認識としては、UserTokenは、Userとしての操作(チャンネルのUser操作など)が必要な権限が該当するみたいな認識です。

え [Add an OAuth Scope]というボタンを押して

files:write を選択します。

これは、Slackのチャンネルに対してファイル関係(画像、テキストなど)をどうかするためのものです。

AccessTokenの取得

権限を付与すると上にスクロールして戻り、 OAuth Token for Your WorkSpaceという項目の[Install to Worksapce]というボタンがあるので、これを押します。

すると以下のような感じの画面になります。 ここで確認すべき内容は、実行できる内容は?の下の文言で、 この部分が、選択した権限の内容になっていればオーケーです。

f:id:herie270714:20210815172506p:plain

チャンネルと会話でアクションを実行する アプリ名としてファイルをアップロード、編集、削除する

となっていればOkです。

許可をすると、元の画面に戻ります。 その際に、Slack側のApp欄に、作成したAppが存在している事を確認してください。

Web画面の方に戻って、 以下の画像の赤枠の部分のTokenがこのワークスペースの上でのこのAppのAccessTokenです。他のサイトではApiTokenなどの名前でも呼ばれている場合がありますが、ここではAccessTokenという呼び名で呼びます。

f:id:herie270714:20210815172723p:plain

作成したSlackApiをCannelに入れる

この段階では、ワークスペースに作成したAppが入っただけなので、この状態だとまだ送る事ができません。 このAppを流したいfileを上げたいCannelに入れる必要があります。

アプリでのSlack側のUIの右上の[このチャンネルの全てのメンバーを表示する]という部分を表示し、その項目の[インテグレーション]という項目があるので、そこをクリックします。

アプリを追加するという項目があるので、作成したAppを入れます。 するとチャンネルのメッセージに

ユーザー名さんにより#チャンネル名に追加されました

といった文章が出てきたら、OKです。 これでSlack側の準備は完了したので、次にUnity側の準備に移ります。

Unity側の準備

Unity側の準備 基本的には、UnityWebRequestに対してWWWFormを通じて送信するスタイルを取ろうと思っています。

とりあえずサンプルコード全体図

サンプルコード全体図

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class SlackApiSample : MonoBehaviour 
{

    /// <summary>
    /// スクリーンショットデータのとりあえずの保存場所
    /// </summary>
    private byte[] screenData;

    /// <summary>
    /// Slack API 関連のもの URLとして必要
    /// </summary>
    private static readonly string SlackApiUrl = "https://slack.com/api";
    private static readonly string ChatPostURL = "/chat.postMessage";
    private static readonly string UploadEndPoint = "/files.upload";

    private string CannelName = "#チャンネル名";
    private string BotAccessToken = "xoxb-あなたのAccessToken";


    public void Update()
    {
        if(Input.GetKeyDown(KeyCode.Space))
        {
        Send();
        }
    }


    private void Send()
    {
    StartCoroutine(SendRequest());
    }

    private IEnumerator SendRequest()
    {
    yield return CreateScreenShotData();

    var form = BuildScreenShotUploadRequest();
    var request = UnityWebRequest.Post(SlackApiUrl + UploadEndPoint,form);
    request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
    var operation = request.SendWebRequest();

        while(!operation.isDone)
        {
            yield return null;
        }

        if(request.isHttpError)
        {
        Debug.LogFormat("requestError:{0}", request.error);
        }
    else
        {
        Debug.Log(request.downloadHandler.text);
        Debug.Log(request.isNetworkError);
        }

        yield return null;
    }


private IEnumerator CreateScreenShotData()
{
    yield return new WaitForEndOfFrame();
    var tex = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);

    tex.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
    tex.Apply();

    screenData = tex.EncodeToPNG();
        
    Object.Destroy(tex);

    yield return new WaitForEndOfFrame();
    yield return null;
}


private WWWForm BuildScreenShotUploadRequest()
 {
        WWWForm form = new WWWForm();
        form.AddField("token",BotAccessToken);
        form.AddField("channels", CannelName);
        form.AddField("title", "titleの中身が入る");
        form.AddField("filename", "screenshot.png");
        form.AddField("initial_comment","メッセージ");
        form.AddBinaryData("file", screenData, "ssssss.png", "image/png");

        return form;
    }

}

基本的には、UnityWebRequestで URL と 表示情報であるWWWFormの内容を送っています。

ここでの説明としては、全部で2つあって 1. Slack側で準備した情報で必要なもの 2. 送るのに必要なデータ

URLは今回

 private static readonly string SlackApiUrl = "https://slack.com/api";
    private static readonly string UploadEndPoint = "/files.upload";

が必要になります。 これが、ファイルをアップロードする上で必要なものであるためのURLです。

送っているデータの内容の箇所はここ

private WWWForm BuildScreenShotUploadRequest()
    {
        WWWForm form = new WWWForm();
        form.AddField("token",BotAccessToken);
        form.AddField("channels", CannelName);
        form.AddField("title", "titleの中身が入る");
        form.AddField("filename", "screenshot.png");
        form.AddField("initial_comment","メッセージ");
        form.AddBinaryData("file", screenData, "ssssss.png", "image/png");

        return form;
    }

それぞれのパラメーターは、確認している感じ以下の意味合いです。 左がキー値、右が値になります。

token = SlackApiで取得したAccessToken channels = 送るチャンネル名 title = 画像などのプレビューの際のタイトル filename = 送った内容 initial_comment = Slack投稿時のメッセージです。 file = byte配列のデータ、?、データ形式

基本的に、この6つの情報が必要になり、AccessTokenはここで使用する事になります。

うまく送れないなってなったときの対処法

基本的には、以下のコードで取得できるコード部分から発行されるエラーとかが出るのでそれを元に対処します。

        if(request.isHttpError)
        {
        Debug.LogFormat("requestError:{0}", request.error);
        }
    else
        {
        Debug.Log(request.downloadHandler.text);
        Debug.Log(request.isNetworkError);
        }

例えばこんなログ

{"ok":false,"error":"invalid_form_data"}

この場合は送る際に、送る形式が違うなどがあります。 なので、送る際のForm内容、もしくはRequest内容に修正をかける必要があります。

終わりに

結構書かれた時期や用途によって書き方がWWW形式だったり、サンプルそのまま動かしてもなぜかうまくいかない等があったため、またやる機会があった際に振り返れるようにと思い記述しました。

同じ苦労をしている人が、少しでも減る事を祈ります。

また、サンプルコード使用による責任は当ブログは一切責任とりません。

LaMerのキャスト全員回ったので、簡単にレビューとか

概要

LaMerに2021年5月現在で、在籍しているキャストを一通り1時間を回って来たので、私の独断と偏見が入った内容も込みで、しゃべりやすさとか、話題の豊富さとか、そのキャストの魅力とかも含めて記述したものです。 独断と偏見とか入りまくっているので、キャストによっては、全然文章量が違う場合はあります。

私Isどんなひと?

とはいえ、そもそもあなたどんな人?おしゃべり得意な方じゃないの?とかどれくらいしゃべれる人とかがわかっていないと、基準としてわかりずらいので、その辺の基準としての提示

正直な事を言うと、おしゃべりは結構苦手な方で、結構普段おしゃべりする中で、会話が沈黙状態になる事がわりかしあったりすくらいには苦手です。

よくある、今日はいい天気ですね?みたいな事を気づいたらなげかけてしまうくらいには苦手です。

ただ全くしゃべれないか?って言われたら、そこまでではないと思うところもあって、キャストのプロフィールがLaMerでは公開されているので、そこを元に、そういえば、こういうこと書いてあったけど、どんなの好きなの?くらいには質問などして、30分程度はいけたりします。(ただし、キャストさんの力とかはだいぶ大きいので、一般の人相手だと、10分も持つ自信はないです。)

まぁ、あまり語るとただただ恥をさらすだけなので、どれくらいしゃべるのが苦手という事がわかったと思うので、それらも含めてキャストさんの紹介。

キャストさん一覧

※文章の多さがキャストの魅力とかではなく、単純にそのキャストさんに行った回数が多いから、それだけ魅力が説明できるだけですので、あしからず。あくまでも独断と偏見に満ちているという事を年頭においた上でよろしくお願いもうしあげます。


恋摘いちごさん

  • キャストさんのプロフィール等 紹介PV

youtu.be

  • キャストさん良きところ 話題などの基本ステータスとか、ノリとかの良さの平均値がたぶんずば抜けて高いため、だいたいどんな人でもおしゃべりはしやすい安定感がある人です。 自己紹介PVで、迷ったときは、私でというだけあって、とりあえずここからはじめておけば雰囲気とかも掴めるっていう意味での安定感があります。 また、結構ノリとかも良いです。声真似とかも色々あったりします。

  • こういう人におすすめ ラメール初めてどこから行こうってなったらいっといたらいいキャストです。 どの方面とかでも良きノリで会話してくれるので、迷ったらこの人感はたぶん間違いないかと思います。


錬みるくさん

  • キャストさんのプロフィール等 紹介PV

youtu.be

  • キャストさんの良きところ 趣味におつまみと書いているのは伊達ではないです。普通に小一時間くらいがおつまみ絡めた料理の話をしましたが、それで話題がつながるくらいいろんなおつまみの話がでてきます。  そのおつまみも今聞いている感じでは、そこまで手間がかかる感じないのが多いので、聞いてて面白いです。

    また、お酒を飲んでいる事が多く、そのお酒をおかわりをする部分が音声から聞こえる事があるので、結構現実感とかはすごくあります。

    また会話間隔とかがちょうど少しゆっくり目でも速い目でも合わせるのがうまいのか、いい感じの会話のリズムをとってくれるキャストさんです。

  • こういう人におすすめ お酒自体が好きな人なので、ウィスキー(たしかそうだったはず)とかが好きな人とか、おつまみ話とかをしたいとかしたい人とかはいいと思います。


水葉しずくさん

  • キャストさんのプロフィール等 紹介PV

youtu.be

  • キャストさんの良きところ 基本的には、聞くのがうまい人で、知らない話題とかは多いのですが、その分を行動とかでカバーしていっているようなキャストです。 具体的には、こちらが、こんなのを面白いよ。とかを教えてあげたりするとアニメなどの場合、次の週に会いに行くとすでにその話題を知っていたりします。 確実にという事はないでしょうが、とても吸収力とかはすごく高い印象です。

  • こういう人におすすめ 何かを人におすすめして、その話題についてお話を共有したりしたいとかいう人とかはいいかもしれません。印象として、勧めたものに対して、アニメの見れる環境のものだと、すぐにみてくれたりする印象。


野々ののこさん

  • キャストさんのプロフィール等 紹介PV

youtu.be

  • キャストさんの良きところ 癒し系のお姉さんを目指してはいるが結構抜けている所は、とてもかわいらしい一面があります。 ののこさん的にはどう思っているかはわかりませんが、ののこさん自身が目指している像とまったくそうでない所をおちょくってみる反応とかがとても面白い人です。

  • こういう人におすすめ 基本的には聞き役な側面があるような人なので、何かしゃべりたいみたいな人とかはいいかもしれません。ちょっと抜けている部分とかもあったりするので、そういった人が好みな人は、いいかもしれない。


花陽ここあさん

  • キャストさんのプロフィール等 紹介PV

youtu.be

  • キャストの良きところ PVをみると雰囲気とかがわかる感じがすると思うのですが、とてもかわらしい声をしています。 結構会話で肯定的に返してくれたりとか、共感的な会話を得意としてくれるキャストさんかなと思っています。 また、アニメとか漫画と別に、ディズニーとかネイルなどのリアルよりとかの話題といった、話題のレパートリーを持っている所も良い部分かもしれないですね。

  • こういう人におすすめ 元々推し活とかをやってたり、ディズニーとかを結構いってたりしていたのものあって、その辺の会話をしたい人とかには良いかもしれません。


華城ヨミさん

  • キャストさんのプロフィール等 紹介PV

youtu.be

  • キャストさんの良きところ ヨミさん自身が、興味ある事を積極的に行っていく関係で、新しい話題をぽんぽんと出してくれるようなキャストさんだと個人的には思っています。  そのため、毎日いくとかをしない限りは、話題がつきないんじゃないか?っていう感じの印象を受けました。 また、興味あるベクトル自体も結構独特だったりするので、知らない事が多かったりするので新鮮な内容が聞けるキャストさんです。

  • こういう人におすすめ PVからもわかるかもしれませんが、クリエイター的な側面を持っている人なので、それらの話題とか、新しい刺激が欲しい人にはおすすめの人です。また、結構独特の興味のベクトルとかがあるので、その辺で、面白い話題とかを聞きたい人とかもいいかもしれないです。


桃園えりかさん

  • キャストさんのプロフィール等 紹介PV

youtu.be

  • キャストの良きところ ガチラーメン勢と言っているだけあって、東京近辺のラーメンとかはむちゃ詳しいです。 また、結構明るめのトーンでおしゃべりするので、元気とかほしい人にはいいかもしれません。 あとちょっと抜けている感じは良きかなと思います。

  • こういう人におすすめ ラーメンとかが本当によく知っているので、ラーメンとかが好きな人とかはすごくよいです。 話の間合いとかの取り方とがうまいキャストさんなので、おしゃべりが苦手な人とかもおすすめです。


枢けいさん

  • キャストさんのプロフィール等 紹介PV

youtu.be

  • キャストの良きところ とにかくテンションが高いです。最初のあいさつからいぇーいとかを言い出すようなレベルでテンション高い。とても明るいキャストさんなので、その元気さは、話を聞いていて、その元気さにひっぱられる感じです。 あとサインとかがかわいいです。

  • こういう人におすすめ テンションが高いため、結構人は選ぶのはあるものの、常に予想がたたないトークの進み方や、テンションとかがあるので、予想をたたないような会話とかが好きな人とかはおすすめかもしれないです。 個人的なイメージなんですが、鍋の具材とか何が良い?と聞いた際に、ケーキと言われた気がするような感じの予想外さはあるキャストさんだと思います。


総じての振り返り

当たり前ですが、キャストと自分とかの相性とかはあるので、私がキャストさんの魅力っぽい魅力を見つけれないとかはもちろんあったりするので、僕はこうだったけどー、これを見ているあなたは、好きかもしれないという事は往々にしてあり得るので、ぜひまずはフリーで出会った人からでも初めてみたり、キャンペーンをやっているタイミングで、新しいキャストさんに挑戦してみるのもいいかもしれませんね。

バーチャルクラブLaMer(ラメール)に行ってきた

概要

VRクラブのラメールにいってきたので、体験までの流れや、思ったことや どうなるんだろうなっていう感じのままをそのまま記述するためのものです。

LaMer(ラメール)とは?

1:1で、キャストの方と、おしゃべりするためのサービス。 お絵描きしたりすることとか、キャストと写真を撮ったりする事ができます。 (※写真を撮る時は、キャストさんに対して尋ねる必要があったりします。)

詳しくは以下のリンク

vrclub-lamer.jp

動作環境

今回、体験するに当たっての動作環境的には以下の通り OculusQuest2 + AirLink

マシンスペックなどは以下の通り メモリ:16GB NVIDIA GeForce GTX 1060 3GB

ただマシンスペックなのかば知らないが事前に、デスクトップ版とVR版の動作確認をした感じ すでに、がたつく状態だったのです。 なので、工夫として、音声の入出力を、PC本体から行うことで、がたつくのを回避しました。

Quest2のAirLinkの内容の変更の仕方

Quest2側のAirLinkの状態で、設定のヘッドセットの項目で音声の入力と音声の出力をつないでいる。

あとこれもマシンスペック関係かLinkAirが不安定だからかはわからないんですが AirLinkしている状態で、Quest2のホーム画面(綺麗な景色が映る状態の奴)とかに基本的にしない状態の方がいいです。 というのも、メニューからホーム画面の状態に遷移してしまうと、ホーム画面で動く仕掛け等の処理が動いてしまい、どうもそれが動作的に、重くなってしまうため、このマシンスペックではかくついている状態でした。 ホームボタンにご注意。

体験内容

今回とりあえず2回ほど程体験してみました。

1回目は、恋摘いちご(こいづみいちご)さんを指名させていただきました。

youtu.be

選んだ理由としては

  • 紹介動画で、迷ったら、とりあえず指名してください と言っていたので その動画の内容に素直に従ってみる事に。

初回で初利用という事もあって、とりあえず、30分で指名してみました。

以下その時の感想。

感想の通り、結構快活でおしゃべりなさってくれるし、話題とかを振ってくれるので、そこまで会話に困る事もなく 好みのタイプとかを聞かれたタイミングで、こちらが「お姉さんみたいな人かな?」と答えたら、いちごさんの中でのお姉さん像の しゃべり方を行ってくれたりと、ノリとかもすごくあっという間の30分でした。

2回目、華城ヨミ(かじょうよみ)さんを指名させていただきました。

youtu.be

選んだ理由としては

  • 紹介動画を見て、独特な自己紹介だったので、なんか面白そうと思ったから

その時の感想

こちらは最初ヨミさんの方が機材トラブルの関係で、20分程度?かくらいの間、代理で、野々のの子さんに相手してもらってからのセッション開始といった感じでした。 こちらも感想の通り、結構色々と体験を持っている方で、個人的に、自分の話を話すより知らない話を聞くのが好きなのもあって、色々と面白い話とかが聞ける人でした。 この回は1時間指名で行ったわけでしたが、こちらもあっという間に時間が立ってました。

ただいずれの場合も個人的には、以下だと思っています - 基本的にアニメが好きといっている人がほとんどキャスト - しゃべってみないとわからない部分が多いと思っている - 声的にも、そこまで幅が広くないため、個人的には、方向はこっちでちょっと幅もたしたよくらいの印象 なので、初回のしゃべる相手の選択はできるものの、そこまで選択の決定打がないのかなと思っていて、 結果的に、動画でこれを言っていたから、とか 面白そうだったから っていうのが決定打になった感じです。

総評的

会話スキルとかは、いずれの場合もかなり高いのかなと思いました。 導入部分では、 ・どこでラメールを知ったのか? ・どうして指名してくれたのか ・VRとか結構やるんですか? ・ゲーム関連の話

みたいな内容から始まり、そこから、会話の中でたキーワードとかをうまく会話をしてくれるので、会話の苦手な人とかでも基本楽しめるような感じでした。

トラブル発生とか、スタッフの介入等の話について

スクリーンショットを撮る方法として、キャストさんに聞いた上で、スクリーンショットを撮る。 キャストさんにお願いした上で、スタッフさんにスクリーンショットを撮ってもらう。 の2通りで

以下は、スタッフさんにスクリーンショットを撮ってもらったものをツイートしたもの

だいたい頼んでから、2-4分程度で、スタッフさんが現れました。

トラブル発生についても、体験した中だと、ゲスト(自分)側のセッション開始がうまくいかない(処理重すぎて再起動した)とキャスト側のトラブルと体験しましたが、いずれも開始部分をずらしてもらったり、代理のキャストさんが入ったりするといった処置が行われ、ゲスト側が損をしないシステムで、現在は動いている感じなので、あまりトラブルとかの心配等はしなくていいと思っています。

どれくらいの時間で行うのがいいか?

これは、どんなのか体験するだけなら、フリーの30分とかでいいかなと思いますが、今体験している感じ面白くなるのは、お互いにほぐれてきてからだと思うので、1時間を個人的にはいいかな?と思っています。 30分くらいも面白いのは面白い事もありますが、キャストさんもゲストである人はどういった人だろう?とかがわかっていない状態から始まるわけですから、そこら辺が大体わかってくるまでに時間がかかってしまいます。2回やってみた感じおおよそ15-20分前後らへんから、打ち解け始めた感じがしました。

なので、その辺位から面白くなってくるので、勇気を持って1時間とかを行っていくくらいが楽しい時間を過ごせるのではないか?と思っています。

逆に、2時間コースの場合、おしゃべりとか会話のキャッチボールとかが得意!とかではない人とか、おしゃべりで定期的に沈黙が起きるタイプの人だと、2時間コースの場合は少し長すぎるものかなと思った次第(私自身がそこまでおしゃべりが得意でないため)。 なので、不安だったら、とりあえず1時間くらいから始めるのがいいのかなと思いました。

個人的に問題になりそうな部分だなと思ったもの

現状体験したタイミング(2021年5月5日現在)でのここ大丈夫かな?とか思う部分があったのでその部分の記述です。

  • 金額いくらになるだろう?問題

記述時点でのβ料金で30分当たりに対して500円+指名料500円っていう料金にはなっているが、正式版になった際に、金額が上がるわけだけど、どの値段帯になるか?って考えた時に、指名料とか込みで、3-4000円程度は最低限ないと、正直な所結構きついものになるかな?と思っています。理由としては、システム的な維持費+キャストの維持費を考える必要になるのかなと思っています。

  • 結構キャスト負担とか大きいんじゃないか?問題

    他のキャストさんのヘルプとかに入る場合があったり、ゲスト側が入る前の5分前(場合によっては動作確認等)+指名された時間の後ろ30分が予約として入った場合は、機械的な損失が発生する事になるので、結構大変なんじゃないかな?と思った次第。 ただ、もちろん上記の場合、正式なサービス次第だろうけど、ある程度固定給とかが必要になってくるわけで、そうなると収入である時間+指名料とかになるから、結構どうしたもんかになりそう。かといって高すぎると、そもそも新規がはいってこなくなったりとなったりする事になるので、これもまた難しい。 となると新規に受け入れられる状態となると、時間部分は、現状の値段もしくは倍+指名料を2000円くらいで落ち着くんじゃないかなと個人的に思っています。

  • 指名料を介さない状態で実質的な指名が行えてしまう問題 一応発生するタイミングがあるので一応の記載。 ケースとしては以下のような場合 予約システム上で、指名済みの状態等を確認した上で、1人しか空いていない状態だった場合は、基本的にその人が来る状態を起こす事が出来てしまう状態が発生してしまう。

ただ、個人的には、運営側が許容されている状態なのかなと思っていて、理由としては、以下のようなもの - 今後キャストが増えた場合、ツールの使用なしでの手間が増えてきてそれらを行う事をしないであろう(規約的にツール等の情報取得も禁止されている) - 稼働がない状態よりはある状態の方が、売り上げ的には、収益を得る事が出来る。 といった理由からです。