ゲーム開発備忘録

ゲームプログラマー UE4・5向けの記事を書いておりますので見ていただけるとありがたいです。

【UE6α・Verse入門】〈Tips〉UE6のVerseでプレハブ間の関数を実行しよう

目次

 

はじめに

UE6mainのブランチが公開されて、だれでもUE6のVerseに触ることができるようになりました。

今回はその第一弾として異なるプレハブのVerse同士で関数を呼ぶ方法について解説してみます。

※UE6mainは2026/06/24現在の情報です。

αですらない開発中のものなので大きく仕様変更される可能性が非常に高いです。
あくまで参考程度に閲覧時点での最新情報をご参照ください。

 

個人の備忘録としてまとめています。誤った情報がある場合があります。

コメントにてご指摘のほどお願いいたします。

 

前提として
①UE6のエンジンビルドが済んでいること。

②Verseの実行環境が整っていることが必要です。


EpicのGithubアクセス権があればエンジンをこちらから落としてください。

https://github.com/EpicGames/UnrealEngine/tree/ue6-main

 

こちらを参考に手元の環境でエンジンビルドをしてください。
(~100GBくらいの容量の余裕があったほうがいいです)

dev.epicgames.com


そのままだと(記事公開時点では)Verseプロジェクトが作れないので、
こちらを完遂してVerseが書けるようになり実行できるようにしてください。
https://ronaldburns.dev/projects/how-to-verse-in-ue6/

 

解説

⓪ 見た目用のメッシュを用意

Verseからメッシュアセットにアクセスできるようにエンジンコンテンツから自作のGameFeaturePlugin側にメッシュを持ってきておきます。

 

今回は以下の2つ
/Engine/BasicShapes/Cone
/Engine/BasicShapes/Cube

 

こちらを自作のGameFeaturePluginにコピーしました。



① Verse - ファイルの作成

VerseExplorerの自作プラグインから2つVerseコンポーネントを追加します。


右クリック->CreateVerseFileから


それぞれSceneGraphComponentを選びます。

 

それぞれ以下のように名前を付けました。

receive_nofity_component「通知を受け取る側」のコンポーネント。

sent_notify_component 「通知を送る側」のコンポーネント。

② Verse - 受け取り処理

receive_nofity_componentをVSCodeで開きます。
ここには外部から実行してもらうための受け取り用の関数を1つ作ります。

関数名はNotify

文字列Messageを受け取って画面にPrintするシンプルな関数です。

    Notify<public>(Message:string):void =
        # ?Color : 画面表示テキストの色(NamedColors から選ぶ)。受信成功は緑にする。
        # ?Duration : 画面に表示する秒数(デフォルト2秒)。
        Print("receive_nofity_component received: {Message}",
        ?Color := NamedColors.Green, ?Duration := 5.0)

 

全文 ▼

using { /Verse.org }            # Print など基本機能
using { /Verse.org/Native }     # ネイティブ連携
using { /Verse.org/SceneGraph } # component / entity など SceneGraph の中核
using { /Verse.org/Simulation } # シミュレーション(ゲーム実行)関連
using { /Verse.org/Colors }     # NamedColors(Print の色指定)に必要

# ============================================================================
# receive_nofity_component : 「通知を受け取る側」のコンポーネント。
# ============================================================================
receive_nofity_component<public> := class<final_super>(component):

    # ------------------------------------------------------------------------
    # Notify : 外部(sent_notify_component)から呼ばれる「公開の入口」となる関数。
    #
    #   ・Notify(Message:string):void の読み方
    #       Notify        … 関数名
    #       (Message:string) … 引数。Message という名前の string(文字列)を1つ受け取る
    #       :void         … 戻り値の型。void は「何も返さない」という意味
    #   ・<public> を付けないと別ファイルから呼べないので、入口となる関数には必須。
    #   ・「=」の後ろが関数の中身(本体)。
    # ------------------------------------------------------------------------
    Notify<public>(Message:string):void =
        # ?Color : 画面表示テキストの色(NamedColors から選ぶ)。受信成功は緑にする。
        # ?Duration : 画面に表示する秒数(デフォルト2秒)。
        Print("receive_nofity_component received: {Message}",
        ?Color := NamedColors.Green, ?Duration := 5.0)

 

③ Verse - 送信処理

sent_notify_componentをVSCodeで開きます。

ここはエディタで指定したターゲットに対して通知を送る側のコンポーネントです。

エディタにターゲットとメッセージの内容を指定するために2つの変数を用意します。


1.TargetEntity - プレハブへの参照をさせるため


エディタの参照ピッカーが選ぶ対象はentityのためここはentity型を指定します。

    @editable
    var TargetEntity<public>:?entity = false


ちなみに

receive_nofity_component = false と型を変えた場合、

エディタ側に「コンポーネントを選ぶピッカー」が出せない

(=割り当て手段がない)ため、この用途では成立しません。


実際にやってみたところ、エディタには「型」のピッカーが出て、

割り当てると送信側エンティティ内に新インスタンスが生成された(InitializeComponentField の挙動)。

別プレハブは参照されず、自前の新コンポーネントの Notify が緑ログを出す。
という挙動になるようです。

2.MessageToSend - メッセージ内容

receive側に送る文字列です。

    @editable
    var MessageToSend<public>:string = "Hello from sent_notify_component"


こちらも @editableを付けることでエディタに公開しています。

3.NotifyReceiver- メッセージ送信関数

TargetEntity から receive_nofity_component を取り出してその Notify を呼ぶ本体です。

 

TargetEntityが空だったり、receive_nofity_componentを持っていない場合失敗となり、
持っている場合はreceive_nofity_componentのNotifyをMessageToSendを引数として呼び出します。

