月: 2025年11月 Page 2 of 4

『ライザのアトリエ3DX』スタートアップの恩恵-採取道具。

SPが最大17000からスタートする『ライザのアトリエ3DX』。

その恩恵のすごさを紹介。

質のいい素材をバンバン入れられることにより、素材の質、それに伴うSPボーナスも増えていきます。

序盤、4人での冒険の時点で、リビルドLv.99まで到達。

これによりゴルドテリオンも調合。

薪割り斧から順調に調合していき

ゴールデンアックスを調合。

これにより、最初の状態で、最上位の採取道具が手に入りました。

『ライザのアトリエ3 DX』序盤を快適に進めるためのTIPS集。

いわゆるまとめです。

『ライザのアトリエトリロジーDX』が出たことで、ライザ3をやってみたいという方はいるかと思います。

また、自分への思い興しとしてこの記事を記します。

完全なるリンク集です。

最序盤で作ることができる採取道具の数々

シリーズのキモでもある

  • 採取
  • 調合
  • 戦闘

の「採取」にフォーカスした記事。

  • 草刈り鎌
  • ハンマー
  • 釣り竿
  • 捕虫網
  • エアドロップ

の全ては「最序盤(アガーテにグラスビーンズを届ける前)」から理論的に可能です。ファストトラベル解禁後にやっておくことをオススメします。

特性と中和剤ループについて

「調合」は戦闘と探索を劇的に楽にします。その中の「特性」は最初の中和剤でどうとでもなります。

逆に言うと「中和剤」1つを満足に作れないと、後の調合で躓きます。

エメラルドバンド経由でのアクセス

実績にも関わる全てのランドマークを見つける。その中のクーケン島周辺エリアに関しては「エメラルドバンド」を使う必要があります。

採取する素材の関係、クレリア地方についてからのスタートとなりますが:

  • SPを溜めまくる

で理論上は可能。そして、シリーズを持っている方のスタートダッシュ特典は、この理論を縮めることが可能です。

クレリア地方でのTIPS

初見プレイヤーはここが躓くポイントです。

  • より広くなったエリア
  • 細かい採取
  • アトリエ建築

などゲームの選択肢が広くなった分、迷いも出てきます。その一助となります。

余りオススメはしないインゴット素材全てのクーケン島周辺エリアでの採取

これは割と修羅の道です。たとえスタートダッシュ特典でも「理論上はできるがやろうとはしない」コアなファン向けの記事です。

『ライザのアトリエDX』Steam版、ロードの遅さ改善。(修正報)

2025/11/13にリリースされた『ライザのアトリエトリロジーDX』の『ライザのアトリエDX』。

壊滅的なロードの遅さは改善されていました。

https://atelier.games/secretdx/jp/update

アップデート後、

オプション→グラフィック設定→フレームレート制限を「無制限」から

60に変更。

この後、ワークアラウンドによって「PS3ぐらいのロード時間」から「これぞDX」というぐらいまで見違えました。

よって、こちらの記事は取り下げます。

『ライザのアトリエ3DX』スタートダッシュ特典による大幅スピードアップ(最序盤のネタバレのみ)

こちらのセーブデータ連動特典による大盤振る舞いの特典を大きく受けられるのが

『ライザのアトリエ3DX』です。

ライザのアトリエ2は品質上限アップや特定の採取道具などはある程度シナリオを進める必要がありましたが

「ほぼ全てのスキルツリーがフルオープン」という仕様になっているため、

  • ライザのアトリエ
  • ライザのアトリエ2
  • ライザのアトリエ3

を通しで買い、更に今回のトリロジーも購入しているというファンにとっては

17,000のSPでスタート。

これがどれほどの意味を持つかを説明します。

スキルツリー解放まで

※リンク先はストーリーの流れ全てを記しています。(重大なネタバレは避けていますが)

https://atelier.reisalin.com/issues/246

「アガーテの依頼」受諾後のチュートリアルのスキルツリー後。

計算通り、17000ものスキルツリーによって

通常採取:獲得量強化Lv1.から始まり

メディカパウダーを解放。

エメラルドバンド経由で

通常採取Lv.2を解放してもまだ余裕があります。

通常採取Lv.3も上げます。

杖採取Lv.2→Lv.3を上げます。

スキルツリーの上、投入回数増加等もアップ。

品質上限突破:500。この辺りで流石にSPが5000を切りましたが

投入回数+2まで伸ばせます。

最後に獲得SP+10%を解放しました。

この通常採取のレベルアップが意味すること

最序盤、クーケン島とアトリエ周辺のみから

  • 攻防強化++
  • 攻速強化++
  • 全能力強化++

などの最後まで使う特性が得られます。

投入回数も増えているので

全属性を付与した中和剤を作る

ゼッテルによる中和剤の統合も自由

と、かなりのやりたい放題になっていました。

そして、なぜ、筆者がこれに感動しているかというと、ライザ2/3は「極端な成長曲線を描く超・超拡大再生産だから」に尽きます。

終盤であればあるほどSPは溜まりやすく、上質なアイテムを調合することができます。

しかし、逆を言えば「序盤のSPは溜まらず、低品質なアイテムを作ることしかできない」になります。

