まんま!の備忘録

まんま!の備忘録

ソフトウェア・ファームウェア・ハードウェア関連の備忘録

【ChatGPT】カテゴリーの整理

カテゴリーを増やしていたらなんだかいっぱいになってしまった。。
ちょっと整理しようかな。
ついでに古い内容の記事あったら更新していこ〜

ということで、カテゴリー何にしようかな。
ChatGPTに聞いてみよ。

以下記事でエクスポートしたブログ情報を使用。
taogya.hatenablog.com

grep TITLE taogya.hatenablog.com.export.txt | cut -b 7- > output.txt

これを元にカテゴリを作成してもらう。推論のみONにします。

クエリ
以下のブログタイトルがあります。
これらをカテゴリ分けしたいので、カテゴリ名だけを出力して。

...(ここにoutput.txtの内容をコピペ)

出力結果

料理・グルメ
自動車
家電・ガジェット
スマートフォン・モバイル
ソフトウェア開発・プログラミング
電子工作・組み込み・CAD
ネットワーク・OS・仮想化
ブログ運営・Webマネタイズ
金融・FX
デザイン・フォント制作
ライフスタイル・その他

クエリ
なるほど。
先ほど入力したタイトルに対して、このカテゴリを割り当てた表を作成して。



表を出力してくれるので、それ参考にしようかな。

【ChatGPT】 サラリーマンと個人事業主の収入・年金シミュレーション:現実を見据えた必要売上の試算

ChatGPTに年収400万円のサラリーマンと同等の手取りになるための個人事業主の収入をシミュレーションしてまとめてもらいました。
検索と推論ありで実施してます。
それっぽい結果にはなったような気がしております。
経費の割合で大分変わっちゃいますがね。。(経費にできるものがあるのはいいところでもあるのかな?)

以下ChatGPTがまとめた内容
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

はじめに
今回の記事では、サラリーマンと個人事業主の収入構造および老後の年金受給額の違いについて、具体的なモデルケースを用いてシミュレーションした結果をご紹介します。働いている期間中の手取りと老後に受け取る年金額の差を踏まえた場合、個人事業主は同等の生活水準を維持するために、いったいどれだけの売上が必要になるのかを再計算しました。

■ サラリーマンの場合
・年収(総支給額):4,000,000円
・給与所得控除:約1,240,000円(4,000,000円の場合の目安)
 → 課税所得:4,000,000円 − 1,240,000円 = 2,760,000円
社会保険料(厚生年金、健康保険、雇用保険等、従業員負担分):約600,000円
・各種控除(基礎控除配偶者控除など)を適用し、所得税(約5%)および住民税(約10%)を計算すると、実際の手取りは約3,120,000円/年となる
・老後の年金受給額(生涯年収400万円モデルの場合):平均年額約1,790,000円(15年間で約26,850,000円受給)

個人事業主の場合(初回シミュレーション)
・売上(収入):X円(求める値)
・必要経費:売上の50%(0.5X円)と仮定
青色申告特別控除:650,000円
 → 税引前所得:X − 0.5X − 650,000 = 0.5X − 650,000円
・さらに、所得税(約5%)および住民税(約10%)の計算に加え、国民年金(約202,000円/年)や国民健康保険(約200,000円/年)の自己負担も考慮する
 この試算では、サラリーマンと同等の手取り約3,120,000円/年を確保するためには、年間売上が約7,823,530円(約651,700円/月)必要と算出される

■ 老後の年金差と不足分の補填
・サラリーマンの年金:平均年額1,790,000円(15年間で約26,850,000円)
個人事業主の年金:国民年金のみで約780,000円/年(15年間で約11,700,000円)
・年金受給総額の差:26,850,000円 − 11,700,000円 = 約15,150,000円
この年金差を、たとえば40年間の労働期間で均等に補填すると、年間約378,750円の不足分となる

個人事業主の必要な売上の再計算
個人事業主は、働いている期間中にサラリーマンと同等の生活を送るため、また老後の年金差を補うため、年間手取りを
  3,120,000円 + 378,750円 = 約3,498,750円にする必要がある
前回のシミュレーションでは、手取りを3,120,000円にするために必要な年間売上が約7,823,530円と算出されたため、
不足分を補填するための再計算の結果、必要な年間売上は約8,710,000円となる(これを月あたりにすると約725,000円/月程度)

