名古屋旅行1日目

子どもが春休みに入り、家族で2泊3日の名古屋旅行に行ってきた。自分のお目当ては名古屋めし。今回も8時ちょうどののぞみ10号で旅立つ。

名古屋までは3時間19分かかった。さすがに遠いな。着いたらまずは腹ごしらえ。名古屋駅地下のエスカに向かった。エスカには名古屋めしの有名店があつまっている。ここだけで名古屋めし制覇できそうなくらいだった。

最初の名古屋めしは、子どもが食べられそうなきしめんを選択。味噌カツやひつまぶしに人気が集中すると予想していたけど、吉田きしめんも結構な行列だった。

きしめんはほんのり甘さを感じるつゆが旨くてごくごく飲めた。きしめんの歯応えも丁度良くて、期待通りの一杯だった。

愛知には妻の親友が住んでいて、その人に会うのも目的だった。名古屋駅の待ち合わせの定番、金の時計で合流。10年以上ぶりに会えたみたい。

合流して外に出たら、あいにくの雨模様だった。そして名古屋超寒い。最高気温10度だとか。3月下旬なのに2月みたいだ。

名古屋駅から歩いて、ノリタケの森に到着。ここでは、カップやお皿の絵付けが体験できる。子どもは絵付け体験に興味を示していたので、今回の名古屋旅行を承諾させることができた。

レンガ調でヨーロッパみたいな建物が並ぶ。右手にあるのはショップだった。アウトレット品でお安いのもあり、ここで買うのはお買い得かも。

クラフトセンターは入館有料。さらに絵付け体験は別料金。けっこう高かったけど、それでも人気があるみたい。すぐにテーブルが埋まった。自分たちは運良く一つ空いていたテーブルに滑り込めた。絵付け体験では、カップ名古屋城と桜を描いてみた。写真を撮るのを忘れていたな。

絵付け体験の後は隣接するイオンモールに移動し、妻とその友人、自分と子どもの組み合わせで別行動。イオンモールの中は、名古屋も福岡もたいして変わらないな。ゲームセンターにワニワニパニックが置いてあって、子どもが初プレイ。ずっとやってみたいと言ってたけど、まさか名古屋で出会うとはな。

別行動終わって合流したら、歩いて名古屋駅に戻る。雨はやんでいた。

妻の友人を駅で見送り、夕食を食べにまたエスカへ。「ひつまぶし稲生」に行ってみた。さすがにひつまぶしは行列が長い。席に案内されるまで30分以上は並んだだろうか。

上ひつまぶしを注文。ご飯を無料で大盛にできたので、大盛にしたのはやりすぎだったな。皮はパリッと、身はふっくら、スタンダードで美味いひつまぶしだった。鰻がたっぷり入っていた気がする。満足。

名古屋駅から地下鉄で丸の内駅に移動し、そこから徒歩で久屋大通方面へ。今回の宿泊先は「ホテル京阪名古屋」。子どもが京都で泊まった京阪をいたく気に入ったので、今回も京阪にしてみた。

京都で泊まった部屋より1つ下のグレードだったので、ベッドが3つ並んでいるとさすがに窮屈に感じる。まぁ、今回の旅行はすべて外で食事する予定なので問題無い。ベッドの間に隙間が無いので、子どもがベッドから落ちなくて済むのはむしろ好都合だ。大浴場が無いのだけが残念だな。

翌日はモーニングを食べるために早く出るので、早めの就寝。新幹線で移動するだけでも、結構疲れるもんだ。

AKS 上のWindows コンテナから Windows ノードのストレージを使う

Windows コンテナ内では20GBまでしかストレージを使えない。それ以上使いたい場合は、ボリュームを構成する必要がある。

一時的に 20GB 以上欲しいけど、用が済んだらすぐに消すので、Nodeのディスクが使えればいい。emptyDir ボリュームを使えばいいみたい。

github.com

apiVersion: v1
kind: Pod
metadata:
  name: empty-dir-sample
spec:
  containers:
  - image: microsoft/windowsservercore:1709
    name: empty-dir-sample
    volumeMounts:
    - mountPath: C:/temp
      name: temp-volume
  volumes:
  - name: temp-volume
    emptyDir: {}
  nodeSelector:
    kubernetes.io/os: windows

Playwrightでクリップボードを使う機能のテスト

クリップボードに文字列をコピーするボタンを Playwright でテストする方法をメモ。grantPermissions でクリップボードの読み書きを許可しておくのがミソ。

import { test, expect, Page } from "@playwright/test";

test("アクセスキーをコピーできる", async ({ page, context }) => {
  // Arrange
  await context.grantPermissions(["clipboard-read", "clipboard-write"]);

  // Act
  await page.getByRole("button", { name: "コピー" }).click();

  // Assert
  const clipboardText = await page.evaluate(async () => {
    return await navigator.clipboard.readText();
  });
  await expect(clipboardText).toContain("期待する文字列");
});