これが、今回のSP大幅獲得により「成長曲線のスピード」が極めて速くなりました。

なので、ライザDXの不具合報告とは全く違う「本シリーズを追いかけているファンにとっては」いいボーナスとなった次第です。

スキルツリーの伸ばし方

こちらに既に記しています。

『ライザのアトリエ2DX/3DX』のセーブデータ連動のスタートダッシュ特典の大盤振る舞い。※こちらは正常な仕様※(ネタバレは最序盤のみ)

先に述べた『ライザのアトリエDX』の不具合(壊滅的なロードの遅さ)はゲームの進行を阻害する深刻な不具合でした。

しかし、『ライザのアトリエ2DX』における仕様の大盤振る舞いはゲームの進行を「進めすぎる」ものかと思います。

前提

  • Steam版の『ライザのアトリエ2』をトロコン済み。
    • シーズンパス導入
    • 全てのDLCをクリア
  • Steam版『ライザのアトリエ2DX』(というよりもトリロジーDX)を購入。
  • セーブデータ自動連動機能あり

何が起きたか?

ストレートに言うと「SP10,000でスタートする」です。

  1. NewGameからスタート。
  2. オープニングイベントを済ませる。
  3. チュートリアルを済ませる。
  4. 調合イベント(スキルツリー)を確認すると

10,000となっています。

ライザのアトリエ2の場合

500スタート。

この計算結果

この、余りにも大盤振る舞いな(500→10000)は何か裏があるのか、バグがあるのかを調査しましたが「全くの正常な仕様」でした。

セーブデータ連動特典の本質

公式サイトにはこうあります。

https://atelier.games/secretdx/jp/products/index_standard.html

オリジナル版や『秘密DX』各タイトルのシステムデータがあると、セーブデータ連動特典が取得可能! 序盤の冒険に役立つアイテムが手に入る!

この内容は、筆者は衣装だけと見間違えていましたが……

ここの「SP」の欄を見落としていました。

  • ライザ無印(ノーマル):2,000
  • ライザ2(ノーマル):2,000
  • ライザ3(ノーマル):2,000
  • ライザDX:3,500

この合計は9,500。そして、前述した「初期SP:500」が加わると合計は10,000。つじつまが合います。

ちなみにライザのアトリエ3の場合は……

  • ライザ無印(ノーマル):3,000
  • ライザ2(ノーマル):3,000
  • ライザ3(ノーマル):3,000
  • ライザDX:4,000
  • ライザ2DX:4,000

で、追加SPが17,000というこれまた桁違いの数字

いくら何でもこれは大盤振る舞い過ぎるのではと思いましたが:

  • 「既にオリジナルをプレイしている人にとっては、序盤のSP稼ぎは苦痛である」
  • 「プレイ済みのゲームのDXを買い直す人はそれほどいない」

という当たり前の感覚が抜けていました。

なので、一種の「強くてニューゲーム」状態を「原作プレイ済みへのお礼」というメーカーからのメッセージだと受け取ります。

『ライザのアトリエDX』Steam版:2025/11/15現在発生して“いた”不具合とアップデートによる改善確認。(元の記事の取り下げ)

2025年11月13日にリリースされた『ライザのアトリエトリロジーDX』。

グラフィック廻りが一新され、一部のボイスがアニメに準拠したものへと差し替わっているなどがありましたが、Steam版に強烈な不満がありましたが、修正を確認しました。

壊滅的に遅かったロード画面

※2025/11/18のアップデートによりこの遅さは劇的に改善されました。よって、これ以降の記事は取り下げます。

『ライザのアトリエ』トリロジーDX到着。

今回の日記は

  • ライザのアトリエトリロジーDX到着。
  • ゲームパッド新調。
  • ヘッドセット新調。

この3のみです。

手順書による状況のコントロール。(切り戻しの重要性)

前にも述べた『むこうぶち』の江崎のこの言葉。

「船が陸にたどり着く寸前に生憎の嵐…… どうすればいいと思います?
いったん沖に引き返すんですよ
船ってのは水に浮かぶようにできているんです
無闇に上陸を焦って座礁する事が一番怖い」

この言葉が持つ意味を手順書の「切り戻し」により、改めて掘り下げていきます。

そもそも切り戻しとは?

  • アップデートの不具合
  • バグの確認
  • 機能追加/削減
  • オペレーションミス

等によって起きた障害・サービスダウンを「無かったことにする」技術全般です。Linuxサーバで言うならば

  1. 設定ファイルを元に戻す
  2. DBを元に戻す

等による、逆転時計(タイムターナー)のような存在です。これは、ITの最大のメリットと言ってもいい技術。医療や建築のような「不可逆性」を“ある程度”緩和してくれます。

「破滅は、常に隣にある」

これは、物流・メーカー・医療・その他諸々の業界の方には釈迦に説法でしょう。

  • どんな安全策を講じても、予測不能なリスクは必ず発生する。
  • たった一つの『バグ』や、人間の『思い込み』で、破滅に直結するような、壊滅的な暴走を引き起こす。

は、予測不能なリスクを奇跡的な幸運から乗り切ったから言える生存バイアスです。