■ まとめ
今回のシミュレーションから、サラリーマンは厚生年金も加わるため、老後の年金受給額が比較的高くなる一方で、個人事業主国民年金のみの受給となり、老後資金に大きな差が生じることが分かりました。個人事業主として同等の生活水準と老後資金を確保するためには、働いている期間中により高い売上を実現する必要があり、今回のモデルケースでは年間約8,710,000円、月あたり約725,000円の売上が求められると試算されました。

なお、本記事で用いた数値は、必要経費率50%、青色申告特別控除650,000円、各種社会保険料や税率などを概算で設定したモデルケースに基づくものであり、実際の条件や状況により変動します。詳細なシミュレーションや個別の対策については、専門家へのご相談をおすすめします。


^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

もし請負で1人月の仕事をする場合は、75万円を最低ラインとした方がいいのかもしれませんね。
違うところいっぱいあるかもだけどご参考までに〜

はてなブログの累積投稿数とGoogle Search Consoleの1日のクリック数の集計

はてなブログの累積投稿数とGoogle Search Consoleの1日のクリック数の集計してみました。
アフィリエイトとかしてないですが、今後のためのメモ。

投稿数増えればクリック数も増えていっていますね〜
毎日やってるわけではないですが、地道に続ければ誰かは見てくれてるということですね^^


集計はJupyter labを使用します。
はてなブログの投稿数は以下のデータを使用します。
 [設定]
  → [詳細設定]
  → [エクスポート]
  → [記事のバックアップと製本サービス]
  → [ダウンロードする] で出力されるテキスト
Google Search Consoleは出力期間を指定してエクスポートした 日付.csv を使用します。
※下書きも集計対象なっちゃうので〜

以下Jupyter labでのコード。

%pip install jupyter pandas matplotlib numpy japanize_matplotlib
import pandas as pd
import re

# テキストファイルのパス
file_path = "はてなブログでエクスポートしたテキスト"

# 正規表現で日付を抽出
date_pattern = re.compile(r"DATE: (\d{2}/\d{2}/\d{4})")

# 日付を格納するリスト
dates = []

# ファイルを読み込みながら日付を抽出
with open(file_path, "r", encoding="utf-8") as file:
    for line in file:
        match = date_pattern.search(line)
        if match:
            dates.append(match.group(1))

# データフレームを作成
df = pd.DataFrame(dates, columns=["Date"])

# 日付のフォーマットを統一
df["Date"] = pd.to_datetime(df["Date"], format="%m/%d/%Y")

# 日付ごとのカウント
date_counts = df["Date"].value_counts().sort_index()
df_counts = date_counts.reset_index()
df_counts.columns = ["日付", "投稿数"]

# 結果を表示
print(df_counts)
import pandas as pd

# CSVファイルの読み込み
csv_file = "日付.csv"
df = pd.read_csv(csv_file, encoding="utf-8")

# 必要な列を抽出
df_filtered = df[ ["日付", "クリック数"] ]

# 日付を datetime 型に変換
df_filtered["日付"] = pd.to_datetime(df_filtered["日付"])

# 結果を表示
print(df_filtered)
# Outer結合(キー: 日付)
df_merged = pd.merge(df_counts, df_filtered, on="日付", how="outer")

# NaNを0に変換し、整数型に変換
df_merged.fillna(0, inplace=True)
df_merged["投稿数"] = df_merged["投稿数"].astype(int)
df_merged["クリック数"] = df_merged["クリック数"].astype(int)

# 日付の範囲を取得
date_range = pd.date_range(start=df_merged["日付"].min(), end=df_merged["日付"].max())

# 日付の連続したデータフレームを作成
df_date_range = pd.DataFrame(date_range, columns=["日付"])

# 連続した日付と元のデータをマージ(外部結合)
df_merged = pd.merge(df_date_range, df_merged, on="日付", how="left")

# **投稿数を累積和に変換**
df_merged["投稿数"] = df_merged["投稿数"].cumsum()
df_merged.fillna(method="ffill", inplace=True)  # 直前の値で補完

# 結果を表示
print(df_merged)
import matplotlib.pyplot as plt
import japanize_matplotlib
import numpy as np

# プロットの準備
fig, ax1 = plt.subplots(figsize=(12, 6))

# 棒グラフ(累積投稿数)
ax1.bar(df_merged["日付"], df_merged["投稿数"], color="mediumseagreen", alpha=0.5, label="累積投稿数")
ax1.set_ylabel("累積投稿数", color="mediumseagreen")
ax1.tick_params(axis="y", labelcolor="mediumseagreen")

