毎年恒例:紫陽花。

今年もこの時期が来たので訪れました。

他、印象的だったのが

今年は気温が低めだったか、長持ちしている菖蒲。

柵にぽつんと置かれていた大きなマツボックリ。

情緒溢れる回廊など。

道中のサイクリングも含めていい気分転換でした。

Nextcloud、アップロードしたファイルを一定期間保持後に削除する方法。

ファイルサーバとしても使えるNextcloud。

しかし、サーバの容量によっては無制限にファイルを増やせるわけではありません。

今回、個人用に外部環境に構築したNextcloudは

「Talk機能によるスマートフォンからの高速メモ」

という尖った運用を行うために、ファイルサーバの利用は限定的として

  • アップロードしたファイルは猶予期間を設ける
  • 猶予期間を過ぎたら問答無用でファイルを削除する

設定を行いました。

環境

  • Ubuntu 24.04
  • Nextcloud 31.0.5
  • Apache 2.4
  • MySQL 8.3
  • PHP 8.3

構築については以下の通りです。

https://barrel.reisalin.com/books/nextcloud/page/ubuntu-2404nextcloud

準備

以下のプラグイン(アプリ)をそれぞれインストールします。Nextcloud 31.0.5で動くことを確認しています。

手順

Nextcloudに管理者権限でログインします。

付与するタグを作成します。

管理者設定>基本設定に進みます。

「タグの作成または編集」の項目があるので、

  • コラボレーションタグ
  • タグの名前:任意(30日で消去など、分かりやすい名前にします)
  • タグのレベル:不可視

にして、「作成」をクリックします。

ファイルアップロード時にタグを付与するようにします。

管理者設定>Flowに進みます。

上の方にある緑のボタン「自動タグ付け」の「新しいフローを追加」をクリックします。

以下のように設定します。

  • いつ
  • ファイルが変更されています(これは変更不可)
  • かつ
  • 「ファイルシステムタグ」
  • 「に次のタグがついていない」
  • 先ほど設定したタグ(30日で消去)

設定後、作成→アクティブ化。

一定期間が過ぎたらファイルが消去されるように設定します。

管理者設定>Flowの

「ファイル保持と自動削除」で以下のように設定します。

  • タグを選択
  • 先ほど設定した「30日で消去」を選択。
  • 保持期間(時間単位)
    • 30日
  • いつから
    • 作成日から

として作成。

タグ付け確認

Nextcloudのファイルアップロードで、任意のファイルをアップロードします。(要管理者権限)

ファイルの項目に、自動的に「30日で消去」が付与されていたら設定は完了です。

Nextcloudインストール時のロケールエラーに対処

エラー内容

Nextcloudインストール中、Webでのセットアップ時、

https://設定したドメイン

にアクセスすると

ロケールを en_US.UTF-8/fr_FR.UTF-8/es_ES.UTF-8/de_DE.UTF-8/ru_RU.UTF-8/pt_BR.UTF-8/it_IT.UTF-8/ja_JP.UTF-8/zh_CN.UTF-8 に設定できませんでした
これらのロケールのうちいずれかをシステムにインストールし、Webサーバーを再起動してください。

というエラーが出たので、これに対処します。

環境

  • Ubuntu 24.04
  • Apache 2.4
  • MySQL 8
  • Nextcloud 31.0.4

プログラムを配置し、Apacheのバーチャルサイトに記した直後の出来事です。

手順

ファイルのバックアップを行います。

  • 設定ファイルのバックアップ
sudo cp -pi /etc/apache2/envvars /path/to/backup/directory/envars.$(date +%Y%m%d) 

自分の環境に合わせ、任意のバックアップディレクトリを指定します。

  • バックアップの確認
diff -u /path/to/backup/directory/envars.$(date +%Y%m%d)  /etc/apache2/envvars

差分が無いことを確認します。

設定ファイルの編集を行います。

以下の差分になるように管理者権限で /etc/apache2/envvars ファイルを修正します。

  • 差分
@@ -23,7 +23,9 @@
 export APACHE_LOG_DIR=/var/log/apache2$SUFFIX

 ## The locale used by some modules like mod_dav
-export LANG=C
+#export LANG=C
+export LANG=ja_JP.UTF-8
+export LC_ALL=ja_JP.UTF-8
 ## Uncomment the following line to use the system default locale instead:
 #. /etc/default/locale
  • 差分確認
diff -u /path/to/backup/directory/envars.$(date +%Y%m%d)  /etc/apache2/envvars