NotifyReceiver():void =
        if:
            Target := TargetEntity?
            ReceiveComp := Target.GetComponent[receive_nofity_component]
        then:
            ReceiveComp.Notify(MessageToSend)
        else:
            Print("sent_notify_component: TargetEntity has no receive_nofity_component",
            ?Color := NamedColors.Red, ?Duration := 5.0)



全文 ▼

using { /Verse.org }            # Print など基本機能
using { /Verse.org/Native }     # ネイティブ連携
using { /Verse.org/SceneGraph } # component / entity など SceneGraph の中核
using { /Verse.org/Simulation } # シミュレーション(ゲーム実行)関連
using { /Verse.org/Colors }     # NamedColors(Print の色指定)に必要

# ============================================================================
# sent_notify_component : 「通知を送る側」のコンポーネント。
# ============================================================================
sent_notify_component<public> := class<final_super>(component):

    # ------------------------------------------------------------------------
    # TargetEntity : 通知先のプレハブ(receive側を持つエンティティ)への参照。
    #
    #   ・@editable
    #       この変数をUnrealエディタのDetailsパネルに表示する指定。
    #       実行前にエディタ上で「receive側プレハブ」をここにドラッグ割り当てする。
    #   ・var
    #       「変数(あとで値を入れ替えられる)」の宣言キーワード。
    #       var を付けないと定数(再代入不可)になる。
    #   ・?entity (型の前の「?」)
    #       option(オプション)型。「entity が入っているかもしれないし、空かもしれない」。
    #       未割り当てでもエラーにならず安全に扱えるようにするための型。
    #   ・= false
    #       option 型の「中身が空」を表す初期値。false は「未設定」の意味。
    #       (エディタで割り当てれば、実行時には中身ありの状態になる)
    # ------------------------------------------------------------------------
    @editable
    var TargetEntity<public>:?entity = false

    # ------------------------------------------------------------------------
    # MessageToSend : receive側に送る文字列。エディタで編集できるようにする。
    #
    #   ・関数 Notify の「引数」はコードで渡す値であり、そのままではエディタに出ない。
    #     エディタで指定したい値は、このように @editable 変数として持っておき、
    #     呼び出し時にその変数を引数として渡す、という形にする。
    #   ・型は string(文字列)。初期値を入れておくと未編集でもその文字列が送られる。
    #   (数値も送りたい場合は「@editable var SendValue:int = 0」のように増やし、
    #     Notify 側の引数も増やして Notify(MessageToSend, SendValue) のように渡す)
    # ------------------------------------------------------------------------
    @editable
    var MessageToSend<public>:string = "Hello from sent_notify_component"

    # ------------------------------------------------------------------------
    # OnBeginSimulation : このコンポーネントがゲーム内で動き始めるときに
    #                     エンジンが自動で呼び出すライフサイクル関数。
    #
    #   ・<override> … 親クラス component が持つ同名関数を「上書き」して中身を差し替える指定。
    #   ・(super:)OnBeginSimulation()
    #       super は「親クラス」を指す。先に親側の初期化処理を実行してから、
    #       自分の処理を書くのがお約束。これを忘れると親の準備が漏れることがある。
    # ------------------------------------------------------------------------
    OnBeginSimulation<override>():void =
        (super:)OnBeginSimulation()  # まず親の処理を実行
        NotifyReceiver()             # その後、自作の通知処理を呼ぶ

    # ------------------------------------------------------------------------
    # NotifyReceiver : TargetEntity から receive_nofity_component を取り出して
    #                  その Notify を呼ぶ、このクラスの中心となる処理。
    #
    #   if / then / else の使い方がポイント。
    #   Verse では「失敗するかもしれない式」を if の条件に並べて書ける。
    #   条件の式が全部成功したら then、どこか1つでも失敗したら else に進む。
    # ------------------------------------------------------------------------
    NotifyReceiver():void =
        if:
            # (1) TargetEntity? … option から中身を取り出す。
            #     中身が空(未割り当て)なら、ここで「失敗」して else に飛ぶ。
            #     成功したら、取り出した entity を Target に入れる。
            Target := TargetEntity?

            # (2) Target.GetComponent[receive_nofity_component]
            #     エンティティ Target が持つコンポーネントの中から
            #     receive_nofity_component 型のものを取得する。
            #     ・角括弧 [ ] は「失敗するかもしれない呼び出し」を表す記法。
            #       目的の型のコンポーネントが無ければ失敗して else に飛ぶ。
            #     成功したら、取得したコンポーネントを ReceiveComp に入れる。
            ReceiveComp := Target.GetComponent[receive_nofity_component]
        then:
            # (1)(2) が両方成功したときだけここに来る。
            # 取得した receive 側コンポーネントの公開関数 Notify を呼び出す。
            # 引数には、エディタで編集できる @editable 変数 MessageToSend を渡す。
            ReceiveComp.Notify(MessageToSend)
        else:
            # 参照が未割り当て、または相手が receive_nofity_component を
            # 持っていない場合のフォールバック(保険)処理。
            # 失敗(未割り当て等)の警告なので赤で表示する。
            Print("sent_notify_component: TargetEntity has no receive_nofity_component",
            ?Color := NamedColors.Red, ?Duration := 5.0)


すべて書けたらCompile Verseを忘れずに

④ プレハブの作成 

いよいよ本番です。
送受信それぞれにVerseComponentをもつプレハブを作りましょう。
ここはUnityっぽいですね。

プラグインフォルダ内でコンテンツブラウザから右クリック=>EntityPrefabを選びます。

 

New prefabを押します。



名前はEntityPrefabの頭文字をとってEP_としました。

EP_Receiver - 受信用のプレハブ
EP_Transmitter - 送信用のプレハブ


プレハブの編集 EP_Receiver 

エディタが開いたらDetailsの+componentから見た目を追加してきましょう。
Cubeを選びました。