# 折れ線グラフ(クリック数)
ax2 = ax1.twinx()
ax2.plot(df_merged["日付"], df_merged["クリック数"], color="darkorchid", label="クリック数")
ax2.set_ylabel("クリック数", color="darkorchid")
ax2.tick_params(axis="y", labelcolor="darkorchid")

# 軸ラベルとタイトル
ax1.set_xlabel("日付")
plt.title("累積投稿数と1日のクリック数")

# X軸のフォーマット調整
plt.xticks(rotation=45)
plt.grid(True, linestyle="--", alpha=0.7)

# Y軸の最小値を0に設定
ax1.set_ylim(bottom=0)  # 投稿数のY軸
ax2.set_ylim(bottom=0)  # クリック数のY軸

# 目盛り線の間隔(投稿数)および(クリック数)の設定
# ax1.set_yticks(np.arange(0, 150, 15))
# ax2.set_yticks(np.arange(0, 50, 5))


# 画像として保存
plt.savefig('output_graph.png', bbox_inches='tight', dpi=300)  # 保存先ファイル名とDPI指定

# 表示
plt.show()

食べるラー油(花椒入り)

痺れをお家でも体感したくて、花椒ホール買ってみました。

(粉末花椒は痺れたことない)

 

業務スーパーで50g 300円ちょっと。

 

そのまま食べると、、痺れます^ ^

なんかジャリジャリする時もあって、調べたら種が原因みたい。

 

ということで選別。

黒い粒みたいなのがあるので、取り除く。

外皮と種が合体しているのも除外。

 

 

んで、大さじ1に入るくらいとれました。

捨てるのももったいないので食べるラー油にしてみようかと。

 

花椒種 大さじ1

花椒外皮 大さじ1

輪切り唐辛子 大さじ1

塩 小さじ1

砂糖 小さじ1

 

これらをすり鉢にいれ、押し潰すようにしていきます。

種が全部潰れたら、金属ボールに移す。

 

 

ごま油 大さじ4

ニンニク 2かけ(国産なら1かけ)を粗みじん

 

これらをフライパンに入れ、極弱火にかけ時々かましながら、フライドガーリックを作る。

(火が強いとすぐ焦げます)

 

 

フライドガーリックができたら、先ほどの金属ボールに油ごと投入!

ボコボコが落ち着くまで混ぜます。

(放置でもいいのかな?)

 

冷めたら、煮沸消毒した容器(105g)に移して、完成!

f:id:Taogya:20250211205202j:image

 

 

ジャリジャリは残るものの、味は美味しくできました^ ^

(痺れは足らない。あと倍必要か?)

美味しいだけに、種いらんな。。

 

他に花椒種の有効活用あるかな〜。

ぺたぺた耳の人に合うイヤホン(有線)

通勤とか仕事の合間に使用していますカナル型のイヤホン、お昼過ぎてくるとイヤホン取れてきちゃうのですよね。。

 

耳にかけるタイプのカナル型でいいのがないか調べて、Amazonで見かけた以下商品がレビューも良さそうなので買ってみました。

 

Avantree E171:2,499円(2025/02/10時点)

E171

 

 

とっても良いですね!

一日中付けてても落ちない!

 

3時間くらいしてると耳が少し痛くなるので、そこだけ気になる点ですね。休憩挟めばいいだけですが。

でも、いままでの悩みが解消されました〜^ ^

StreamDiffusion on Google Colab でずんだもんをimg2img

Google Colab でずんだもん*1をimg2img*2 してみました。

やることは前回記事と同様です。
taogya.hatenablog.com

環境構築は、StreamDiffusion公式を参考にします。
github.com


では環境構築から始めます。
Googleドライブを開き、右クリックでGoogle Colaboratoryを選択します。

ファイル名を変えて保存しておきます。

必要パッケージをインストールします。

%pip install torch==2.1.0 torchvision==0.16.0 xformers --index-url https://download.pytorch.org/whl/cu121
%pip install git+https://github.com/cumulo-autumn/StreamDiffusion.git@main#egg=streamdiffusion[tensorrt]

以下のようなエラー出るかもですが一旦無視します。

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
torchaudio 2.5.1+cu124 requires torch==2.5.1, but you have torch 2.1.0+cu121 which is incompatible.
:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
torchvision 0.20.1+cu124 requires torch==2.5.1, but you have torch 2.1.0 which is incompatible.