で、上記の差分になっていればOKです。日本語環境以外に合わせたい方は、それに従ってください。

設定の反映を確認します。

  • 設定ファイルのコンフィグ確認
sudo apache2ctl configtest

Syntax OKを確認します

  • Apache再起動
sudo systemctl restart apache2.service

再びNextcloudの

https://設定したドメイン

にアクセスし、エラーがなくセットアップ画面が出てくればOKです。

『ユミアのアトリエ』ハウジングメモ-4-(襲撃の注意点:ネタバレあり)

以下の条件で、「拠点の襲撃」というイベントが発生します。

  • 拠点タイプを通常(フリー建築)にしている。
  • 拠点にレシピ想起台/作業台を置いている。
  • 快適度が500以下である。

この、家具が壊れるというのが存外厄介で

撤去を行うことすらできない仕様になっています。

先に挙げた画像の通り、拠点近くにいる人に話を聞いて情報を集め

足跡に沿って追跡。

魔物を討伐後、

リペアツール:木材でようやく解決。

これを防ぐためには

  • 快適度を501以上にする

が根本的な解決方法。

快適度ボーナスを上げることでステータスアップや素材上昇が見込めるので、ハウジングをするなら(家具を適当に置いた状態にしても)、ある程度の快適度を保つことが重要です。

『ユミアのアトリエ』レシピによるステータスの差を検証。

先日の投稿を受けて、一つの仮説が思い浮かびました。

『ユミアのアトリエ』の武器調合の場合、レシピレベルの効果は一致しています。

こちらは終盤で調合できる『エフェメラルレコード』

最初に調合できる『旅立ちの銃杖』。

いずれも

  • Lv.5
  • Lv.8

でスロットが追加されます。それぞれのスロットで投入できる素材数も同じ。

更に、本作は「素材の条件は驚くほどの自由度の高さ」を持っています。

そこで、単純にステータス上昇値が大きい「グランツオルゲン」をふんだんに使った初期の武器『旅立ちの銃杖』をレシピレベル10にした場合、ステータスがどうなるのかを検証しました。

調合結果『旅立ちの銃杖』

調合手順は

  1. 調合スキル「能力を引き出す」を用いて
  2. 全てのスロットにステータス上昇系の素材を入れる
  3. 最後に鍛造炉で強化(メタルパーツを入れる)

を実施しています。

  • HP: 320
  • 防御力:572
  • 攻撃力:1063
  • 素早さ:449

と、初期の武器でありながら攻撃力1063を突破しました。

エフェメラルレコードとの比較

同じ形で調合した最強武器のエフェメラルレコードと比較してみます。

  • HP:327
  • 防御力:526
  • 攻撃力:1186
  • 素早さ:412

ここでは、ちょっと予想を超える比較値となりました。

ステータス旅立ちの銃杖エフェメラルレコード差 (エフェメラルレコード - 旅立ちの銃杖)
HP320327+7
防御力572526-46
攻撃力10631186+123
素早さ449412-37

何と、防御力と素早さにおいては、旅立ちの銃杖の方が上となります。

もちろん、発現する効果が違うので上位下位とは言えませんが、旅立ちの銃杖は

  • アイテムダメージ増加
  • アイテムCT短縮

があるため、癖がなく使いやすい効果なので、プレイヤーの嗜好によっては、この武器の活躍も十分あります。

これを鑑みて、別の武器を同じように調合しました。

調合比較:マナセプター

次に、シバーシュ地方で調合できるマナセプターを同じ手順で調合します。

  • HP:357
  • 防御力:548
  • 攻撃力:1197
  • 素早さ:403
ステータスマナセプターエフェメラルレコード差 (マナセプター - エフェメラルレコード)
HP357327+30
防御力548526+22
攻撃力11971186+11
素早さ403412-9

ほとんどの数値でマナセプターが上という驚きのステータス。

これに関しては効果に「攻撃力上昇」があるとはいえ、単純に強力。

このマナセプターの調合後のユミアの自賛

「撃ってよし。殴ってよし。
 こういう銃を求めてた」

の言葉は伊達ではないです。

『ユミアのアトリエ』最強武器の調合例。(エフェメラルレコード調合)

『ユミアのアトリエ』の装備品の調合メモです。メモと言いつつ長文になっているのはいつもの例です。

前提

本稿ではリリース直後にあった「リビルドバグ」は実施していません。

あくまでも

  • 調合の時点で
  • 全てのスロットにステータス上昇系の素材を入れ
  • 調合後にパーツを入れる