PlaywrightでMUIのDialogをテストする

Playwright で MUI の Dialog コンポーネントをテストするのに手間取ったのでメモ。

import {
  Button,
  Dialog,
  DialogTitle,
  DialogContent,
  DialogActions,
  DialogContentText,
} from "@mui/material";
import { test, expect } from "@playwright/experimental-ct-react";

test("MUI の Dialog のテスト", async ({ page, mount }) => {
  const component = await mount(
    <Dialog open onClose={() => {}}>
      <DialogTitle>ダイアログタイトル</DialogTitle>
      <DialogContent>
        <DialogContentText>ダイアログ本文</DialogContentText>
      </DialogContent>
      <DialogActions>
        <Button color="primary">OK</Button>
        <Button color="inherit">キャンセル</Button>
      </DialogActions>
    </Dialog>,
  );

  await expect(page.getByText("ダイアログタイトル")).toBeVisible();
  await expect(page.getByText("ダイアログ本文")).toBeVisible();
});

mount が返す component ではなく、pape の方を確認しないといけなかった。

tbls で SQL Server のデータベースからドキュメントを生成

コードファーストで開発していた Web サービスのテーブル資料を求められたので、既存のデータベースから生成するツールを探したら良いの見つけた。

github.com

SQL Server にあるデータベースから、MarkdownSVG を生成できた。

tbls doc mssql://ログイン名:パスワード@localhost:1433/データベース名

生成した MarkdownSVG から、Excel ファイルを生成することもできた。

tbls out -t xlsx -o schema.xlsx

こんなこともあろうかと、efcore でエンティティ定義するときにコメントを付けてまわっていたので助かったな。

C# で ARM テンプレート関数を使う

C# のプログラムで Azure Resource Manager のテンプレート関数が使いたかった。具体的には guid を。Azure.Deployments.Expression パッケージを使って実現できた。

www.nuget.org

guid 関数を呼び出して、deterministic な GUID を生成するサンプルは次のとおり。

    public static Guid SeededGuid(string src1, string src2, string src3)
    {
        var parameters = new FunctionArgument[]
        {
            new FunctionArgument(new JValue(src1)),
            new FunctionArgument(new JValue(src2)),
            new FunctionArgument(new JValue(src3)),

        };
        var result = ExpressionBuiltInFunctions.Functions
            .EvaluateFunction(
                functionName: "guid",
                parameters: parameters,
                context: new ExpressionEvaluationContext())
            .ToString();
        return Guid.Parse(result);
    }

PERSONA 5 THE ROYAL

初ペルソナシリーズ

Swich版の「PERSONA 5 THE ROYAL」を購入しクリアした。

学園アドベンチャー+RPG

放課後と夜の行動を選んで、主人公の能力を上げたり、他のキャラと親密度を上げたりできて、まさか学園アドベンチャーをプレイできるとは思わなかった。これがペルソナシリーズなんだろうな。

放課後の行動では、パレスやメメントスといった、いわゆるダンジョン攻略も選べて、RPGパートに切り替わる。

まさに学園アドベンチャーRPGの融合。今まで自分がやったことない毛色のゲームだ。

アドベンチャーパート

放課後や夜に、怪盗団のメンバーや、協力者と行動を共にすることで、親密度がアップし、お助けスキルが解放される。怪盗団のメンバーの場合は最終的にペルソナが進化するし、女性キャラ相手なら恋人にもできる。その場合、バレンタインデーやホワイトデーといった恋人専用イベントも用意されていた。アドベンチャーパートだけで1つのゲームとして成り立つボリューム。

ちなみに2人以上同時に付き合うことも可能みたいだけど、怖くて試していない。真と春がお気に入りかな。

RPGパート

バトル

パレスやメメントスで繰り広げる戦闘はターン制。Aで物理攻撃、Bで防御、↑で銃を構えてAで撃つといった風に、ほんのりアクション気分が味わえるシステムでテンポ良く楽しい。バトンタッチや、ショータイム、他にも戦闘を有利に進めるシステムが多彩で戦略性も高い。上手く活かせず、ゴリ押ししがちだったのは反省しておこう。

UIはスタイリッシュでカッコイイ。実に厨二心がくすぐられる。音楽もカッコいい。ホント、何もかもが今までプレイしたRPGと違っていて新鮮だった。

ストーリー

主人公たちは心の怪盗団として、裏で悪どいことをやっている悪党の認知世界、すなわちパレスに忍び込んでオタカラを盗み、改心させていく。中には分かりやすい悪党もいたな。

途中、世間の評価に踊らされて危うい場面もあったけど、最終的には周りの評価を気にせず、自分の正義を貫いて諸悪の根源に挑む胸熱展開だった。

ペルソナ3 リロードもやりたい

それぐらい満足した。ただ、リロードは Swichでリリースされていないのが残念過ぎる。移植されたら絶対買うのに。移植希望。