Verse は新しいプログラミング言語であるため、経験豊富なプログラマーであっても、わからないことがある場合はこの用語集を確認してください。
この用語集は、プログラミングの知識がない方にも参考になります。 数多くの基本的なプログラミング用語の定義を追加しましたので、求めている答えが見つかるかもしれません。
- abstract class (抽象クラス)
クラスまたはクラス メソッドに abstract 指定子が含まれている場合、そのクラスのインスタンスを作成することはできません。 抽象クラスは、すべてではなく一部のメンバーが実装または指定されるスーパークラスとして使用されます。 基本クラスとも呼ばれます。
- abstraction (抽象化)
ユーザーが隠された複雑な部分を理解する必要がない場合に、ユーザーから不必要な詳細を見えないようにする、プログラミングの原則です。 たとえば、自動販売機の仕組みを理解していなくても、自動販売機にお金を入れて商品を購入することはできます。
- access level (アクセス レベル)
- access specifier (アクセス指定子)
アクセス指定子はアクセス レベルを定義します。 以下のアクセス指定子をクラスに使用することができます。
public:アクセスに制限がありません。
internal:現在のモジュールにアクセスが制限されます。 これがデフォルトのアクセスです。
protected:現在のクラスとサブクラスにアクセスが制限されます。
private:現在のクラスにアクセスが制限されます。
- additive effect (加算エフェクト)
加算エフェクトは、排他的エフェクトに追加できるエフェクトです。 加算エフェクトには
suspendsとdecidesが含まれます。- agent (エージェント)
エージェントはプレイヤーまたは 非プレイヤーキャラクター (NPC) のいずれかを表します。
- algorithm (アルゴリズム)
アルゴリズムは、問題を解決したりタスクを達成したりするために記述される一連の命令であり、 料理のレシピのようなものです。 問題を解決したりタスクを達成したりするコードを記述した場合は、そのコードがアルゴリズムに該当します。
- alternate integers (代替整数)
「16 進」を参照してください。
- API
アプリケーション プログラミング インターフェースの略語である API は、一般にユーザーが Unreal およびフォートナイト システムにアクセスして操作できるようにする一連の呼び出し可能な関数、型、データ構造体にグループ化されるライブラリです。
- archetype (アーキタイプ)
- archetype instantiation (アーキタイプインスタンス化)
- argument (引数)
- assignment expression (代入式)
- async (非同期)
async 式は評価に時間がかかる可能性があり、それを当然のことと考える必要はありません。 async 式は、現在または後続のシミュレーションの更新で完了することもあれば、完了しないこともあります。
suspends指定子で識別された async 関数はコルーチンとも呼ばれます。 async 式と immediate 式は対照的なものです。- async context (async コンテキスト)
- atomic (アトミック)
他のコードによる中断 (観察) なしに、完全に実行されるか、完全に失敗する単一の完全なコード単位です。 アトミック コードは中断することはできません。 隣接する非同期ではない式はすべてアトミックとみなされ、それらのコードは同じ更新内で中断なく、プリエンプションまたはコンテキスト スイッチなしで確実に実行されます。
- base-16 (基数 16)
16 進数 (英語の Hexadecimal は 6 を意味する hexa- と 10 を意味する decimal から成る) または基数 16 (hex とも略される) は、基数 10 で使用する慣れ親しんだ 10 個のシンボルの代わりに 16 個のシンボルを使用する進法です。
- bidirectional (双方向)
2 つの方向に機能することを意味します。
- bind (バインド)
コンピュータ プログラミングでは、バインドは 2 つ以上のプログラミング オブジェクトの間に一定時間つながりを生み出すことです。
フォートナイトでは、バインドとは、機能とイベントを関連付けることを意味します。
Verse では、バインドは 2 つ以上のプログラミング オブジェクトの間に一定時間つながりを生み出すことです。 たとえば、機能をボタンの
InteractedWithEventにバインドすると、プレイヤーがそのボタンを操作するたびにバインドされた機能が呼び出されるということです。 また、変数と値またはオブジェクトとの関連、またはハンドラとイベントとの関連を指す場合もあります。- block expression (ブロック式)
ブロック式は、複数の式を単一の式としてグループ化する方法、またはコード ブロックをネスティングする方法です。 ブロック式はコード ブロックと同じように動作します。
- body (本体)
関数本体やループ本体など、言語要素の部分式を定義する独自のスコープを持つブロックです。 たとえば、関数本体には、その関数の機能を定義する式が含まれており、その関数で宣言される変数は、関数本体に対してローカルになります。
- Boolean (ブーリアン)
「ブール ロジック」を参照してください。
- Boolean logic (ブール ロジック)
表現される値の真偽を表すロジックの体系で、プログラミング言語ではフロー制御の定義によく使用されます。 論理学と代数学に大きく貢献した数学者である George Boole (1815 ~ 1864) にちなんで名付けられました。
Verse では、真偽の判断に使用されるこの型は
logicです。 このブール ロジックは、失敗コンテキストにおける失敗する可能性がある式全体に適用されます。- bound (バウンド)
- braces (中括弧)
「ブラケット」を参照してください。
- bracket (ブラケット)
Verse では、コード内に含まれる異なるタイプの情報を指定する際に括弧を使用します。 Verse では 4 種類の括弧を使用します。 それぞれの使用目的は主に次のとおりです。
()括弧 - 関数呼び出しに含まれる関数シグネチャと引数でのパラメータの設定と、式、タプルおよびサブクラスのグループ化に使用されます。[]ブラケット (角括弧とも呼ばれる) - 失敗する可能性がある関数呼び出し、配列およびマップの型指定子、配列へのインデックス処理に使用されます。{}中括弧 - アーキタイプ インスタンス化、コード ブロックの書式化、文字列補間で使用します。<>山括弧 - 識別子および関数に指定子を追加する際に使用します。
- branch expression (branch 式)
branch式は、1 つ以上の非同期部分式のブロックを開始します。 後続の式はすぐに実行されます。詳細については、「タイム フローと並列処理」を参照してください。
- break
現在のループから抜け出して、
loop式の後にある次の式を実行する式です。 詳細については、「Loop と Break」を参照してください。- bug (バグ)
- built-in (組み込み)
一部のプログラミング言語では、そのプログラミング言語と標準ライブラリ内で直接使用できる要素を「組み込まれた要素」とします。
- built-in type (組み込み型)
- C++
さまざまなアプリケーション (特に Unreal Engine などのゲーム エンジン) で使用される、よく知られている言語です。
- cache
データを格納して、より迅速にアクセスできるようにするための方法です。
- call graph (コール グラフ)
- call stack (コール スタック)
コール スタックは、プログラムで呼び出し (実行されている関数、完了した関数、まだ実行されていない関数) を記録するために使用されるものです。
- caller (呼び出し元)
- canceled (キャンセル)
- case expression (case 式)
case 式を使用すると、さまざまなオプションを使ってプログラムのフローを制御できます。 詳細については、「case」を参照してください。
- Ceil
- changelist (チェンジリスト)
コンピュータに格納されるローカル ファイルとサーバーに送信されてプロジェクトのソース ファイルとマージされるファイル間の変更を Perforce で追跡する方法です。 チェンジリストは「CL」とも呼ばれます。
- char
単一の文字を格納するデータ型です。
- character encoding (文字エンコーディング)
文字エンコーディングは、コード ポイントと呼ばれる、コンピュータが理解できるテキスト文字とデータ間のマッピングです。
- CI/CD
CI/CD とは、継続的インテグレーションと継続的デリバリか継続的デプロイのどちらかを指します。 CI/CD は、アプリケーションのビルド、テスティング、デプロイの自動化を通じて開発とアプリケーションの橋渡しをします。
- code (コード)
コードはプログラマーによって書かれる命令で、ソフトウェア プログラムに動作を指示するものです。「ソース コード」と呼ばれることもあります。 Verse のソース コードは、プログラマーが読んで理解できますが、コンピュータではそのまま処理できません。 コンピュータでプログラムを読み取って実行できるようにするには、プログラムをコンピュータで実行可能な命令に変換する必要があります。この処理をコンパイルと呼びます。 プログラマーによるコーディングは、こうした命令を記述する作業を意味します。
- code block (コード ブロック)
ブロック、またはコード ブロックは、新しいコードの本体を導入する式のグループです。 式が含まれていないコード ブロックもありますが、これは通常、後でどこかの時点で式が入力されるプレースホルダーです。
コード ブロックは、識別子の後に続きます。
Verse のコード ブロックには 3 つの形式がありますが、 それらの形式はすべて、コードの実際の機能を変えないという点で意味的に同じです。
スペース入りの形式では
:でブロックが開始され、それぞれの式が 4 つのスペースでインデントされた独自の行に続きます。Verseif (test-arg-block): expression1 expression2if (test-arg-block)はブロックの一部ではなく、ブロックは:を含む行の最後に始まることに注意してください。;を使用して単一の行の複数の式を区切ることもできます。Verseif (test-arg-block): expression1; expression2; expression3複数行の形式では、ブロックが
{}(中括弧) で囲まれ、式は新しい行に配置されます。Verseif (test-arg-block) { expression1 expression2 }スペース入りの形式と同じように、
;を使用して単一行にある複数の式を区切ることもできます。Verseif (test-arg-block) { expression1; expression2 }3 つ目の形式は、単一行の中括弧で囲まれた形式です。 ここでもブロックは
{}で囲まれますが、各式は新しい行に配置されるのではなく;で区切られます。 各行に{}文字を入れる必要がないことに注意してください。Verseif (test-arg-block) {expression1; expression2}詳細については、「コード ブロック」を参照してください。
- code comment (コード コメント)
「コメント」を参照してください。
- code point (コード ポイント)
文字エンコーディングのための Unicode コード スペースの値です。
- code sample (コード サンプル)
1 つ以上の概念、クラス、関数、またはその他いくつかのプログラミング言語の側面を示す、スタンドアローンのプログラム、モジュール、またはクラスです。 コード スニペットと比較してください。
- code snippet (コード スニペット)
スニペットは、通常は特定の概念を示す (実装する) ことを目的とする、短いコードです。
コード スニペットは、単独で動作するプログラムではありません。 コード スニペットは、コード ブロックにコピーペーストできます。 コード サンプルと比較してください。
- code unit (コード単位)
エンコードされたテキストの単位を表すことができる、最小のビットの組み合わせです。 UTF-8 では、コード単位に 8 ビットを使用します。
- coercion (強制)
値を別のデータ型に変換することを指します。 型の変換は、暗黙的または明示的に行うことができます。 暗黙的変換は、 「強制」とも呼ばれ、自動的に行われます。
- commit (コミット)
コミットとは、バージョン管理システムにコードの一連の変更を記録した状態を指します。
Verse で、コミットは、失敗する可能性がある式が成功した後に、その式のコード エフェクトが永続的になることを指します。
- common type (共通型)
共通型は、頻繁に使用される組み込みの型です。 共通型には、
any、comparable、float、int、logic、rational、およびstringなどがあります。- comparison expression (比較式)
Verse では、不等価演算子 (
<、>、<=、>=、<>) のいずれかを使用して 2 つのものを比較するときに比較式が実行されます。- compile (コンパイル)
プログラムを人間が判読できる言語からコンピュータが実行可能な命令に変換することを指します。
- compile time (コンパイル時間)
ソース コードがマシン命令に変換される時間を指します。 ランタイムと比較してください。
- compiler (コンパイラ)
人間が判読可能なプログラムの命令をコンピュータが実行できる命令に変換するソフトウェアです。パーサーとも呼ばれます。 コンパイラが実行される期間はコンパイル時間と呼ばれます。
- compiler error (コンパイラ エラー)
コンパイラ エラーは、コンパイル時に Verse コンパイラによって不適切なコードの使用が検出された場合に発生します。 ランタイム時に生じるバグと比較してください。
- completed (完了)
実行されて完了したタスクのステートです。
- component (コンポーネント)
テレインの一部分をレンダリングするための自己完結型タイルです。 コンポーネントは「セル」と呼ばれることもあります。 「World Partition」も参照してください。
コンポーネントは、Scene Graph にあるエンティティにデータと動作を与えるものです。 コンポーネントは、シーンでエンティティが実行すると想定される内容を定義します。
コンポーネントには編集可能なプロパティがあり、物理的なプロパティ (スタティックメッシュ、パーティクル システムなど) または論理的なプロパティ (ゲームプレイ タグ、プラットフォームの移動を定義する Verse コードなど) のいずれかです。 デフォルトでは、すべてのエンティティに、ワールド内のどこにエンティティが存在するかを指定するためのトランスフォーム コンポーネントがあります。
Verse では、再利用可能なプログラム内の 1 つの関数、または関連する関数のグループです。
- composite type (複合型)
合成や集約と呼ばれることもある複合データ型は、プリミティブ型やその他の複合型の (通常は名前付きの) フィールドか要素で構成されることがある型です。 通常、その有効期間中は一定数のフィールドまたは要素が含まれます。 現時点で、Verse では構造体、クラス、列挙型、インターフェース、モジュールの複合型が使用されています。
- computes
- concatenate (結合する)
「結合」を参照してください。
- concatenation (結合)
- concrete class (具象クラス)
concrete 指定子を持つクラスは、空のアーキタイプでクラスのインスタンスを構築する方法です。つまり、クラスのすべてのフィールドは初期値で定義する必要があります。
- concurrent (並列)
同じ有効期間に実行される複数の演算処理は並列です。 これは、単一のプロセッサなどの物理的時間にまでわたる可能性があり、必ずしも同時ではなかったとしても、重複する論理シミュレーションの更新、ティック、フレームの場合があります。
- condition (条件)
条件とは、プログラムで True か False かを確認できるものです。 条件式では条件を評価し、True か False の結果を返すことができます。
- conditional (条件付き)
- constant (定数)
定数は値が格納される場所であり、プログラムのランタイム中はその値を変更できません。 常に同じであることから定数と呼ばれます。
定数の基本構文は
name : type = valueです。nameは定数に割り当てる名前 (識別子) です。:は型が次に来ることを表しています。=は値が来ることを示しています。続いて値自体を指定します。 次に例を示します。VersePlayerSpeed : float = 2.0これは、プログラムの実行中に変わることがない、2.0 (10 進値) という値が PlayerSpeed に設定されていることを示しています。
定数には常に値が割り当てられています。 名前と型は宣言であり、値が表現されるところは初期化です。
変数と比較してください。
詳細については、「定数と変数」を参照してください。
- constrained (制約)
式に制約があるということは、制限が設定されていることを意味します。
- container (コンテナ)
UEFN で、コンテナは複数のオブジェクトに適用できるプロパティが含まれるクラスです。
Verse で、コンテナはコードのデータを整理する手段です。 詳細については、「コンテナ型」を参照してください。
- container type (コンテナ型)
- context (コンテキスト)
言語のさまざまな要素とコンストレイントのライフタイムを定義するコードのスコープです。 これは通常、コード ブロックの開始から終了までの範囲です。
- context switch (コンテキスト スイッチ)
コンテキスト スイッチは、後からリストアして実行を再開できるよう、プロセスまたはスレッドのステートを格納し、その後、以前に保存した別のステートをリストアするプロセスです。
- contract with the genie (悪霊との契約)
コードの記述は、プログラムが命令を厳密に実行しても、まさに期待していた結果が得られるとは限らないという点において、「悪霊との契約」に例えられることがあります。 「プログラム」も参照してください。
- converges
- coroutine (コルーチン)
経時的に処理を実行するか、さまざまなイベントやステートが起きるのを待つか、それら両方に該当する、持続的な有効期限のあるルーチンです。 コルーチンは async 関数と同義です。
- data member (データ メンバー)
「メンバー」を参照してください。
- data type (データ型)
「型」を参照してください。
- debugger (デバッガ)
デバッグに使用されるツールで、実行ステップごとにプログラムのステートを確認することができます。
- debugging (デバッグ)
コードのエラーを特定して解決する処理です。
- decides
関数が失敗する可能性があること、およびこの関数の呼び出しが失敗する可能性がある式であることを示すエフェクトです。 decides エフェクトを持つ関数定義は transacts エフェクトも保持している必要があります。つまり、関数のいずれかの部分でエラーが発生した場合に、この関数によって実行されるアクションを (アクションが実行されなかったかのように) ロールバックできます。
- decision expression (判定式)
判定式は、演算子、
not、andおよびorを使用して、成功と失敗の判定フローを制御します。- declaration (宣言)
宣言は、識別子とその型を導入する式です。 これは実装 (使用) されることもされないこともあり、値についても割り当てられる (初期化される) ことも、そうでないこともあります。
変数を宣言するための構文は
var name : type = expressionです。 次に例を示します。Versevar PlayerSpeed : float = 2.0このコード行は、PlayerSpeed という名前の変数に float 値があることを宣言しています。
この例では、最後の部分の
= 2.0が初期化を表しており、宣言から分離されています。- declare (宣言する)
- decorate (装飾する)
コードを記述するとき、装飾するとは、コードの一部をほかのコードでラップすることです
- define (定義する)
「定義」を参照してください。
- definition (定義)
関数定義やクラス定義など、定義は識別子が実装されるか、識別子に値が割り当てられたときに行われます。 宣言と比較してください。
- deterministic (決定論的)
決定論的システムは、同じ初期ステートまたは入力で常に同じ結果がもたらされるシステムです。
- deterministic destruction (決定論的デストラクション)
決定論的デストラクションは一部のプログラミング言語で取り入れられており、オブジェクトが、プログラムがそのスコープを終了した際に、破壊されることを示します。
- digest (ダイジェスト)
モジュール、関数、クラスなどの Verse コンパイラで処理されたすべてのパブリック シンボルの自動生成されたリストです。 これには、コメントも含まれます。 ダイジェスト ファイルで関連するモジュール内の API や機能を確認できます。
- dispatch (ディスパッチする)
ディスパッチとは、何かをどこかに送信することを指します。 Verse では、たとえば関数に呼び出しをディスパッチすることもあれば、リスナーにイベントをディスパッチすることもあります。
- diverge (発散する)
プログラムの実行は、期待どおりに終了しなければ発散するとされています。 発散することなく限られた時間で値が生成された場合、その実行は収束します。
- doc
関連する要素の動作やその使用方法など、役立つ情報を含むクラスと関数 (関数パラメータではない) にある全般的なメモ フィールドであり、Verse の API リファレンスに含まれるその要素のページへの情報記載に使用されます。
- domain (ドメイン)
ドメインは、特定のパラメータで受け入れられた一連の入力です。 型はドメインを指定する 1 つの方法ですが、ドメインは型より包括的です。
- dynamic typing (動的型付け)
動的型付けプログラミング言語では、変数と式に割り当て済みの型がありません。 そのため、ランタイムまで検証することができません。 強い型付けと比較してください。
- editable (編集可能)
UEFN でプロパティを公開するためにコードに追加できる属性です。 この属性によるコードのタグ付けでは、次のようにフィールド識別子の前に
@attribute_name(この場合は@editable) を付加します。Verse@editable PropertyName : type = DefaultValueたとえば、文字列フィールド
GreetingMessageはデフォルト値"Hello, stranger"を持つ編集可能なプロパティです。Verseexpose_properties := class(creative_device): @editable GreetingMessage : string = "Hello, stranger"使用方法の詳細については、「エディタで仕掛けのプロパティをカスタマイズする」を参照してください。
- effect hierarchy (エフェクト階層)
エフェクトは、関数で示すことができる動作のカテゴリです。 関数に対する排他的エフェクトの適用には階層があり、階層内の上位のエフェクトは少なくとも下位のすべてのアクションを許可します。 階層は次のとおりです。
transactsvariescomputesconverges
transactsエフェクトには下位のエフェクトのプロパティが含まれ、variesエフェクトにはcomputesおよびconvergesエフェクトが含まれますが、transactsは含まれないといったようになります。- element (要素)
より大きなグループの単一の部分です。 たとえば、配列には、個別に格納して使用できるさまざまな要素を含めることが可能です。
- empty block (空ブロック)
含まれる式が 0 個の (ない) コード ブロックは空ブロックです。 空ブロックは一般的にプレースホルダーのみに使用され、後にコードが入力されます。
- empty string (空文字列)
文字を含まない文字列 (
””) は、空文字列と呼ばれます。- equality expression (等価式)
- escape character (エスケープ文字)
Verse のエスケープ文字はバックスラッシュ ( \ ) であり、これによって文字列リテラル内にエスケープ シーケンスが作成されます。 これは、そうしなければ別の意味に解釈されてしまう制御文字を変更するために使用されます。 たとえば、文字列を処理する中で、{ } などの使用法があらかじめ定められた文字を含めたい場合は、文字列のその文字の前にエスケープ文字「""」を入れる必要があります。 これにより、
"\\{\\}"がテキストで {} とレンダリングされます。- evaluate (評価)
- exclusive effect (排他的エフェクト)
いくつかのエフェクトは、他の加算エフェクトを追加できる排他的エフェクトとみなされます。ただし、こうしたエフェクトは他の排他的エフェクトと一緒には使用できません。 排他的エフェクトには、
computes、varies、およびtransactsが含まれます。 加算エフェクトにはsuspendsとdecidesが含まれます。- execute (実行する)
プログラムを実行することを指します。
- execution (実行)
プログラムを解釈し、そのプログラムからの命令を実行するコンピュータの処理です。
- expose (公開)
プロパティは Verse コードで
編集可能な属性を割り当てることによって UEFN で公開されます。 これは、公開されているプロパティを UEFN インターフェースで直接編集することができることを意味しています。 「編集可能」も参照してください。- expression (式)
式は、評価されたときに結果を示すコードの最小単位 (値と関数の組み合わせ) です。
以下の例は
if ... else式であり、値が指定された基準を満たすとある処理を実行し、満たさないと別の処理を実行することを意味します。Verseif (a > 5): “Big!” else “Small!”Verse では、リテラルから関数呼び出しや制御フローまでのすべてが式になっています。
これは、結果値を持たないスタンドアローンのコマンドである文と比較されます。 Verse ではすべてが式になっており、値に対して評価できる文と式の区別はありません。
詳細については、「式」を参照してください。
- f
「float」を参照してください。
- fail (失敗する)
Verse では、ユーザーが記述したコードがデフォルトで失敗することはありません。 これは、ブールやオプションを返す関数を持つのではなく、
<decides>を使用して、値、void を返す、または失敗のいずれかを返すことを意味します。- failable expression (失敗する可能性がある式)
失敗する可能性がある式は、成功すると値を返し、失敗すると値を返しません。 失敗する可能性がある式の例として、配列へのインデックス処理 (無効なインデックスでは失敗するため)、演算子の使用 (2 つの値の比較など) があります。
- failure context (失敗コンテキスト)
失敗コンテキストは、失敗する可能性がある式を実行できるコンテキストです。 このコンテキストでは、式が失敗した場合の動作が定義されます。
- field (フィールド)
「メンバー」を参照してください。
- final
クラスに final 指定子がある場合、そのクラスのサブクラスを作成することはできません。
フィールドに final 指定子がある場合、サブクラスのフィールドをオーバーライドすることはできません。
メソッドに final 指定子がある場合、サブクラスのメソッドをオーバーライドすることはできません。
- fire-and-forget (ファイアアンドフォーゲット)
ファイアアンドフォーゲットとは、ユーザーが完了するタイミングや正常に完了するかどうかを気にすることがない式を指します。 このような式は非常にまれです。
- floatingpointnumber (浮動小数点数)
小数値のある変数、または 0.5 や 1.0 などの小数点を含む数を定義するためにさまざまなプログラミング言語で用いられる用語です。 float 変数宣言を使用して作成された数には、小数点の両側に桁があります。
- for expression (for 式)
for ループと呼ばれることもある
for式は、for式には制約 (forループの実行前にイテレーションの数がわかっている) があり、ループを終了するタイミングが自動的に決定される点を除き、loop 式と同じです。 詳細については、「for」を参照してください。- frame (フレーム)
フレームとは、特定の時点におけるシミュレーションを表現する、完全にレンダリングされた個別の画像 (コンピュータや TV の画面など) です。 フレームはシミュレーションの更新 (またはティック) と同義で使用される場合があります。これは、これらが通常は連携しているためです。ただし、新しいフレームは、シミュレーションの更新とは異なるレート (より高い、または低いレート) にすることができます。 フレーム レート、または省略して fps (frames per second) は、1 秒間に現れるフレームの数です。
- function call (関数呼び出し)
関数を評価 (コールまたは呼び出し) する式です。 関数呼び出しには、関数に
decidesエフェクトが含まれるかどうかに応じて、FunctionName()およびFunctionName[]の 2 つの形式があります。 関数呼び出し式の結果の型は、関数シグネチャで定義されます。- function signature (関数シグネチャ)
関数シグネチャは、関数名 (識別子)、および関数の 入力 (パラメータ) と出力 (結果) を宣言します。 Verse の関数には、関数の使用または実装方法を指定する指定子もあります。
- functional logic programming (関数型ロジックプログラミング)
関数型プログラミングとロジック プログラミングのパラダイムを単一の言語に組み合わせたものです。
- functional programming (関数型プログラミング)
宣言型プログラミングの一種で、関数の使用に焦点を当てます。 関数型プログラミングでは、副次的エフェクトを減らすことで、テストとデバッグでの負担を軽減することを意図しています。 関数型プログラミング言語の例としては Haskell などがあります。
- future
実行が開始されたものの、キャンセルされることなく一時停止状態になったタスクです。 将来のどこかの時点で完了するため future と呼ばれます。
- game loop (ゲーム ループ)
ゲーム ループは、プレイヤーとコントローラー/マウスとのインタラクションや、ゲーム ステートの更新などの入力に対応するために繰り返し実行 (ループ) されて、プレイヤーがゲーム ステートゲーム ステートに及ぼした影響 (プレイヤーがボタンを押すとライトが灯るなど) を出力するコードです。 通常、このループは、ゲームが完了ステート (プレイヤーが目標を達成したときなど) または失敗ステート (プレイヤーがゴールに到達する前に時間切れになるなど) に到達した際に終了します。
- game state (ゲーム ステート)
ゲームや他のシミュレーションのステート (状態) です。 システムを記述するすべてのデータ値で構成されており、 定数と変数の値によってシステム ステートが判断されます。
- gameboard (ゲームボード)
ゲームをプレイするサーフェスです。 従来、ゲームボードという用語は卓上ゲームで用いられてきました。 しかしながら、ビデオ ゲームのレベルを説明するためにこの用語を使用することが一般的になりつつあります。 ビデオ ゲームの開発では、ゲームボードのレベルは、さまざまな形状、配置、または地形を持つさまざまな領域またはゾーンに分割できます。 卓上ゲームボードと同様に、プレイヤーはボード(レベル)上でキャラクターまたはオブジェクトを移動してゲームを進めることができます。
- generator (ジェネレータ)
ジェネレータは、1 回に 1 つずつ一連の値を生成し、シーケンスの値に名前を付けます。
- group (グループ)
()で式を囲むアクションです。 これにより、評価順が明示的に指定されます。 グループ化によってコードの可読性を高めることもできます。- handler (ハンドラ)
ハンドラは、バインド イベントに応答するために呼び出される関数です。 たとえば、関数をボタンの InteractedWithEvent にバインドすると、プレイヤーがそのボタンとやり取りするたびに、そのイベントに関連付けられているハンドラが呼び出されます。
- hard-coded (ハードコード)
ハードコードされたデータは、データを変数に割り当てる代わりにコードに直接記述されます。 通常、これによってコードに柔軟性がなくなり更新が難しくなりますが、意味がある場合もあります。
- head node (先頭ノード)
- hexadecimal (16 進)
Verse では、基数 10 を使用する 10 進数システムではなく、16 進数 (基数 16) システムを使用して整数を表すことができます。 これは、0 ~ 9 の数字と A ~ F の文字で 16 進値が表されることを意味します。 たとえば、0x7F は 127 と、0xFACE は 64206 と同じです。
これは、整数を表す別の方法です。
- hierarchical (階層的)
ランク、重要性、または制御の明確なレベルや階層がある状態を指します。 一般的な階層関係には、親/子やスーパークラス/サブクラスなどがあります。
- IDE
統合開発環境 (IDE) は、プログラムの作成とデバッグのためのユーザーインターフェース (UI) を提供するソフトウェアです。
- identifier (識別子)
- if expression (if 式)
if式を使用すると、プログラムのフローを変更する判定を行うことができます。 他のプログラミング言語と同じように、Verse のif式は条件付き実行をサポートしていますが、Verse では条件で成功と失敗を使用して判断を下します。- immediate (即時)
immediate 式は遅延なく評価を行い、現在のシミュレーションの更新内で評価を完了させます。
- immutable (不変)
- imperative programming (命令型プログラミング)
プログラムによって、プログラムの実行がステップごとに明確に示されるパラダイムです。 命令型プログラミング言語の例としては C などがあります。
- index (インデックス)
インデックスは、数値表現でシーケンスのアイテムの位置を表します。 シーケンスは、リスト、一連の文字、または値の任意順序の場合があります。
インデックスはゼロベースの番号付けを使用します。 これは、インデックスの最初の位置が「0」に、5 番目が「4」になることを意味しています。
- infer (推測)
インスタンスの中には、定数の作成時などに型を明示的に指定する必要のないものがあります。 たとえば、
MyConstant := 0では、整数値が割り当てられることから MyConstant の型は int であると推測されます。 このようなインスタンスでは型が推測されます。- infinite loop (無限ループ)
- infinite recursion (無限再帰)
無限再帰は、関数が自分自身を直接的または間接的に呼び出した結果、呼び出しが永続的に発生して終了することがない状態になった場合に起こります。 結果として、プログラムがハングアップします。
- infix (インフィックス)
- inheritance (継承)
Verse では、他のクラスのフィールドやメソッドを追加または変更することによって別のクラスの定義を広げるクラスを作成できます。 1 つのクラスが別のクラスから定義を継承するため、これは多くの場合にサブクラス化や継承と呼ばれます。
- initialize (初期化する)
- instance (インスタンス)
インスタンスは、アセットのユニークなコピーと考えることができます。 オリジナル アセットは、作成する新しいインスタンスすべてのデフォルト プロパティを決定します。 インスタンスのプロパティに対する変更は、オリジナル アセットには影響しません。 たとえば、マスター マテリアルを変更することなく、マテリアルを変更して異なるアピアランスにすることができます。 これは、マテリアル インスタンスになります。
Verse では、インスタンスは、変数を作成し、変数の宣言と呼ばれる識別子と型の指定を行ってから、初期化と呼ばれる変数への値の割り当てを行います。
- instantiate (インスタンス化する)
何かのインスタンスを作成します。
Verse では、インスタンス化とは、クラスや構造体などのデータ構造やデータ型のインスタンスや値を作成することを指します。 「アーキタイプ インスタンス化」も参照してください。
- integer overflow (整数オーバーフロー)
整数オーバーフローは、整数型として定義された変数に格納しようとした値が大きすぎる場合に発生します。
- internal class (内部クラス)
epic_internalとマークされているクラスのことであり、そのクラスから独自のインスタンスを作成することはできないことを意味します。 内部オブジェクトへアクセスするため API のみを使用することができます。- interpolation (補間)
既知の 2 つの値からその間にある新しい値を算出することを指します。
- interpreter (インタープリタ)
プログラムを行ごとに分析して実行するプログラムです。
- invocation time (呼び出し時間)
式の評価に要する時間です。 即時呼び出しは実質的にまったく時間がかかりません。 async 式はすぐに完了する場合もあれば、潜在的な場合もあります。
- invoke (呼び出す)
「呼び出し」を参照してください。
- is-a relationship (is-a 関係)
親クラスと子クラスの関係を「is-a」関係と呼びます。 is-a 関係にある子クラスは、その親クラスから継承します。
- iterate (イテレート)
各要素のコードを順に実行することを指します。
- key-value pair (キー/値のペア)
キーに値を関連付けると、それらが組み合わされてキー/値のペアになります。 キーを使用することで値を参照できます。
- keyword (キーワード)
キーワードは、コンパイラにとって特別な意味を持つ予約語です。 キーワードの例としては、
forやクラスなどがあります。 キーワードを識別子として使用することはできません。- lifespan (有効期限)
「ライフタイム」を参照してください。
- lifetime (ライフタイム)
オブジェクトが作成されてから破壊されるまでの期間です。 有効期限と同義です。
- linked list (連結リスト)
各要素がリストの次の要素への参照を格納している線形データ構造です。
- linked list node (連結リスト ノード)
連結リストの各要素はノードと呼ばれます。 ノードは、リストにあるデータと次のノードへの参照を保持しているコンテナです。
- literal (リテラル)
数字や文字などの Verse プログラミング言語の固定値です。 たとえば、1 は整数リテラルです。
- local (ローカル)
コード ブロック内の定数や変数を指します。 これらは作成されたコード ブロックの外部では使用できません。 「スコープ」も参照してください。
- locale (ロケール)
プログラミングでは、ロケールはユーザーの言語、地域、およびユーザー インターフェースの他の特徴を定義する一連のパラメータです。 Verse では、
localeはmessageをローカライズする際のコンテキストを設定する型であり、ロケールに基づいたテキストと数値の言語に影響を与えます。- logic programming (ロジック プログラミング)
ブール ロジックを使って、システム内に存在する問題に関するファクトとルールの表現方法を制御するプログラミング パラダイムです。
- loose property (ルース プロパティ)
- math expression (数式)
Verse の数式では、4 つの演算子の 1 つを使う式です。このときに使用できる演算子は、
+、-、*または/のいずれかです。- member (メンバー)
(Verse のクラス、構造体、インターフェース、モジュールなどの) 複合データ構造の下位区分である、名前付きの変数または関数です。 多くの場合、メンバー変数はフィールドと呼ばれ、メンバー関数はメソッドと呼ばれます。
- metaverse environment (メタバース環境)
永続的でグローバルに一貫性のある、リアルタイムの 3D 世界です。ユーザーが作成した相互依存の複雑な並列処理コードを実行するランタイム環境であり、数百万人のユーザーが同時に接続します。
- module (モジュール)
Verse のモジュールは、再分配して利用でき、依存関係を壊さなくても経時的に進化することが可能なコードのアトミック ユニットです。 Verse ファイルにモジュールをインポートすることにより、他の Verse ファイルのコード定義を使用できます。
詳細については、「モジュールとパス」を参照してください。
- mutable (可変)
これは、作成後も変更できるオブジェクトのステートを指します。 Verse では、可変にできるのはポインタのみです。
不変と比較してください。
- mutex (ミューテックス)
ミューテックスは、1 つだけスレッドを使用する共有リソースへの排他的アクセスを許可する同期プリミティブです。 「相互排除」も参照してください。
- mutual exclusion (相互排除)
1 つ以上のプロセスがコードの同じセグメントにアクセスする場合、そのセグメントはクリティカル セクションと呼ばれます。 相互排除は、2 つのプロセスが同時にクリティカル セクションにアクセスできないようにする方法です。
- NaN
Not a Number (非数) を表す値です。
- native (ネイティブ)
nativeは、要素の定義の詳細が C++ で実装されていることを示します。 この指定子は、デベロッパーが後で使用できる C++ の定義を自動生成することが可能です。native指定子は、クラス、インターフェース、列挙型、メソッド、およびデータで使用されます。- native_callable
インスタンス メソッドがネイティブであり (C++ で実装されている)、他の C++ コードによって呼び出すことができることを示します。 この指定子はインスタンス メソッドで使用されていることがわかります。 この指定子はサブクラスには反映されないため、この指定子を持つメソッドをオーバーライドする際に、これを定義に加える必要はありません。
- nested (ネスティング)
コードがネスティングされている場合、1 つのコードブロックがより広範な関数を実行する別のコードブロック内に含まれています。
- no-rollback
このエフェクトは、関数の可変データの読み書きを取り消すことができず、(失敗したときにロールバック動作をする) 失敗コンテキストで関数を呼び出せないことを示します。
- node (ノード)
UEFN では、ノードはグラフベースのシステム内の基本単位であり、特定の機能、操作、またはデータ ポイントを表します。 ノード グラフのコンテキストでは、ノードとは、音源、エフェクト (リバーブやディレイなど)、ミキサー、出力など、オーディオ信号を処理またはルーティングする個々のコンポーネントを指します。
Verse では、「連結リスト ノード」を参照してください。
- object (オブジェクト)
UEFN では、「オブジェクト」はアセットと同義語です。
Verse では、クラスのインスタンスはオブジェクトです。 インスタンスには、そのクラス型で定義された同じ動作が含まれますが、実数値が伴います。
インスタンスとオブジェクトという用語は同義です。
- object-oriented programming (オブジェクト指向プログラミング)
オブジェクト指向プログラミング (OOP) は、クラスとオブジェクトの概念に依存するプログラミング パラダイムです。
- open world language (オープン ワールド言語)
さまざまなユーザーや組織が作成した相互依存のモジュールが、インターフェースの互換性や永続データの互換性を損なうことなく、明確に定義された細分類ルールに従って経時的に進化できる言語です。
- operand (被演算子)
演算を実行する数です。 たとえば、式
1 + 2では、+が演算子、1と2の両方が被演算子になります。- operation (演算)
特定のタスクを達成するためにプログラムで実行されるアクションです。 コンピュータの演算には、入力、処理、出力、格納という 4 つの基本グループがあります。 演算は式の一種です。
- operator (演算子)
アクションや処理を表す記号です。 たとえば、
1 + 2では+が演算子です。- operator precedence (演算子の優先順位)
これは、Verse で演算子を組み合わせるときに組み込まれる評価順を指します。 たとえば、同じ式で複数の演算子が使用される場合は、それらの演算子を評価する順番が重要となります。
たとえば、乗算は加算より優先されるため、「
1 + 2 * 3」は「3 * 3」としての評価を受けません。- order of evaluation (評価順)
- overload (オーバーロード)
関数または演算子をオーバーロードすると、同じ関数名や演算子シンボルに異なるパラメータを指定できます。 たとえば、ある 3D ベクターが (1,2,3) のような別の 3D ベクターに等しいと述べる場合、それはきわめて明確ですが、 等号演算子を使用して 3D ベクターが単一の数値 (1 など) に等しいと記述することもできます。 この場合はおそらく、3D ベクターは (1,1,1) に設定されますが、オーバーロード部分にはパラメータが異なる複数の「3D Vector =」演算子が存在します。 この言語では、コンテキストを調べてどの演算子を使用するのかを確認する必要があります。
- override (オーバーライドする)
Verse では、スーパークラスからフィールドをオーバーライドして初期値を割り当てることができます。 次に例を示します。
Versetank := class(player_character): StartingShields<override> : int = 100 MaxShields<override> : int = 200 AllowOvershield<override> : logic = true DamageReduction : int = 50 CreateTankPlayerCharacter() : tank = return tank{}タンク クラスには、デフォルトのクラスの値とは異なる
StartingShields、MaxShields、およびAllowOvershieldの値が含まれます。また、同じようにメソッドの値もオーバーライドできます。
詳細については、「サブクラス」を参照してください。
- paradigm (パラダイム)
何らかの典型的なパターンやモデルです。 プログラミングでは、プログラミング言語の構成がパラダイムになります。 プログラミング言語には次の 4 つの主要なパラダイムがあります。
命令型
logic
関数型
オブジェクト指向
加えて、Verse のようなマルチパラダイムの言語もあります。
- parallel (同時)
個別のプロセッサなどで同じ物理的期間に実行される複数の演算処理が同時に該当します。
- parameter (パラメータ)
型などのドメインを含む入力変数と、後で関数の本体で使用される、関数シグネチャで定義される任意のデフォルト値です。 引数と比較してください。
- parametric type (パラメトリック型)
- parse (パースする)
コンピュータ サイエンスにおいて、パースとは、コマンドの文字列 (通常はプログラム) を処理しやすいコンポーネントに分け、正しい構文を作るために分析してから、各コンポーネントを定義するタグに関連付けることを指します。
- parser (パーサー)
コードをパースするためのプログラムです。
- Perforce
Perforce (P4) はリビジョン コントロール (ソース コード管理またはバージョン管理とも呼ばれます) を行うソフトウェア ツールで、ソフトウェア コードに対する変更をトラックして管理できます。 これは、複数のプログラマーが同じプロジェクトで作業を行う場合などに便利です。 たとえばプログラマーがミスをした場合に、バージョン管理によってそのコードの以前のバージョンと比較して、他のプログラマーの作業を中断することなく、その問題を特定して修正することが可能です。
- PingPong animation mode (ピンポンアニメーションモード)
キーフレームが最後に到達したらアニメーションの再生方向を反転させて、逆方向に再生することです。
- playspace (プレイ空間)
プレイヤーやチームの配列、または特定のプレイヤーのチームを取得するために使用する Verse API モジュールです。 さらに、プレイヤーが追加または削除されたイベントをサブスクライブすることもできます。
- pointer (ポインタ)
ポインタは、指定された値の型を保持できる可変の「ボックス」を参照する方法です。 ポインタを使用して、そのボックスの特定の値を変更することができます。 値と比較してください。
- pointer variable (ポインタ変数)
ポインタ変数は、値が格納されるメモリ位置を指し示します。 ポインタ変数の作成後にそのポインタ変数のメモリ位置を変更することはできませんが、そのメモリ位置に格納された値を変更することは可能です。
- polling (ポーリング)
ポーリングとは、クライアント プログラムで同期アクティビティとして外部デバイスのステータスをアクティブにサンプリングすることを指します。 ポーリングは入出力 (I/O) の面で最も多く使用され、ポーリング I/O やソフトウェア駆動 I/O とも呼ばれます。
- polymorphic (ポリモーフィック)
ポリモーフィック (polymorphic) は、「多」を意味する poly- と「形」を意味する -morph に由来する用語です。 ポリモーフィックな動作は、さまざまな条件下で変数に多様な値を使用できる場合に生じます。
- postfix (ポストフィックス)
- precedence (優先順位)
- predicate (述語)
Verse では、成功または失敗する部分が述語に該当します。
- preemption (プリエンプション)
後で再開するつもりで実行中のタスクを一時的に中断することをプリエンプションと呼びます。 これは通常、タスク内でこのための処理を作成することなく、外部のスケジューラによって行われます。
- prefix (プレフィックス)
- primitive type (プリミティブ型)
プリミティブは、別の型から作成されない型です。 つまり、プリミティブは複合型ではなく、それ以上分解できません。 組み込みのプリミティブ型の例としては、
void、logic、int、float、rational、charなどがあります。 Verse 言語にはプリミティブが組み込まれています。「コンテナ型」と比較してください。
- program (プログラム)
プログラムは、コンピュータに動作を指示する一連の命令です。 プログラムの基本は、コンピュータが入力を受け取って出力を返す方法を示すことにあります。
プログラムは問題を解決しますが、 文字どおりに実行されるものであり、 悪霊と契約するようなものです。 魔神 (プログラム) はきわめて正確にユーザーが要求するものを返します。 そのとおりです プログラマーが、どのような入力を受け取ってどのような出力になるのかを正確に示すのではなく、何が起きるのかを推測に頼ると、エラーが発生します。
- programming (プログラミング)
- programming language (プログラミング言語)
コンピュータ プログラムを記述するために使用する正式な言語です。 数多くのプログラミング言語があり、それぞれに厳格なルールが設けられています。 プログラミング言語の例としては、インタラクティブなストーリー、ゲーム、アニメーションの開発に使用されるビジュアル プログラミング言語の Scratch や、ゲーム開発で使用されることが多いテキストベースの言語である C++ などがあります。 Verse は、開発ツールの知識を深めたいと考えているクリエイター向けに Epic Games が開発したプログラミング言語です。
- propagate (反映する)
関数での反映は、呼び出し元が失敗時に起きることに対処する必要がない場合に行われます。 たとえば、
decidesエフェクトを含む関数は、decidesエフェクトを含む別の関数から呼び出されることがあります。 この場合、何が呼び出されたとしても、呼び出し元はその後の失敗に対処する必要があります。- property (プロパティ)
- pseudocode (疑似コード)
疑似コード (Pseudocode、発音:SOO-doh-kohd) とは、アルゴリズムが行うべき動作を平易な言語 (プログラミング言語ではない) で詳細に記述したものです。 「Pseudo-」は真実ではない、本物ではないという意味を持つため、疑似コードはフェイク コードと言えますが、アルゴリズムが何を達成すべきかを調べるには便利です。
疑似コードは大まかな概要と捉えることができます。 通常、疑似コードは、実際にコーディングを始める前に、プログラムの大規模または複雑な部分について計画を立てる際に使用されます。
- public member (パブリック メンバー)
- pure
入力が同じであれば関数が常にまったく同じ出力を生成し、副次的影響をもたらさない (可変の変数や IO エフェクトなどに書き込む) ことを宣言します。
- qualify (修飾する)
識別子を「再利用」できるスコープ内でその識別子を定義することを指します。 たとえば、「cat」という名前の定数があります。「sarah.cat」という名前のクラス フィールドに同じ名前を使用することがあります。 どちらにも名前に「cat」が含まれていますが、「sarah.cat」は 修飾されています。
- query (クエリ)
- race condition (競合状態)
競合状態は、順番に実行する必要がある演算が正しく実行されるようにするために、プログラムが 2 つ以上の演算を同時に実行しようとしたときに発生します。
- RAII
Resource Acquisition Is Initialization の略語である RAII では、リソースをより効果的に管理する方法として、初期化と最終化の間でのみ存在するリソースをオブジェクトが取得するタイミングが記述されます。
- raise (発生)
関数がシグナルを発すると、イベントが発生します。 ボタン操作などのイベントが発生すると関係者に通知され、すべてのイベント ハンドラが呼び出されます。
- range expression (範囲式)
範囲式には、
..を挟む 2 つの値 (1..5など) を含む、範囲内のすべての数値が含まれます。 範囲式は、for式などの一部の場所のみで使用できます。- rational number (有理数)
2 つの整数を使った既約分数として表現できる数値です。 たとえば、「1.75」は「7/4」として表すこともできますが、2 の平方根 (√2) は分数で表現できないため、これは無理数です。 無理数の別の例としては円周率 (π) があります。円周率は 3.14159... で始まって 無限に続きます。
- raycasting (レイキャスト)
レイキャストは、オブジェクトから空間内に目に見えない線を描き、何かがそれに衝突するかどうかを見つけます。
- recursion (再帰)
再帰とは、関数が自らを呼び出すことを指します。
- refactor (リファクタリング)
機能を変えずにコードの構造を変えることです。 たとえば、プログラムで何度も繰り返されるコード ブロックはリファクタリングをして、関数呼び出しにすることができます。 リファクタリングを行うことで、コードの挙動を変えずに、コードの複雑さを軽減し、コードを読みやすくすることができます。
- REPL
REPL (Read-Evaluate-Print Loop) は、コードを入力し、そのコードを読み取って評価してから結果を確認できるコンピュータ環境です。 REPL を使用すれば、何も壊すことなく言語を詳しく調べ、何が機能するのか (またはしないのか) を確認することが可能です。
- result (結果)
- return
プログラムにサブルーチンから離れてリターン アドレスに戻るように指示する式です。 リターン アドレスは、サブルーチンが呼び出された場所です。
関数のコード ブロックの最後の式が正しい値を生成することに依存するのではなく、
return式を使用して結果を明示的に指定することもできます。 return 式が実行されると、関数のコード ブロックはすぐに終了します。 つまり、他のコードの前に return 式を配置すると後続のコードは実行されません。- rollback (ロールバック)
- routine (ルーチン)
「関数」を参照してください。
- runtime (ランタイム)
ゲーム、シミュレーション、またはアプリケーションの実行に費やされる時間を指します。 コンパイルに費やされた時間を指すコンパイル時間、または開発、コンパイル、デバッグに費やされた時間を指す開発時間と比較してください。
ランタイム時に発生するものと、コンパイル時に発生するものを区別することが一般的となっています。
- scope (スコープ)
スコープとは、プログラムの中で名前と値の関連付けが有効な部分と名前を値の参照に使用できる部分のことです。 たとえば、関数内で作成する定数や変数は関数のコンテキスト内のみに存在します。 つまり、オブジェクトのライフタイムは、それらのオブジェクトが作成され、そのコード ブロックの外部では使用できないスコープに限定されます。
- script (スクリプト)
- self variable (self 変数)
Selfは、メソッドが呼び出されたクラスのインスタンスを参照するためにクラス メソッド内で使用できる、Verse での特殊な識別子です。Selfを使用しなくてもメソッドが呼び出されたインスタンスの他のフィールドを参照することはできますが、インスタンス全体を参照する場合はSelfを使用する必要があります。- semantic analysis (セマンティック解析)
コンテキスト依存解析と呼ばれることもあります。 セマンティック解析は、ユーザーが作成したソース コードから必要なセマンティック情報が収集された後、コンパイラで実行されます。 セマンティック解析では、コードにセマンティックなエラーがないか整合性がチェックされ、各演算子に被演算子が指定されているかの型チェックが行われ、変数が使用前に定義されているかが確認されます。
- semantic error (セマンティック エラー)
「コンパイラ エラー」を参照してください。
- semantics (セマンティクス)
- semaphore (セマフォ)
セマフォはミューテックスのようなものですが、ミューテックスが使用可能なリソースから他のスレッドを締め出すのに対し、セマフォはリソースが使用中であることを知らせるだけという点で異なります。
- sequential execution (順次実行)
- serialization (シリアル化)
保存ファイルからデータを読み取ったり書き込んだりするプロセスです。 クラス/構造体には存在しないプロパティが読み取り対象の保存ファイルに含まれている場合、そのプロパティはルース プロパティとして扱われます。
- set
プログラムの実行中に変数の値を変更するために使用できるキーワードです。
構文は
set name = valueです。setがキーワード、nameが変更する変数の名前、valueが変更後の値です。これは代入と呼ばれます。
- shadowing (シャドウイング)
シャドウイングとは、ある識別子によって別の識別子が非表示になることを指します。 シャドウイングは Verse のエラーであり、これによってコードをコンパイルできなくなります。
- side effect (副次的エフェクト)
- signed integer (符号付き整数)
符号付き整数は、正数か負数、または 0 を保持できる値です。 左端で + か - を使用してその数が正であるのか負であるのかを示せることから、符号付き整数と呼ばれます。 符号なし整数は正数または 0 にしかなりません。
- simulation update (シミュレーションの更新)
シミュレーションの繰り返される段階やステップ、またはロジック、動作、その他の計算における増分です。 この用語は単に更新と略されたり、ティックまたはフレームと同義で使用されたりします。 全般的に、シミュレーションの更新には、定数または変数のいずれかになり得る経過時間が含まれます。 この経過時間はデルタ タイムとも呼ばれ、実際の時間の流れに一致する場合も、そうでない場合もあります。 つまり、シミュレーションの更新は実際の時間よりも速い場合や遅い場合、さらには同じになる場合もあります。
シミュレーションの更新はフレームのレンダリングと 1:1 のステップになる傾向がありますが、Verse ではこれがデフォルトです。 ただし、シミュレーションの更新頻度はフレームと多少異なることがあります。たとえば、シミュレートしたオブジェクトの変更点のイテレーションを行っている間に、オンライン ゲームクライアントがサーバーまたは物理システムと非同期になった場合などです。 また、シミュレーションが視覚的にまったくレンダリングされないこともあります。
- spawn expression (spawn 式)
spawn式は starts an async 関数を開始します。 spawn に続く式はすべて、spawn式の完了を待つことなくすぐに 実行されます。spawnは、完了するまで独立して継続します。- specifier (指定子)
指定子は定義に追加情報を適用します。 たとえば、関数定義の
decidesエフェクト指定子は、その関数を失敗する可能性があるものとマークします。- speculative execution (投機的実行)
Verse は失敗コンテキストを利用して、アクションをコミットせずに試行錯誤することができます。 これは投機的実行と呼ばれます。 式が成功した場合はその式のエフェクトがコミットされます。たとえば、変数の値の変更などがあります。 式が失敗すると、式のエフェクトはロールバックされ、式が評価されなかったようになります。
- splat (スプラッティング)
関数の単一要素としてタプルを使用すると、関数がタプルの要素のそれぞれで個別に呼び出されるかのようになります。 これはタプル展開、またはスプラッティングと呼ばれます。
- standard library (標準ライブラリ)
Verse で使用できる一連の関数、定数、およびその他の言語の定義です。 このライブラリは、一般的なプログラミングのニーズに対応する実装を提供します。 プログラマーが頻繁に使用する、数学関数のようなもののリソースです。
- statement (文)
結果値を持たないスタンドアローンのコマンドです。 Verse は文を使用しません。 代わりに式を使用します。
- static checking (静的チェック)
- STM
ソフトウェア トランザクショナル メモリ (STM) は、並列処理プログラミングでの共有メモリへのアクセスを制御する、データベース トランザクションに似た並列処理制御メカニズムです。 結局のところ、いくつかあるモチベーションの中でも特に大規模分散シミュレーションのパフォーマンスを向上させることから、Verse では STM が中心に据えられます。
- strongly-typed (強い型付け)
すべての識別子に型が割り当てられると、プログラミング言語は強い型付けになります。 型が明示的に指定されていなければ、その型は推測されます。 つまり、そのような識別子の型と演算がそのような型に与える影響がわかるため、言語がランタイム中に予測不可能な結果を出すことはありません。 「静的チェック」も参照してください。
- structured concurrency (構造化並列処理)
構造化並列処理とは、特定の並列処理コマンドと async コンテキストのスコープに制約される有効期限内の並列処理演算を指します。 これは、関連するスコープに制約される、
if、for、またはreturnのような構造化フロー制御です。- subexpression (部分式)
- submodule (サブモジュール)
別の Verse モジュール内の Verse モジュールです。 フォルダとサブフォルダのようなものであり、サブモジュールが下位に移動する際は、そのパスに新たに /NameOfModule が追加されます。
- subroutine (サブルーチン)
頻繁に使用される演算を実行するように設計されたコンピュータ プログラム内の一連の命令です。 関数がいくつかの計算を実行して呼び出し元に結果を返すという点を除いて、サブルーチンは関数と似ています。 サブルーチンは、呼び出し元のプログラムに報告することなくジョブを実行します。
- subscribe (サブスクライブ)
サブスクライブは、イベントが発生したときに呼び出す関数を指定する方法です。 これは、イベントへのバインディングと呼ばれます。 バインドされた関数は、ハンドラと呼ばれます。
- subtype (サブタイプ)
そのスーパータイプの全演算をサポートする型です。
subtypeキーワードは括弧とともに使用して、特定の型に制約される型を指定できます。 たとえば、複数の Verse 配列メソッドではsubtypeを使用して、動作するメソッドに対して比較可能なスーパータイプとなるように、配列の全要素を定義できます。Verse(Input:[]t where t:subtype(comparable)).RemoveFirstElement<public> (ElementToRemove:t)<computes><decides>:[]t RemoveFirstElementそのため、配列内の各要素は、すべて
ElementToRemove引数と等しいかどうかを判定できるように、comparableのスーパータイプである必要があります。- succeed (成功)
- superclass (スーパークラス)
クラスは、継承するクラスのスーパークラスのすべてのフィールドを含む、スーパークラスを継承できます。 このようなクラスは、スーパークラスのサブクラスと呼ばれます。
- supertype (スーパータイプ)
スーパータイプは、少なくとも 1 つのサブタイプを含む型です。 スーパータイプがサポートするすべての演算は、すべてのサブタイプでもサポートされている必要があります。 Verse では、
anyが他のあらゆる型の唯一のスーパータイプであり、その他すべての型はanyのサブタイプです。comparable型は、Verse で比較可能なすべての型 (intやfloatなど) のスーパータイプです。- suspends
関数をキャンセルすることなく一時的に停止 (サスペンド) するエフェクトです。
suspends式により、async 関数で完了前に制御を一時停止し、他の並列処理式に協調的に転送できます。詳細については、「タイム フローと並列処理」を参照してください。
- syntax (構文)
プログラミング言語のルールまたは文法です。
セマンティクスと比較してください。
- syntax error (構文エラー)
「コンパイラ エラー」を参照してください。
- tail node (末尾ノード)
- thread (スレッド)
オペレーティング システムで実行できる処理の最小単位です。
- tick (ティック)
ティック (場合によってはフレーム) と同義で使用される「シミュレーションの更新」を参照してください。
- time flow (タイム フロー)
床や壁などのサーフェス上のグリッドのセクションです。
タイム フロー制御は Verse プログラミング言語の中核であり、並列処理式によって実現されます。
タイム フローはフロー制御の一種ですが、制御フローが、プログラムの式の順番に基づいてコンピュータで命令が実行される順番に関するものであるのに対し、タイム フローは、並列処理式の使用方法に基づいて、順番ではなく時間で実行を制御します。
タイム フローは、並列処理と同じ意味です。
- top-level expression (トップレベルの式)
トップレベルの式は、コード ブロック内にネスティングされない式です。 トップレベルの式は、ネスティングされたコード ブロックなどの複合式の場合があります。
- transacts
関数に
transactsエフェクトがある場合、それはその関数がデータを読み書きできることを意味しますが、その関数に decides エフェクトもある場合は、それらのアクションをロールバックできます。 このエフェクトは排他的エフェクトです。排他的エフェクトが指定されていない関数ではデータの読み取りと書き込みは可能ですが、ロールバックを行うことはできません。
- type (型)
型は、データに対して実行できる演算とその型のデータ値の格納方法を定義します。 整数や文字列などの共通型、複合型、カスタム型があります。 「プリミティブ型」と「コンテナ型」も参照してください。
typeキーワードは中括弧とともに使用して、必要な型を定義できます。 関数宣言と数値範囲は現時点で宣言としてサポートされています。 たとえば、subscribableインターフェースのSubscribe()関数は、typeキーワードを使用して、そのCallbackパラメータが関数とvoid戻り型であることが必要と定義します。VerseSubscribe<public>(Callback:type {__(:t):void})<transacts>:cancelable- type alias (型エイリアス)
型エイリアスは、既存の型の新しい名前を作成する方法です。 型エイリアスを宣言すると、既存の型ではなくエイリアス名を使用できます。 型エイリアスは、新しい型を作成するのではなく、既存の型の新しい名前を提供するだけです。
- type casting (型変換)
構文
NewReference := type_to_cast_to[Reference]を使用して、クラスをそのサブクラスのいずれかに変換できます (型変換と呼ばれる)。ここでtype_to_cast_toは変換後の型です。 これは失敗する可能性がある式です。たとえば、クラスがサブクラスとは異なる型の場合、オブジェクトをその型に変換できないと型変換が失敗するためです。次の例では、型
creative_device_baseを持つTaggedDeviceをcustomizable_light_device型に変換し、特定の関数を使用できるようにする方法について示しています。TaggedDeviceがカスタマイズ可能なライトの仕掛けではない場合、TurnOn()を呼び出しません。Verseif (LightDevice := customizable_light_device[TaggedDevice]): LightDevice.TurnOn()- type checker (型チェッカー)
型チェックは、実行前のプログラムをチェックするために使用されます。 これにより、データ型の値と構文が検証されます。 プログラミング言語の型システムの主な目的は、型のエラーに起因するプログラムのバグの可能性を減らすことにあります。
- Unicode
言語、プラットフォーム、およびデバイスの文字に関して同等のサポートを提供するために Unicode Consortium が開発した文字エンコーディングの標準です。
- unique
unique 指定子をクラスに適用して、一意のクラスにすることができます。 unique クラスのインスタンスを作成するために、Verse は結果のインスタンスに一意の ID を割り当てます。 これにより、unique クラスのインスタンスは、その ID を比較するだけで等しいかどうかを判断できます。 unique 指定子がないクラスは、そのような ID がなく、等しいかどうかを判断するにはそのフィールドの値を比較する必要があります。 つまり、unique クラスは = および <> 演算子で比較でき、比較可能な型のサブタイプです。
- unset
- unstructured concurrency (非構造化並列処理)
特定の並列処理コマンドや async コンテキストのスコープに論理的に制約されない有効期限のある並列処理式です。 この有効期限は、式が実行されたスコープを超える可能性があります。
gotoまたはassembly jumpコマンドなどの非構造化フロー制御に似ています。- UTF-8
言語、プラットフォーム、およびデバイスの文字に関して同等のサポートを提供するために Unicode Consortium が開発した標準である、Unicode の文字エンコーディングの標準です。
絵文字は画像やアイコンのように見えますが、実際にはそうではありません。 UTF-8 (Unicode) 文字セットの文字です。
UTF-8 は、世界中のほぼすべての文字とシンボルを網羅しています。
- value (値)
値は、演算のためにプログラムが使用する情報です。 値の例としては数値やテキストがあります。
- varies
このエフェクトは、関数に対する同じ入力が必ずしも同じ出力を生成するとは限らないことを示します。
variesエフェクトは、関数の動作がそれを含むパッケージの新しいバージョンで同じになることが保証されないことを示します。- verbosity (詳細)
ログが生成されたときに表示される追加情報の量を制限する設定です。
- Verse
Verse は、ゲームプレイのプログラミングに重点を置いた、静的にチェックされるプログラミング言語です。
- Verse Explorer
- Verse path (Verse パス)
「パス」を参照してください。
- Verse-authored device (Verse で作成した仕掛け)
Verse を使用して直接プログラミングされた、Unreal Editor for Fortnite (UEFN) で使用する仕掛けです。
- visual programming language (ビジュアル プログラミング言語)
プログラマーがビジュアル要素を使用して (ドラッグして他の要素と接続して) 特定のプログラムの命令を実行する、プログラミング言語の一種です。
- Visual Studio Code
VS Code とも呼ばれる Visual Studio Code は、Microsoft 社が開発した、Windows、Linux、および macOS 用のソースコード エディタです。
- VPL
「ビジュアル プログラミング言語」を参照してください。
- zero-based numbering (ゼロベースの番号付け)
シーケンスの先頭の要素に「1」ではなく「0」が割り当てられる番号付けの方法です。 つまり、インデックスの「0」の位置が「1」を表し、1 つ目の位置が「2」を表します。 「0」から始まるシーケンスの番号付けは、数学的表記では一般的です。 プログラミングでは、配列の最初の位置を「0 番目の位置」と呼ぶことがあります。
- コメント
プログラマーが記述するコメントであり、コードの説明や特定のプログラミングについての理由を示します。 コード自体にプログラムの方法が示される一方、コメントは通常、「理由」を示すために追加されます。
コード コメントは
#で始まり、コード内のさまざまな場所に残せます。 プログラムの実行時には、コード コメントは無視されます。コメントは、行の最初に
#を入れて 1 行で記述できます。 行末で改行するとコメントが終了します。Verse# A single line is commented this way.<#でブロックを開始して#>で終了することにより、複数行のブロック コメントを記述できます。Verse<# You can make multi-line comments in your code by starting and ending the comments as shown here. #>コードにコメントを追加するその他の方法については、「Verse 言語クイック リファレンス」を参照してください。
- スニペット
「コード スニペット」を参照してください。
- タイル
床や壁などのサーフェス上のグリッドのセクションです。
メニューオプションを視覚的にまとめる方式です。
Verseの場合: 床や壁などの、表面のグリッドにおける一部分のことです。
- データに変換します
- パス
Verse のパスは、対象を識別するためのグローバル名前空間を提供し、Web ドメインからアイデアを借ります。 これらのパスは永続的で一意なものであり、Verse のすべてのプログラマーが検出できます。
- フロア
- メソッド (method)
- メッセージ
Verse における
messageは、ロケールに依存しないテキストを含めることのできる型です。 初期化すると、message変数がstring値 になり、その文字列がメッセージのデフォルトのテキストと言語になります。- 仕掛け
仕掛けとは、フォートナイトにおけるゲームプレイの制御を意図とした特定の動作を実行するオブジェクトです。
小道具と同じく、仕掛けは自分の島に設置するものです。 しかし仕掛けは小道具とは違い、プレイヤーとのインタラクションを作り出すために使用します。 仕掛けによってその機能は異なりますが、すべてに何かしらの機能が備わっています。
仕掛けは、ゲームプレイに対応するためにカスタマイズ可能な特定の機能を備えた、ゲーム メカニクスのパッケージと考えることができます。 ほとんどの仕掛けはカスタマイズすることができますが、全てにデフォルトの設定があり、カスタマイズしない場合にどう動作するかが決定されています。
Verseにおける仕掛けは、ゲームの仕組みを構築するための基本的な構成要素です。 仕掛けにより、ゲームプレイを制御するプレイヤーのインタラクションを駆動します。
- 依存関係
依存関係は、モジュールが何らかの機能を実行するために他のモジュールに依存している状況です。
- 取得します。
- 基本クラス
他のクラスの派生元となるクラス 基本クラスから継承したクラスは全てのメンバーとメンバー関数を持ち、基本クラスには含まれていない追加プロパティを持つことができます。 基本クラスは、親クラスまたはスーパークラスとも呼ばれます。
- 変数 (コード)
プログラムの実行中に変更できる値です。 変動することがあるため、変数と呼ばれます。
「変数」という用語は、変数と定数をまとめて指すこともあります。変数と定数は似ているものの、定数の値はプログラムの実行中に変更できないという大きな違いが 1 つあります。
変数の基本構文は
var name : type = valueです。varはこれが変数であることを示すキーワードであり、nameは (識別子として知られる) 変数に割り当てる名前です。:は型が次に来ることを示しています。=は値が来ることを示しています。続いて値自体を指定します。 次に例を示します。VersePlayerSpeed : float = 2.0これは、プログラムの実行中に変わることがない、2.0 (10 進値) という値が PlayerSpeed に設定されていることを示しています。
名前と型は宣言であり、値が表現されるところは初期化です。 変数を初期化する際に、その変数に値が割り当てられている必要はありませんが、割り当てておくことがベスト プラクティスです。
変数は、いつでもその値を変更できるという点で定数と異なります。 これは代入式を使用して行います。
- 往復
再生方向を進行方向とその逆方向の間で反転させます。
- 持続型
プレイヤーのデータがセッションから保存され、そのゲームの次のセッションに再ロードされることを、永続性と呼びます。
- 整数
整数は、正、負、または 0 のいずれかの (小数ではない) 整数です。
- 開発者
フォートナイト ツールを使用して、フォートナイトの島を作成 (開発) する人です (特に UEFN を使用する場合)。 この用語には、フォートナイトの島のデベロッパー、アーティスト、建築家も含まれます。
- 関数 (コード)
関数 (ルーチンとも呼ばれる) は、アクションを実行したり、入力に基づいて出力を作成したりするための命令を出す再利用可能なコードです。
関数を定義するには、ユニークな名前、その結果として期待される情報の型、そして呼び出したときにその関数が行う動作という 3 つの重要な部分を提供する必要があります。
以下は、関数の基本構文です。
Versename() : type = codeblockname() とコロンで区切った型:これは関数シグネチャで、どのように関数を呼び出し、使用しなければいけないかを示しています。また、関数の戻り値は、指定した型の値です。 この形式は、名前の後の () を除いて、コードで関数を呼び出す方法を模倣している定数の作成方法と同様です。
関数のコード ブロック:
=codeblockを指定することで、関数が呼び出されたときに行うことを定義します。codeblockは 1 つ以上の一連の式です。 関数を呼び出すたびに、コード ブロック内の式が実行されます。
- 関連する B.A.S.E. アクタ
エフェクトは、関数で示すことができる動作のカテゴリです。
以下の例では、関数が「
IsCriticalHealth」と命名され、Healthパラメータで入力として整数値を取得することがコードで述べられています。 次に、関数が示すエフェクトがdecidesとtransactsであること、つまり関数が失敗コンテキストであり、失敗した場合はそのアクションをロールバックできることが述べられています。 関数に入力として渡されるHealth値が 0.0 より大きく、30.0 以下の場合、関数は成功します。 それ以外の場合は関数が失敗し、その関数を呼び出したコンテキストで失敗を処理する必要があります。VerseIsCriticalHealth(Health : float)<decides><transacts> : void = ((Health > 0.0) && (Health <= 30.0))詳細については、「指定子と属性」を参照してください。