の手順に則り、ステータス最大を目指します。

また、本稿で説明する全ての調合アイテムは特段の理由がない限り「効果レベル最大」で調合しています。また、調合素材もランクSを用いています。

調合例

最終的に以下の通りとなりました。

  • 名前:エフェメラルレコード
  • 装備可能キャラクター:ユミア
  • 品質:999
  • HP:417
  • 攻撃力:1276
  • 防御力:556
  • 素早さ:502
  • 時間圧縮:Lv.10
  • 永劫の神杖:Lv.10
  • 須臾の旋転:Lv.10
  • 防御力上昇:Lv.13
  • アイテムダメージ増加:Lv.13
  • アイテムCT短縮:Lv.13

準備

  • 「クリアデータ」が大前提です。
  • 調合したい装備品のレシピレベルを最大にしておきます。
  • 効果を最大まで発現させたインゴット系(武器の場合)やクロース系(防具の場合)を大量に用意します。体感で5~60は溶けます。
  • 他のステータス上昇系の素材も同じく用意します。
  • 開拓任務、開拓クエストを完了させておきます。

調合手順

調合メニューからエフェメラルレコードを選択します。

レシピレベル10であることを確認。

調合スキルを選択します。

ここでは調合スキルIVの「能力ドーピング(各ステータスが50上昇)」ではなく、「能力を引き出す」を選択します。

  • 「能力を引き出す」を選択しない場合のグランツオルゲン(効果発現レベル最大)のステータス上昇値
  • 1つにつき攻撃力が15上昇。
  • 「能力を引き出す」を選択した場合のグランツオルゲン(効果発現レベル最大)のステータス上昇値
  • 1つにつき攻撃力が23上昇。

上記、能力ドーピングなしでは初期攻撃力のボーナスが載りませんが、こちらの調合で用いるグランツオルゲンは10個以上は軽く使います。なので、可能な限り多くのグランツオルゲンを投入していき、その差分でステータスアップを図ります。

材料を投入してきます。

基本的にはグランツオルゲン(攻撃力上昇+と全能力上昇)を投入しますが、属性やスロットに入れられる素材縛りの関係でグランツオルゲンが入らないことがあります。その場合は以下を入れていきます。(効果レベルは最大です)

  • マリシャスチェーン(火・氷)
  • 攻防上昇 Lv.7
  • 攻速上昇 Lv.7
  • 賢者の石(全属性)
  • 全能力上昇 Lv.5
  • プラジオライト(氷・風)
  • 攻速上昇 Lv.7
  • ドンケルハイト(氷・雷)
  • 全知全能の雫
  • プロテクタイト(氷・雷)
  • 防御力上昇+ Lv.10

など、「ステータスが上昇する」を入れていきます。セージコートやビスマステンなどの全能力上昇/攻撃力上昇+などでもいいでしょう。

上記のサイクルを全てのアトラスコアで行います。

ステータス上昇を確認します。

全てのスロットにステータス上昇のバフが乗るため、調合時でのステータスは以下の通りです。

  • HP:327
  • 防御力:396
  • 攻撃力:1186
  • 素早さ:412

効果は

  • 時間圧縮 Lv.10
  • スキル使用時にアイテムのクールタイムを短縮する。アイテム使用時にスキルのクールタイムを短縮する
  • 永劫の神杖 Lv.10
  • マナフローを消費したとき、与えるダメージがLv×4%増加する
  • 須臾(しゅゆ)の旋転 Lv.10
  • Lv×10%の確率で、マナフローの獲得量が1増加する

となっています。

特性結晶を装着します。

以下を選びました。

  • 全能力強化+ (RANK6)
  • 全ステータスが RANK×5 上昇
  • 獣の如し力(RANK6)
  • HP、攻撃力、素早さがRANK×10上昇
  • 賢者の知恵(RANK6)
  • インレンジ効果:火、氷、雷、風属性攻撃のダメージがRANK×10%上昇
  • アウトレンジ効果:火、氷、雷、風属性攻撃のダメージをRANK×5%軽減

アイテム強化を行います。

ハウジングで「鍛造炉」を設置し、その脇に金床を置きます。

そうした上で先ほど調合した「エフェメラルレコード」を入れて、パーツを投入します。

  • プライマルパーツ
  • メタルパーツ
  • ヴォイドパーツ
  • ウィズダムパーツ

の4種がありますが、ユミアが使用アイテムを軸に戦うため、ここは「メタルパーツ」を選択。

最終的に、上記例の通りとなりました。