セッション再起動の指示が出るので、再起動して先ほどのセルをもう一度実行します。

使用する画像をドラッグ&ドロップします。

警告出ますがセッション終了時にこのファイルは削除されてしまうので、それが嫌な方はGoogleドライブをマウントしてください。
今回はマウントしません。


TensorRT extensionをインストールします。

%pip install huggingface_hub==0.25.0
!python -m streamdiffusion.tools.install-tensorrt

huggingface_hubのバージョン指定は前回記事と同じエラー対策です。

wrapper.pyをダウンロードして、ドラッグ&ドロップします。
StreamDiffusion/utils/wrapper.py at main · cumulo-autumn/StreamDiffusion · GitHub

ではメインコード。以下のコードを参考にします。
StreamDiffusion/examples/img2img/single.py at main · cumulo-autumn/StreamDiffusion · GitHub

# Googleドライブをマウントした場合。今回不要。
# from google.colab import drive
# drive.mount('/content/drive')

import os
import sys
from typing import Literal, Dict, Optional

import fire


# __file__は使えないので修正する。
sys.path.append(os.getcwd())

# パスをGoogle Colab用に修正する。
from wrapper import StreamDiffusionWrapper

# __file__は使えないので修正する。
CURRENT_DIR = os.getcwd()


def main(
    # パスをGoogle Colab用に修正する。
    input: str = os.path.join(CURRENT_DIR, "input.png"),
    output: str = os.path.join(CURRENT_DIR, "output.png"),
    model_id_or_path: str = "KBlueLeaf/kohaku-v2.1",
    lora_dict: Optional[Dict[str, float]] = None,
    prompt: str = "1girl with brown dog hair, thick glasses, smiling",
    negative_prompt: str = "low quality, bad quality, blurry, low resolution",
    width: int = 512,
    height: int = 512,
    acceleration: Literal["none", "xformers", "tensorrt"] = "xformers",
    use_denoising_batch: bool = True,
    guidance_scale: float = 1.2,
    cfg_type: Literal["none", "full", "self", "initialize"] = "self",
    seed: int = 2,
    delta: float = 0.5,
):
    if guidance_scale <= 1.0:
        cfg_type = "none"

    stream = StreamDiffusionWrapper(
        model_id_or_path=model_id_or_path,
        lora_dict=lora_dict,
        t_index_list=[22, 32, 45],
        frame_buffer_size=1,
        width=width,
        height=height,
        warmup=10,
        acceleration=acceleration,
        mode="img2img",
        use_denoising_batch=use_denoising_batch,
        cfg_type=cfg_type,
        seed=seed,
    )

    stream.prepare(
        prompt=prompt,
        negative_prompt=negative_prompt,
        num_inference_steps=50,
        guidance_scale=guidance_scale,
        delta=delta,
    )

    image_tensor = stream.preprocess_image(input)

    for _ in range(stream.batch_size - 1):
        stream(image=image_tensor)

    output_image = stream(image=image_tensor)
    output_image.save(output)


if __name__ == "__main__":
    fire.Fire(main)

