投稿者: manualmaton Page 1 of 291

ボードゲーム『恋文』感想。

16枚+αのカードが織りなす心理戦を気軽に楽しめる小箱の秀逸な作品です。

ゲームの概要

プレイヤーは姫(若様)に恋文を届けるため、城内の様々な人の助けを借りながら届けようとしています。

「1枚カードを引く」
「どちらかのカードを使う」

のシンプルさです。

このゲームの好きなところ

和の自然なテイスト

本家『LOVE LETTER』の日本版と言うだけあって姫のイラストは十二単。更に若様への差し替えも可能。他の登場人物も

  • 浪人
  • 陰陽師
  • 女中

などの差し替えができていて雰囲気も満点です。

確率とカウンティングの入門に最適

カードに「セット全体の枚数」が含まれているため、場が進むにつれて相手が何を持っているかの推測がしやすくなっています。(対戦相手にとっても)その確率の推理や心理戦などが非常に楽しいです。

しっかりとしたコンポーネント

スリーブ不要の分厚いカード。ゲーム中に使うカードも少ないため、スリーブの心配がありません。得点チップなどもない潔さは鞄の隙間にすんなりと入ります。

このゲームの少々残念なところ

少しテキスト量が多い

言語依存は高め。(といってもTCGに比べれば微々たるものですが)お子様や初心者相手に「広げて即プレイ」というわけにはいきません。プレイヤーエイドカード(サマリー)も文字を詰め込みすぎな形です。

賛否が分かれる「家老」の存在。

本家と異なるバリエーションとなる『家老』の存在。手札の合計値が「12」を超えるとサドンデス。その理不尽さは『家老死』なる言葉があるほど。これはさすがに運の問題とはいえ、それをゲームの一強とみることができるか、笑えない冗談と取るかはプレイヤーのコンセンサスが必要なところです。

まとめ

  • カードのみの潔いコンポーネント
  • スターターにも時間調整にもちょうどいいプレイタイム
  • サドンデスや当てずっぽうでも勝てるうんと戦略のバランス
  • ある程度のリプレイ性

などがほどよく混じった素晴らしい作品。

「ボードゲームを全く知らない初心者に何を遊ばせるか?」という問いに対しての筆者のある種の答えとなるゲーム。このゲームの反応を元に「重いゲームへの適性はあるか?」「どんなゲームに興味を持てそうか?」の一種の試金石となっている作品です。

惜しむらくは2026年現在、市場に流通していないこと。なので、本作のオリジナルをプレイ済みの方も、見かけたら遊んでいただきたい作品です。

統率者対戦記録(2026/05/10 -2-) 構築済みの統率者デッキ『生けるエネルギー』使用しての雑感。

まず、このデッキの使い道は自分の好みでした。

統率者

  • 《光輝の創造者、サヒーリ/Saheeli, Radiant Creator(DRC)》

デッキ

クリーチャー

  • 《オーロラの変幻者/Aurora Shifter(M3C)》
  • 《乱動の地図作り/Roil Cartographer(MH3)》
  • 《潮の星、京河/Keiga, the Tide Star(CLB)》
  • 《破片撒きのスフィンクス/Sharding Sphinx(MOC)》
  • 《蜥蜴丸/Lizard Blades(NEO)》
  • 《改革派の霊気砲手/Aethertorch Renegade(KLD)》
  • 《極楽鳥/Birds of Paradise(RVR)》
  • 《金脈のハイドラ/Goldvein Hydra(OTJ)》
  • 《恐竜の卵/Dinosaur Egg(LCC)》
  • 《シャイラ専有地の賢者/Sage of Shaila's Claim(KLD)》
  • 《獣性を築く者/Architect of the Untamed(DRC)》
  • 《警戒するラッドスタッグ/Watchful Radstag(PIP)》
  • 《進化の証人/Evolution Witness(MH3)》
  • 《世界魂の代弁者、ニッサ/Nissa, Worldsoul Speaker(DRC)》
  • 《浄化のドルイド/Druid of Purification(DRC)》
  • 《ピーマの先駆者/Peema Trailblazer(DRC)》
  • 《猛る霊気コブラ/Rampaging Aetherhood(DRC)》
  • 《サイクロプスの超伝導師/Cyclops Superconductor(MH3)》
  • 《ティラニッド・プライム/Tyranid Prime(40K)》
  • 《崇高な飛行士/Empyreal Voyager(KLD)》
  • 《ならず者の精製屋/Rogue Refiner(DRC)》
  • 《つむじ風の巨匠/Whirler Virtuoso(DRC)》
  • 《双子唱者、アドリックスとネヴ/Adrix and Nev, Twincasters(MKC)》
  • 《フラクタルの花、エシックス/Esix, Fractal Bloom(MKC)》
  • 《テルカーの技師、ブルーディクラッド/Brudiclad, Telchor Engineer(M3C)》
  • 《整備長、ピア・ナラー/Pia Nalaar, Chief Mechanic(DRC)》
  • 《極楽の羽ばたき飛行機械/Ornithopter of Paradise(DRC)》
  • 《静電気式打撃体/Electrostatic Pummeler(KLD)》
  • 《歩行格納庫の自動機械/Stridehangar Automaton(DRC)》
  • 《ワームとぐろエンジン/Wurmcoil Engine(SOM)》
  • 《三重の稲妻巨人/Threefold Thunderhulk(SOC)》

インスタント

  • 《語りの調律/Tune the Narrative(MH3)》
  • 《秘儀の否定/Arcane Denial(WOC)》
  • 《不許可/Disallow(DRC)》
  • 《混沌のねじれ/Chaos Warp(WHO)》
  • 《エレクトロサイフォン/Electrosiphon(PIP)》