このような、予測不可能なミスを少しでも減らし、起きてしまったことを「無かったことにする」技術が、バックアップからの切り戻しです。

ちょっとした具体例

https://barrel.reisalin.com/books/950a4/page/mysql

こちらでも少し触れている「Webアプリで不具合が発生した際の切り戻し」の方法。

mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql

等としてバックアップを取っておき、

mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql

で戻す。多くのシングル構成のDBは(つまり、個人運用程度であれば)これで復旧するパターンがほとんどです。筆者はサーバ移行や「やっちまった」時のリカバリのほとんどをこれで復旧させることができました。

この切り戻しをどうやって組み込んでおくのか

これが、「手順書によるコントロール」に他なりません。

  1. 大きな作業を伴う作業は「元に戻す」手順を先に作る。
  2. 切り戻しを鑑みて全体の手順を作る

という、一種の逆順処理を取ります。筆者が紹介した手順において

  • 確認する
  • 照合する

を含めるのは、「何かあったときに元に戻せる」を確実にするためです。

「行ってこい」の精神であればここまではやりませんし、やる必要はありません。しかし、情報という価値あるものを「維持する」ためにも戻り道という名のPoint of Returnable(回帰可能点)を随所に作っておくための確認、照合は必要なのです。

「コントロール(Control)」の語源について

こちらを言及した方がよりよいでしょう。

「control」が現在の「制御する」「管理する」といった意味になるまでの主な流れは以下の通りです。

  1. 中世ラテン語: contrā-rotulus
    contrā-(反対の、対照の)と rotulus(巻物、帳簿、リスト)が合わさった言葉です。
    文字通りの意味は「対照リスト」、具体的には「(会計などを)チェックするための二重帳簿」を指しました。
  2. 古期フランス語: contreroller
    ラテン語が古期フランス語に取り入れられ、「(対抗手段として)登録する」「照合する」という意味で使われるようになりました。
    二重の記録を照らし合わせる行為は、不正がないか確認し、管理・監督することにつながります。
  3. 英語 (中世): controllen
    古期フランス語から中世英語に入り、「帳簿をチェックする」「正式な記録で確認する」という意味を経て、「権威をもって監督する」「指揮する」といった現在の「管理・制御」の意味へと広がっていきました。

この流れから、「control」のコアな概念は、記録を照合して物事を正しくチェックし、それに基づいて物事を支配・管理するという点にあることが分かります。

拙稿でも述べた「Manual」の語源が「手を動かす」から来るように、「Control」の語源は記録することにあります。

まとめ

いくらバックアップがあるから安心はできるといっても、それは両翼の片方に過ぎません。このバックアップでどうやって「破滅を回避するか」というもう一つの翼を担うのが「切り戻しの手順」というお話。

この姿勢を貫くためにも、筆者は“片羽の妖精”ことラリー・フォルクのこの言葉を目につくところに掲げて自らの戒めとしています。

Those who survive a long time on the battlefield start to think they are invincible. / 不死身のエースってのは戦場に長く居たものの過信だ。
I bet you do too, buddy. / お前のことだよ相棒。
――Ace Combat Zero

「手順(Manual)」を作ろう。「技術の言語化と言語の行動」

趣味の延長でも手順は必要

筆者はサーバ運用の、ほぼすべてを手順化しています。

「なぜ、趣味の一環なのにプロのような手順を設けているのか」を疑問に持った方もいるでしょう。

これに関しての理由付けを示します。

「未来の自分が慌てないため」

これに尽きます。私の性格上、一度躓いた作業は二度目以降も同じところで詰まります。

「この私なら絶対にやらかす」

という、自分の信頼のなさへの信頼感があるため、

  • 注意すべきポイント
  • 何を持って「完了」とするのか
  • “やらかした”場合のリカバリ方法は?

などのPoint of No Return (回帰不能点)を少しでも減らすための強力なアンカーとしてマニュアルを作成しています。

特に、障害というやつは「起きてほしくないタイミングで起きる」から障害なのですから。

歴史的意義。

そもそも「マニュアル(Manual)」とは、ラテン語の「manus(手)」という単語に由来しています。

元々は「手を使う」「主導の」と言った意味の形容詞でしたが、そこから派生して「手引き」や「取扱説明書」といった名詞の意味で使われるようになりました。

  • management
  • manufacture
  • manicure

なども、すべて同じ語源から来ており、「手」に関する言葉となっています。

古代ローマと「マニュアル」

古代ローマ軍が規格外の強さを誇った背景には、「行動が全てであり、一定の標準的機能の遂行が勝敗を決定する」という思想があったとされています。

  • 古代ローマ軍の強さは、厳格な軍規と徹底した訓練によって支えられていました。
  • 膨大な数の兵士と多岐にわたる任務を効率的かつ確実に遂行するためには、経験や感覚に頼るのではなく、手順や規範を統一し、共有することが不可欠でした。
  • この技術や行動の「言語化・共有化」は、現代でいう標準化やマニュアル化の考え方につながるものであり、古代ローマの軍事的な成功の重要な源泉の一つであったと言えます。

特に、古代ローマ軍の圧倒的な強さは「各人が優れた土木技術者であり、野営のみならず街を作ることすら可能だった」ことにも現れています。