もしくはコンテンツブラウザからドラッグ&ドロップでも行けます。

(プラグインフォルダのアセットなら)

上手くできない場合は再度Verseコンパイルしておきましょう。

VerseコンパイルすることでMeshアセットが参照される。

 

receive_nofity_componentも追加して以下のようになればOK



プレハブの編集 EP_Transmitter


同じようにDetailsの+componentから見た目を追加してきましょう。
こちらはConeを選びました。

もしくはコンテンツブラウザからドラッグ&ドロップで。


sent_notify_componentを追加してこのようになったらOK

 

⑤ レベルの作成

実際に作ったものを配置するレベルを作成します。

File->NewLevelから

 

Basicにしました。

 

プラグインフォルダ内L_NotifySampleとして保存しました。

 

⑥ プレハブの配置

そうしたら、それぞれのプレハブを1つづつレベルに配置します。

 

⑦ トランスミッターの送信先指定

EP_Transmitterを選択します。
Outlinerに出ないのは、バグですかね。?
とにかくConeを押すとDetailsが表示されます。
sent_notify_componentを選択すると、、

 

Verse上で公開した変数が表示されます。

 

TargetEntityを指定する前に、どのEntityに向けて送信するかを確認しておきましょう。

EP_Receiverを選択して後ろのidを控えます。1225938....でした。

 

TargetEntityでReceiverプレハブを指定します。

 

素敵なメッセージを入れて準備完了。

 

実行ボタンを押してチェックしましょう。

 

はい。こんちゃっす。

 

 

最後に


UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやX(Twitter)のフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

投げ銭を投げる

 

【UE5】〈Tips〉UE5.8 C++環境構築セットアップ(Windows)

目次

メモ

⓪ビルドエラーについて

UE5.7までうまくいっていた環境でUE5.8を実行したときに以下のエラーで失敗したためMSVCの更新と一緒に具体的な手順をこちらで解説します。


Using Unreal Build Accelerator local executor to run 47 action(s)  CPU 12 physical cores, 24 logical cores  Memory 95.93 GB physical, 41.07 GB/101.93 GB committed  UBA Storage capacity 40 GB[1/47] Compile [x64] SharedPCH.UnrealEd.Project.ValApi.ValExpApi.Cpp20.cpp0>ContainerAllocationPolicies.h(843,3): Error C7539 : 'ForAnyElementType': ユーザー宣言コンストラクターを持つクラスには、クラスと同じ名前のメンバーを含めることはできません using SuperClass::ForAnyElementType::ForAnyElementType; ^C:\Program Files\Epic Games\UE_5.8\Engine\Source\Runtime\Core\Public\Containers\ContainerAllocationPolicies.h(843,3): note: テンプレートインスタンス化コンテキスト (最初に最も古いもの) はC:\Program Files\Epic Games\UE_5.8\Engine\Source\Runtime\Core\Public\Containers\ContainerAllocationPolicies.h(918,2): note: コンパイル対象の クラス テンプレート インスタンス化 'TSizedHeapAllocator<IndexSize,BaseMallocType>' のリファレンスを確認してください}; ^C:\Program Files\Epic Games\UE_5.8\Engine\Source\Runtime\Core\Public\Containers\ContainerAllocationPolicies.h(898,1): note: コンパイル対象の クラス テンプレート インスタンス化 'TSizedHeapAllocator<IndexSize,BaseMallocType>::ForAnyElementType' のリファレンスを確認してください BaseMalloc::Free(InData);^Total time in Unreal Build Accelerator local executor: 31.83 seconds

Result: Failed (OtherCompilationError)Total execution time: 33.95 secondsTrace written to file C:\Users\-\AppData\Local\UnrealBuildTool\Trace.uba with size 8.9kb0>Microsoft.MakeFile.Targets(44,5): Error MSB3073 : コマンド ""C:\Program Files\Epic Games\UE_5.8\Engine\Build\BatchFiles\Build.bat" UE58CPlusEditor Win64 Development -Project="D:\UE5Projects\UE58CPlus\UE58CPlus.uproject" -WaitMutex -FromMsBuild -architecture=x64" はコード 6 で終了しました。

①Visual Studio 2022 17.14をいれる

https://learn.microsoft.com/ja-jp/visualstudio/releases/2022/release-history

最新のものを入れた。17.14.35



ダウンロードされたexeを叩くと、インストーラーが表示される。

この時にMSVC v143 - VS 2022 C++ x64/x86 ビルドツール (最新)にチェックが入っているのを確認すること。

ワークロードから画像の内容にチェックを入れてダウンロード&インストール
(27GBくらい)

 

チェックを入れるコンポーネントを具体的に知りたい場合は公式のページを参照

dev.epicgames.com

 

②BuildConfiguration.xmlを更新する

C:\Users\ユーザー名\AppData\Roaming\Unreal Engine\UnrealBuildTool

ここにあるBuildConfiguration.xmlをエディタで編集する。

MSVCを誤ったバージョンを参照しないように、MSVC 14.44.35207を明示的に指定しておく。

<?xml version="1.0" encoding="utf-8" ?>
  <WindowsPlatform>
    <CompilerVersion>14.44.35207</CompilerVersion>
  </WindowsPlatform>
</Configuration>

 



ブロジェクトファイルをビルドして通ることを確認して完了。

おつかれさまでした。

 

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやX(Twitter)のフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

投げ銭を投げる

 

【椅子】オカムラ シルフィーのアームレストの取り外し方

目次

 

はじめに

この記事では、シルフィーにアームレストがついている状態で購入して、

 

アームレストを外したいケースでの対処方法について解説します。

 

背景として、ギターやハンコンでのゲームなどアームレストが邪魔になるケースがあったためです。

 

適切な道具を使うことで非破壊的に着脱できますが、公式サポートが受けられなくなるリスクや故障・安全上の問題になる可能性がありますので、自己責任の上で行ってください。

 



