投稿

asdfはなぜ動くのか。asdfの詳細とShimによるバージョン切り替えの仕組みを読み解く。

イメージ
この記事ではマルチランタイムバージョン管理ツール「asdf」の仕組みを読み解いていきます。 私自身あまり理解していない状態から徐々に読み解いていきますので、途中で理解が間違っている事があるかと思います。 その点はご容赦ください。 なお、asdfのインストールと設定については以下で解説しています。 まずは触れてみたいという方は以下をご覧ください。 https://blog.yukiapps.com/2025/03/asdf-mac.html それでは参りましょう。 asdfの構成 構成は以下のようになります。 Go言語で書かれている asdfコアとasdfプラグインによる構成 プラグインによってShimが作成される 実行ファイルの代わりにShimが実行される asdfの公式による概要はこちら: https://asdf-vm.com/ja-jp/guide/introduction.html ソースコードはこちら: https://github.com/asdf-vm/asdf 図にするとこんな感じでしょうか。 「asdfコア」「プラグイン」「Shim」が重要なキーワードになりそうです。 まずは「Shim」とは何かについて解説した後に、一つずつ深掘りしていきます。 Shimとは何か 「shim(シム)」とは英語で、クサビ上の木材など部品の隙間や割れ目を埋める物の事です。 プログラミングの分野においては、プログラムの間に挟まる薄いレイヤー(ラッパーようなもの)を指します。 asdfにおいては、実行ファイルの前にShimを挟むことでバージョンを管理しています。 Shimとはラッパーのようなもの と覚えておいて良いかと思います。 Wikipediaを参考: https://en.wikipedia.org/wiki/Shim_(computing) Shimの概念を理解したところで、asdfの各コンポーネントについて深堀りしていきます。 asdfコアの主な役割 asdfコアの主な役割は以下のようになります。 設定ファイル(.tool-versions)読み取る プラグインをインストールする .tool-versionsとプラグインを参照してShimを生成 インストール済みの実行ファイルを元にShimを生成 asdfコアの役割として、プラグインを管理するだけでなくShimの生...

asdf(アズディフ)の概要 + Macにインストールする手順と設定【バージョン管理ツール】

asdf(アズディフ)をMacにインストールする手順です。 asdfの簡単な説明もしていきます。 公式サイト 公式サイト: https://asdf-vm.com/ 公式インストール手順(英語): https://asdf-vm.com/guide/getting-started.html 公式インストール手順(日本語): https://asdf-vm.com/ja-jp/guide/getting-started.html 続いて公式を読むのが面倒な方のために、箇条書きで簡単に要点をまとめました。 asdfの概要 複数のプログラミング言語のバージョンをまとめて管理する 仮想環境不要で、ローカル環境を汚さない バージョンは一つのファイル(.tool-versions)で管理される 設定ファイルをGitで共有すれば、チーム全体で環境を統一可能 まとめると、 一つの設定ファイルでツールのバージョンを手軽に管理できる! です。 asdfはこんな人にオススメ システム環境を汚さずにバージョン管理したい Dockerのような仮想環境は重くて面倒 チームで同じ環境を統一したい という方にオススメです。 それではインストールしていきます。 asdfのインストール(Homebrewを使う) インストールは以下の手順で行います。 Homebrewでインストール シェルの設定 インストール方法はいくつかありますが、MacならHomebrewを使うのが簡単です。 Homebrewがインストールされていない場合は以下のHomebrew公式を参照してインストールしてください。 Homebrew :  https://brew.sh/ja/ では手順を追っていきます。 1.Homebrewでインストール 以下のコマンドでインストールします。 brew install asdf 続いてシェルの設定をします。 2.シェルの設定 以下のコマンドで自身の環境のシェルを確認します。 echo $SHELL `/bin/zsh`と表示されればZSH、`/bin/bash`と表示されればBashとなります。 ZSHの場合、`~/.zshrc`、Bashの場合は`~/.bash_profile`以下を追記します。 export PATH="${ASDF_DATA_DIR:-$HOME/....

Unreal Engineでアクタとの当たり判定を行う(Event ActorBeginOverlapイベントを追加する)方法について解説