各軍人が軍事技術だけではなく土木技術の手引き書も共有化されていたからでした。

つまり

マニュアル通りとは、漫画や小説で言う

  • 融通が利かない人
  • 堅物

という意味ではないと筆者は考えます。むしろ「想定外の出来事が起きたとしても標準以上の行動ができるための引き出し」として定義しています。

マニュアルを作る意義

技術の言語化

  • どの要素を組み込んだから上手くいったのか
  • 何が元で失敗したのか
  • これを「同じ轍を踏まないようにするためには?」

など、すべての人が生み出した技術は言語化される余地があります。この言語化というやつは「自分の意を伝える」「相手の意をくみ取る」の両方で必要であり、他者からのフィードバックをもらうための最高の機会となります。

詰まったところの確認

失敗した部分のロギングです。

「マニュアルのどこが行けなかったのか?」を確認することで、すっ飛ばしたところや、怠った事による裏目がすべて結果となって現れます。

では、具体的なものを。

以下、筆者が過去に行った「Ubuntuサーバにスワップを設定する」手順です。ここで、実際にどのような点に気をつけてマニュアルを作っていったかを解説します。

https://barrel.reisalin.com/books/linux/page/vpsswap
### 環境

- Ubuntu 24.04
- 4GBメモリ/80GBディスクのインスタンスを利用

### さっくりとした手順

1. 現在のメモリとディスク容量を確認します。
1. Swap領域を確保します。
1. 確保したSwap領域を有効化します。
1. Swap領域が増えたことを確認します。
1. fstabを修正します。
1. fstab修正後にシステムを再起動し、Swap領域有効化を確認します。
  1. ここで環境を定義するのは「スタート地点が明確でないと明後日の方向に行ってしまうから」です。既に設定されている場合は作業をする必要が無いという目安になります。
  2. さっくりとした手順を記すのも、「だいたいの時間の見積もり(Estimated Time of Arrival)」を取るためです。これにより、いつ行うべきか、どのぐらいの工数を取るべきかの目安となります。
#### 作業の前に

ディスク起動時のオプションなど、特に重要なシステム領域の設定ファイルを修正する作業です。
失敗時に復旧できるようシステム全体のバックアップを取ることを強く推奨します。

これは、先に挙げたPoint of No Return (回帰不能点)を「Point of Returnable (回帰可能点) 」とするためのおまじないです。最悪の事態を挙げておくことで、もしもの時に備えます。

#### 現在のメモリ情報を確認

- メモリ情報を確認


free -h

-hオプションは(human readable)の略だそうです

- 実行結果

               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       450Mi       2.9Gi       2.5Mi       688Mi       3.4Gi
Swap:             0B          0B          0B


Swapが全く作成されていません。

#### 現在のディスク容量の確認

- 要領確認


df -h


- ○実行結果


Filesystem      Size  Used Avail Use% Mounted on
/dev/root        78G  5.0G   73G   7% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           784M  980K  783M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/vda15      105M  6.1M   99M   6% /boot/efi
tmpfs           392M   12K  392M   1% /run/user/1001


容量は問題ありません。実メモリと同じ4GBの領域を作ります。

と、作業の前の確認を行います。Markdownの判定で省いていますが、

1コマンド1ブロック というルールを遵守するように筆者は心がけています。

それがたとえ、参照するための

free -h

であってもです。この、最初の一歩を確認できない場合は