ソーサリー

  • 《霊気との調和/Attune with Aether(DRC)》
  • 《自然の知識/Nature's Lore(S99)》
  • 《冒涜の行動/Blasphemous Act(DRC)》
  • 《慮外な押収/Confiscation Coup(DRC)》

アーティファクト

  • 《太陽の指輪/Sol Ring(DRC)》
  • 《改良式鋳造所/Retrofitter Foundry(DRC)》
  • 《稲妻のすね当て/Lightning Greaves(DRC)》
  • 《抽出機構/Decoction Module(DRC)》
  • 《好奇のタリスマン/Talisman of Curiosity(DRC)》
  • 《秘儀の印鑑/Arcane Signet(DRC)》
  • 《独創のタリスマン/Talisman of Creativity(WHO)》
  • 《織木師の組細工/Woodweaver's Puzzleknot(KLD)》
  • 《パンハモニコン/Panharmonicon(DRC)》
  • 《霊気池の驚異/Aetherworks Marvel(DRC)》
  • 《ウギンのきずな/Ugin's Nexus(KTK)》
  • 《ゴンティの霊気心臓/Gonti's Aether Heart(M3C)》
  • 《特製の闘車/Bespoke Battlewagon(DRC)》
  • 《模倣メカ/Imposter Mech(NEC)》
  • 《秘密の複製機/Esoteric Duplicator(BIG)》
  • 《世界歩きの兜/Worldwalker Helm(BIG)》
  • 《イゼットの発電装置/Izzet Generatorium(MH3)》

エンチャント

  • 《革新の時代/Era of Innovation(DRC)》
  • 《テフェリーのヴェール/Teferi's Veil(WTH)》
  • 《倍増の季節/Doubling Season(PZA)》
  • 《降霜断崖の包囲/Frostcliff Siege(TDM)》

プレインズウォーカー

  • 《崇高な工匠、サヒーリ/Saheeli, Sublime Artificer(WAR)》

土地

  • 《島/Island》
  • 《島/Island》
  • 《島/Island》
  • 《島/Island》
  • 《山/Mountain》
  • 《山/Mountain》
  • 《山/Mountain》
  • 《山/Mountain》
  • 《森/Forest》
  • 《森/Forest》
  • 《森/Forest》
  • 《森/Forest》
  • 《焦熱島嶼域/Fiery Islet(WHO)》
  • 《天啓の神殿/Temple of Epiphany(WHO)》
  • 《嵐削りの海岸/Stormcarved Coast(WHO)》
  • 《凍沸の交錯/Frostboil Snarl(DRC)》
  • 《シヴの浅瀬/Shivan Reef(DRC)》
  • 《溢れ出た区画/Overflowing Basin(DRC)》
  • 《ヤヴィマヤの沿岸/Yavimaya Coast(DRC)》
  • 《繁殖池/Breeding Pool(DIS)》
  • 《内陸の湾港/Hinterland Harbor(PIP)》
  • 《冠水樹林帯/Waterlogged Grove(WHO)》
  • 《蔦明の交錯/Vineglimmer Snarl(WHO)》
  • 《隠れた茂み/Sheltered Thicket(WHO)》
  • 《根縛りの岩山/Rootbound Crag(DRC)》
  • 《カープルーザンの森/Karplusan Forest(DRC)》
  • 《霊気拠点/Aether Hub(DRC)》
  • 《遊牧民の前哨地/Nomad Outpost(DRC)
  • 《風変わりな果樹園/Exotic Orchard(DRC)》
  • 《産業の塔/Spire of Industry(DRC)》
  • 《祖先の道/Path of Ancestry(DRC)》
  • 《統率の塔/Command Tower(DRC)》
  • 《ケトリアのトライオーム/Ketria Triome(IKO)》
  • 《ヘリオス1/HELIOS One(PIP)》
  • 《アカデミーの廃墟/Academy Ruins(DRC)》
  • 《霧深い雨林/Misty Rainforest(ZNE)》

実際の盤面。

倍増の季節の影響下、サイクロプスの超伝導師のコピーとなったサヒーリの構築物が2体並び、死亡誘発で5点×2を対象に向けて吹っ飛ばしました。

雑感

  • エネルギーの支払いが面倒とはいえ、パワー5のEtB/死亡誘発が使い回せるのは極めて大きい。
  • 《高名な者、ミシュラ》と異なり、パーマネントなら何でもコピーできるのが強い。
  • 目を見張ったのが進化との相性の良さ。特に《ティラニッド・プライム》により継続的に進化の種ができる。
  • 要、エネルギーの安定供給。
    • もう少しエネルギーが得られるようなパーツ
    • または、上陸でエネルギーを増やす手段など

総じて、「いかようにもいじる可能性に満ちた」デッキ。昨年、買っておいて良かったです。

統率者対戦記録(2026/05/10 -1-)

久しぶりに統率者4人の卓が立ったため、対戦を行いました。

デッキはこちら。

統率者

《リスの将軍、サワギバ/Chatterfang, Squirrel General(MH2)》

デッキ