イメージ
 Unreal Engineでアクタとの当たり判定を行う方法について解説します。 当たり判定の検出にはいくつか方法がありますが、この記事ではEvent ActorBeginOverlapというイベントを追加して当たり判定を検出する方法について説明します。 Event ActorBeginOverlapイベントとは? Event ActorBeginOverlapとは、「アクタに対して他のアクタが重なったことを検出すると動き出すイベント」のことです。 特定のエリアに入ったことを検知したり、アクタ同士が重なったことを検知して何かをさせたい時に使います。 次にEvent ActorBeginOverlapをBlueprintで使う方法を解説していきます。 ステップ1:アクタの追加 まず、新しいブループリントアクタを作成します。 コンテンツブラウザで右クリックし、「新規作成」→「ブループリントクラス」を選択します。 「アクタ」をベースクラスとして選択し、新しいブループリントを作成します。 ステップ2: コリジョンコンポーネントの追加 次に、アクタにコリジョンコンポーネントを追加します。 作成したブループリントアクタをダブルクリックして開きます。 左側の「コンポーネント」タブで「追加」をクリックし、「Box Collision」を検索してBox Collisionを選択して追加します。 追加したBox Collisionコンポーネントを選択し、Unreal Engineの画面の右側の「詳細」タブで「Generate Overlap Events」の設定を検索して、有効になっていることを確認します。 「Generate Overlap Events」にチェックが入っていなかったら、チェックを入れておきましょう。 ステップ3:Event ActorBeginOverlapノードを追加する 次にアクタのイベントグラフを開きます。 イベントグラフ内で右クリックをして「Event ActorBeginOverlap」を検索し、Event ActorBeginOverlapノードを追加します。 この追加したイベントノードに処理をつなげていくことで、他のアクタと重なった時の処理を実装することができます。 ステップ4:Event ActorBeginOverlapノードに処理を追加す...

Unreal Engineでマウスカーソルを表示させる方法を解説

イメージ
Unreal Engineでマウスカーソルを表示させる方法について解説します。 Unreal Engineではどうも初期状態ではゲーム画面でマウスカーソルを表示しないようです。 一般的なゲームではマウスカーソルを表示していないことも多いのでそうなっているとかどこかで見た気がします。 スマホ向けのゲームを作っていてタッチ操作のシミュレーションのためにマウスを使いたく、マウスカーソルを表示させる方法を調べたので解説します。 ステップ1:Get Player Controllerノードを配置する まず操作キャラクターのアクタのBlueprintを開きます。 イベントグラフ内で右クリックして、「Get Player Controller」ノードを配置します。 「Get Player Controller」で取得したPlayer Controllerをマウスカーソルを表示させる操作に利用します。 ステップ2:Show Mouse Cursorノードを配置する 「Get Player Controller」のReturn Valueのピンから線を伸ばして、「Show Mouse Cursor」ノードを検索して配置します。 何もないところで右クリックして、「状況に合わせて表示」にチェックが入った状態で「Show Mouse Cursor」を探しても検索結果の候補に出てこないので注意しましょう。 ステップ3:Show Mouse Cursorノードの「Show Mouse Cursor」のチェックボックスをONにする。 Show Mouse Cursorノードの「Show Mouse Cursor」のチェックボックスをチェックしてONにしましょう。 ステップ4:Show Mouse Cursorノードを「Event BeginPlay」などに接続する 最後にShow Mouse Cursorノードを「Event BeginPlay」などのノードから繋げて実行されるようにします。 これでマウスカーソルが表示されるようになります。 以上、Unreal Engineでマウスカーソルを表示させる方法を解説しました。 ChatGPTに聞いたら「設定から変更する」と嘘をつかてしまい調べるのに時間がかかりました。 Unreal Engineに関する情報はChatGPTさんもまだ詳しくないかもしれ...

Unreal EngineのBlueprintで使う構造体を独自に定義する方法を解説

イメージ
Unreal EngineのBlueprintを使ってゲーム開発をする際に、独自のデータ構造を定義してデータを管理したいことがあります。 私の場合はマップを自動生成する際に、追加したマップとマップのID、TriggerBoxなどを関連づけて管理したいことがありました。 それらをまとめたアクターを作っても良いのですが、TriggerBoxは固定の位置に配置するだけなのでわざわざアクターに持たせたくない…など人それぞれいろんな理由があるかと思います。 こういった複雑なデータを管理する場合、構造体(Structures)を使うと便利です。 構造体を使うことで、関連するデータをひとまとめにして扱うことが可能となります。 この記事では、Unreal Engineで独自の構造体を定義する方法を説明します。 ステップ1: 構造体の作成 Blueprintでユーザー定義の構造体を使うためには、アセットやアクタを作成するのと同じようにあらかじめコンテンツブラウザ上から作成しておく必要があります。 コンテンツブラウザの任意の場所で右クリック→「ブループリント」→「構造体」と選択します。 コンテンブラウザ上に構造体が作られるので、好きな名前をつけておきます。 ステップ2: 構造体のフィールドを定義 新しく作った構造体をダブルクリックして開きます。 すると以下のような画面になります。 この画面で構造体に含めたいフィールドを追加していきます。 「変数を追加」ボタンを押すとフィールドを追加することができます。 各フィールドの左側のフォームには構造体に含めるフィールドの名前、右側はフィールドの型を指定します。 追加していこうと以下のような感じになります。 「デフォルト値」タブに切り替えることで、デフォルト値を設定することもできます。 これで構造体を使うための準備ができました。 ステップ3: 構造体を使用する 任意のBlueprintクラスを開き、変数パネルで「+」ボタンをクリックします。 変数の型で先ほど作った構造体が選べるようになっています。 自分が作った構造体の名前で検索して、型にセットすれば完了です。 ここでは「STRUCT_Sample」という名前で構造体を作ったので、検索でヒットするようになっています。 この変数を使って、イベントグラフ内でデータをセットしたり操作することができるように...

