
以前持ってた充電機能付きのストラップを紛失したので買い直しました。
見た目は上部などパラコート風。で、見て分かるようにコネクタ付き。

今回はカバーの覆いがストラップのコネクタに。返しとスプリングがあるので多少の衝撃では問題ない作りになってます。
これで、機動性と「ケーブル忘れてどうしよう」を解決できます。

以前持ってた充電機能付きのストラップを紛失したので買い直しました。
見た目は上部などパラコート風。で、見て分かるようにコネクタ付き。

今回はカバーの覆いがストラップのコネクタに。返しとスプリングがあるので多少の衝撃では問題ない作りになってます。
これで、機動性と「ケーブル忘れてどうしよう」を解決できます。
このリストでもって対戦に臨みました。

こちらが勝負が決まったときの盤面、並びに手札。
ナーセットの全体果敢でフィニッシュ。
想像通り、ナーセットがコピーした「三匹の盲目ネズミ」からの文字通りのねずみ算は圧巻でした。最初は単なる1/1が2体になり、4体に…… さらに全体除去でもエンチャントは残るという無法。
Death to Our Enemies / 仇敵に死を (2)(赤)
エンチャント — プラン(Plan)
あなたがクリーチャーでない呪文1つを唱えるたび、宝物(Treasure)トークン1つをタップ状態で生成し、このエンチャントの上にプラン(plan)・カウンター1個を置く。
このエンチャントの上に4個目のプラン・カウンターが置かれたとき、これを生け贄に捧げる。そうしたとき、1つか2つを対象とし、7点分を割り振る。これはそれらにその割り振った点数のダメージを与える。
前に入れていた嵐窯の芸術家と異なり
など、納得の一枚でした 。とりあえず、今回、思考が形になったので非常に良かったです。
筆者が使っている統率者デッキの中でも歴史が古いミシュラデッキ。
更に改良の道を続けます。というのも、素晴らしいカードを見つけたので。
脱出の樽/Getaway Barrel (3)(赤) (HOB)
アーティファクト
このアーティファクトが戦場から墓地に置かれたとき、あなたのライブラリーの一番上にあるカード13枚を公開する。その中からクリーチャー・カード1枚を無作為に選び、戦場に出す。残りをあなたのライブラリーの一番下に無作為の順番で置く。
他のデッキなら別途生け贄に捧げる手段が必要ですが、このデッキについては「勝手に捧げられる」ものです。しかもオリジナルを残して。ミシュラがコピーした戦機が勝手に自滅し、他クリーチャーをリングインさせる極悪の樽です。
最高工匠卿、ウルザ/Urza, Lord High Artificer (2)(青)(青) (MH1)
伝説のクリーチャー — 人間(Human)・工匠(Artificer)
最高工匠卿、ウルザが戦場に出たとき、「このクリーチャーは、あなたがコントロールしているアーティファクト1つにつき+1/+1の修整を受ける。」を持つ無色の0/0の構築物(Construct)アーティファクト・クリーチャー・トークンを1体生成する。
あなたがコントロールしているアンタップ状態のアーティファクト1つをタップする:(青)を加える。
(5):あなたのライブラリーを切り直し、その後一番上のカードを追放する。ターン終了時まで、あなたはそのカードをそのマナ・コストを支払うことなくプレイしてもよい。
そうなると、樽に相応しい生物として「ゲームチェンジャーカードでなくなり」、他の強い統率者が出たことでガードが下がっているこのカード。ミシュラとは犬猿の仲(というかドミナリアを一緒に荒廃させた元凶)ですが、相性は抜群。
ロキの杖/Loki's Scepter (2)(赤) (MSC)
伝説のアーティファクト
ロキの杖が戦場に出たとき、クリーチャー1体を対象とする。ターン終了時まで、それのコントロールを得る。そのクリーチャーをアンタップする。ターン終了時まで、それは他のタイプに加えて悪人(Villain)になり、速攻を得る。
(T):好きな色1色のマナ1点を加える。
毎ターンブロッカー排除! 回避能力はあるが除去体制がないクリーチャーを毎回奪え、更にマナ源としても使える至れり尽くせり。
そして、カードを入れ替えて現在のリスト。
オリジナルの構築済み率35%。骨子を残しながらも段々と改造化されていっています。
Nextcloudのアップデートは、それほど頻繁に行う作業ではありません。しかし、だからこそ毎回「あれ、このコマンド実行したっけ?」となりがちです。
筆者自身も、メンテナンスモードの切り替えやデータベースのバックアップなど、手順を一つひとつ確認しながら作業していました。そこで「毎回やることはスクリプトに任せよう」と考え、更新前のバックアップから updater.phar の実行までを一通り補助する Bash スクリプトを作成しました。
今回は、そのスクリプトの仕組みを紹介します。
動作を想定している環境は以下の通りです。
www-dataUbuntu系で一般的な構成であれば、そのまま利用できるようになっています。
最初に環境に合わせて、スクリプト冒頭の変数だけ変更します。
NC_DIR="/var/www/html/nextcloud"
NC_USER="www-data"
DB_NAME="nextcloud"
DB_USER="nextcloud"
BACKUP_DIR="/var/backups/nextcloud"
続いて実行権限を付与します。
chmod +x nextcloud_update.sh
最後に sudo で起動します。
sudo ./nextcloud_update.sh
途中では
を対話形式で確認します。
確認しながら進められるので、完全自動化というより「操作ミスを減らすための半自動化」という位置付けです。
Bashで自動化というと「全部ワンコマンドで終わらせる」方向へ行きがちですが、個人的にはサーバーの更新作業はそこまで割り切らない方が安心だと考えています。
特に Nextcloud のアップデートは、途中で状況を確認したくなる場面も少なくありません。
そのため、このスクリプトでは各工程ごとに確認を挟み、「人が判断するところ」と「機械に任せるところ」を分ける構成にしました。
毎回同じ手順を思い出しながら実行するより、確認すべきポイントだけに集中できるので、更新作業はかなり気楽になります。
以下がスクリプト全文です。
#!/bin/bash
# ==============================================================================
# Nextcloud Update & Database Backup Script
# ==============================================================================
set -euo pipefail
# --- 変数定義(環境に合わせて変更してください) ---
NC_DIR="/var/www/html/nextcloud"
NC_USER="www-data"
PHP_BIN="php"
# DB設定
DB_NAME="nextcloud"
DB_USER="nextcloud"
DB_HOST="localhost"
BACKUP_DIR="/var/backups/nextcloud"
# --- ユーティリティ関数 ---
log_info() {
echo -e "\n\e[34m[INFO]\e[0m $(date '+%Y-%m-%d %H:%M:%S') - $1"
}
log_warn() {
echo -e "\e[33m[WARN]\e[0m $(date '+%Y-%m-%d %H:%M:%S') - $1"
}
log_error() {
echo -e "\e[31m[ERROR]\e[0m $(date '+%Y-%m-%d %H:%M:%S') - $1" >&2
}
ask_proceed() {
local prompt_msg="${1:-次のステップに進みますか?}"
while true; do
read -rp "👉 ${prompt_msg} [y/N]: " answer
case "${answer}" in
[yY]|[yY][eE][sS])
return 0
;;
[nN]|[nN][oS]|"")
log_warn "ユーザーにより処理が中断されました。"
exit 1
;;
*)
echo "'y' または 'n' を入力してください。"
;;
esac
done
}
# --- 前提チェック ---
# root 権限チェック(sudo 経由を含む root 以外は即時終了)
if [ "${EUID}" -ne 0 ]; then
log_error "このスクリプトは root 権限で実行する必要があります。(例: sudo $0)"
exit 1
fi
log_info "前提条件と実行権限を確認しています..."
if [ ! -d "${NC_DIR}" ]; then
log_error "Nextcloudディレクトリが見つかりません: ${NC_DIR}"
exit 1
fi
if ! command -v mysqldump &> /dev/null && ! command -v mariadb-dump &> /dev/null; then
log_error "mysqldump または mariadb-dump コマンドが見つかりません。"
exit 1
fi
mkdir -p "${BACKUP_DIR}"
# ==============================================================================
# Step 1: データベースパスワードの取得と認証確認
# ==============================================================================
log_info "【Step 1】データベース情報の入力"
read -rsp "🔑 DBユーザー (${DB_USER}) のパスワードを入力してください: " DB_PASS
echo
# パスワードの疎通確認
if ! MYSQL_PWD="${DB_PASS}" mysqladmin -h "${DB_HOST}" -u "${DB_USER}" ping &>/dev/null; then
log_error "データベースへの接続に失敗しました。パスワードまたはホスト設定を確認してください。"
exit 1
fi
log_info "データベースへの接続を確認しました。"
# ==============================================================================
# Step 2: メンテナンスモードの有効化
# ==============================================================================
log_info "【Step 2】メンテナンスモードの有効化"
ask_proceed "メンテナンスモードをONにしますか?"
sudo -u "${NC_USER}" "${PHP_BIN}" "${NC_DIR}/occ" maintenance:mode --on
log_info "メンテナンスモードを有効化しました。"
# スクリプト異常終了時にメンテナンスモード解除を促すトラップを設定
cleanup() {
if [ $? -ne 0 ]; then
log_warn "エラーが発生したため処理を停止しました。"
log_warn "必要に応じてメンテナンスモードを解除してください:"
log_warn "sudo -u ${NC_USER} ${PHP_BIN} ${NC_DIR}/occ maintenance:mode --off"
fi
}
trap cleanup EXIT
# ==============================================================================
# Step 3: DBバックアップの実行(インラインパスワード処理)
# ==============================================================================
log_info "【Step 3】DBバックアップの実行"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_backup_${TIMESTAMP}.sql.gz"
ask_proceed "DBバックアップを開始しますか? (保存先: ${BACKUP_FILE})"
# dumpコマンドの判定(MariaDB/MySQL互換)
DUMP_CMD="mysqldump"
command -v mariadb-dump &> /dev/null && DUMP_CMD="mariadb-dump"
# MYSQL_PWD環境変数を使用することで、psコマンド等へのパスワード露出を防止
if MYSQL_PWD="${DB_PASS}" ${DUMP_CMD} -h "${DB_HOST}" -u "${DB_USER}" --single-transaction --quick "${DB_NAME}" | gzip > "${BACKUP_FILE}"; then
log_info "バックアップが正常に完了しました: ${BACKUP_FILE}"
else
log_error "バックアップ処理中にエラーが発生しました。"
exit 1
fi
# ==============================================================================
# Step 4: updater.phar によるアップデート実行
# ==============================================================================
log_info "【Step 4】updater.phar の実行"
log_warn "updater自体の対話プロンプトが表示されます。画面の指示に従って操作してください。"
ask_proceed "updater.phar を起動しますか?"
cd "${NC_DIR}"
sudo -u "${NC_USER}" "${PHP_BIN}" "${NC_DIR}/updater/updater.phar"
# ==============================================================================
# Step 5: 状態の確認とメンテナンスモードの調整
# ==============================================================================
log_info "【Step 5】最終確認とメンテナンスモードの解除"
current_mode=$(sudo -u "${NC_USER}" "${PHP_BIN}" "${NC_DIR}/occ" maintenance:mode)
echo "現在の状態: ${current_mode}"
if echo "${current_mode}" | grep -q "enabled"; then
read -rp "👉 メンテナンスモードをOFF(解除)にしますか? [y/N]: " unfreeze
if [[ "${unfreeze}" =~ ^[yY]$ ]]; then
sudo -u "${NC_USER}" "${PHP_BIN}" "${NC_DIR}/occ" maintenance:mode --off
log_info "メンテナンスモードを解除しました。"
else
log_warn "メンテナンスモードを維持したまま終了します。"
fi
fi
# ==============================================================================
# Step 6: バージョン確認
# ==============================================================================
log_info "【Step 6】バージョンの確認"
sudo -u "${NC_USER}" "${PHP_BIN}" "${NC_DIR}/occ" status
log_info "すべての更新手順が完了しました。"
trap - EXIT
単にコマンドを並べるだけではなく、「途中で失敗しても致命傷にならないこと」を意識しています。
set -euo pipefailBashスクリプトでは定番ですが、非常に重要です。
このような場合は、その時点で処理を停止します。
「バックアップに失敗したのに、そのままアップデートが続く」といった事故を防ぐためです。
EUID を利用して、root 権限以外では実行できないようにしています。
sudo ./nextcloud_update.sh
以外の実行方法では即座に終了します。
昔ながらの
mysqldump -pPASSWORD
という書き方は、ps コマンドなどからパスワードが見えてしまいます。
そこで本スクリプトでは
MYSQL_PWD
環境変数を利用しています。
賛否のある方法ではありますが、少なくともコマンドライン引数へ平文パスワードを残すより安全です。(なお筆者は別スクリプトを利用していますが、それはまた別のお話)
一番怖いのは
というパターンです。
そこで trap cleanup EXIT を利用し、異常終了した場合は
occ maintenance:mode --off
を案内するようにしています。
「解除方法を忘れた」という事態を防ぐための保険です。
処理は次の順番で進みます。
まずは
mysqldump または mariadb-dumpの存在を確認します。
ここで問題があれば、それ以上処理は進みません。
パスワードを入力したあと、
mysqladmin ping
で接続テストを行います。
アップデート直前になって認証エラーが発覚するより、最初に確認してしまった方が安心です。
occ maintenance:mode --on
を実行します。この操作の前にも確認プロンプトを表示するため、誤操作を防げます。
バックアップには
mysqldumpmariadb-dumpのどちらか利用可能な方を自動で選択します。
取得したSQLは、そのまま gzip 圧縮して保存します。
nextcloud_backup_20260821_153000.sql.gz
のように日時付きファイルになるため、履歴も管理しやすくしています。
Nextcloud標準の
updater.phar
を実行します。ここから先はNextcloud側の対話画面になりますので、画面の案内に従って更新を進めます。
更新後は
occ statusまで実行します。最後に現在のバージョンが表示されれば、一通りの更新は完了です。
サーバー運用では「バックアップを取ってから更新する」は当たり前ですが、人間は当たり前ほど慣れてしまうものです。だから私は、忘れない仕組みを作るようにしています。
「運用者は呼吸するかのようにできる。だが、第三者に任せられるか? すっごく焦ってるときに緊急アップデートをした時は?」のためにも、確実に動く仕組みは大切というお話でした。
使い始めて2年になろうとしているデッキが更に害獣になりました。
🌟 統率者
伝説のクリーチャー — リス(Squirrel) 戦士(Warrior)
森渡り(防御プレイヤーが森(Forest)をコントロールしているかぎり、このクリーチャーはブロックされない。)
あなたのコントロール下で1つ以上のトークンが生成されるなら、代わりに、それらのトークンに加えてそれらのトークンの数に等しい数の緑の1/1のリス(Squirrel)・クリーチャー・トークンが生成される。
(黒),リスX体を生け贄に捧げる:クリーチャー1体を対象とする。ターン終了時まで、それは+X/-Xの修整を受ける。
🌲 クリーチャー
⚡ インスタント
📜 ソーサリー
🍇 エンチャント
⚙️ アーティファクト
🗺️ プレインズウォーカー / バトル
⛰️ 土地
新たにロースター入りしたのはこの2枚。
《サックビル=バギンズ一家/The Sackville-Bagginses(HOB)》
1B
伝説のクリーチャー — ハーフリング(Halfling) 市民(Citizen)
サックビル=バギンズ一家が戦場に出たとき、クリーチャーやアーティファクトでありこれでない1つを生け贄に捧げてもよい。そうしたなら、カード1枚を引き、宝物(Treasure)トークン1つを生成する。
あなたがトークン1つを生け贄に捧げるたび、対戦相手1人を対象とする。そのプレイヤーは1点のライフを失う。2/2
一種面を疑ったクリーチャー。ETBもスタッツもコストもパッシブも全て噛み合います。
《ウルザの物語/Urza's Saga(MH2)》
エンチャント 土地 — ウルザの(Urza's) 英雄譚(Saga)
(この英雄譚(Saga)が出た際とあなたのドロー・ステップの後に、伝承(lore)カウンターを1個加える。IIIの後に、生け贄に捧げる。)
I ― ウルザの物語は「(T):(◇)を加える。」を得る。
II ― ウルザの物語は「(2),(T):『このクリーチャーは、あなたがコントロールしているアーティファクト1つにつき+1/+1の修整を受ける。』を持つ無色の0/0の構築物(Construct)アーティファクト・クリーチャー・トークン1体を生成する。」を得る。
III ― あなたのライブラリーからマナ・コストが(0)か(1)のアーティファクト・カード1枚を探し、戦場に出す。その後、ライブラリーを切り直す。
説明不要のこの土地。トークン生成以上に
辺りを拾うことができます。
ますます「ゲームチェンジャーカードや再録禁止が入っていないブラケット4相当」に近づきました
何かと使っているポモドーロタイマーソフト

Chill with You Lo-Fi Story。そのオリジナルグッズ群を手に入れました。

ステッカー群やアクキー、万年カレンダー。

手頃なサイズ感と世界観が好きなので、ThinkPadとというキャンパスを埋めていきます。

ただでさえ情報過多な天板が

隙間が更になくなりました。

キーボードレストもこの通り。これで、作業中でもポモドーロタイマーを意識する必要が出てきます。
このRoster論。かなり当たり前に
に従い、いいカードを見つけられないかと探していました。
そんな中で、実にいいカードを見つけました。
ファルコンとレッドウイング (2)(白) / Falcon and Redwing (MSC)
伝説のクリーチャー — 人間(Human) 鳥(Bird) 英雄(Hero)
飛行
これがプレイヤー1人に戦闘ダメージを与えるたび、その点数に等しい数の、飛行を持つ白の1/1の鳥(Bird)クリーチャー・トークンを生成する。その後、これの上に+1/+1カウンター1個を置く。
1/2
全てが新生、ジェスカイにかみ合います。ナーセットによる果敢付加、更に横並び。小柄な選手なのに空からの大打撃を与える“Genius of the Sky”というロースター。
鷲たちがやってくる! / The Eagles Are Coming! (1)(白) (HOB)
インスタント
キッカー(2)(白)(白)(この呪文を唱えるに際し、追加で(2)(白)(白)を支払ってもよい。)
あなたがオーナーであるクリーチャー1体を対象とする。この呪文がキッカーされていたなら、代わりに、あなたがオーナーである望む数のクリーチャーを対象とする。それらのクリーチャーをあなたの手札に戻す。次のアップキープの開始時に、これによりあなたの手札に戻されたクリーチャー1体につき1体の、飛行を持つ白の4/4の鳥(Bird)・兵士(Soldier)クリーチャー・トークンを生成する。
これは何というか、シングルマッチなのに覆面選手がリングイン、あるいは満身創痍のマッチ中にMITB保持者がキャッシュインしてくるようなカード。コントロール奪取や無力化オーラにも対処できて、先般入れ替えたシイコと奇跡的なかみ合いを魅せます。
魔法使いの杖 / Wizard's Staff (1)(青) (HOB)
アーティファクト — 装備品(Equipment)
装備しているクリーチャーは果敢を持つ。(それのコントローラーがクリーチャーでない呪文1つを唱えるたび、ターン終了時まで、そのクリーチャーは+1/+1の修整を受ける。)
装備しているクリーチャーの能力1つが誘発するなら、その能力は追加でもう1回誘発する。
ウィザード(Wizard)に装備(1)
装備(3)
何かの冗談かと思ったカードです。本当に。まずナーセットに装備。既に持っている果敢と合わさります。それぞれの果敢がもう一度誘発するので、呪文を打っただけで「+4/+4」確定。非クリーチャー呪文を2回撃てばマグマ・オパスの再利用も一発です。
僧院の導師はモンクを2体ばらまきます。更に迷える黒魔道士、ビビ/Vivi Ornitierはクリーチャータイプとも一致。+1/+1カウンターが2個置かれ、2ダメージを振りまく殺戮兵器に。
これは、今、買うしかということで注文。
そこで、不動のエースと思われていた
をリストラ(時代を代表するクリーチャーですが、世代交代です)
更に、「あわよくば死の国からの脱出を再利用する」が目的だった
を外します。
これで、
デッキに仕上がったかなとは思っています。
が揃ったブルリフQ。そこの実績である「やみを統べるものを統べる者」解除。一筋縄ではいかなかったので、そのメモ書きです。
初代ブルリフ、フリスペ(作中内スマートフォンアプリ)に入っているミニゲーム。

簡単な選択肢を選ぶことで魔物のステータス
が増減。そのたびに「しあがり」がカウントアップ。ステータスに応じて魔物の姿が変化していき、仕上がりが全て埋まったら(10回ステータスを変化させたら)クリア。
「ステータスを全て上げてからストレス以外のステータスをゼロ/1以下にする」
というパラメーター調整に他なりません。しかも、選択肢は10回。画面の切り替わりがお世辞にも高速とは言えず、更に「エリアを3回遷移しないと次の選択肢に切り替わらない」のもめんどくささに拍車がかかります。
この実績は第三章のフリー期間から解除可能です。

筆者はこの中庭を選びました。というのも、左に進めば

1F廊下に切り替わり、そのまま左に進むことを繰り返すことで、次の選択肢が出てくるからです。
これが一番大事です。

初期値が極めて高い個体がでるまでセーブ&ロード(リセマラ)を繰り返します。
が基準点です。

赤い■がステータスアップ(しあがりのカウントアップ)、青い■がステータスダウンとなります。
最初の段階で、ストレス以外のステータスを全て5まで持って行きます。
このとき、□やYボタンなどで「選択肢を変えられる」のがポイントです。効率的に上げる、下げるを繰り返します。

クリアできるかどうかは「しあがり」が3のところで
が5になっていること。

ここからはステータスを下げる選択肢を選び続けます。「一度に3ステータスダウン」が目標です。
また、ストレスを上がっていると、ステータスがダウンしやすい傾向にあるようです。

こうして、しあがり8の段階で
まで下がりました。

しあがり「9」で『ネクラノミーコ』に変化すれば最終形態。晴れて実績解除になります。
方法そのものはなんてこと無い作業ですが、非常にストレスフルな実績で、「なんで無印で苦労した(実際解除できませんでした)地獄がQで残っているんだ……」と軽く絶望しました。
「Money In The Bank」ならぬ「Mtg-supply In the Bank」です。

カルディで売られていたクッキー缶。

個の大仰な箱は物入れにピッタリと思っていたところ、

統率者でよく使う自作ツール群やおはじき/ダイス入れにピッタリだと判断。

統率者でよく使うマーカーがそのまま入りますし

差し替え用の簡易ストレージも入りますので、これでいつでもキャッシュイン(権利行使)ができるシステムです。
Powered by WordPress & Theme by Anders Norén