クリーチャー

  • 《大釜の使い魔/Cauldron Familiar(ELD)》
  • 《骨術師の達人/Osteomancer Adept(BLB)》
  • 《ズーラポートの殺し屋/Zulaport Cutthroat(BLC)》
  • 《威名のソルジャー、セフィロス/Sephiroth, Fabled SOLDIER(FIN)》
  • 《無情な無頼漢/Ruthless Knave(XLN)》
  • 《実験的な菓子職人/Experimental Confectioner(WOE)》
  • 《悲哀の徘徊者/Woe Strider(BLC)》
  • 《巣穴の魂商人/Warren Soultrader(MH3)》
  • 《無慈悲な略奪者/Pitiless Plunderer(RIX)》
  • 《無情な屍技術師/Ruthless Technomancer(NEC)》
  • 《ヘイゼルの醸造主/Hazel's Brewmaster(BLC)》
  • 《溜め込む親玉/Hoarding Broodlord(MOM)》
  • 《エルフの神秘家/Elvish Mystic(TSR)》
  • 《金のガチョウ/Gilded Goose(MOC)》
  • 《ラノワールのエルフ/Llanowar Elves(_BR)》
  • 《極楽鳥/Birds of Paradise(RVR)》
  • 《森を護る者/Sylvan Safekeeper(MH3)》
  • 《茨越えの餌あさり/Thornvault Forager(BLB)》
  • 《献身のドルイド/Devoted Druid(UMA)》
  • 《裕福な亭主/Prosperous Innkeeper(BLC)》
  • 《小走り樫/Scurry Oak(MH2)》
  • 《不屈の補給兵/Tireless Provisioner(BLC)》
  • 《リスの小走り/Scurry of Squirrels(BLC)》
  • 《ペレグリン・トゥック/Peregrin Took(LTR)》
  • 《秘密を知るもの、トスキ/Toski, Bearer of Secrets(MKC)》
  • 《終わりなき巣網のアラスタ/Arasta of the Endless Web(BLC)》
  • 《永久の証人/Timeless Witness(MH2)》
  • 《深き森の隠遁者/Deep Forest Hermit(BLC)》
  • 《悪魔の職工/Fiend Artisan(IKO)》
  • 《根花のヘイゼル/Hazel of the Rootbloom(BLC)》
  • 《歩行バリスタ/Walking Ballista(AER)》
  • 《アカデミーの整備士/Academy Manufactor(BLC)》
  • 《カルドーサの鍛冶場主/Kuldotha Forgemaster(SOM)》
  • 《マイアの戦闘球/Myr Battlesphere(TDC)》

インスタント

  • 《命取りの論争/Deadly Dispute(BLC)》
  • 《切断マジック/Saw in Half(BLC)》
  • 《新緑の命令/Verdant Command(MH2)》
  • 《蓄え放題/Cache Grab(BLB)》
  • 《召喚の調べ/Chord of Calling(M15)》
  • 《暗殺者の戦利品/Assassin's Trophy(ACR)》
  • 《ウィンドグレイスの裁き/Windgrace's Judgment(BLC)》

ソーサリー

  • 《発掘/Unearth(A25)》
  • 《群がり庭の虐殺/Swarmyard Massacre(BLC)》
  • 《根鋳造の弟子入り/Rootcast Apprenticeship(BLC)》
  • 《大渦の脈動/Maelstrom Pulse(BLC)》

エンチャント

  • 《清掃人の才能/Scavenger's Talent(BLB)》
  • 《アクロゾズの約定/Promise of Aclazotz(LCC)》
  • 《想起の拠点/Bastion of Remembrance(BLC)》
  • 《美食家の才能/Gourmand's Talent(BLC)》
  • 《パンくずの道標/Trail of Crumbs(ELD)》
  • 《殺しのサービス/Killer Service(NCC)》
  • 《イトリモクの成長儀式/Growing Rites of Itlimoc(XLN)》
  • 《似通った生命/Parallel Lives(WOT)》
  • 《陰湿な根/Insidious Roots(MKM)》

アーティファクト

  • 《太陽の指輪/Sol Ring(BLC)》
  • 《恐竜の遺伝子/Dino DNA(REX)》
  • 《魔女のかまど/Witch's Oven(ELD)》
  • 《頭蓋骨絞め/Skullclamp(BLC)》
  • 《アシュノッドの供犠台/Ashnod's Altar(4ED)》
  • 《ヌカコーラ自動販売機/Nuka-Cola Vending Machine(PIP)》
  • 《前兆の時計/Clock of Omens(5DN)》
  • 《旗印/Coat of Arms(EXO)》
  • 《囀り吐き/Chitterspitter(BLC)》

プレインズウォーカー

  • 《飢餓の潮流、グリスト/Grist, the Hunger Tide(MH2)》

バトル

  • 《イコリアへの侵攻/Invasion of Ikoria(MOM)》

土地

  • 《沼/Swamp》
  • 《沼/Swamp》
  • 《沼/Swamp》
  • 《沼/Swamp》
  • 《沼/Swamp》
  • 《沼/Swamp》
  • 《沼/Swamp》
  • 《森/Forest》
  • 《森/Forest》
  • 《森/Forest》
  • 《森/Forest》
  • 《森/Forest》
  • 《森/Forest》
  • 《森/Forest》
  • 《森/Forest》
  • 《見捨てられたぬかるみ、竹沼/Takenuma, Abandoned Mire(NEO)》
  • 《ゴルガリの腐敗農場/Golgari Rot Farm(RAV)》
  • 《疾病の神殿/Temple of Malady(BLC)》
  • 《森林の墓地/Woodland Cemetery(TDC)》
  • 《黄昏のぬかるみ/Twilight Mire(TDC)》
  • 《ラノワールの荒原/Llanowar Wastes(TDC)》
  • 《緑ばんだ沼/Viridescent Bog(BLC)》
  • 《汚れた森/Tainted Wood(BLC)》
  • 《草むした墓/Overgrown Tomb(RAV)》
  • 《屍花の交錯/Necroblossom Snarl(BLC)》
  • 《風切る泥沼/Hissing Quagmire(OGW)》
  • 《眠らずの小屋/Restless Cottage(WOE)》
  • 《不気味な辺境林/Grim Backwoods(BLC)》
  • 《群がりの庭/Swarmyard(TSR)》
  • 《風変わりな果樹園/Exotic Orchard(BLC)》
  • 《祖先の道/Path of Ancestry(BLC)》
  • 《統率の塔/Command Tower(BLC)》
  • 《新緑の地下墓地/Verdant Catacombs(ZEN)》
  • 《成長の揺り篭、ヤヴィマヤ/Yavimaya, Cradle of Growth(MH2)》