Unreal EngineのBlueprintでアクタを動的にSpawn(スポーン)する方法。

この記事では Unreal Engineでレベル内に動的にアクタをスポーンする方法を説明します。 アクタの動的な配置には Blueprintの 「Spawn Actor from Class」 ノードを使います。 ちなみに「スポーン(Spawn)」とは日本語で「(水生動物が卵を〕産む」「発生する」という意味だそうです。 ゲームではキャラクターが最初に配置されることを「スポーン」と言ったり、復活することを「リスポーン」と言うことが多いですね。 ステップ1: スポーンしたいアクターの準備 まずは、ゲーム内で動的に生成したいアクターのBlueprintクラスを準備します。 コンテンツブラウザで「右クリック→ブループリントクラス→アクタ」を選択して任意の Blueprintクラスを作成します。 既に存在しているクラスを使っても良いですし、自身の環境に合わせて準備をしてください。 ステップ2: スポーンの実行 Blueprintでアクターをスポーンさせるには、「Spawn Actor from Class」ノードを使用します。 このノードには、スポーンさせるアクターのクラスと、スポーンする位置や角度を指定できます。 ノードの「Class」のところで先ほど自分で作成したブループリントクラスを選択することもできますし、Unreal Engineで予め用意されているクラスを指定することもできます。 位置や回転は、ゲームの状況に応じて動的に決定することも可能です。 「Spawn Actor from Class」を使う際の注意点 「Spawn Actor from Class」はBlueprintの「イベントグラフ」で使うことができます。 ゲームが始まる前の準備をする「Construction Script」では使うことができません。 ゲーム開始時点でアクタを配置したい場合は「イベントグラフ」の「Event BeginPlay」イベントからノードを繋げて使いましょう。 以上、Unreal EngineのBlueprintでアクタを動的にSpawn(スポーン)する方法について説明しました。 予め作っておいたマップだけでなく、ゲームの状況に応じてキャラクターやオブジェクトを出現させたい場合は「Spawn Actor from Class」を使ってみるのが良いかと思います。 皆様の開発が順...

Unreal EngineのBlueprintでアセットを読み込んでレベルに配置する方法

イメージ
Unreal Engine(アンリアルエンジン)を使用して、ゲーム開発を行う際、あらかじべレベルにアクター(オブジェクト)を配置する以外に、ゲームの進行に応じて動的にアクターを配置したい時も多いです。 今回は、Blueprint(ブループリント)を使ってアセットを読み込み、レベルに配置する基本的な手順を解説します。 この記事ではUnreal Engine5.4.1を使って解説します。 ステップ1: アセットの準備 まずはじめに、使用したいアセットを用意します。 アセットは、テクスチャ、タイルマップ、サウンドファイルなど、ゲームに使用する各種リソースを指します。 今回は例として、「コンテンツブラウザで右クリック→Paper 2D→スプライト」と選択してスプライトを作成し、適当なテクスチャを貼ってファイル名に「S_Sample」と名前をつけておきます。 この部分は自分が配置したいアセットに読み替えてください。 ステップ2: Blueprintの作成 新しいBlueprintを作成します。 「コンテンツブラウザで右クリック→ブループリントクラス」を選択。 次に、blueprintクラスの親クラスの選択で「アクタ」を選択します。 「アクタ」を最も基本的なクラスで、レベルに配置できるという以外は特徴のないクラスです。 今回は「アセットをレベルに配置する」というテストをするだけなので、「アクタ」で十分という事になります。 新しく作ったBlueprintに「BP_Add_Component_Sample」と名前をつけておきます。 名前は何でも良いですが、他と区別できるようにしておくと後から自分で見た時も分かりやすくなります。 ステップ3: アセットの読み込み 新しく作ったBlueprintをダブルクリックで開き、「Construction Script」のタブを選択します。 Blueprintのノードを配置するには「Consruction Script」または「イベントグラフ」のタブを選択する事になりますが、今回は「Consruction Script」を選びます。 「Consruction Script」はゲームが始まる前に予め準備をしておくための場所になります。 Blueprintをビューポートでレベルに配置した時点で動作確認ができるので、 Blueprintのテストをするに...