エラーです。

 RuntimeError: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx
 Model load has failed. Doesn't exist.
 ---------------------------------------------------------------------------
 RuntimeError                              Traceback (most recent call last)
 /content/utils/wrapper.py in _load_model(self, model_id_or_path, t_index_list, lora_dict, lcm_lora_id, vae_id, acceleration, warmup, do_add_noise, use_lcm_lora, use_tiny_vae, cfg_type, seed, 
 engine_dir)
     418                 model_id_or_path,
 --> 419             ).to(device=self.device, dtype=self.dtype)
     420 

 12 frames
 RuntimeError: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx

 During handling of the above exception, another exception occurred:

 NameError                                 Traceback (most recent call last)
 /content/utils/wrapper.py in _load_model(self, model_id_or_path, t_index_list, lora_dict, lcm_lora_id, vae_id, acceleration, warmup, do_add_noise, use_lcm_lora, use_tiny_vae, cfg_type, seed, 
 engine_dir)
     426             traceback.print_exc()
     427             print("Model load has failed. Doesn't exist.")
 --> 428             exit()
     429 
     430         stream = StreamDiffusion(

 NameError: name 'exit' is not defined

ランタイムのタイプを変更する必要があるようです。

一度セッション終了するので、環境全て消えてしまった。。
最初からやり直します。
30秒くらいで終了!速い!

ということで、M1 Macの方はGoogle ColabとかのWebサービス使ったほうがいいかもですね。
安いし、Google Colab Proも今度使ってみようかな。
colab.research.google.com

*1: ずんだもんのイラスト利用ライセンスは以下の通り。  zunko.jp  アフィリエイトとかしてないので非商用ですが、一応今回はこれに該当するかと。(あと東北在住です)    (ず・ω・きょ)

*2:画像を指定したプロンプトの内容に変換して画像出力するもの。 AI学習させているわけではない。

StreamDiffusion on M1 Mac でずんだもんをimg2img

ずんだもん*1の立ち絵を使用して、img2img*2 をやってみます。
画像の素材は以下参考。
www.pixiv.net


ダウンロードした素材をFireAlpacaで開いてpngにexportしておきます。

こちら参考環境構築します。
StreamDiffusion on a Mac · GitHub

git clone https://github.com/cumulo-autumn/StreamDiffusion.git
cd StreamDiffusion
python3.12 -m venv venv
. venv/bin/activate
pip install --pre torch torchvision --extra-index-url https://download.pytorch.org/whl/nightly/cpu

src/streamdiffusion/pipeline.py の以下メソッドを修正。

    def __call__(
        self, x: Union[torch.Tensor, PIL.Image.Image, np.ndarray] = None
    ) -> torch.Tensor:
        if self.device == "cuda":
            start = torch.cuda.Event(enable_timing=True)
            end = torch.cuda.Event(enable_timing=True)
            start.record()
        if x is not None:
            x = self.image_processor.preprocess(x, self.height, self.width).to(
                device=self.device, dtype=self.dtype
            )
            if self.similar_image_filter:
                x = self.similar_filter(x)
                if x is None:
                    time.sleep(self.inference_time_ema)
                    return self.prev_image_result
            x_t_latent = self.encode_image(x)
        else:
            # TODO: check the dimension of x_t_latent
            x_t_latent = torch.randn((1, 4, self.latent_height, self.latent_width)).to(
                device=self.device, dtype=self.dtype
            )
        x_0_pred_out = self.predict_x0_batch(x_t_latent)
        x_output = self.decode_image(x_0_pred_out).detach().clone()

        self.prev_image_result = x_output
        if self.device == "cuda":
            end.record()
            torch.cuda.synchronize()
            inference_time = start.elapsed_time(end) / 1000
            self.inference_time_ema = 0.9 * self.inference_time_ema + 0.1 * inference_time
        return x_output

StreamDiffusion をインストールします。

pip install .
pip install -r demo/realtime-img2img/requirements.txt
# モデルダウンロード先の .cache フォルダを変更したい場合は以下実行
export HF_HOME="/path/to/your/.cache/huggingface"


ではお試し実行します。
今回はdemo/realtime-img2img 内のサンプルではなく、examples/img2img/single.py 使用します。

cd examples/img2img
python single.py

エラー出ました

ImportError: cannot import name 'cached_download' from 'huggingface_hub' (./StreamDiffusion/venv/lib/python3.12/site-packages/huggingface_hub/__init__.py). Did you mean: 'hf_hub_download'?


huggingface_hub を指定したバージョンで入れれば良いようです。

pip install huggingface_hub==0.25.0


もう一度実行。次のエラー

    raise AssertionError("Torch not compiled with CUDA enabled")
AssertionError: Torch not compiled with CUDA enabled
Model load has failed. Doesn't exist.

Mac M1の場合はdeviceをmpsとして指定する必要があるようです。
examples/img2img/single.py を修正します。

    stream = StreamDiffusionWrapper(
        model_id_or_path=model_id_or_path,
        lora_dict=lora_dict,
        t_index_list=[22, 32, 45],
        frame_buffer_size=1,
        width=width,
        height=height,
        warmup=10,
        device="mps",
        acceleration=acceleration,
        mode="img2img",
        use_denoising_batch=use_denoising_batch,
        cfg_type=cfg_type,
        seed=seed,
    )

OKです。180秒くらいは時間かかりますね。(8GB RAM環境)
では、入力画像を先ほどのずんだもんに置き換えて、プロンプトを以下のようにしてみます。
examples/img2img/single.py

def main(
    :
    prompt: str = "background to sky, smile, jump, like a engel",
    :

かわいっ!けど背景がない!

先ほど、FireAlpacaで背景透過でpng exportしちゃいましたがそのせいかね。

設定変更して実行した結果がこちら。
かわいいけど、撲殺天使どくろちゃんを想起させる。。

背景はなぜか変わらなかったが、それはモデルをどうにかするしかないか?


実行できましたが、M1 MacにはAI開発むかないかもですね。
それと、ずんだもんはそのままが一番かわいいですね^^


生成AIはあまりにも遅いので、違う環境でやってみよ〜

*1: ずんだもんのイラスト利用ライセンスは以下の通り。  zunko.jp  アフィリエイトとかしてないので非商用ですが、一応今回はこれに該当するかと。(あと東北在住です)    (ず・ω・きょ)

*2: 画像を指定したプロンプトの内容に変換して画像出力するもの。  AI学習させているわけではない。

揚げナスを山椒と塩で

テレビ見てた時に出てきた居酒屋の一品。
片栗粉でまぶした茄子を揚げ、ボールに移す。
その中で、山椒と塩をふりかけガラガラとまぶしたもの。

美味しそう。。
ということで作ってみました。


なす4本を乱切りにしてボールに入れる。
塩小さじ1/2をボールに入れがらがらまぜる。
そこになすが溺れる程度の水を入れる。
(この工程は油を吸いすぎないようにするためと、アク抜き)

その間お風呂に入ります。
お風呂から上がったら水を切り、キチぺ(キッチンペーパー)をナスの上に置いておき、髪を乾かします。
(キチぺはナスが乾かないようになんとなく置いてるだけです。)

いい感じに水が切れてると思うので、片栗粉をまぶして、ナスが泳ぐくらいの油で揚げます。
(油が少ないとナスが全部持っていきます。。)
(片栗粉はなす2本に対し、大さじ2)

揚げたものを別のボールに敷いたキチぺの上に避難させます。
全てさらったらキチぺを引っこ抜き、ボールをがらがらさせながら塩と山椒をまぶします。


完成!!
(写真撮り忘れた)



とっても美味しくて、秒でなくなりました。
塩は多めのほうがいいです。
ぜひ試してみてください^^

iPhoneの連携カメラを使用しても、黒画面しか表示されない問題対策

iPhoneには連携カメラ(Continuity Camera)という機能がありまして、MacBookWebカメラとしてiPhoneを使用できます。
詳細は以下の通り。
support.apple.com


この通りやってみてFaceTimeで動作確認をしました。
接続はできているようだが、真っ黒画面(Black Screen)しか表示されない。。


色々調べましたが解決せず。
(再起動とか、AirPlayの設定だとか、WiFi/Bluetoothの設定だとか見直してみたが効果なし)


ファイアウォールの設定オフを試してみていなかったことに気づく。
オフにすると、表示された!


ファイアウォール機能しないのは嫌なのでオンに戻す。
結果、以下項目の設定を見直すことで、大丈夫そうです。


オプションを開く。

「ContinuityCaptureAgent」を「外部からの接続を許可」に設定する。

RemoteViewのあれこれ

リモートワークでRemoteViewを使用しています。
接続先はWindows PC、接続元はMacBookです。

いろいろ設定した際のメモを残します。

・接続先にAgentアプリをインストール
help.rview.com

・接続先にマルチディスプレイ用のソフトをインストール
RemoteViewは接続先の物理環境を使用します。
ディスプレイもマルチ環境でないと、マルチディスプレイ環境にできません。
help.rview.com

なので以下を導入して、物理的にディスプレイが足りない状況でも、マルチディスプレイ環境を使用できるようにします。
github.com

・遠隔操作中に接続元の画面が見えてしまうので、画面ロック機能で見えなくする設定
help.rview.com
help.rview.com

・接続元にOpenJDK14をインストール
help.rview.com

・接続元にSimple Launcherをインストール
help.rview.com

・遠隔操作中で、コピペの際に一定のサイズを超えるとコピーされない問題対策
help.rview.com


最後に。
Windows PC間の接続でないとリモートビデオ・オーディオ機能は使用できないようです。
help.rview.com

なので、画面共有はRemoteViewから、音声は別端末などの環境から行う必要があります。


Windows <-> Mac 間の接続だからなのか結構な頻度で固まります。
安定しないサービスで残念です。。改善してほしいなぁ〜

[2025/02/23 追記]
画面解像度を4Kにすると安定しないようです。
1080pだと安定するようになりました^^