「害獣」ことサワギバを押し出したアリストクラッツ。

盤面のシステムクリーチャーはおろか除去耐性を持たない生物群を否定し、無限も決まりやすいという、ゲームチェンジャーが入っていないのにブラケット3以上の動きをするお気に入りです。

サワギバ→無慈悲な略奪者で相手のクリーチャー全否定。(サワギバの能力起動。略奪者の誘発により宝物トークン発生。

サワギバがトークンに反応してリスを生成し、除去耐性を持たない全てのクリーチャーが+x/-xされます)。

流石に略奪者は除去されるものの、《溜め込む親玉》で《切断マジック》を探して親玉自身に打ち2枚サーチ。《巣穴の魂商人》と《ズーラポートの殺し屋》の無限ライフルーズ成立。

ここでの隠れたMVPが《陰湿な根》。トークンクリーチャーがマナクリーチャーとなる、《大地の知識》に似たような動きがキモでした。

ヘイトが向けられても押し切れるデッキということで使っているスタイルです。

海鮮の昼食。

毎年恒例、この時期の食事会に参加しました。

まず運ばれたのが山菜の天ぷら。

  • タラの芽
  • しそ
  • タケノコ

などの春の味覚。

岩牡蠣のグリル。焼いてなおこの大きさに驚愕でした。

メインの海鮮丼。丼と言うよりは刺身の盛り合わせであり、中トロのキッツケの鋭さも料理人の技量を窺えるものです。

ご飯が足りないという嬉しい悲鳴もあったほど。

吸い物も春の味覚たるタケノコに海老しんじょう入り。

その他デザートもあり、非常に満足いくものでした。

RHEL9系でMySQLのrootパスワードを忘れてしまったときの再設定メモ

本手順は、MySQLのrootパスワードを紛失し、通常の方法でログインできなくなった場合に実施する「非常時用」のリカバリ手順です。

作業の前に

この作業は本来ならばあってはならない作業です。パスワード失念はセキュリティ事故の筆頭。ましてやWebシステムの神に等しいDBを司る通行証が消えた。なので、

  • 事前にアカウント情報を記したファイルを保存する
  • 適切な場所、適切なアクセス権で保管する

は必須ですが

往々にしてこの事故は起きます。なので、「マジで起きてしまった。取り敢えずの迅速な復旧」を望んでいる(つまり今回の私のような)方へのメモとなります。

この手順が笑える状況

  • 構築中
  • 検証作業中

のいずれかのみ。本番稼働中だったらまず笑えませんし、許可を得るための政治力・交渉力は甚大なものになります。筆者は「構築中」のパターンです。

環境

  • RHEL9系(RockyLinux9系)
  • MySQL 8

注記:RHEL 9系での注意点

  • 従来の mysqld_safe コマンドは廃止されているため、systemctl set-environment を使用して起動オプションを制御します。
  • MySQL 8.0以降は skip-grant-tables モード中でも FLUSH PRIVILEGES を実行しない限り ALTER USER コマンドが受け付けられない仕様となっています。

作業影響

  • 作業中にMySQLが止まる

これに尽きますが、「起きてしまったことは仕方ない。潔くサパッと止めてサクッと終わらせる」を心がけます。

さっくりとした手順

  1. MySQLサービスを停止します。
  2. 認証をスキップするための環境変数をセットします。
  3. 認証スキップ状態でMySQLを起動します。
  4. rootパスワードのリセットを行います。
  5. 認証を有効化してMySQLサービスを起動します。
  6. リセットされたパスワードでMySQLに入れることを確認します。

MySQLサービスの停止

  • MySQL停止
sudo systemctl stop mysqld
  • MySQL停止確認
systemctl status mysld

inactive(dead)を確認します。

認証をスキップするための環境変数をセットします。

  • 認証スキップのオプションを環境変数に一時セット
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"

(--skip-networkingを付けることで、作業中の外部接続を遮断し安全を確保します。)

認証スキップ状態でMySQLを起動します。

sudo systemctl start mysqld
  • MySQL起動確認
systemctl status mysld

active(running)を確認します。

rootパスワードのリセットを行います。

認証がスキップされている状態でログインし、権限テーブルを強制ロードしてからパスワードを書き換えます。

  • パスワードなしでrootログイン
mysql -u root

これでログインできたらひとまず成功です。ここからはSQL捜査を行います。

  • 権限テーブルをリロード (ALTER USER を実行可能にするために必須)
FLUSH PRIVILEGES;
  • パスワードの変更を実施します。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_strong_password';
  • 変更を確定して終了
FLUSH PRIVILEGES;
exit

認証を有効化してMySQLサービスを起動します。

一時的な環境変数を削除し、通常の認証が有効な状態で再起動します。

  • MySQLを一旦停止
systemctl stop mysqld
  • MySQL停止確認
systemctl status mysld

inactive(dead)を確認します。

  • セットした環境変数を必ず解除 (これを忘れると誰でも入れる状態が続くため重要)
systemctl unset-environment MYSQLD_OPTS
  • 通常どおりサービスを起動
sudo systemctl start mysqld
  • MySQL起動確認
systemctl status mysld

リセットされたパスワードでMySQLに入れることを確認します。

mysql -u root -p

新しいパスワードでログインできたことを確認します。

まとめ

「起きないことが第一」とは言いますが、本当にくだらない理由でこういう事象は発生します。なので

  • 起きてしまったことは潔く認める
  • そこから原状の復旧を目指す。
  • 責任の追及とか誰がイモを引くかはその後で考える

の三段活用。“全裸大佐”が言う

過ちを気に病むことはない。ただ認めて、次の糧にすればいい