メモ

椅子を裏返します。

 

アームレストは六角穴付ボルト2本で止まっています。

 

かなりのトルクが必要なので長めのL型六角レンチで外していきます。

 

 

六角穴付ボルトはM6規格ですので、使用したレンチは5mmのものを使います。

 

手元にない場合はこれらを購入しておくと便利です。

amzn.to

amzn.to

 

ねじ止め剤が塗布されており、なかなか硬かったですが取り外せました。

 

 

再度取り付ける場合も同じようにボルト2本で組付けましょう。

 

ネジはなくさないように保管しましょう。

 

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやX(Twitter)のフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

投げ銭を投げる

 

【UE5】〈Tips〉時間同士の足し算、引き算

目次

 

はじめに

UEで「現在時刻に60秒を足したい」と思ったとき、どの型を使えばいいか迷ったことはありませんか?

UEには時間を扱う構造体として FDateTime と FTimespan が用意されています。

どちらも内部的には int64 のTick値を保持していますが、意味が全く異なります。

 

この記事では、これらの型の演算子を網羅的に検証し、どの組み合わせが有効で、どれがベストなのかを明らかにします。

 

個人の備忘録としてまとめています。誤った情報がある場合があります。

もっと良い方法などもあるかもしれません!
コメントにてご指摘のほどお願いいたします。

 

UE5.6で解説します。

 

解説

①時間を表す構造体

FDateTime — 「時刻」を表す型

FDateTime は 特定の一点の時刻(いつ)を表します。

// 現在のUTC時刻を取得
FDateTime UtcNow = FDateTime::UtcNow();

// 現在のローカル時刻を取得
FDateTime LocalNow = FDateTime::Now();

// 特定の日時を指定して生成
FDateTime SpecificDate(2026, 3, 23, 15, 0, 0, 0); // 2026323 15:00:00.00
FTimespan — 「時間の長さ」を表す型

FTimespan は 時間の長さ(どれだけ)を表します。特定の日付に紐づかない「期間」です。

// ファクトリメソッドで生成
FTimespan OneMinute = FTimespan::FromSeconds(60.0);
FTimespan ThreeHours = FTimespan::FromHours(3.0);
FTimespan HalfDay = FTimespan::FromDays(0.5);

// コンストラクタで生成(時, , 秒)
FTimespan Duration(2, 30, 0); // 2時間300

// 値の取得
double TotalSec = OneMinute.GetTotalSeconds(); // 60.0
double TotalMin = OneMinute.GetTotalMinutes(); // 1.0

 

Blueprint での注意点

C++ の FromDays 等は float / double を受け取るため 0.5(半日)のような小数値を渡せます。

しかし、Blueprint の Make Timespan ノードは全引数が int32 のため、小数値を直接指定できません。

半日を表現したい場合は Days=0, Hours=12 のように分解するか、From Days ノードを使ってください。

 

Make Timespan と Make Timespan2 の違い

Make Timespan と Make Timespan2 の違いは最後の引数だけです。

Make Timespan はミリ秒(Milliseconds)、Make Timespan2 はナノ秒の端数(FractionNano)で精度を指定します。

 

②演算子の検証

FDateTime - FDateTime = FTimespan

2つの時刻の差を求めると、経過時間(FTimespan) が得られます。

FDateTime Start(2026, 3, 23, 10, 0, 0);
FDateTime End(2026, 3, 23, 13, 30, 0);

FTimespan Elapsed = End - Start;

UE_LOG(LogTemp, Log, TEXT("経過時間: %.1f "), Elapsed.GetTotalSeconds());
// 経過時間: 12600.0

UE_LOG(LogTemp, Log, TEXT("経過時間: %.1f 時間"), Elapsed.GetTotalHours());
// 経過時間: 3.5 時間

「15:00 から 12:00 を引くと?」→ 答えは「3時間」という長さになります。直感通りですね。

FDateTime + FTimespan = FDateTime

時刻に時間の長さを足すと、新しい時刻 が得られます。

FDateTime Now = FDateTime::UtcNow();
FTimespan OneHour = FTimespan::FromHours(1.0);

FDateTime OneHourLater = Now + OneHour;

UE_LOG(LogTemp, Log, TEXT("現在: %s"), *Now.ToString());
UE_LOG(LogTemp, Log, TEXT("1時間後: %s"), *OneHourLater.ToString());

「今日の15:00」+「1時間」=「今日の16:00」。これも自然です。

 

FDateTime - FTimespan = FDateTime

時刻から時間の長さを引くことも可能です。

FDateTime Now = FDateTime::UtcNow();
FTimespan ThirtyMinutes = FTimespan::FromMinutes(30.0);

FDateTime ThirtyMinutesAgo = Now - ThirtyMinutes;

UE_LOG(LogTemp, Log, TEXT("30分前: %s"), *ThirtyMinutesAgo.ToString());

 

FDateTime + FDateTime = コンパイルエラー

FDateTime A(2026, 3, 23, 10, 0, 0);
FDateTime B(2026, 3, 23, 15, 0, 0);

FDateTime Result = A + B; // コンパイルエラー!
// error: binary 'operator+': no operator found

「3月23日 10:00」+「3月23日 15:00」= ???

これは意味のない演算です。
地理に例えるなら「東京 + 大阪 = ???」のようなもの。2つの絶対位置を足し算することに意味はありません。

一方、引き算は「東京から大阪までの距離」のように相対的な差を求めるので意味があります。

内部的には FDateTime も FTimespan も同じ int64 のTick値を持っているため、Epicが operator+ を実装すること自体は簡単です。しかし、あえて提供していません。

これは型システムによって意味のない操作をコンパイル時に防ぐという、意図的な設計判断のように見えます。

 

Blueprint での注意点