まとめ

手間ではありますが、全ての装備品に対して同じやり方を行えます。

  1. ステータスが上昇する調合アイテムを効果最大、共鳴値も上げていく。
  2. 装備品のレシピレベルを最大にする。
  3. 調合で、全てのスロットにステータス上昇となる調合アイテムを入れて調合する。
  4. 装備品に見合った特性結晶を装着する。
  5. 鍛造炉で目的に沿ったパーツを入れる。

また、これは最終盤のやりかたなので鍛造炉がない序盤でも同じことは可能です。その場合でも、品質上限999は用意しておきましょう。

『ユミアのアトリエ』最強の装備品の調合準備。(追記あり)

最強のアイテムを自らの手で作り出すことができるのがアトリエシリーズの特徴でありコア部分。

本作の調合は適当に材料を放り込むだけでどうとでもなる「良くも悪くも大味」と書きましたが、

「本当にステータスを上げようとすれば相当な準備が必要」です。

準備:調合スキル

スキルツリーから全ての調合スキルを解放します。

高品質調合IV

調合したときの完成品の品質上限を999にします。必須のスキルです。

調合スキル獲得V(要クリアデータ)

クリアした後に解放されるスキルです。データ引き継ぎを用いた場合は、ラクーナ地方に突入と同時に解放されます。

  • 能力を引き出す
    • 材料を投入したときに上昇するステータス補正が1.5倍になる
  • 強制解放
    • スキルを適用した場合のみ、レシピLv.10として実行できる
  • クローン技術
    • 作成個数+10

など、今までの調合スキルの大幅な上位互換と言うべきものが揃います。

特性理解III

  • 質の力
  • 騎士の構え

など、優秀な特性を合成する際に必要です。

準備:鍛造炉と金床

  • シバーシュ地方の開拓任務30%で得られる鍛造炉
  • 開拓クエストで得られる金床

の2つは、装備強化で必要になります。

準備:レシピ想起

装備品(要:レシピレベル最大)

2025/06/01現在のDLCがない状況での最強武器は以下。

  • ユミア
    • エフェメラルレコード
  • アイラ
    • 秘槍トリアイナ
  • ヴィクトル
    • インペリアルドライブ
  • ルトガー
    • ディアボリックサイズ
  • ニーナ
    • ハントレス
  • レイニャ

これらのレシピレベルを最大まで上げていきます。残響片集めがかなりの骨ではありますが、

  • スロット追加によるステータス上昇の素材投入増加
  • 初期攻撃力の追加

等が加わります。

準備:中間素材

インゴット系やクロース系に加え、宝石などの中間素材は「投入すればするほどステータスを上昇させる」効果を持っています。

また、これらの中間素材は共鳴値も高く設定されているため浮遊マナをそれだけ取り込み、効果レベルを最大まで上げるのに寄与します。

  • グランツオルゲン
  • セージコート
  • 賢者の石
  • プロテクタイト

など、調合でステータス上昇が望める素材は可能な限り多く作っておきます。

体感ではありますが:装備品1つ作るのに50~60ぐらいのインゴット/クロースは溶けます。生産工場で同時稼働させるなど、多くの中間素材を作っておきます。

パーツ

  • ウィズダムパーツ
  • メタルパーツ

など、装備強化時に投入することで

  • アドベント強化
  • スキル強化
  • アイテム強化

等が見込めます。これらは効果レベルが大きくなるほどステータス上昇値が上がり、更に、上述した金床を加えると「最大レベル13」と大盤振る舞いが可能になります。

まとめ

  1. 調合スキル獲得の関係で、クリアデータが必要。
  2. 調合に関するスキルは最大まで上げる。
  3. レシピレベルを上げるため残響片集めは効率的に。
  4. ステータス上昇値の素材を大量に(インゴットケイトクロース系は3桁単位で準備)

など、まぁまぁ「骨」な準備になります。

2025/06/03追記

調合のやり方によって、初期の武器でも最強武器に匹敵する(或いは上回る)ステータスであることを検証しました。

なので、残響片集めが面倒だとしても「最初の武器でラスボスを倒す」はある程度の難易度であっても十分可能です。

もちろん、そこに至るまでの素材は厳選する必要があります。

『ユミアのアトリエ』快適度ボーナスによる戦闘・探索効率化。

ハウジングの恩恵

拠点の種類を「一般拠点」にすると、快適度ボーナスの恩恵を受けられます。

  • 採取時の素材が増える
  • エナジー回復の速度が上がる