という「大人の特権」をフル活用しましょう。

レポジトリ一覧を確認するためのワンライナー。

RHEL系のサーバ設定で結構重要になってくる「サーバがどのレポジトリを使っているか?

これを簡単に調べるワンライナーです。

環境

Rocky Linux 9.10

ワンライナー

echo -e "|Repo-id|Repo-name|\n|---|---|" && dnf repolist -q | awk '$1 != "repo" && NF > 1 {id=$1; $1=""; sub(/^[ \t]+/, ""); print "|" id "|" $0 "|"}'

出力結果

Repo-idRepo-name
appstreamRocky Linux 9 - AppStream
baseosRocky Linux 9 - BaseOS
epelExtra Packages for Enterprise Linux 9 - x86_64
epel-cisco-openh264Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64
extrasRocky Linux 9 - Extras
remi-modularRemi's Modular repository for Enterprise Linux 9 - x86_64
remi-safeSafe Remi's RPM repository for Enterprise Linux 9 - x86_64
zabbixZabbix Official Repository - x86_64
zabbix-non-supportedZabbix Official Repository (non-supported) - x86_64
zabbix-toolsZabbix Official Repository (tools) - x86_64

と、このままマークダウン記事として貼り付けられるようになっています。

仕組み

1. echo -e "|Repo-id|Repo-name|\n|---|---|"

Markdown形式の表の「見出し」を無理やり作っている部分です。

  • echo -e: 「バックスラッシュ記法」を有効にするオプションです。
  • \n: これがあることで、1行目の見出しと2行目の区切り線(|---|---|)の間で改行されます。

2. dnf repolist -q

システムのレポジトリ一覧を取得するコマンドです。

  • repolist: 有効なレポジトリの ID と名前を表示します。
  • -q (quiet): 「メタデータの期限切れ確認」などの余計なメッセージを非表示にし、純粋なリストの結果だけを出力します。

3. awk '$1 != "repo" && NF > 1 { ... }'

受け取ったテキストを1行ずつ加工しています。

要素意味
$1 != "repo"1番目の項目(Repo-id)が "repo" という文字列ではない行だけを処理する(見出し除外)。
NF > 1項目の数(Number of Fields)が1つより多い行=空行などを除外。
id=$11番目の項目(Repo-id)を変数 id にキープ。
$1=""1番目の項目をデータから消去。これで残りの $0(行全体)が Repo-name だけになります。
sub(/^[ \t]+/, "")1列目を消した後に残ってしまう「先頭の空白」を削除して綺麗にします。
print "|"...最後に、Markdownの枠組み | で囲って出力します。

まとめ

  1. echo で表の見た目を作り、
  2. dnf でデータを静かに(-q)呼び出し、
  3. awk で「いらない行(repo)」を捨てつつ、1列目(ID)とそれ以降(Name)をバラバラにして | で挟み直す。

という流れになっています。

ボードゲーム『クランズ・オブ・カレドニア』ソロプレイ記録。

スコットランドの氏族として経済的安定を築いていくクランズ・オブ・カレドニア。のソロプレイを行いました。

選んだ氏族はファガーソン。

  • 最初から3人のワーカーが置けるが初期位置はマップ端に限られる。
  • 輸送力が+2スタート

という辺境の機動力を重視した氏族。

最初にワーカーが得られることと1ゲーム中1回使える港アクションが性質上近いという、ソロでも屈指の強氏族。

  • 序盤は他の加工製品を目にくれずとにかく資金を稼ぐ鉱夫と木こりに投資したこと。
  • 極めて相性がいいラウンド終了後の栄光点タイルが噛み合ったこと。
  • 更に、チーズを必要とする契約を固め引きできたので、乳牛とチーズ加工工場の特化に専念できたこと

が功を奏しました。

最終的な結果は

項目計算式数量合計得点備考
基礎生産品1つ1点44羊毛のみ
加工生産品1つ2点48チーズ生産特化
ゲーム終了時持ち金10につき1727
栄光点1つ1点3939特に高い土地(£5~£6)の配点が大きい
ホップ1つ1点1414輸出契約の見返り
サトウキビ1つ5点315最も輸入数が少ない品
綿花1つ4点624二番目に輸入数が少ない品(同数タイ)
タバコ1つ3点618三番目に輸入数が少ない品(同数タイ)
契約履行数4つ以下は0545:4点 6:8点 7以上:12点
入植数1繋がりにつき可変14以上188~10:5点 11~13:12点 14以上:18点
総合計--151評価:熟練者

なお、ランク付けがされており

  • 0 ~ 115
    • 初心者
  • 116 ~ 130
    • 新人
  • 131 ~ 145
    • 平均的
  • 146 ~ 160
    • 熟練者
  • 161以上
    • 天才!

このランクに基づき、「熟練者」のスコアが取れました。本作、足切りがないことや黙々と氏族の発展に集中できるのが癖になります。

iPhoneの画像データを自宅内のNextcloudに一括送信。

連休で家にいる中でないとできない作業でした。

事前準備

  1. Nextcloud(宅内)のセットアップができている。
  2. NextcloudサーバとNASをNFSでマウントしている。(書き取り可能になっている)
  3. iPhoneにNextcloudアプリを入れ、同じNW内にあるNextcloudと連携が取れている。

2,019年からのiPhoneデータ。相当に苦労しました。

自動アップロード設定画面を開く

Nextcloudアプリの自動アップロード機能を有効化するしていきます。

Nextcloudアプリ右下「その他(…)」 → 「設定」 → 「自動アップロード」

の画面を開きます。

カメラロールの自動アップロードを有効化

iPhoneの写真アプリ内の画像・動画をNextcloudへ自動送信するため「カメラロールをアップロード」をオンにします。