C++ では FDateTime + FDateTime はコンパイルエラーになりますが、

Blueprint の + ノードではコンパイルが通ってしまいます。

内部のTick値がそのまま加算されるため、結果は意味のない日時になります。

 

例: 2026/3/23 13:30 + 2026/3/23 10:00 → 4051/6/12 23:30(ゴミ値)

Blueprint では型チェックが緩いため、C++ のような保護が働きません。

FDateTime 同士の加算は意味がないので、Blueprint でも使わないようにしましょう。



FTimespan 同士の演算

時間の長さ同士は自由に演算できます。

FTimespan A = FTimespan::FromHours(2.0);
FTimespan B = FTimespan::FromMinutes(30.0);

FTimespan Sum = A + B; // 2時間30
FTimespan Diff = A - B; // 1時間30
FTimespan Doubled = A * 2.0; // 4時間
FTimespan Halved = A / 2.0; // 1時間

UE_LOG(LogTemp, Log, TEXT("合計: %.1f "), Sum.GetTotalMinutes()); // 150.0
UE_LOG(LogTemp, Log, TEXT("差分: %.1f "), Diff.GetTotalMinutes()); // 90.0
UE_LOG(LogTemp, Log, TEXT("2: %.1f 時間"), Doubled.GetTotalHours()); // 4.0
UE_LOG(LogTemp, Log, TEXT("半分: %.1f 時間"), Halved.GetTotalHours()); // 1.0

「2時間 + 30分 = 2時間30分」。長さ同士の足し算は自然ですね。

 

最後に


UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやX(Twitter)のフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

投げ銭を投げる

 

【Claude Code】VSCodeでopenLast not foundで開かないバグの対処法

 

メモ

Claude Code for VS Code において、

以下の不具合でウィンドウが出なくなる問題に当たった。

command 'claude-vscode.editor.openLast' not found

 

試したこと

VSCode再起動->効果なし

PC再起動->効果なし

 

Claude Code for VS Code バージョン2.1.53



 

同様の問題がRedditでも報告されていた。
最新のものに問題があり、ダウングレードが良いみたい。

https://www.reddit.com/r/ClaudeAI/comments/1rd9kl1/fix_for_command_claudevscodeeditoropenlast_not/

 