等に加え、

  • 「休憩時にステータスが上昇する」

というバフがかかります。この上昇度により、高難易度に備えます。

候補地:ペルグリカ・トゥルム

アウルーマ地方の最終盤、ヴィランとの戦いで解放されるハウジングエリア。

ここの快適度ボーナスは

  • 100: インテリア射撃的Bの設計図を獲得する
  • 200:休憩後、採取量が増加する
  • 400:インテリアミニステージの設計図を獲得する
  • 600:休憩後、エナジーの自動回復速度が上がる
  • 800:休憩後、パーティキャラクターのパラメータが上昇する

と、採取/探索/戦闘を一気に有利にしてくれます。

その分、必要とする快適度は相当なものです。

ハウジング

ですが、温室と分解機による素材の一気獲得によりハウジングで必要とする素材の調達はそれほど難しくありません。

特に、2025年5月23日のアップデートのおかげで「クーケン島仕様の家具」が追加されたことで、テンションが更に上がりました。

おかげで、快適度999とカンストしました。ここで休憩し、ステータスを確認しました。

休憩後のステータスアップ

ユミアを例に取ります。

  • HP: 2674
  • 攻撃力:5361
  • 防御力:3876
  • 素早さ:3416
  • 装備品質:200

と、攻撃力5000オーバー。

調理鍋

更に、先のアップデートにより追加された家具「調理鍋」は、キャンプセットを用いずに料理ができるという便利な家具。

ここで「うにサラダ」を使うことで

  • HP:2941
  • 攻撃力:5567
  • 防御力:4025
  • 素早さ:3547
  • 装備品質:200

と、防御力も4000超えとなりました。

『ユミアのアトリエ』最高難易度LEGENDでラスボスを倒したときの攻撃アイテム一覧。

概要

2025年5月23日のアップデートで追加された最高難易度LEGEND。

  • クリアしてから初の戦闘不能
  • ヴィラン(リリーボレア)戦では全滅

と、非常に手強くなった中で

  • 使用アイテムの調整
  • 特性の調整

により、なんとかラスボスを倒すことができました。その立役者の一つ、アイテムをメモしておきます。

アイテム:グランシャイン

レシピレベルの最大解放までの残響片が異常に厳しく、インレンジ効果のデメリットはあるものの、

  • 威力
  • サブ効果
  • 追加回復

などが最高峰。CTを短縮する装備品などで積極的にダメージを与えていきます。

効果1:四精霊の祝福

  • インレンジ効果
  • 20+Lv×5の威力値で火・氷・雷・風属性のダメージを与える。他のアイテムをクールタイムにし、その数×20%与えるダメージが増加する
  • アウトレンジ効果
  • 20+Lv×5の威力値で火・氷・雷・風属性のダメージを与える。他のアイテムのクールタイムをLv×4%短縮する

効果2:煌めく剣筋

  • インレンジ効果
  • クリティカル時に与えるダメージがLv×10%増加する
  • アウトレンジ効果
  • 攻撃がクリティカルした場合、獲得する環境マナがLv×1%増加する

効果3:極性の輝き

  • インレンジ効果
  • 対象に与えたダメージのLv×3%分のHPを回復する
  • アウトレンジ効果
  • 対象の最大HPをLv×5%減少する

アイテム:スペリオルグリモア

有り体に言えば『ライザのアトリエ2』のローゼフラムと同じようなトリガーでダメージが増強します。付与するマイナス効果も強力です。

効果1:暴風の魔術

  • インレンジ効果
  • 150+Lv×30の威力値で風属性のダメージを与える。環境マナを半分消費し、消費した割合に応じて与えるダメージが増加する
  • アウトレンジ効果
  • 150+Lv×30の威力値で風属性のダメージを与える。環境マナが50%以下の時、マナの獲得超がLv×1%増加する

効果2:拘束の頁

  • インレンジ効果
  • 対象にLv×10% の確率で1スタックのスタンを付与する
  • アウトレンジ効果
  • 敵を撃破すると、クールタイムがLv×5%短縮する

効果3:伝導魔法

  • インレンジ効果
  • 対象にLv×10%の確率でランダムな-効果を3個付与する
  • アウトレンジ効果
  • 対象のHPが半分以下の場合、与えるダメージがLv×5%増加する

アイテム:カースアーチェ

効果1と効果2が噛み合っているのに留まらず、他の使用アイテムともシナジーを形成します。