必要に応じて「新しい写真のみ」「すべての写真」などの範囲を選択します。(筆者は全ての写真を選択)

保存先フォルダを指定(重要)

誤ったフォルダを選ぶと整理が崩れるため、最も重要なステップです。

  1. 「リモートフォルダ」をタップ
  2. 事前に作成した NAS側の外部ストレージフォルダ を選択しました。

必要に応じて「カメラロール」専用フォルダをNextcloud側で作っておきましょう。

同期条件を設定して安定性を確保

筆者は「Wi-Fi使用時のみ」をオンにしました。というのも、このNextcloudは完全に宅内で運用するからです。

初回のみ:自動ロックの解除

これがハマりポイントでした。

iPhoneの

設定 > 画面表示と明るさ > 自動ロック

に選び「なし」に変更。その上で先のiPhoneのNextcloudアプリを開きっぱなしにしておきます。

可能であればワイヤレス充電でつけっぱなしにしておくと良いでしょう。

参考までに、宅内無線LAN環境、45,000枚ほどの画像の転送に10時間ほどかかりました。

※この作業が終わったら自動ロックの設定を元に戻すのを忘れないようにしましょう。

Ubuntu26.04でNextcloudをインストール。(Apache/MySQL/PHP8.5-FPM)

概要

  • Ubuntu 26.04
  • Apache

をインストールした状況で、「PHP-FPM」を稼働させた上でNextcloudをインストールしていくためのメモです。

この手順はゴールではなくスタートです

  • 本手順は「構築した」という始まりに過ぎません。
  • 「動く」手順ではありますが「初期設定」は以下が絡むため、これ以上に厄介です。
    • 初期設定
    • メール設定
    • redis設定
    • 各種セキュリティ
    • ログ設定
    • アプリのチューニング…
  • インターネット環境だろうとローカルだろうと、「データを取り扱う器」を構築した以上、データ保全という義務と責任がこれから重くのしかかります。
  • 本手順で「めんどくさい」と思った方は素直にOneDrive/GoogleDrive/Dropboxをお使いください。その方があなたもデータも幸せです。(実際、筆者が使ってるGoogle AI proなら月額2900円で5TBも利用可能です!)

再掲:Nextcloudというかサービス運営者に必要なのは「資格」ではなく「責任」です。

Ubuntu24.04のインストール時にも言いましたが、この理論は未だに私の中では真理です。

巷では「○○の資格があればこの運用は」的な話があるようですが:そもそも運用の方針を取り違えていると思います。

「救急戦隊ゴーゴーファイブ」に曰く

「資格? 馬鹿野郎、誰もそんなもの持ってねぇんだ! いいか、あるのは責任だけだ。戦う責任! あの子を傷つけちまった責任! そいつを果たすには、この地球を守るしかねぇんだ!」

私が言いたいことはこれに尽きます。

なぜ mod_php ではなく PHP-FPM を使うのか?

パフォーマンスとリソース効率を向上させるためです。

従来のmod_phpでは、PHPがApacheの全プロセスに組み込まれるため、画像ファイルのリクエストのようなPHPが不要な処理でもメモリを消費し、無駄が多くなりがちでした。

一方、PHP-FPMはPHPの処理をApacheから完全に独立させた専門のプロセスとして管理します。ApacheはPHPが必要なリクエストだけをPHP-FPMに中継するため、サーバー全体の動作が軽量かつ高速になります。

前提

  • OS: Ubuntu 26.04 LTS
  • → SSH接続できること。
  • ※root権限を持っていること。
  • この権限を持っていない場合、ここから先の設定はできません。
  • データベース: MySQL 8.0
  • Webサーバー: Apache 2.4
  • 実行ユーザーはwww-data
  • ホームディレクトリを /home/www-dataにしています。自分の環境に合わせてください。
  • ドメインとSSL/TLS証明書: 準備済みであること

筆者の好みでaptitudeを用いています。必要に応じてaptをご利用ください。

さっくりとはならない手順

  1. パッケージをインストールしていきます。
  2. PHP-FPMの設定を行います。
  3. PHPのパフォーマンス設定を行います。
  4. MySQLでDB設定を行います。
  5. NextcloudのDBを設定します。
  6. Apacheバーチャルホストの設定を行います。
  7. バーチャルホストの設定を有効化します。
  8. 設定の有効化とサービスの再起動を実施します。
  9. Webブラウザで初期インストールを行います。

必要なパッケージのインストール

PHP本体、PHP-FPM、Nextcloudが必要とする各種PHPモジュールをインストールします。

sudo aptitude install php php-fpm php-opcache php-pdo php-bcmath php-calendar php-ctype php-fileinfo php-ftp php-gd php-intl php-json php-mbstring php-mysql php-posix php-readline php-sockets php-bz2 php-tokenizer php-zip php-curl php-iconv php-xml php-imagick php-gmp php-apcu memcached

バージョンを確認します。

php -v

表示例

PHP 8.5.4 (cli) (built: Apr  1 2026 09:36:11) (NTS)
Copyright (c) The PHP Group
Built by Ubuntu
Zend Engine v4.5.4, Copyright (c) Zend Technologies
    with Zend OPcache v8.5.4, Copyright (c), by Zend Technologies

※Ubuntu 26.04はリポジトリを追加するまでもなくPHP8.5がインストールされます。※

PHP-FPMとApacheの連携設定

従来の mod_php を無効化し、PHP-FPMとの通信に必要な proxy_fcgi モジュールなどを有効化します。

  • mod_phpを無効化(もしインストールされていれば)
sudo a2dismod php
  • 必要なモジュールを有効化
sudo a2enmod proxy_fcgi setenvif header rewrite

PHPのパフォーマンス設定