(引用:

https://www.reddit.com/r/ClaudeAI/comments/1rd9kl1/fix_for_command_claudevscodeeditoropenlast_not/)

  1. VS Code の拡張機能タブに移動します。

  2. Claude Code を 見つけて、歯車アイコン ⚙️ をクリックします。

  3. 「別のバージョンをインストール...」 をクリックします。

  4. ドロップダウンリストから 2.1.49 を選択します。

  5. VS Code をリロードします。

 

①拡張機能からClaude Code for VS Codeをひらく


②歯車アイコン->特定のバージョンのVSIXをダウンロード

 

③2.1.49 を選択

 

④自身のPCのプラットフォームを選択。


(自分の場合はWindows 64bit を選んだ)

 

⑤VSIXのダウンロード

 

⑥自動更新のチェックを外しておく

 

⑦ダウンロードしたVSIXをVSCodeの拡張機能にドラッグ&ドロップしてインストール


⑧拡張機能の再起動

 

なおりました。履歴も生きています。

 

最後に

既にイシューとして挙がっているので、修正は早いかもしれません。

github.com

 

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやX(Twitter)のフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

投げ銭を投げる

 

【Steamworks】二度ある沼は三度ある。初回登録で3連続ハマった話(組織/表示/英語名)

目次

はじめに

Steamでゲームを出す人々が、遅かれ早かれ通る道。


それが Steamworks です。

 

その登録は、雨上がりの水たまりを避けるみたいに――
ちょいちょいっと軽やかに進むはずだ、と私は思っていました。

 

ところが現実は(というか私の場合は)、ぬかるみでした。

この記事は、そんな私が Steamworks 登録の 『ぬかるみ』 を一つずつ抜け出していった記録です。

一部イレギュラーなケースもありますが誰かの参考になれば幸いです。

 

結論だけ早くおしえろという映画を倍速再生されるような方は、上部リンクのまとめから結論をご確認いただけます。

※本記事の公開日は2026年2月24日です。
皆さんが読む頃には水たまりの一つ無い、快適な地面が広がっている可能性もあります。
本記事はあくまで参考として Steam Support や Tax Identity Solutions などを活用し最新の情報をご確認の上、判断してください。

第0章:門の前でつまずく。「自分のSteamworks が作れない」

まず私は「自分のゲームは自分のパートナー(組織)で出すんだな」と理解し、
勢いよく Steamworks にサインインしました。

partner.steamgames.com

 



パートナーID.....?

この画面は自分のダッシュボードじゃない!!

何が起きていたのか

過去に別のSteamworksパートナー(組織)でチーム制作をしていました。
この時、私は 招待ユーザー として参加していました。

 

▽招待を受けた時のメール


この招待ユーザーとして受けるときに自分のSteamアカウントと紐づきます。

つまり、Steamアカウントでログインすると自身のSteamworksではなく直接組織のSteamworksに移動してしまう という現状に陥りました。
(UIでは理由がほぼ分からないので、気持ちよく迷子になれます)

 

▽この画面から

 

▽ログインするとこの画面になる

ここで私は叫びます。
「助けて Steam Support」と。

 

この章で分かったこと:招待ユーザーとして別組織に紐づいていると、ログイン直後から自分のSteamworksではなく「その組織の画面」に飛ばされることがある。


第1章:助けて Steam Support

立ち止まってもしょうがないので、原因を探るべく Steam Support に問い合わせました。

 

質問

現在 Steamworks パートナーに
招待ユーザーとして参加していましたが、
並行して個人でゲームを配信するため、
新しい Steamworks パートナーを作成したいです。

この Steam アカウントで
新規パートナー作成を有効化していただけますか?

 

回答

(翻訳)

こんにちは、ご連絡ありがとうございます。

 

既存のパートナーアカウントに登録済みのアカウントでは、Steam Directへの新規登録はできません。以下の2つの選択肢があります:


選択肢1.
このパートナーグループのメンバーに、現在のSteamアカウントをパートナーグループから削除するよう依頼してください。その後、その既存アカウントでSteamworksパートナーとしてオンボーディングできます。現在のパートナーの継続的な参加が必要な場合、オンボーディング完了後に管理者が再度追加できます。


選択肢2.
新しいSteamユーザーアカウントを作成し(同じメールアドレスを使用可)、そのアカウントでSteam Directに登録してください。新しいパートナーアカウントの設定とオンボーディングプロセスが完了したら、現在のユーザーアカウントを新しいパートナーに招待できます。1つのユーザーアカウントが複数のパートナーアカウントに属することは問題ありません。

最も簡単な解決策はオプション2です。オンボーディングプロセスはこちらから開始できます:
https://partner.steamgames.com/steamdirect

ご質問があればお知らせください。

よろしくお願いします、
ニコライ

 

ニコライありがとう

つまり、選択肢は以下の二つです。

 

・所属している組織から脱退するように管理者に言ってね。

・新規アカウントを作ってね。

うーーん、悩みました。

一番やりやすいのは新規アカウントの発行です。
なぜなら、所属している組織からの脱退は、組織のダッシュボードに入って自分自身をリストラする、もしくは管理者に蹴ってもらう、ということです。

 


これをすると組織の誰かに再度招待してもらわない限り戻ることができません。

幼少期からクラス一丸を叩きこまれる、我が国ニッポンでそんなことをしたら、
村八分どころか島流しを自ら選ぶということになります。

 

とはいえ、アカウントを作りまくるのも管理がややこしい、、

そこで、恥を忍んで、組織の人間に「必ず戻ってくるから」と伝え、

一時的に組織を抜けることを選びました。

(のちに自分も管理アカウントでログインできることが分かったので、この時の覚悟は特に不要だったのは、また別のお話)

 

この章で分かったこと:招待ユーザーのままだとSteam Directの新規登録に進めない(「一時的に抜ける」か「別アカウント」かの二択が提示される)。

第2章:ついにやったぞKYC提出。

さて、無事セルフリストラを完遂できた私は、

念願の登録画面に遷移することができました。

 

今までの苦労は何だったんだというくらい、あっさりと。

partner.steamgames.com


さて、登録を進め、KYC(本人確認)に到達します。
提出する身分証は、日本の運転免許証。


ここまでは、まだ空は明るい。

この章で分かったこと:入口さえ正しければ、登録フロー自体は驚くほどサクサク進む。

第3章:暗雲立ち込めるリジェクト。…そして“理由が見えない”

提出後、エラーでリジェクトされました。
まあ、ここまでは分かる。よくある。

 

問題は次です。
「リジェクト理由を見よう」と思ってダッシュボードから詳細表示を開いたら――

このページは閲覧できません

え?

 

リジェクトされたのに、理由が見えない。
指示が読めない。次にやることが分からない。

 

こっちは登録料14,300円払ったんだぞ(泣)


1日漬けましたが、表示が変わることはありませんでした。

 

この章で分かったこと:KYCがリジェクトされても、理由ページがすぐ見えるとは限らない(しかも見えないと何も進めない)。

第4章:(再)助けて Steam Support

ここで私は再度 Steam Support に問い合わせました。

 

質問

(翻訳)

Steamから税務情報の確認に関するメールを受け取りました。しかし、申請したアカウントでログインしても、該当ページが見つかりません。どうすれば良いか教えていただけますか?

 

回答

(翻訳)

こんにちは、

お問い合わせいただきありがとうございます。チームに連絡済みで、現在調査中です。修正は間もなく行われる見込みですが、具体的な時期については現時点ではお伝えできません。

よろしくお願いいたします、
コナン

 

名探偵でも分からないなら待つしかない。

 

待つ。
Steamworks登録で「待つ」が出てくるとは思いませんでした。
でも、ここは待つのが正解でした。

 

この章で分かったこと:理由ページが見えない系は、問い合わせても「調査中→修正待ち」になりがち。結局、待ちが効くことがある。

第5章:見えるようになった。原因は“英語表記の氏名”

時間を置いて確認すると、ようやくリジェクト理由が表示されました。
そこに書かれていたのはこれ。

 

(翻訳)

すでに提出済みの身分証明書に記載されている正式な氏名の英語訳を提出してください。

書類の提供

必要書類を提出する最も早い方法は、こちらのDropbox™ファイルリクエストに安全にアップロードすることです。このリクエストは30日以内に完了する必要があります。

30日を過ぎるとリンクは無効になります。

このアクションアイテムは、税務ベンダーがお客様の書類を確認し承認するまで、ダッシュボード上でアクティブのままとなりますのでご注意ください。

書類の承認プロセスには通常2~7日かかります。

Tax Identity Solutions さんからのリクエストです

 

パスポートもって無い~~

 

はい、来ました。日本の運転免許証あるある。
免許証やマイナンバーカードは日本語が基本。

英語表記はない。

つまり、登録したローマ字名と本人確認書類は日本語で、

どうなってるんだいといわれる始末。

 

しょうがないじゃない。いろんなサイトでローマ字で登録しろって書いてたし、、

 

ただ、唯一持っている英語表記の入ったもの、

 

そうだ、クレジットカードだ。

 

セキュリティーコード隠してもいいはずだよね?そうだよね?

チャッピーに聞いてみた。返ってきたのは「たぶん大丈夫」みたいな曖昧さだった。今ほしいのは “たぶん” じゃない。

 

困ったら問いあわせするのが一番

 

この章で分かったこと:日本の免許証は英語表記がないので、「英語表記の氏名確認」で止まりやすい。

第6章:クレカでいいのか?(Tax Identity Solutions への質問ルート)

クレカを送ったら許してくれるのかを聞くために、再度 Support に問い合わせようとしたところ、以下の表記が。

 

(翻訳)

このヘルプリクエストを作成できません。選択したSteamworksパートナーアカウントのメンバーではないためです。

 

これは、Steamアカウント側のサポートから申請しようとして起こっていたみたいです。

 

正しくは、ダッシュボード → 税務情報の修正 の↓のボタンからやらないといけないとのことでした。(このページが初見過ぎて見逃していた。)

 

質問

Hello,

I am currently proceeding with Steamworks registration using this account.

I would like to ask about the KYC (identity verification) process for Steamworks registration.

I have already submitted my Japanese driver’s license (issued in Japan) and completed the KYC submission.
However, the verification has not been approved because the English spelling of my legal name could not be confirmed, as Japanese driver’s licenses do not include Roman character name spellings.

As a possible solution, would it be acceptable to submit a single photo that includes:
- My Japanese driver’s license, and
- A credit card showing my name in English
(with the card number and security code fully masked)

Please note that I do not have a passport or any other government-issued ID that includes my name in English.

(翻訳)

こんにちは。

現在、このアカウントにて Steamworks の登録手続きを進めております。

Steamworks 登録に必要な KYC(本人確認)手続きについて確認させてください。

日本で発行された運転免許証を提出し、KYC の提出は完了しておりますが、
日本の運転免許証にはローマ字(英語)表記の氏名が記載されていないため、
正式な氏名の英語表記を確認できないという理由で、現在この確認は承認されていない状態です。

その代替案として、
・日本の運転免許証
・英語表記の氏名が確認できるクレジットカード
(カード番号およびセキュリティコードは完全にマスキング)
を、1枚の写真に一緒に写したものを提出する形で問題ないでしょうか。

なお、英語表記の氏名が記載されたパスポートや、その他の政府発行の身分証は所持しておりません。

 

この章で分かったこと:問い合わせ窓口を間違えると「メンバーじゃないので作れない」が出る。正しい導線はダッシュボードの税務情報側。

第7章:指示は短く、強い。「クレカは送るな」

KYC委託先の Tax Identity Solutions からメールが届きました。
ここから先は、Steamworksの画面よりこのメールが主役になります。

 

 

メールの核心はこれでした。

クレジットカードを送らないでください - この情報を絶対に共有しないでください

ありがとうございます

 

短い。強い。迷いがない。
「英語表記の名前を送れ」
「クレジットカードは絶対送るな」

なるほど。ここまで来たら、もう余計な工夫はいりません。
聞かれたことだけ返す。それが最短です。

(『クレカ送るな。絶対共有するな。ありがとう。』ありがとうの位置が強すぎて、ちょっと笑ってしまった。)

 

この章で分かったこと:クレカ提出は明確にNGと言われることがある。求められているのは「英語表記の氏名そのもの」。

第8章:直接メールに返信(添付なし)

私はメールに、添付なしでこう返信しました。

Hello,

Thank you for your message.

My legal name is written in Japanese as:
(日本語で名前)

The official English (Romanized) spelling of my name is:
(ローマ字で名前)

Thank you for your assistance.

Best regards,

(翻訳)

こんにちは、

ご連絡ありがとうございます。

私の正式な日本語表記は次のとおりです:
(日本語で名前)

公式の英語表記(ローマ字表記)は次のとおりです:
(ローマ字で名前)

ご協力に感謝いたします。

敬具

 

以上。余計な情報なし。
クレカなし。免許証再送なし。
“指示された最小単位”で返す。

この章で分かったこと:一番強いのは「聞かれたことだけ、文章で返す」

添付も盛らない。

第9章:ぬかるみからの脱出

 

後日届いたメール

こんにちは、
お客様の税金および本人確認情報(KYC)は検証済みです。追加の対応は不要です。追加のご質問がない限り、このチケットへの返信はお控えください。お客様のチケット○○はクローズされました。


翻訳をありがとうございました。
シェリル

 

――ついにやった。やってやった。
ここでようやく、乾いた地面に戻れました。

最終章:後日談

自分の組織を作ったあと、再び組織に再加入しました。

すると、ダッシュボードの右上から、あの時は表示されなかった、

組織の切り替えという文字が。

 

無事に自分や他の組織の切り替えができるようになったのでした。

 

おしまい

 

まとめ(結論)

最短ルート:招待ユーザー問題を片付けたら、KYCは「英語(ローマ字)表記の氏名をメールで返す」だけで通った(クレカは送るな)。

  • Steamworksは“Partner権限”の世界。Steamにログインできても、できることは組織権限で変わる
  • 自分の組織を持たずに、招待で組織にいる場合は、一回抜けて登録するか別アカウントを作る(Steam Supportの案内に従う)
  • KYCがリジェクトされても、理由のページが一時的に見られないことがある(時間で解消する場合あり)
  • 日本の免許証だと 英語表記の氏名 で止まりやすい
  • 最短ルートは、Tax Identity Solutionsのメール指示に従って、英語(ローマ字)表記の氏名を文章で返す
  • クレジットカードは送らない(明確に禁止される)

最後に

Steamworks登録は、書類の難しさというより、
組織/表示/英語名で人を転ばせてくるタイプの罠でした。

もし今、あなたが同じぬかるみに片足を突っ込んでいるなら、
まずは深呼吸して、メールを読み、聞かれたことだけ返してください。
それがいちばん早く抜ける道でした。

 

UE4 / UE5 や Steam 向けの記事を書いています。
コメントや X(Twitter)のフォローなどしていただけると投稿の励みになります。

それでは、よきゲーム開発を。

投げ銭を投げる

 

【回線】キャリア別 iPhone・iPad用 APN構成プロファイルまとめ

⚠️ インストール前の注意
・iOSの仕様上、構成プロファイルは端末全体で同時に1つしか保持できません。副回線(eSIM等)用であっても、既に他社のプロファイルがある場合は必ず設定 > 一般 > VPNとデバイス管理 から削除してから次を行ってください。
・設定が上手くいかない場合は、各キャリアの公式サポートへお問い合わせください。
・リンク切れ等の不備がありましたら、コメント欄でお知らせください。
・DLは必ず iPhone標準のSafari で行ってください。
セットアップ手順(自動/手動)を確認する
A. プロファイルでの自動設定
  • 1 Wi-Fiに接続し、Safariで各社の公式DLページへ
  • 2 許可をタップし「プロファイルがダウンロード済み」を確認
  • 3 設定アプリを開き、一番上の項目をタップ
  • 4 右上の「インストール」を押し、パスコードを入力して完了
  • 5 設定を反映させるためiPhoneの再起動を推奨します
B. 手動でのAPN入力設定(大手・楽天等)
  • 1 設定アプリ > モバイル通信 > モバイルデータ通信ネットワーク
  • 2 「モバイルデータ通信」のAPN・ユーザー名・パスワードを入力
  • 3 テザリングを利用する場合は、下方の「インターネット共有」も入力
  • 4 左上の戻るボタンをタップして保存(再起動を推奨)

NTTドコモ

Docomo
公式DLページ

SIMフリー版iPhoneの設定案内です。通常は自動ですが、手動入力も可能です。

SIMロック解除端末向け。最新OSではプロファイル不要なケースも多いです。

ソフトバンク

Softbank
公式DLページ

SIMフリー端末をソフトバンクで使う際の手順。APN情報の確認ができます。

楽天モバイル

Rakuten
公式DLページ

iOS 14.4以降はプロファイル不要。繋がらない際の設定情報が掲載されています。

ahamo

Docomo
公式DLページ

基本プロファイル不要。通信できない場合の手動設定ガイドです。

povo (2.0)

au
公式DLページ

iOS 15以降はプロファイル不要。繋がらない際の設定ガイドです。

Y!mobile

Softbank
公式DLページ

モデルによりプロファイルの要否が異なります。公式案内を要確認。

HISモバイル

DocomoSB
公式DLページ

回線プラン別のプロファイルDLが必要です。

BB.excite

Docomo
公式DLページ

エキサイトモバイル。プロファイルDLと手動入力の両方の情報があります。

イオンモバイル

Docomoau
公式DLページ

タイプD/A別の構成プロファイルが提供されています。

OCN モバイル ONE

Docomo
公式DLページ

新コース等の最新プロファイルをダウンロードできます。

J:COM MOBILE

au
公式DLページ

Aプラン用の構成プロファイルDL手順が詳しく載っています。

LinksMate

Docomo
公式DLページ

動作確認済み端末リストから各機種の設定手順を確認できます。

LIBMO

Docomo
公式DLページ

リブモ。最新の構成プロファイル直リンクが掲載されています。

IIJmio

Docomoau
公式DLページ

タイプD/A別。専用アプリ経由での設定も可能です。

mineo

DocomoauSB
公式DLページ

プラン(A/D/S)に応じたプロファイルが必要です。

LINEMO

Softbank
公式DLページ

iPhone 12以降は原則プロファイル不要です。

U-NEXT Mobile

DocomoSB
公式DLページ

U-mobile。回線別の設定ガイドページです。

エックスモバイル

Docomo
公式DLページ

ドコモ回線を使用。iOS用の構成プロファイル設定手順が掲載されています。

UQ mobile

au
公式DLページ

au回線を使用。iPhoneのモデルやiOSバージョンによって設定方法が異なります。

DMM mobile

Docomo
公式DLページ

ドコモ回線を使用。構成プロファイルのダウンロードリンクが掲載されています。

NifMo (ニフモ)

Docomo
公式DLページ

ドコモ回線を使用。iOS用のAPN構成プロファイル設定ガイドが掲載されています。

DTI SIM

Docomo
公式DLページ

ドコモ回線を使用。iOS端末での構成プロファイルのダウンロードや手動設定の情報が掲載されています。

Docomo
公式DLページ

パナソニックのMVNO。ドコモ回線を使用しており、iOS用の構成プロファイル設定ページが用意されています。

レキオスモバイル

Docomo
公式DLページ

ドコモ回線を使用。iOSでのAPN設定・構成プロファイルに関する情報が掲載されています。

ANSIM (朝日ネット)

Docomo
公式DLページ

ドコモ回線を使用。ASAHIネットのLTEサービス「ANSIM」のiOS設定ガイドページです。

BIC SIM

Docomo au
公式DLページ

IIJmioのインフラを利用。タイプD/Aがあり、それぞれの構成プロファイル設定が案内されています。

日本通信SIM

Docomo
公式DLページ

ドコモ回線を使用。合理的プラン等の各サービスに対応した構成プロファイルのダウンロードが可能です。

QTmobile (QTモバイル)

Docomo au SB
公式DLページ

ドコモ・au・ソフトバンクの全回線プランを提供。回線種別ごとの設定ガイドが掲載されています。

ロケットモバイル

Docomo au SB
公式DLページ

ドコモ・au・ソフトバンクの各回線プランを提供。神プラン等の各サービスに対応した構成プロファイルが配布されています。

メルカリモバイル

Docomo
公式DLページ

ドコモ回線を使用。メルカリ公式ヘルプにて、iOSの初期設定やAPN設定の手順が詳細に解説されています。

※各社リンクは予告なく変更される場合があります。最新情報は各社公式サイトをご確認ください。