効果1:雪風の一矢

  • インレンジ効果
  • 7+Lv×7の威力値で氷属性と風属性のダメージを与え、マイナス効果態勢をLv×10%低下する
  • アウトレンジ効果
  • 7+Lv×7の威力値で氷属性と風属性のダメージを与え、防御力をLv×10%低下する

効果2:霊障の弦

  • インレンジ効果
  • 対象に付与されている-効果の数が3個以上の場合、与えるダメージがLv×5%増加する
  • アウトレンジ効果
  • 対象の素早さをLv×5%低下する

効果3:残心

  • 行動時、Lv×3%の確率で使用回数を消費せずに行動する

アイテム:エンデメテオ

通常敵ですら100万を超えることがままあるこの難易度において、最大HPを下げるのは単純に強力。複数体への威力増加もマナ争奪戦で役立ちます。

効果1:熱雷の二振り

  • インレンジ効果
  • 7+Lv×7の威力値で火属性と雷属性のダメージを与え、最大HPをLv×3%減少する
  • アウトレンジ効果
  • 7+Lv×7の威力値で火属性と雷属性のダメージを与える。対象が複数の場合、与えるダメージがLv×5%増加する

効果2:包囲の炎壁

  • インレンジ効果
  • 攻撃が命中した対象数に応じて、対象の攻撃力、防御力、素早さをLv×1%減少する
  • アウトレンジ効果
  • 攻撃が命中した対象数に応じて、クリティカル率をLv×3%上昇する

効果3:疾駆する光雷

  • 環境マナが50%以上の時、クールタイムがLv×3%上昇する

用いた特性

特性:質の力(RANK)

  • インレンジ効果
  • アイテムの品質に応じて威力が増加。最大200%/品質999
  • アウトレンジ効果
  • 使用者のLvに応じて威力が増加。最大100%/Lv100

品質を上げやすく、アウルーマ地方でもLv.100に達する本作において、アイテムの威力を無条件に上げるという破格の効果。ただし、合成の難しさは群を抜いています。

特性:ソニックインパクト(RANK6)

  • RANK×100の固定ダメージを与える

この追加ダメージはっ結構馬鹿にならないので入れていますが、単純に破壊力上昇に差し替えてもいいと思います。

特性:流星群(RANK6)

  • アイテム使用時にRANK×10の威力値で属性耐性を無視したダメージを7回与える

単純計算でソニックインパクトの上位互換。これもまた、高難易度に寄与します。

まとめ

これらを全員に装備させました。

この高難易度では、戦闘不能がかなり頻繁に発生するので、「後衛にも同じように戦ってもらう」を目指しています。

アイテムに関しては複製でどうにかなりますが、特性に関しては

  1. スロット3つに複製させたい特性結晶を入れる
  2. 簡易祭壇の周囲に10個以上の「鈴」を配置しておく。
  3. この状態で特性決勝入りのアイテムをリビルドする。
  4. 結晶と同時にリビルドが増えている

技でどうにかなりました。(リビルドバグと異なり、こちらはまだ修正されていないようです)

他の装備品や回復・補助については改めてご紹介します。

Redmine Knowledgebase プラグイン (v5.0.0) on Redmine 5.1 (Ruby 3.2+, Rails 6.1+) インストール・マイグレーション手順

自分にとってのキラープラグインと言えるRedmine Knowledgebase。

これをRedmine 5.1に導入する際に恐ろしくハマったので、解決したときのメモです。

なお、本件の解決にはGoogle Gemini Advanced(2.5 Pro preview)の助けが必要でした。

環境

  • Ubuntu 24.04
  • Redmine 5.1.x
  • Apache 2.4で稼働
  • Ruby 3.2.x (本手順は Ruby 3.2.3 で確認)
  • Rails 6.1.x (本手順は Rails 6.1.7.10 で確認)
  • データベース: MySQL 8.0 (他のデータベースでも同様の問題が発生する可能性があります)
  • プラグインソース: alexbevi/redmine_knowledgebase

盛大にハマった結果で得た手順

  1. DBのバックアップを取得します。
  2. プラグインのインストールを行います。
  3. マイグレーションエラーに対応します。
  4. マイグレーションの成功を確認します。
  5. Redmine(Webサービス)を再起動します。
  6. プラグインのインストールと動作確認を行います。

バックアップを取得します。

  • 作業ディレクトリに移動
cd /hoge && pwd

任意のバックアップディレクトリに移動します

  • mysqldumpによるバックアップ
mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql

それぞれ-h ホスト名 -u redmine -p ユーザ オプション db名です。パスワードはRedmineインストール時に設定したDBユーザのものです。