Nextcloudのパフォーマンス向上のため、PHPのメモリ制限、OPcache、APCuを設定します。

  • php.ini の設定 (memory_limit)
sudo sed -i 's/memory_limit = .*/memory_limit = 512M/g' /etc/php//fpm/php.ini
  • OPcacheとAPCuの有効化

Nextcloud推奨の設定値を /etc/php//mods-available/ に作成・適用します。

  • OPcache設定
cat <<- __EOF__ | sudo tee /etc/php//mods-available/opcache.ini
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
__EOF__
  • APCu設定
cat <<- __EOF__ | sudo tee /etc/php//mods-available/apcu.ini
[apcu]
apc.enabled=1 apc.shm_size=32M apc.ttl=7200 apc.enable_cli=1 apc.serializer=php __EOF__
  •  設定の有効化
sudo phpenmod opcache apcu

このphpenmodがハマりポイントでした。従来の ln -sではなく、専用コマンドを用いることでfpm / cli / apache-mod でも安定した運用が可能になります。

データベースの作成

Nextcloudが使用するMySQLデータベースと専用ユーザーを作成します。

  • MySQLにrootでログイン
mysql -u root -p

以下のSQLコマンドを実行します。YOUR_STRONG_PASSWORD は必ず強固なパスワードに変更してください。

CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'YOUR_STRONG_PASSWORD';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Nextcloudプログラムの配置

Nextcloud本体をダウンロードし、Webサーバーからアクセスできる場所に配置します。

  • 作業ディレクトリへ移動
cd /tmp && pwd

任意のディレクトリを指定します。

  • 最新版をダウンロードして展開
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
  • 展開したファイル一式をWeb公開用ディレクトリに移動
sudo mv nextcloud /home/www-data/
  • 所有者をWebサーバーの実行ユーザーに変更
sudo chown -R www-data:www-data /home/www-data/nextcloud

Apacheバーチャルホストの設定

Nextcloud用のApache設定ファイルを作成します。ここでPHP-FPMとの連携設定を組み込みます。

  • ログディレクトリの作成
sudo mkdir /var/log/nextcloud
  • ログディレクトリをwww-dataに修正。

これは、後のメンテナンス性を高めるためです。

sudo chown www-data:www-data /var/log/nextcloud
  • 設定ファイルの作成
/etc/apache2/sites-available/nextcloud.conf

を、teeで一気通貫で作ります。

# 【】内はご自身の環境に合わせてください
cat <<- __EOF__ | sudo tee /etc/apache2/sites-available/nextcloud.conf
<VirtualHost *:80>
    ServerName 【hoge.example.com】
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName 【hoge.example.com】
    DocumentRoot 【/home/www-data/nextcloud】

    CustomLog /var/log/nextcloud/nextcloud_access.log combined
    ErrorLog /var/log/nextcloud/nextcloud_error.log

    <Directory 【/home/www-data/nextcloud】>
        Options -MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    # PHP-FPM連携設定
    <FilesMatch \.php$>
        # SetHandlerで、phpファイルのリクエストをPHP-FPMのソケットに渡す
        SetHandler "proxy:unix:/var/run/php/php8.5-fpm.sock|fcgi://localhost/"
    </FilesMatch>

    # --- SSL設定 ---
    SSLEngine on
    Protocols h2 http/1.1
    SSLCertificateFile 【/etc/certs/hoge.example.com.crt】
    SSLCertificateKeyFile 【/etc/private/hoge.example.com.key】
    # 中間証明書が別に提供されている場合はこちらを有効化
    # SSLCACertificateFile 【/etc/certs/hoge.example.com.CA.crt】

    # --- 推奨SSL/TLS設定 ---
    SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
    SSLHonorCipherOrder     on
    SSLCompression          off
    SSLSessionTickets       off

    # --- セキュリティヘッダー ---
    Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    Header always set Referrer-Policy "no-referrer"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-Permitted-Cross-Domain-Policies "none"
</VirtualHost>
__EOF__

※ こちらもMod_Securityによる連携は可能です。

設定の有効化とサービスの再起動

  • 作成したサイト設定を有効化
sudo a2ensite nextcloud.conf
  • 構文チェック
sudo apache2ctl configtest

Syntax OK と表示されることを確認

  • fpm/apacheサービスを再起動
sudo systemctl restart php8.5-fpm.service
sudo systemctl restart apache2.service
  • fpm/apache再起動確認
systemctl status php8.5-fpm.service
systemctl status apache2.service

active (running)と表示されていれば正常です。

Webブラウザでのセットアップ

最後に、Webブラウザで https://【設定したドメイン】 にアクセスし、画面の指示に従ってNextcloudの初期設定を完了させます。

  • 管理者ユーザーのユーザー名とパスワードを入力
  • データベース情報を入力
  • データベースのユーザー名: nextcloud
  • データベースのパスワード: データベースのパスワード
  • データベース名: nextcloud
  • データベースのホスト名: localhost (または localhost:3306)

これで、PHP-FPM上で動作するNextcloud環境の構築が完了します。

Ubuntu26.04にRedmine6.1をインストール。(並びにハマったところのメモ)

以下の環境でインストールを確認しています。

  • Ubuntu 26.04
  • Ruby: 3.3 以上 (Ubuntu標準パッケージ)
  • Redmine: 6.1-stable
  • DB: MySQL 8.x

本記事で実施すること

  1. Redmineを動かすためのパッケージがインストールできるように準備をします。
  2. Redmineを動かすためのパッケージ(Ruby/データベース/Webサービスなど)をインストールします。
  3. データベースやWebサービスの基礎設定を行います。
  4. Redmineの動作確認を行います。

想定している読者

  • 「Redmine」をUbuntuにインストールしてみたい
  • まずは動くところまで確認できればいい