sudo rm -rf ./*

などの重要で致命的なコマンドも疎かにしてしまうからです。

#### Swap領域の確保

- Swap領域作成

sudo fallocate -l 4G /swap

- ファイル作成確認


ls -ldh /swap


指定ディレクトリに4GBのファイルがあることを確認します。

#### Swapの有効化

- /swapのパーミッション変更


sudo chmod 600 /swap


- パーミッション変更確認


ls -ldh /swap

rootのみが読み書き可能なことを確認します\

#### /swapの設定

- Swap領域作成


sudo mkswap /swap


- 実行結果


スワップ空間バージョン 1 を設定します。サイズ = 4 GiB (4294963200 バイト)
ラベルはありません, UUID=08cf06da-757e-4ab4-b049-e7da8ee73341


 ★/swapの有効化


sudo swapon /swap


#### Swap有効化確認

- メモリ情報確認

free -h

- ○実行結果


               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       446Mi       2.9Gi       2.5Mi       689Mi       3.4Gi
Swap:          4.0Gi          0B       4.0Gi


4GBのSwap領域が確保されました。

ここで、作業手順を一気に書きます。ここでも、一つ一つの確認を行うことで、「すっ飛ばしたときのリカバリー」を容易にしています。

#### fstab設定

- /etc/fstabのバックアップ


sudo cp -pi /etc/fstab /path/to/backup/directory/fstab.$(date +%Y%m%d)


- バックアップ作成確認


diff -u /path/to/backup/directory/fstab.$(date +%Y%m%d) /etc/fstab 


差分が無いことでバックアップが取れていることを確認します。

- /etc/fstab追記


cat <<- __EOF__ | sudo tee -a /etc/fstab
/swap none swap sw 0 0
__EOF__


- 差分確認


diff -u /path/to/backup/directory/fstab.$(date +%Y%m%d) /etc/fstab

- 差分


+/swap none swap sw 0 0

ここでは、「単にスワップを作成しただけでは終わらない」というLinuxのファイルシステムに言及しています。この/etc/fstabはディスク全体を司るテキスト群。そのため、

  • バックアップ
  • 実施時のオペレーションを確実に減らすためのteeによる追記
  • 追記後のdiffによる確認

と、「実際に作業を行ったか」を感覚では無くコマンドという冷静で絶対的な眼として確認します。

#### 再起動後の修正確認

- システム再起動


sudo reboot

- 再起動後の確認

以下が確認できれば作業完了です。

1. サーバにログインできること
1. Webサービスなど既存システムが設定前と同様に稼働すること
1. free -h を実行し、Swap領域が確保されていること

ここで、最終確認を行います。rebootを実施するのは、それだけシステム全体に関わる作業を行うからです。

ここまでやって

ようやく筆者の「標準」といえる手順書が作成されました。まぁ、最初にここまでやるというのは酷な話ではあると思いますが

  1. まずは非常に簡単な手順書を作る。それこそsystemctl status apache2.servicesudo systemctl restart apache2.service程度で構いません。
  2. そこから一つずつ発展させていく

と、ある程度の段階を積んでいくことが、より確実な手順と言えます。

最後にもう一つ

「自分で作った手順書が有効かどうか、第三者に実際に行ってもらう」手法は極めて有効です。

その手順書で失敗してしまったら → 確実に作成した自分自身の責任です。

この、言語化・共有化というのは「間違った手段も共有される可能性がある」からです。私もそうならないよう気をつけますが、

『超電磁マシーン ボルテスV』の

岡長官
 「そんな杓子定規な」
左近寺博士
「杓子結構、定規賛成」

という、割とガチめの引用で以て本稿を締めくくります。

PCにおけるメモリ量の観測。(低スペックのPCは使用に耐えられるのか?)

概要

2025年10月にサポート終了を迎えたWindows 10。

巷では

  • 入門用のWindows11搭載スペックは……
  • 古いPCでもLinuxであれば……

などの記事を見かけたと思います。

しかしながら

  • 入門用とされるWindows11のスペック( N100 / 8GB程度メモリ )のPCを買う
  • それよりもはるかに劣るスペックのPCをLinuxに換装する

程度ではビジネスユースはおろか日常の

  • オフィスソフト
  • ブラウザ

の同時利用には「とうてい耐えられない」と言い切れる根拠。

言い換えると「絶対に越えられない壁」という奴を「リソースの消費量」という形で証明します。

それも、巷にあるベンチマークソフトを使わずに。『アカギ』で言うところの「俺はもっと ストレートに行くよ……」です。

使うもの

  • Windows 11
  • テキストエディタ
  • PowerShell
  • Officeソフト(この例ではWord)
  • Chrome

のみです。

Word計測ツールの用意

テキストエディタを用いて、以下のパワーシェルスクリプトを作成します。

C:\batあたりにディレクトリを掘っておくといいでしょう。

  • benchmark_word.ps1
# --- ユーザー設定 ---
# ファイルサーバ上のWordファイル(UNCパス)
# サンプルとして、ファイルサーバー名、共有名、ディレクトリ名を一般的なものに変更しています。
# 実際の環境に合わせてパスを変更してください。
$FilePath = '\\YourFileServer\ShareName\SampleProject\TestDocument.docx'

# ログファイル(ローカル保存)
$LogPath = "C:\Temp\Log\word_benchmark_log.txt"
# ------------------

# --- ログ出力関数(リトライ付き) ---
function Write-Log {
    param (
        [string]$Message,
        [string]$Color = "White"
    )
    # コンソール出力
    Write-Host $Message -ForegroundColor $Color

    # ログファイル出力(リトライ付き)
    $maxRetries = 5
    $retryDelay = 500 # ミリ秒

    for ($i = 0; $i -lt $maxRetries; $i++) {
        try {
            # ログファイルのディレクトリが存在しない場合は作成
            $LogDir = Split-Path -Path $LogPath -Parent
            if (-not (Test-Path $LogDir)) {
                New-Item -Path $LogDir -ItemType Directory | Out-Null
            }

            Add-Content -Path $LogPath -Value ("[{0}] {1}" -f (Get-Date -Format "yyyy-MM-dd HH:mm:ss"), $Message)
            break
        } catch {
            Write-Host "WARN: ログ書き込みに失敗しました。リトライ中... ($i/$maxRetries)" -ForegroundColor "DarkYellow"
            Start-Sleep -Milliseconds $retryDelay
        }
    }
}

# --- 初期化 ---
# ログファイルをクリア
Clear-Content -Path $LogPath -ErrorAction SilentlyContinue
Write-Log -Message "--- Word(UNCパス指定)ベンチマークテスト ---" -Color "Yellow"

# --- ファイル存在確認 ---
if (-not (Test-Path $FilePath)) {
    Write-Log -Message "エラー: 指定されたファイルが見つかりません。パスを確認してください: $FilePath" -Color "Red"
    return
}

# --- 既存のWordプロセスを終了 ---
Write-Log -Message "INFO: 既存のWordプロセスをクリーンアップします..." -Color "White"
Get-Process winword -ErrorAction SilentlyContinue | Stop-Process -Force
Start-Sleep -Seconds 2

# --- 変数初期化 ---
$wordApp = $null
$document = $null
$TimeTaken = $null
$ProcInfo = $null
# COMメソッドの省略可能な引数に使用する値
$Missing = [System.Reflection.Missing]::Value

try {
    # 1. Word起動とファイルオープンの時間を計測
    Write-Log -Message "1. Wordの起動とファイルオープンを計測中..." -Color "White"
    $TimeTaken = Measure-Command {
        # Wordアプリケーションのインスタンスを作成
        $wordApp = New-Object -ComObject "Word.Application"

        # ファイルを開く (引数: FilePath, ConfirmConversions, ReadOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate, Revert, WritePassword, Format, Encoding, Visible)
        $document = $wordApp.Documents.Open(
            $FilePath,
            $false,         # ConfirmConversions
            $false,         # ReadOnly
            $false,         # AddToRecentFiles
            $Missing,       # PasswordDocument
            $Missing,       # PasswordTemplate
            $false,         # Revert
            $Missing,       # WritePassword
            $Missing,       # Format
            $Missing,       # Encoding
            $false          # Visible (False: 開いた直後は非表示)
        )
    }

    # Wordを可視化し、プロセスが完全に立ち上がるのを待つ
    $wordApp.Visible = $true
    Start-Sleep -Seconds 2 

    $StartTimeSec = [math]::Round($TimeTaken.TotalSeconds, 2)
    Write-Log -Message "  [結果] 起動&ファイルオープン時間: $StartTimeSec 秒" -Color "Green"

    # 2. リソース使用量の計測
    Write-Log -Message "2. リソース使用量を計測中..." -Color "White"
    Start-Sleep -Seconds 3 # リソースが安定するのを待つ

    $ProcInfo = Get-Process winword -ErrorAction SilentlyContinue
    if ($ProcInfo) {
        # 複数のwinwordプロセスがある場合の合計を計測
        $TotalMemMB = [math]::Round( ($ProcInfo | Measure-Object -Property WS -Sum).Sum / 1MB, 2)
        $TotalCpuSec = ($ProcInfo | Measure-Object -Property CPU -Sum).Sum
        if ($TotalCpuSec -eq $null) { $TotalCpuSec = 0 }
        $TotalCpuSec = [math]::Round($TotalCpuSec, 2)

        Write-Log -Message "  [結果] メモリ使用量 (WS 合計): $TotalMemMB MB" -Color "Green"
        Write-Log -Message "  [結果] CPU使用時間 (Total 合計): $TotalCpuSec 秒" -Color "Green"
    } else {
        Write-Log -Message "  [警告] Wordプロセスが見つかりませんでした。" -Color "Yellow"
    }

} catch {
    Write-Log -Message "致命的なエラーが発生しました: $($_.Exception.Message)" -Color "Red"
    # エラーの詳細ログ
    Write-Log -Message "エラー詳細: $($_.ScriptStackTrace)" -Color "Red"
} finally {
    # 3. クリーンアップ
    Write-Log -Message "3. クリーンアップを実行します。" -Color "White"

    if ($document -ne $null) {
        # 変更を保存せずに閉じる
        try {
            $document.Close($false) 
            [System.Runtime.InteropServices.Marshal]::ReleaseComObject($document) | Out-Null
        } catch {
            Write-Log -Message "WARN: Document COMオブジェクトのクリーンアップ中にエラー: $($_.Exception.Message)" -Color "DarkYellow"
        }
    }

    if ($wordApp -ne $null) {
        try {
            $wordApp.Quit()
            [System.Runtime.InteropServices.Marshal]::ReleaseComObject($wordApp) | Out-Null
        } catch {
            Write-Log -Message "WARN: Application COMオブジェクトのクリーンアップ中にエラー: $($_.Exception.Message)" -Color "DarkYellow"
        }
    }

    # 変数の解放
    Remove-Variable wordApp, document, ProcInfo, TimeTaken -ErrorAction SilentlyContinue

    # 残っているWordプロセスを強制終了
    $remaining = Get-Process winword -ErrorAction SilentlyContinue
    if ($remaining) {
        Write-Log -Message "INFO: 残留Wordプロセスを強制終了しました。" -Color "White"
        $remaining | Stop-Process -Force
    }

    Write-Log -Message "--- テスト完了 ---" -Color "Yellow"
}

開きたいファイルを正確に指定し、文字コードをUTF-8(BOMつき)で保存します。

Powershellの実行

まず、Windows Powershellを開きます。(管理者権限である必要はありません)

次に、スクリプトに一時的な実行権を与えます。(デフォルトでは自作のスクリプトの実行権が与えられていないため)

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

そうした上で、

& "C:\script\benchmark_word.ps1"

を実行。

結果は以下の通りです。

--- Word(UNCパス指定)ベンチマークテスト ---
INFO: 既存のWordプロセスをクリーンアップします...
1. Wordの起動とファイルオープンを計測中...
  [結果] 起動&ファイルオープン時間: 1.36 秒
2. リソース使用量を計測中...
  [結果] メモリ使用量 (WS 合計): 289.7 MB
  [結果] CPU使用時間 (Total 合計): 4.44 秒
3. クリーンアップを実行します。
INFO: 残留Wordプロセスを強制終了しました。

と、300MB近くの使用量がありました。数MB程度の文書を開く際でも、ワードのようなモダンアプリケーションはメモリもCPUもそれなりに使うことが判明。

ブラウザの場合

続いて、ブラウザの場合はどうなるでしょうか? 先ほどのフォルダに

benchmark_chrome.ps1

を作成します。

# --- ユーザー設定 ---
# ログファイル(ローカル保存)
$LogPath = "C:\Temp\Log\chrome_benchmark_log.txt"
# Chromeの実行ファイルパス (通常はこのままでOK)
$ChromePath = "C:\Program Files\Google\Chrome\Application\chrome.exe"
# 検索するURLとクエリ
$InitialUrl = "https://www.google.com/search?q=wikipedia"
# ------------------

# --- ログ出力関数(リトライ付き) ---
# (前回のスクリプトから変更なし)
function Write-Log {
    param (
        [string]$Message,
        [string]$Color = "White"
    )
    Write-Host $Message -ForegroundColor $Color

    $maxRetries = 5
    $retryDelay = 500 # ミリ秒

    for ($i = 0; $i -lt $maxRetries; $i++) {
        try {
            $LogDir = Split-Path -Path $LogPath -Parent
            if (-not (Test-Path $LogDir)) {
                New-Item -Path $LogDir -ItemType Directory | Out-Null
            }

            Add-Content -Path $LogPath -Value ("[{0}] {1}" -f (Get-Date -Format "yyyy-MM-dd HH:mm:ss"), $Message)
            break
        } catch {
            Write-Host "WARN: ログ書き込みに失敗しました。リトライ中... ($i/$maxRetries)" -ForegroundColor "DarkYellow"
            Start-Sleep -Milliseconds $retryDelay
        }
    }
}

# --- 初期化 ---
Clear-Content -Path $LogPath -ErrorAction SilentlyContinue
Write-Log -Message "--- Chrome Webアクセス・ベンチマークテスト ---" -Color "Yellow"

# --- 実行ファイル存在確認 ---
if (-not (Test-Path $ChromePath)) {
    Write-Log -Message "エラー: Chrome実行ファイルが見つかりません。パスを確認してください: $ChromePath" -Color "Red"
    return
}

# --- 既存のChromeプロセスを終了 ---
Write-Log -Message "INFO: 既存のChromeプロセスをクリーンアップします..." -Color "White"
Get-Process chrome -ErrorAction SilentlyContinue | Stop-Process -Force
Start-Sleep -Seconds 2

# --- 変数初期化 ---
$TimeTaken = $null
$ProcInfo = $null

try {
    # 1. Chrome起動、Google検索、Wikipedia移動の時間を計測
    Write-Log -Message "1. Chrome起動からWikipedia表示までの時間を計測中..." -Color "White"

    # ストップウォッチを開始
    $Stopwatch = [System.Diagnostics.Stopwatch]::StartNew()

    # Chromeを起動し、Google検索URLへ移動
    # -Wait: プロセスが終了するまで待機(この場合はタブを閉じるまで待機してしまうため使用しない)
    $Proc = Start-Process -FilePath $ChromePath -ArgumentList $InitialUrl -PassThru

    # プロセスが完全に立ち上がり、ページがロードされるのを待機
    # ページの完全なロード完了を正確に捕捉するのは困難なため、ここでは固定の待機時間を使用します。
    Start-Sleep -Seconds 5

    # ストップウォッチを停止
    $Stopwatch.Stop()

    $TimeTaken = $Stopwatch.Elapsed
    $StartTimeSec = [math]::Round($TimeTaken.TotalSeconds, 2)
    Write-Log -Message "  [結果] 起動&Webアクセス時間: $StartTimeSec 秒" -Color "Green"

    # 2. リソース使用量の計測
    Write-Log -Message "2. リソース使用量を計測中..." -Color "White"
    Start-Sleep -Seconds 3 # リソースが安定するのを待つ

    # Chromeは複数プロセスで実行されるため、全てを対象とする
    $ProcInfo = Get-Process chrome -ErrorAction SilentlyContinue
    if ($ProcInfo) {
        # 複数のchromeプロセスの合計を計測
        $TotalMemMB = [math]::Round( ($ProcInfo | Measure-Object -Property WS -Sum).Sum / 1MB, 2)
        $TotalCpuSec = ($ProcInfo | Measure-Object -Property CPU -Sum).Sum
        if ($TotalCpuSec -eq $null) { $TotalCpuSec = 0 }
        $TotalCpuSec = [math]::Round($TotalCpuSec, 2)

        Write-Log -Message "  [結果] メモリ使用量 (WS 合計): $TotalMemMB MB" -Color "Green"
        Write-Log -Message "  [結果] CPU使用時間 (Total 合計): $TotalCpuSec 秒" -Color "Green"
    } else {
        Write-Log -Message "  [警告] Chromeプロセスが見つかりませんでした。" -Color "Yellow"
    }

} catch {
    Write-Log -Message "致命的なエラーが発生しました: $($_.Exception.Message)" -Color "Red"
    Write-Log -Message "エラー詳細: $($_.ScriptStackTrace)" -Color "Red"
} finally {
    # 3. クリーンアップ
    Write-Log -Message "3. クリーンアップを実行します。" -Color "White"

    # 確実にChromeプロセスを終了
    $remaining = Get-Process chrome -ErrorAction SilentlyContinue
    if ($remaining) {
        Write-Log -Message "INFO: 残留Chromeプロセスを強制終了しました。" -Color "White"
        $remaining | Stop-Process -Force
    }

    Write-Log -Message "--- テスト完了 ---" -Color "Yellow"
}

Powershellの実行

まず、Windows Powershellを開きます。(管理者権限である必要はありません)

次に、スクリプトに一時的な実行権を与えます。(デフォルトでは自作のスクリプトの実行権が与えられていないため)

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

そうした上で、

& "C:\script\benchmark_chrome.ps1"

を実行。以下の驚くべき結果が出ました。

--- Chrome Webアクセス・ベンチマークテスト ---
INFO: 既存のChromeプロセスをクリーンアップします...
1. Chrome起動からWikipedia表示までの時間を計測中...
  [結果] 起動&Webアクセス時間: 5.03 秒
2. リソース使用量を計測中...
  [結果] メモリ使用量 (WS 合計): 1413.37 MB
  [結果] CPU使用時間 (Total 合計): 17.97 秒
3. クリーンアップを実行します。
INFO: 残留Chromeプロセスを強制終了しました。
--- テスト完了 ---

なんと、メモリは1.4GB利用。単にWikipediaを計算しただけです。

補足しておくと、この検証に使用した筆者の環境は

  • Ryzen 5 4500 3.6GHz (6コア12スレッド)
  • GTX 1650 (4GB VRAM)
  • メモリ64GB

と、ビジネスユースにしては「化け物」なスペックであってもです。

PCの利用=ブラウザの利用

という現代の環境において、以下のポイントが、「ネット閲覧程度であれば云々」の神話を打ち破る主要な論拠となります。

マルチプロセスアーキテクチャによるメモリの膨張

Chrome(および他のモダンブラウザ)が採用しているマルチプロセスアーキテクチャが、メモリ消費量の最大の原因です。

  • 従来のアプリ (Word):
    • 1つのウィンドウやドキュメントにつき、通常はメインプロセス1つが主体となります。
  • モダンブラウザ (Chrome):
    • ブラウザ全体を制御するプロセスに加え、タブごと、拡張機能ごと、時にはWebサイト上の異なるフレームごとに独立したレンダリングプロセスを生成します。

結果として、たった1つのタブを開いているだけでも、タスクマネージャー上では10〜30個のchrome.exeプロセスが立ち上がり、ベンチマーク結果のように、それらの合計で1GBを優に超えるメモリを消費します。

Webコンテンツの「リッチ化」

そして、現在のWebサイトは、単純なテキストや画像で構成されていません。

  • JavaScriptの肥大化:
    • 多くのWebサイトが、高度なインタラクティブ機能やリアルタイム通信のために巨大なJavaScriptフレームワーク(React, Vue, Angularなど)を使用しています。これらのスクリプトエンジンと実行環境がメモリを大量に占有します。
  • 高解像度メディアと広告:
    • 高解像度の画像、埋め込み動画、そして追跡スクリプトや動的な広告は、ブラウザに多くの処理とメモリ負荷をかけます。

3. ベンチマーク結果の対比

アプリケーション目的メモリ消費量 (WS 合計例)
Word (COM操作/UNCファイル)文書作成(重量級ローカルアプリ)290 MB
Chrome (Google検索 → Wikipedia)ウェブ閲覧(単一タブ)1,413 MB

この対比から、現代の「ウェブ閲覧」が、伝統的なローカルの重量級アプリケーションよりも、起動直後で約5倍近いメモリリソースを要求することが明確に示されます。

ここに、

  • OSそのもののメモリ消費量
  • ウィルス対策ソフト
  • マルチタスク(ビジネスユースであればこれらを開いたと同時にSlackやTeamsを開くのが当然のはずです)

が加わるとなると、古い、低スペックのハードウェアをLinuxに変えた「程度」では、付け焼き刃にすらなりません。

したがって、「ネット閲覧程度」の利用を想定してPCのスペックを決める場合、最低でも16GBのメモリを搭載しないと、動作が非常に緩慢になるリスクが高いという結論になります。

なぜなら、2025年現在、通常のインターネット環境でのビジネスや学習というのは「ブラウザのタブ多重起動」を前提に作られているのですから。

ジェレミー・クラークソン(旧TopGearやGrandTour司会者)の

Power is EVERYTHING. More is better.
( パワーはすべてを解決する。気筒数は多ければ多いほどいい)

A horsepower, A horsepower!
Horsepower for my kingdom!
「馬力だ! 馬力の代わりに我が王国をやるぞ!」

は、こと、PCのリソース割当については「反論の余地がない真である」という結論で本稿を締めくくります。

Page 2 of 4

Powered by WordPress & Theme by Anders Norén