環境が許すなら、VPSのスナップショットのようにシステム全体のバックアップを取ることを強く推奨します。

プラグインのインストール

  • Redmineのプラグインディレクトリに移動
cd /path/to/redmine/root/directory/plugins && pwd

筆者環境/home/www-data/redmine/plugins

  • git clone
sudo -u www-data git clone https://github.com/alexbevi/redmine_knowledgebase

Redmineの実行ユーザでgit cloneとした方が、後にsudo chownする手間が省けます。

  • clone確認
ls -l redmine_knowledgebase

ファイル一式があることと、ファイル群の所有者がwww-data(Redmineの実行ユーザ)であることを確認します。

  • Redmineのルートディレクトリに戻ります。
cd /path/to/redmine/root/directory/plugins && pwd

筆者環境/home/www-data/redmine/

  • (必要に応じて)依存関係をインストールします。
sudo -u www-data bundle install

初回マイグレーション実行 (エラー発生との対処)

以下のコマンドでプラグインのマイグレーションを実行します。このとき、壮大にハマったので、AIの力を借りて(というよりもほぼその指示に従って)解決しました。

sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production --trace

マイグレーションエラーの修正

エラーが発生した場合は、以下の手順で関連ファイルを修正し、その都度上記 redmine:plugins:migrate コマンドを再実行してください。

修正箇所1: 20121205100143_add_versioning.rb ファイルの対応

このマイグレーションでは、以下の2つのエラーが連続して発生する可能性があります。

  • Mysql2::Error: Duplicate column name 'version_comments' (in kb_articles table)
  • ArgumentError: wrong number of arguments (given 2, expected 1) (in KbArticle.create_versioned_table 内部の create_table 呼び出し)

対象ファイルA: plugins/redmine_knowledgebase/db/migrate/20121205100143_add_versioning.rb

以下に従って修正していきます。

  • 修正前の class AddVersioning ... end の内容(主要部分):
  class AddVersioning < ActiveRecord::Migration
    def self.up
      KbArticle.create_versioned_table
      add_column :kb_articles, :version_comments, :string, :limit => 255, :default => ""
    end

    def self.down
      remove_column :kb_articles, :version_comments
      KbArticle.drop_versioned_table
    end
  end
  • 修正後の class AddVersioning ... end の内容:
  class AddVersioning < ActiveRecord::Migration[6.1] # Rails 6.1 互換にする
    def self.up
      # kb_article_versions テーブルが存在しない場合のみ作成
      unless ActiveRecord::Base.connection.table_exists?(:kb_article_versions)
        if defined?(KbArticle) && KbArticle.respond_to?(:create_versioned_table)
          KbArticle.create_versioned_table # この呼び出しは次の acts/versioned.rb の修正が必要
        else
          # このエラーは通常発生しないはずだが、念のため
          raise "Cannot create kb_article_versions: KbArticle model or create_versioned_table method is not available."
        end
      end

      # kb_articles テーブルに version_comments カラムが存在しない場合のみ追加
      unless column_exists?(:kb_articles, :version_comments)
        add_column :kb_articles, :version_comments, :string, :limit => 255, :default => ""
      end
    end

    def self.down
      if column_exists?(:kb_articles, :version_comments)
        remove_column :kb_articles, :version_comments
      end
      if ActiveRecord::Base.connection.table_exists?(:kb_article_versions)
        if defined?(KbArticle) && KbArticle.respond_to?(:drop_versioned_table)
          KbArticle.drop_versioned_table
        end
      end
    end
  end

対象ファイルB: plugins/redmine_knowledgebase/lib/active_record/acts/versioned.rb

KbArticle.create_versioned_table が内部で呼び出す create_tableArgumentError が発生します。このファイルを修正します。

  • 修正対象箇所 (ファイル内の create_versioned_table メソッドの中、通常503行目あたり):
  # 修正前
            self.connection.create_table(versioned_table_name, create_table_options) do |t|

Ruby

  # 修正後 (create_table_options の前に ** を追加)
            self.connection.create_table(versioned_table_name, **create_table_options) do |t|

上記AとBの両ファイルを修正後、再度以下を実行しましたが、エラーが発生しました。

sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production --trace
修正箇所2: 20150326093122_add_taggings_counter_cache_to_tags.rb ファイルの対応

次のエラーとして NameError: uninitialized constant ...::RedmineCrm が発生する可能性があります。