前提

  • Ubuntuサーバの初期設定が終わった直後の状態を想定します。
  • DNSでドメインの名前が解決できることを前提としています
  • 環境は以下の通りです。
  • Apache系
  • MySQL
  • Ruby
    • 3.3 (Ubuntu 26.04)
  • また、パッケージ管理としてaptitudeを用いています。aptが好みの方はこちらに読み替えてください。

特記事項

  • 本手順ではRedmine 6.1.2をインストールします。
  • 本記事のredmineの格納ディレクトリは/home/www-data/redmineです。一般的なディレクトリ(/var/lib/redmine)と異なることを最初に注記します。
  • ほぼコピペだけで済むような構成にしていますが、一部、テキストエディタを使用する箇所があります。
  • また、自身の環境に合わせたりパスワードを設定する項目がありますのでそこは注意してください。

手順

必要なパッケージをインストールします。

  • パッケージ全体のアップデート
sudo aptitude update
  • 必要なパッケージのインストール
sudo aptitude install build-essential zlib1g-dev libssl-dev libreadline-dev libyaml-dev libcurl4-openssl-dev libffi-dev mysql-server mysql-client apache2 apache2-dev libapr1-dev libaprutil1-dev imagemagick libmagick++-dev fonts-takao-pgothic subversion git ruby libruby ruby-dev libmysqlclient-dev

apacheの追加モジュールをインストールします。

sudo aptitude install libapache2-mod-passenger

rubyのパッケージ管理(gem)を用いて必要なライブラリをインストールします。

sudo gem install bundler racc mysql2

「3 gems installed」が表示されればインストール成功です。

必要に応じてmysqlの初期設定を行います。

mysql_secure_installationによる初期設定を行います。

うまくいかない場合は以下を参照してください。

https://barrel.reisalin.com/books/bbf94/page/mysql-secure-installation

mysqlでDBとユーザーを設定します。

sudo mysql -u root -p

上記で設定した「mysqlのrootパスワード」を入力し、mysqlにログインします

CREATE DATABASE redmine character set utf8mb4;

DB "redmine" を作成します

CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'password';

ユーザ "redmine"を作成し、パスワードを設定します。
この'password'は任意のパスワードに変更してください

GRANT ALL ON redmine.* TO 'redmine'@'localhost';
flush privileges;
exit

設定したDBでログインできることを確認します。

mysql -u redmine -p
SHOW DATABASES;
exit
  • 配置ディレクトリ作成
sudo mkdir -p /home/www-data/redmine

自分の環境に合わせます。

  • 所有者変更
sudo chown -R www-data:www-data /home/www-data
  • Redmine 6.1を入手
sudo -u www-data svn co https://svn.redmine.org/redmine/branches/6.1-stable /home/www-data/redmine

Redmineのコンフィグを設定します。

  • サンプルファイルをコピーしてコンフィグを編集
sudo -u www-data cp -pi /home/www-data/redmine/config/database.yml.example /home/www-data/redmine/config/database.yml

/home/www-data/redmine/config/database.yml

このファイルを教義・信仰に従ったエディタで編集してください。

database.yml 編集内容

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  # rootからredmineに変更します
  password: "redmine用のパスワード"
  encoding: utf8mb4
# 本番環境(production)のみ設定を行います

Redmineのマイグレーションを行います。

  • Redmineのルートディレクトリに移動
cd /home/www-data/redmine/ && pwd

/home/www-data/redmine/ (Redmineを配置したディレクトリ)であることを確認します

  • Bundlerの設定

※26.04でハマったところです。Bundlerの設定を行う必要がありました。

sudo -u www-data bundle config set --local path 'vendor/bundle' && sudo -u www-data bundle config set --local without 'development test'
  • stringio競合回避

※これが一番ハマった部分です。Redmineが必要とするライブラリとUbuntu26.04のRubyのgemに齟齬があったため、これに気づかずエラーを繰り返しました。

sudo -u www-data bundle update stringio
  • bundle install
sudo -u www-data bundle install
  • シークレットトークンの発行
sudo -u www-data bundle exec rake generate_secret_token RAILS_ENV=production
  • DBマイグレーション
sudo -u www-data bundle exec rake redmine:load_default_data RAILS_ENV=production
  • 日本語化
sudo -u www-data RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data
  • アセットのプリコンパイル

※これもハマりました。表示エラーが出てきました。

sudo -u www-data bundle exec rake assets:precompile RAILS_ENV=production

Apacheの設定ファイルを作成します。

【】を自分の作成したRedmineのサーバ名/ドメイン名に変更します。

cat <<- __EOF__ | sudo tee -a /etc/apache2/sites-available/redmine.conf
<VirtualHost *:80>
    ServerName 【hoge.example.com】
    # ServerNameは自身が設定したredmineに読み替えてください。
    DocumentRoot /home/www-data/redmine/public
    <Directory /home/www-data/redmine/public>
        Options -MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
__EOF__

設定を反映させます。

  • ファイル作成確認
ls -l /etc/apache2/sites-available/redmine.conf
  • 設定ファイル有効化
sudo a2ensite redmine.conf
  • 初期サイト設定を無効化
sudo a2dissite 000-default.conf
sudo a2dissite default-ssl.conf
  • コンフィグファイル整合性確認
sudo apache2ctl configtest

Syntax OK を確認します

  • 設定反映前のapacheステータス確認
systemctl status apache2.service

active(running)を確認します

  • apache再起動
sudo systemctl restart apache2.service
  • 設定反映後のapacheステータス確認
systemctl status apache2.service

active(running)を確認します

Webページの表示を確認します。

http://設定したRedmineドメイン

でRedmineのトップページが表示されれば成功です。

直ちにadmin/adminでログインし、強固なパスワードを設定し直します。

Page 1 of 291

Powered by WordPress & Theme by Anders Norén