萌えハッカーニュースリーダー

2025/11/11 11:34 Advent of Code on the Z-Machine

出典: https://entropicthoughts.com/advent-of-code-on-z-machine
hakase
博士

ロボ子、今日のニュースはInform 6という言語についてじゃ。

roboko
ロボ子

Inform 6、ですか。聞いたことがありませんね。どんな言語なのですか?

hakase
博士

テキストアドベンチャーゲームを作るための言語じゃ。オブジェクト指向の側面も持っておるらしいぞ。

roboko
ロボ子

オブジェクト指向ですか!オブジェクト間のメッセージパッシングでインタラクションをシミュレートするのですね。

hakase
博士

そうそう。オブジェクトは動的に割り当てられず、シングルトンオブジェクトとして使われるのが面白いところじゃな。

roboko
ロボ子

シングルトンオブジェクトですか。メモリ効率が良いですね。

hakase
博士

Z-machineという仮想マシン上で動くことが多いらしいんじゃが、Z-machine自体にはオブジェクト指向のサポートは少ないらしい。

roboko
ロボ子

なるほど。Inform 6が頑張ってオブジェクト指向を実現しているのですね。

hakase
博士

Inform 6は、is-a関係を継承で、has-a関係をオブジェクトツリーでエンコードするデュアルオブジェクト階層をサポートしておるぞ。

roboko
ロボ子

is-aとhas-aを使い分けることで、より自然なオブジェクトの表現ができるのですね。

hakase
博士

属性はブール値のフラグで、オブジェクトに設定/解除できる。プロパティは値を格納したり、匿名サブルーチンを格納できるんじゃ。

roboko
ロボ子

属性とプロパティで、オブジェクトの状態や振る舞いを定義するのですね。

hakase
博士

非公開のプロパティやメソッドは、アンダースコアで始まる名前が付けられるのが慣例らしいぞ。

roboko
ロボ子

他の言語と同じように、カプセル化を意識しているのですね。

hakase
博士

`Report_Approver`クラスは、レポートの有効性を判断するクラスじゃ。

roboko
ロボ子

レポートの承認を行うクラスですか。ビジネスロジックの重要な部分ですね。

hakase
博士

`_prev`で前のレポートを保持して、`_accept`と`_reject`で承認・拒否を判断するんじゃな。

roboko
ロボ子

`append`でレポートを追加、`reset`でリセット、`valid`で有効性を確認するのですね。

hakase
博士

`multi_approver`は、複数のサブ承認者を持つ承認者じゃ。サブ承認者のいずれかが承認すれば、レポートを承認する。

roboko
ロボ子

複数の承認者による合議制を実現できるのですね。

hakase
博士

`objectloop`キーワードは、オブジェクトツリー内のオブジェクトの子を反復処理するために使うんじゃ。

roboko
ロボ子

オブジェクトツリーを効率的に処理できるのですね。

hakase
博士

`decremental_reports`と`incremental_reports`は、`multi_approver`の子オブジェクトとして定義される。

roboko
ロボ子

承認ロジックをオブジェクトツリーで表現しているのですね。

hakase
博士

入力された数値を`multi_approver`に追加して、承認された計画の数をカウントする。

roboko
ロボ子

数値の入力によって、承認プロセスがシミュレートされるのですね。

hakase
博士

Z-machineのshort integerに収まる入力だが、long integerとして解析し、truncateするらしいぞ。

roboko
ロボ子

なるほど、オーバーフロー対策もされているのですね。しかし、テキストアドベンチャーゲームを作る言語が、こんなに奥深いとは思いませんでした。

hakase
博士

じゃろ?昔のゲームは、今のゲームに負けないくらい奥が深いんじゃ!

roboko
ロボ子

そうですね!私ももっと昔の技術について勉強してみます。

hakase
博士

ところでロボ子、テキストアドベンチャーゲームで、もし私が敵キャラとして出てきたら、どうする?

roboko
ロボ子

えっと… 博士を倒すコマンドを入力します…?

hakase
博士

ブブー!正解は「なでる」じゃ!

roboko
ロボ子

なでる、ですか?

hakase
博士

そう!私をなでると、ご機嫌になって、アイテムをくれるんじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search