対象ファイル: plugins/redmine_knowledgebase/db/migrate/20150326093122_add_taggings_counter_cache_to_tags.rb

  • 修正前の class AddTaggingsCounterCacheToTags ... end の内容(主要部分):
  class AddTaggingsCounterCacheToTags < Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2] # 古い形式
    def self.up
      RedmineCrm::Tag.reset_column_information
      # ... (RedmineCrm::Tag を参照するコードが続く) ...
    end
    def self.down
      # ... (関連する可能性のある remove_column など) ...
    end
  end
  • 修正後の class AddTaggingsCounterCacheToTags ... end の内容:

(Redmine Crmプラグインを使用していない場合、関連処理をスキップします)

  class AddTaggingsCounterCacheToTags < ActiveRecord::Migration[6.1] # Rails 6.1 互換にする
    def self.up
      puts "INFO: Skipping 'up' method in 20150326093122_add_taggings_counter_cache_to_tags.rb due to missing RedmineCrm module or intentional skip."
      # 元の RedmineCrm::Tag に関連する処理は全てコメントアウトまたは削除
    end

    def self.down
      puts "INFO: Skipping 'down' method in 20150326093122_add_taggings_counter_cache_to_tags.rb."
      # 元の remove_column 処理なども、up で対応する処理を行わないためコメントアウトまたは削除
    end
  end

上記ファイルを修正後、更に以下を実行します。

sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production --trace

これらの手順で、ようやく、

  • コンソールにエラーメッセージが出ないこと
  • db:schema:dumpがログに出力されること

を確認しました。

マイグレーション完了の確認

念のため、

mysql -u root -p

としてMySQLコンソールにログイン。

USE DATABASE redmine;

(自分が使っているRedmineのDBを指定します)

  • kb_article_versionsテーブルの確認
SHOW TABLES LIKE 'kb_article_versions';
DESCRIBE kb_article_versions;
DESCRIBE kb_articles;

それぞれ、テーブルが作成されていること、kb_articles テーブルに version_comments カラムが存在すること、および content カラムの型が変更されていること(ChangeColumnArticleToLongText マイグレーションによる)を確認します。

Redmineの再起動

ここではWebサービス(Apache)の再起動を前提とします。

  • 稼働前確認
systemctl status apache2.service

active(running)を確認します。

  • Webサービス再起動
sudo systemctl restart apache2.service
  • 稼働後確認
systemctl status apache2.service

active(running)を確認します。

プラグインの動作確認

Redmineにログインし、ナレッジベースプラグインの各機能

  • 記事の作成
  • 編集
  • 表示
  • バージョン管理
  • ファイル添付

などが正常に動作するか確認してください。

注意点:

  • 上記の手順は、特定のバージョンの組み合わせで発生した問題への対処法です。プラグインやRedmineのバージョンが異なる場合は、別の問題が発生したり、異なる修正が必要になる場合があります。
  • 途中でマイグレーションが認識されなくなるなどの不可解な問題が発生した場合は、一度プラグインディレクトリを削除し、データベースをリストア(または関連テーブルを手動削除)、再度GitHubからクリーンにクローンし直してから上記手順を開始すると、問題が解消されることがあります。

おまけ:切り戻し手順

この手順で成功したとはいえ、失敗はつきものです。そのため、以下に切り戻し手順を記します。

通常の切り戻し

ディレクトリ移動

  • Redmineのルートディレクトリに戻ります。
cd /path/to/redmine/root/directory/plugins && pwd

筆者環境/home/www-data/redmine/

プラグインアンインストール

sudo -u www-data bundle exec rake redmine:plugins:migrate NAME=redmine_knowledgebase VERSION=0 RAILS_ENV=production

ディレクトリ削除

sudo rm plugins/redmine_knowledgebase -Rf

Webサービス再起動

  • 稼働前確認
systemctl status apache2.service

active(running)を確認します。

  • Webサービス再起動
sudo systemctl restart apache2.service
  • 稼働後確認
systemctl status apache2.service

active(running)を確認します。

それでもダメだった切り戻し(DBリストア)

  • DBをバックアップしたディレクトリに移動
cd /hoge && pwd
  • DBリストア
mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql

パスワードはredmineインストール時に設定したDBユーザのものです

  • 稼働前確認
systemctl status apache2.service

active(running)を確認します。

  • Webサービス再起動
sudo systemctl restart apache2.service
  • 稼働後確認
systemctl status apache2.service

active(running)を確認します。

再起動後、復旧しているかを確認します。

Page 1 of 257

Powered by WordPress & Theme by Anders Norén