ブログ

  • Hello world!

    WordPress へようこそ。こちらは最初の投稿です。編集または削除し、コンテンツ作成を始めてください。

  • 四万十川 あじさい

    四万十川 あじさい

  • git 初期設定

    git 初期設定

    VS Code: Git の初期設定を行うには、以下の手順を実行してください。

    1. Git のインストール確認
      ターミナルで以下のコマンドを実行して、Git がインストールされているか確認します。
       git --version

    インストールされていない場合は、以下のコマンドでインストールします(Debian/Ubuntu 系の場合)。

       sudo apt update
       sudo apt install git
    1. ユーザー名とメールアドレスの設定
      Git を使用する際に必要なユーザー名とメールアドレスを設定します。これらはコミットに使用されます。
       git config --global user.name "Your Name"
       git config --global user.email "your.email@example.com"
    1. エディターの設定
      Git コマンドで使用するデフォルトのエディターを設定します。Visual Studio Code を使用する場合は以下を実行します。
       git config --global core.editor "code --wait"
    1. Git のデフォルトブランチ名の設定
      デフォルトのブランチ名を設定します(例: main)。
       git config --global init.defaultBranch main
    1. SSH キーの生成と設定
      GitHub や他のリモートリポジトリにアクセスするために SSH キーを生成します。以下のコマンドを実行します。
       ssh-keygen -t rsa -b 4096 -C "your.email@example.com"

    生成されたキーをリモートリポジトリに追加します。

    1. 設定の確認
      設定が正しく行われたか確認します。
       git config --list

    以上で Git の初期設定は完了です。

    GitHub Copilot: SSH キーの生成が進行中です。以下の手順を続けてください:

    1. 保存場所の確認
      デフォルトの保存場所 /home/shimimane/.ssh/id_rsa をそのまま使用する場合は、Enter を押してください。別の場所に保存したい場合は、フルパスを入力してください。
    2. パスフレーズの設定
      次に、パスフレーズを入力するよう求められます。セキュリティを強化するためにパスフレーズを設定することを推奨しますが、空のままにしたい場合は Enter を押してください。
    3. 公開鍵の追加
      SSH キーが生成されたら、公開鍵をリモートリポジトリ(例: GitHub)に追加します。以下のコマンドで公開鍵を表示できます。
    cat ~/.ssh/id_rsa.pub

    公開鍵の内容をコピーして、GitHub の「SSH and GPG keys」設定ページに追加してください。

    1. 接続確認
      SSH 接続が正しく設定されているか確認するには、以下を実行します。
    ssh -T git@github.com

    GitHub の場合、成功するとメッセージが表示されます。

    GitHub Copilot: GitHub のホストの認証を確認するプロセスが進行中です。以下の手順を続けてください:

    1. 確認
      メッセージに対して yes を入力して Enter を押してください。これにより、GitHub のホストキーがローカルマシンに保存され、次回以降の接続で確認が不要になります。
    yes
    1. 接続確認
      正しく接続されると、次のようなメッセージが表示されます(GitHub の場合):
    Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.

    これで SSH 接続が設定され、GitHub リポジトリにアクセスできるようになります。

    shimimane: この認証は pc単位に必要な処理ですか?

    GitHub Copilot: はい、SSH 接続の認証はPC単位で必要な処理です。SSH キーはそのPCで生成され、リモートリポジトリ(例: GitHub)に登録されるため、認証はそのPCに固有のものとなります。

    具体的には以下の点が重要です:

    1. PCごとに異なるSSHキー
      各PCで生成されたSSHキーは異なるため、別のPCからリモートリポジトリにアクセスする場合は、そのPCでもSSHキーを生成し、リモートリポジトリに登録する必要があります。
    2. ホストキーの確認
      初回接続時にホストキーの確認が必要なのは、そのPCがGitHubのホストを初めて認識するためです。この確認はPCごとに行われます。
    3. 認証の継続性
      一度ホストキーを確認して保存すると、そのPCでは次回以降の接続時に確認は不要になります。

    したがって、別のPCでGitHubにアクセスする場合は、同様の手順をそのPCで繰り返す必要があります。

  • 【備忘録】Linux Mint設定手順

    【備忘録】Linux Mint設定手順

    shimimane: apache2をインストール

    GitHub Copilot: 以下のコマンドを使用して、LinuxでApache2をインストールできます。

    sudo apt update
    sudo apt install apache2 -y

    インストール後、Apache2を起動してステータスを確認するには以下を実行してください。

    sudo systemctl start apache2
    sudo systemctl status apache2

    また、Apache2を自動起動に設定するには以下を実行します。

    sudo systemctl enable apache2

    shimimane: php@latest をインストール

    GitHub Copilot: 以下の手順で最新バージョンのPHPをインストールできます。

    1. 必要なリポジトリを追加

    最新のPHPをインストールするには、ondrej/php PPAを追加します。

    sudo apt update
    sudo apt install -y software-properties-common
    sudo add-apt-repository -y ppa:ondrej/php
    sudo apt update

    2. PHPのインストール

    最新バージョンのPHPをインストールします。以下のコマンドを実行してください。

    sudo apt install -y php

    3. バージョン確認

    インストールされたPHPのバージョンを確認するには、以下を実行します。

    php -v

    これで最新バージョンのPHPがインストールされます。

    shimimane: mariadb をインストール

    GitHub Copilot: 以下の手順でMariaDBをインストールできます。

    1. パッケージリストを更新

    sudo apt update

    2. MariaDBをインストール

    sudo apt install -y mariadb-server mariadb-client

    3. MariaDBサービスを起動

    sudo systemctl start mariadb
    sudo systemctl enable mariadb

    4. セキュリティ設定を実行

    MariaDBの初期セキュリティ設定を行うために以下を実行します。

    sudo mysql_secure_installation

    プロンプトに従って、rootパスワードの設定や不要な機能の無効化を行ってください。

    5. MariaDBの動作確認

    MariaDBが正しく動作しているか確認するには以下を実行します。

    sudo systemctl status mariadb

    また、MariaDBにログインするには以下を使用します。

    sudo mysql -u root -p

    shimimane: rootと同じ権限をもつ
    id;dbuser pass:dbpassword
    を設定

    GitHub Copilot: 以下の手順で、MariaDBにdbuserというユーザーを作成し、rootと同じ権限を付与します。

    1. MariaDBにログイン

    まず、MariaDBにログインします。

    sudo mysql -u root -p

    2. ユーザーを作成

    以下のコマンドを実行して、dbuserというユーザーを作成し、パスワードを設定します。

    CREATE USER 'dbuser'@'%' IDENTIFIED BY 'dbpassword';

    3. 権限を付与

    dbuserにすべての権限を付与します。

    GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'%' WITH GRANT OPTION;

    4. 権限を適用

    権限の変更を適用するために以下を実行します。

    FLUSH PRIVILEGES;

    5. MariaDBからログアウト

    以下を実行してMariaDBからログアウトします。

    EXIT;

    これで、dbuserrootと同じ権限を持つようになります。

    shimimane: phpmyadmin をインストール

    GitHub Copilot: 以下の手順でphpMyAdminをインストールできます。

    1. パッケージリストを更新

    sudo apt update

    2. phpMyAdminをインストール

    sudo apt install -y phpmyadmin

    インストール中に以下の設定を求められる場合があります:

    • Webサーバーの選択: apache2を選択します。
    • dbconfig-commonの使用: はいを選択します。
    • MySQLアプリケーションパスワードの設定: 任意のパスワードを入力します。

    3. Apache2にphpMyAdminを有効化

    必要に応じて以下を実行してphpMyAdminをApache2にリンクします。

    sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

    4. Apache2を再起動

    sudo systemctl restart apache2

    5. phpMyAdminにアクセス

    ブラウザで以下のURLにアクセスしてphpMyAdminを開きます:

    http://<サーバーのIPアドレス>/phpmyadmin

    これでphpMyAdminが利用可能になります。

    shimimane: ssh 接続可能に設定

    GitHub Copilot: 以下の手順でSSH接続を有効に設定できます。

    1. SSHサーバーのインストール

    まず、SSHサーバーをインストールします。

    sudo apt update
    sudo apt install -y openssh-server

    2. SSHサービスを起動

    SSHサービスを起動し、自動起動を有効にします。

    sudo systemctl start ssh
    sudo systemctl enable ssh

    3. SSHの動作確認

    SSHが正しく動作しているか確認します。

    sudo systemctl status ssh

    4. ファイアウォールの設定 (必要に応じて)

    ファイアウォールを使用している場合、SSH接続を許可します。

    sudo ufw allow ssh
    sudo ufw enable

    5. SSH接続テスト

    別のマシンから以下のコマンドで接続をテストします。

    ssh <ユーザー名>@<サーバーのIPアドレス>

    これでSSH接続が可能になります。

    shimimane: ssl をインストール

    GitHub Copilot: 以下の手順でSSLを設定できます。

    1. 必要なパッケージをインストール

    まず、SSL証明書を生成するために必要なパッケージをインストールします。

    sudo apt update
    sudo apt install -y openssl

    2. SSL証明書を生成

    自己署名証明書を生成する場合、以下のコマンドを実行します。

    sudo mkdir /etc/ssl/private
    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/private/apache-selfsigned.crt

    プロンプトに従って情報を入力してください(例: 国名、組織名など)。

    3. ApacheでSSLを有効化

    ApacheのSSLモジュールを有効化します。

    sudo a2enmod ssl
    sudo systemctl restart apache2

    4. SSL設定ファイルを作成または編集

    SSLを有効にするために、Apacheの設定ファイルを編集します。以下は例です。

    sudo nano /etc/apache2/sites-available/default-ssl.conf

    設定例:

    <IfModule mod_ssl.c>
        <VirtualHost _default_:443>
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/html
    
            SSLEngine on
            SSLCertificateFile /etc/ssl/private/apache-selfsigned.crt
            SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
    
            <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
            </FilesMatch>
            <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
            </Directory>
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
        </VirtualHost>
    </IfModule>

    5. SSLサイトを有効化

    SSLサイトを有効化してApacheを再起動します。

    sudo a2ensite default-ssl
    sudo systemctl reload apache2

    6. 動作確認

    ブラウザで以下のURLにアクセスしてSSLが有効になっているか確認します。

    https://<サーバーのIPアドレス>

    これでSSLが設定されます。

    shimimane: 無料の ssl をインストール

    GitHub Copilot: 無料のSSL証明書を利用するには、Let’s Encryptを使用するのが一般的です。以下の手順でLet’s Encryptをインストールして設定できます。


    1. Certbotをインストール

    CertbotはLet’s Encryptの公式クライアントです。以下のコマンドでインストールします。

    sudo apt update
    sudo apt install -y certbot python3-certbot-apache

    2. SSL証明書を取得

    以下のコマンドを実行して、Let’s EncryptのSSL証明書を取得します。

    sudo certbot --apache

    プロンプトに従って設定を進めます:

    • メールアドレスを入力して通知を受け取る設定をします。
    • 利用規約に同意します。
    • HTTPSを有効化するドメインを選択します。

    Certbotが自動的にApacheの設定を更新し、SSLを有効化します。


    3. 証明書の自動更新を設定

    Let’s Encryptの証明書は90日間有効です。自動更新を設定するには以下を確認します。

    sudo certbot renew --dry-run

    これで証明書の自動更新が正しく設定されているか確認できます。


    4. 動作確認

    ブラウザで以下のURLにアクセスしてSSLが有効になっているか確認します。

    https://<サーバーのドメインまたはIPアドレス>

    これで無料のSSL証明書が設定されます。

    GitHub Copilot: エラーの原因は、Let’s Encryptが証明書を発行するために有効なドメイン名が必要であることです。dynabook-mintは有効なドメイン名ではありません(ドメイン名には少なくとも1つのドットが必要です)。

    解決方法

    1. 有効なドメイン名を使用する
      Let’s Encryptは公開されたドメイン名に対してのみ証明書を発行します。以下のような有効なドメイン名を使用してください:
    • 例: example.comsubdomain.example.com ドメイン名を取得してDNS設定を行う必要があります。
    1. ローカル環境で自己署名証明書を使用する
      ローカル環境でSSLを使用する場合、Let’s Encryptではなく自己署名証明書を生成する方法を検討してください。以下のコマンドで自己署名証明書を生成できます:
       sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/private/apache-selfsigned.crt

    その後、Apacheの設定を更新してSSLを有効化します。

    1. ホスト名を修正する
      サーバーがインターネットに公開されている場合、DNS設定で有効なドメイン名をサーバーに関連付けてください。

    次のステップ

    • 公開ドメインを取得してDNS設定を行う場合、ドメインプロバイダーで設定を行い、再度Certbotを実行してください。
    • ローカル環境で自己署名証明書を使用する場合、ブラウザで警告が表示されることがありますが、開発環境では問題ありません。

    1. ApacheのSSLモジュールを有効化

    まず、ApacheのSSLモジュールを有効化します。

    sudo a2enmod ssl
    sudo systemctl restart apache2

    2. SSL設定ファイルを編集

    SSLを有効化するために、ApacheのSSL設定ファイルを編集します。

    sudo nano /etc/apache2/sites-available/default-ssl.conf

    以下の内容を確認または編集してください:

    <IfModule mod_ssl.c>
        <VirtualHost _default_:443>
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/html
    
            SSLEngine on
            SSLCertificateFile /etc/ssl/private/apache-selfsigned.crt
            SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
    
            <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
            </FilesMatch>
            <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
            </Directory>
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
        </VirtualHost>
    </IfModule>

    保存して終了します。


    3. SSLサイトを有効化

    SSLサイトを有効化してApacheを再起動します。

    sudo a2ensite default-ssl
    sudo systemctl reload apache2

    4. 動作確認

    ブラウザで以下のURLにアクセスしてSSLが有効になっているか確認します:

    https://localhost

    自己署名証明書を使用しているため、ブラウザで警告が表示される場合があります。その場合は「詳細設定」から進むことでアクセスできます。


    これでローカル環境でSSLが有効になります。

    shimimane: node ver 20 を淫雨トール

    GitHub Copilot: 以下の手順でNode.jsのバージョン20をインストールできます。

    1. NodeSourceリポジトリを追加

    Node.jsの公式リポジトリを追加します。

    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

    2. Node.jsをインストール

    リポジトリを追加した後、Node.jsをインストールします。

    sudo apt install -y nodejs

    3. インストール確認

    インストールされたNode.jsのバージョンを確認します。

    node -v

    これでNode.js 20がインストールされます。

    shimimane: composer インストール

    GitHub Copilot: 以下の手順でComposerをインストールできます。

    1. 必要な依存関係をインストール

    まず、必要な依存関係をインストールします。

    sudo apt update
    sudo apt install -y php-cli unzip curl

    2. Composerインストールスクリプトをダウンロード

    以下のコマンドでComposerのインストールスクリプトをダウンロードします。

    curl -sS https://getcomposer.org/installer | php

    3. Composerをシステム全体で利用可能にする

    ダウンロードしたComposerをシステム全体で利用できるようにします。

    sudo mv composer.phar /usr/local/bin/composer

    4. インストール確認

    Composerが正しくインストールされたか確認します。

    composer --version

    これでComposerがインストールされ、使用可能になります。

    shimimane: samba インストール

    GitHub Copilot: 以下の手順でSambaをインストールして設定できます。


    1. Sambaのインストール

    まず、Sambaをインストールします。

    sudo apt update
    sudo apt install -y samba

    2. Sambaの設定ファイルを編集

    Sambaの共有設定を行うために、設定ファイルを編集します。

    sudo nano /etc/samba/smb.conf

    以下のような共有設定を追加します(例として共有ディレクトリ /srv/samba/share を設定):

    [shared]
       path = /srv/samba/share
       browseable = yes
       writable = yes
       guest ok = yes
       read only = no

    保存して終了します。


    3. 共有ディレクトリを作成

    共有ディレクトリを作成し、適切な権限を設定します。

    sudo mkdir -p /srv/samba/share
    sudo chmod 777 /srv/samba/share

    4. Sambaサービスを再起動

    設定を反映させるためにSambaサービスを再起動します。

    sudo systemctl restart smbd
    sudo systemctl enable smbd

    5. 動作確認

    別のマシンから以下のコマンドで共有ディレクトリにアクセスできるか確認します。

    smbclient //<サーバーのIPアドレス>/shared

    これでSambaがインストールされ、共有ディレクトリが設定されます。

    shimimane: windwos から
    リモートデスクトップで接続できるように設定

    GitHub Copilot: Windowsからリモートデスクトップ接続を可能にするには、Sambaではなく、Linuxのリモートデスクトッププロトコル(RDP)を使用する必要があります。以下の手順で設定を行います。


    1. xrdpをインストール

    LinuxでRDPを利用するために、xrdpをインストールします。

    sudo apt update
    sudo apt install -y xrdp

    2. xrdpサービスを起動

    インストール後、xrdpサービスを起動し、自動起動を有効にします。

    sudo systemctl start xrdp
    sudo systemctl enable xrdp

    3. ファイアウォールの設定

    ファイアウォールを使用している場合、RDP接続を許可します。

    sudo ufw allow 3389

    4. デスクトップ環境の確認

    リモートデスクトップ接続にはデスクトップ環境が必要です。Ubuntuの場合、デスクトップ環境がインストールされていない場合は以下を実行してインストールします。

    sudo apt install -y ubuntu-desktop

    5. Windowsから接続

    1. Windowsの「リモートデスクトップ接続」を開きます。
    2. 接続先にLinuxマシンのIPアドレスを入力します。
    3. Linuxのユーザー名とパスワードを入力してログインします。

    これでWindowsからLinuxにリモートデスクトップ接続が可能になります。

    shimimane: linux mint rootと同じ権限の
    id:admin pass:1426
    wo

    GitHub Copilot: 以下の手順でLinux Mintにadminというユーザーを作成し、rootと同じ権限を付与します。


    1. ユーザーを作成

    以下のコマンドでadminユーザーを作成します。

    sudo useradd -m -s /bin/bash admin

    2. パスワードを設定

    adminユーザーのパスワードを設定します。

    echo "admin:1426" | sudo chpasswd

    3. adminrootと同じ権限を付与

    adminユーザーをsudoグループに追加します。

    sudo usermod -aG sudo admin

    4. 動作確認

    adminユーザーでログインし、以下のコマンドを実行してsudo権限が正しく付与されているか確認します。

    sudo whoami

    結果がrootと表示されれば設定は完了です。

    これでadminユーザーがrootと同じ権限を持つようになります。

    shimimane: admin wo

    GitHub Copilot:

    shimimane: admin を www-data グループに所属させる

    GitHub Copilot: 以下のコマンドを使用して、adminユーザーをwww-dataグループに追加します。

    sudo usermod -aG www-data admin

    これでadminユーザーがwww-dataグループに所属するようになります。変更を反映させるには、adminユーザーでログインし直してください。

    shimimane: 別のlinux pc のデスクトップ環境に接続する手順

    GitHub Copilot: 別のLinux PCのデスクトップ環境に接続するには、以下の手順を実行します。


    1. 接続先のLinux PCでxrdpを設定

    接続先のLinux PCで以下を実行して、リモートデスクトッププロトコル(RDP)を有効化します。

    1. xrdpをインストール:
       sudo apt update
       sudo apt install -y xrdp
    1. xrdpサービスを起動:
       sudo systemctl start xrdp
       sudo systemctl enable xrdp
    1. ファイアウォールでポート3389を許可:
       sudo ufw allow 3389
    1. デスクトップ環境を確認:
      デスクトップ環境がインストールされていない場合は以下を実行してインストールします。
       sudo apt install -y ubuntu-desktop

    2. 接続元のLinux PCでリモートデスクトップクライアントを使用

    接続元のLinux PCで以下を実行します。

    1. Remminaをインストール(一般的なRDPクライアント):
       sudo apt update
       sudo apt install -y remmina
    1. Remminaを起動:
      アプリケーションメニューからRemminaを起動します。
    2. 接続設定:
    • プロトコル: RDP
    • 接続先: 接続先Linux PCのIPアドレス
    • ユーザー名: 接続先Linux PCのユーザー名
    • パスワード: 接続先Linux PCのパスワード
    1. 接続:
      設定を保存して接続を開始します。

    3. Windows PCから接続する場合

    Windowsの「リモートデスクトップ接続」を使用して、接続先Linux PCのIPアドレスを入力して接続できます。


    これで別のLinux PCのデスクトップ環境に接続できます。

  • Laravelディレクトリの設定手順

    Laravelディレクトリの設定手順

    ## Laravelディレクトリの設定手順

    Laravelを正しく動作させるためには、ディレクトリの所有権とパーミッションを適切に設定する必要があります。以下の手順に従って設定してください。

    ### **ステップ1: 所有権の設定**

    LaravelプロジェクトのディレクトリをWebサーバー(通常は`www-data`)が所有するように設定します。

    #### コマンド:

    “`bash

    sudo chown -R www-data:www-data /var/www/html/test1

    “`

    #### 解説:

    – `www-data`は、Webサーバー(ApacheやNginx)が使用するユーザーです。

    – `-R`オプションは、ディレクトリ内のすべてのファイルとサブディレクトリに対して所有権を変更します。

    ### **ステップ2: パーミッションの設定**

    Laravelでは、特定のディレクトリに書き込み権限が必要です。以下のディレクトリに適切なパーミッションを設定します。

    #### コマンド:

    “`bash

    sudo chmod -R 775 /var/www/html/test1/storage

    sudo chmod -R 775 /var/www/html/test1/bootstrap/cache

    “`

    #### 解説:

    – storageディレクトリは、ログやセッションデータなどを保存する場所です。

    – cacheディレクトリは、Laravelのキャッシュファイルを保存する場所です。

    – `775`は、所有者とグループに読み取り・書き込み・実行権限を付与し、その他のユーザーには読み取り・実行権限を付与します。

    ### **ステップ3: Composerのインストール**

    Laravelプロジェクトの依存関係をインストールするために、`composer install`を実行します。

    #### コマンド:

    “`bash

    composer install

    “`

    #### 注意事項:

    – エラーが発生した場合、所有権やパーミッションが正しく設定されているか確認してください。

    – `unzip`がインストールされていない場合、以下のコマンドでインストールします。

      “`bash

      sudo apt update

      sudo apt install unzip

      “`

    ### **ステップ4: キャッシュのクリア**

    Laravelのキャッシュが原因で問題が発生することがあります。以下のコマンドでキャッシュをクリアします。

    #### コマンド:

    “`bash

    php artisan cache:clear

    php artisan config:clear

    php artisan view:clear

    php artisan route:clear

    “`

    #### 解説:

    – `php artisan`はLaravelのコマンドラインツールです。

    – これらのコマンドは、キャッシュをクリアして最新の設定を反映します。

    ### **ステップ5: Webサーバーの設定**

    LaravelプロジェクトをWebサーバーで動作させるために、ApacheやNginxの設定を確認します。

    #### Apacheの場合:

    “`bash

    <VirtualHost *:80>

        ServerName your-domain.com

        DocumentRoot /var/www/html/test1/public

        <Directory /var/www/html/test1>

            AllowOverride All

        </Directory>

    </VirtualHost>

    “`

    #### 注意事項:

    – `DocumentRoot`は、Laravelのpublicディレクトリを指定します。

    – `AllowOverride All`を設定することで、.htaccessファイルが有効になります。

    ### **ステップ6: 動作確認**

    ブラウザでLaravelプロジェクトにアクセスし、正しく動作しているか確認します。通常は以下のURLでアクセスします。

    “`

    http://localhost

    “`

    ### **まとめ**

    Laravelディレクトリの設定は以下のポイントを押さえることが重要です:

    1. 所有権をWebサーバーに設定する。

    2. 必要なディレクトリに書き込み権限を付与する。

    3. Composerで依存関係をインストールする。

    4. キャッシュをクリアして問題を解決する。

    5. Webサーバーの設定を正しく行う。

    これらの手順を実行することで、Laravelプロジェクトが正常に動作するようになります。

  • 備蓄米の放出で注目されている「古米を美味しく炊く方法」

    備蓄米の放出で注目されている「古米を美味しく炊く方法」

    矢野きくの家事アドバイザー/節約アドバイザー/防災士/食育指導士

    2/14(金) 8:45

    (写真:アフロ)

    米の価格高騰を受けて、政府の備蓄米放出が決定されました。「備蓄米となると古い米?」「古米って味が悪いんじゃないの?」と疑問に思っている方も多いようです。

    しかし今回の備蓄米放出は、発表によると2024年産米を中心に2023年産米も加わるということで、そこまで古いお米ということでなく、味を心配する必要はないでしょう。

    精米されずに玄米のまま温度管理された場所で保管されている米は、精米された状態で家庭で長く保管していた米に比べると味が落ちないのが一般的です。

    仮に古米や古古米でも研ぎ方、炊き方で美味しく食べることができるので、今回は「古米を美味しく炊く方法」をご紹介します。

    1・美味しく食べるための古米の研ぎ方

    古米の場合、乾燥していることが多いため、研ぐときに力を入れすぎると米粒が割れてしまうことがあります。力を入れずに米全体を包み込むようにして研ぐのが理想的です。

    またこれは新米の場合でも同じですが、米を研ぐときは炊飯器の内釜を使って研ぐのではなくザルとボウルを使って研ぐようにしましょう。内釜で研ぐと釜を傷つけてしまい、汚れが入り込みやすいだけでなく、炊飯の精度にも関わってきます。内釜だと水を替えづらく研いだ水が残りがちですが、ザルとボウルで研げばサッと新しい水で研ぐことができます。炊飯器の内釜で研ぐのではなく、ザル&ボウルで研ぐ(筆者撮影)

    2・炊飯前にしっかり浸水させる

    古米は乾燥しているものが多いので、新米のとき以上に炊飯前にしっかりと水に浸すことが美味しいご飯を炊くことにつながります。30分から1時間、浸水させておくようにしましょう。

    3・古米を美味しく炊くには「酒」や「みりん」が効果的

    古米を炊くときは、水だけでなく酒やみりんを入れることで甘みが増し、美味しく炊くことができます。目安の分量は米1合に対して、酒かみりんを小さじ1~2杯。何度か試してみて自分の好みで量を調整してください。

    古米を炊飯するために酒やみりんを足す場合は、その同量の水を減らすことも忘れずに。通常の水の量を入れてから、酒やみりんを足す分量だけ計量スプーンを使って水を取り除き、その後に酒やみりんを足すと分かりやすいでしょう。

    4・炊飯後にしっかり蒸らす

    新米のときも必要ですが、炊飯後は10分ほどしっかりと蒸らすことも美味しく食べるポイントです。

    今回ご紹介したように、古米でも美味しく炊く方法を知っていれば、味の劣化に関してはさほど心配する必要はありません。

    また冒頭でご紹介したように今回の政府の備蓄米放出は2024年度産で、入っても2023年産の古米なので、味の心配はする必要はないでしょう。仮に古米でも力を入れて研がない、30分以上浸水させる、酒やみりんを加える、しっかり蒸らすことで美味しく炊くことができます。

    【関連記事】

    ■「備蓄米って古くないの?」放出方針が発表された政府の備蓄米とは #専門家のまとめ(2025年2月14日)

    昨夏は「新米が出れば落ち着く見通し」しかしコメ価格は高止まりなのは何故?政府は備蓄米放出にルール変更 #専門家のまとめ(2025年2月1日)

  • タイガー魔法瓶【公式】 @Tiger_PR_JPN

    タイガー魔法瓶【公式】 @Tiger_PR_JPN


    🐯お米の炊き方、コレ覚えておいて…!👀🍚

    粘りが少なく軽い食感が特徴の外国米や備蓄米・古米。
    浸水時間を通常米よりも長くし、しっかりと吸水させて糊化(α化)を促進させることで、粘りを引き出すことができます🍚✨

    ただし、お米は急激に吸水させると表面が荒れ、甘みと食感が損なわれてしまうため、冷蔵庫(低温)でじっくりと吸水させることが理想🌟

    そのため吸水時間を長めにとり、ごはんの粘りをしっかり引き出すような炊き方の炊飯器メニューがおすすめです。

    🐯そのほかのポイント
    ⚠お米を研ぐ際、水の中で長時間研ぐのはNG❌
    お米に米ぬかのにおいがついたりします。
    最初のお水は軽くすすぎ、すぐに捨ててくださいね。

    ⚠温かい水で研ぐのはNG❌
    約35度以上のお湯を使うとお米の温度が上がり、お米の吸水力が高まるため、
    米ぬかのにおいを吸収してしまいます。さらに炊きムラがでる原因になります⚡️
    午前11:49 · 2025年5月29日
    画像

  • wsl linux にインストールした mariadb にwindows側から接続する手順

    wsl linux にインストールした mariadb にwindows側から接続する手順

    wsl linux にインストールした mariadb にwindows側から接続する手順

    GitHub Copilot: Windows側からWSL上のLinux MintにインストールされたMariaDBに接続するには、以下の手順を実行してください。


    1. WSL上のMariaDBの設定を確認

    MariaDBがWSL上で動作していることを確認し、外部接続を許可する設定を行います。

    MariaDBの設定ファイルを編集

    MariaDBの設定ファイル(通常は/etc/mysql/my.cnfまたは/etc/mysql/mariadb.conf.d/50-server.cnf)を編集します。

    sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

    以下の設定を確認・変更してください:

    # ...existing code...
    bind-address = 0.0.0.0  # 127.0.0.1 を 0.0.0.0 に変更
    # ...existing code...

    これにより、MariaDBが外部からの接続を受け付けるようになります。

    MariaDBを再起動

    設定を反映させるためにMariaDBを再起動します。

    sudo systemctl restart mariadb

    2. Windows側からWSLのIPアドレスを確認

    WSLのIPアドレスを確認します。以下のコマンドをWSLのターミナルで実行してください。

    ip addr | grep inet

    inetの後に表示されるIPアドレス(例: 172.20.0.2)をメモします。


    3. MariaDBユーザーの権限を設定

    MariaDBにログインし、Windows側から接続できるようにユーザーの権限を設定します。

    sudo mysql -u root -p

    以下のコマンドを実行して、外部接続を許可するユーザーを作成または設定します。

    CREATE USER 'username'@'%' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
    FLUSH PRIVILEGES;
    • username: 接続に使用するユーザー名
    • password: 接続に使用するパスワード

    4. Windows側でMariaDBクライアントをインストール

    Windows側にMariaDBクライアント(例えば、HeidiSQLやMySQL Workbench)をインストールします。


    5. Windows側から接続

    MariaDBクライアントを開き、以下の情報を入力して接続します:

    • ホスト名: WSLのIPアドレス(例: 172.20.0.2
    • ユーザー名: MariaDBで設定したユーザー名(例: username
    • パスワード: MariaDBで設定したパスワード(例: password
    • ポート: 3306(デフォルトのMariaDBポート)

    注意点

    • WSLのIPアドレスは再起動すると変わる可能性があります。その場合は再度確認してください。
    • ファイアウォールやセキュリティソフトが接続をブロックしていないか確認してください。

    これでWindows側からWSL上のMariaDBに接続できるはずです。

    shimimane: PS Microsoft.PowerShell.Core\FileSystem::\wsl.localhost\Mint\var\www\html> ip addr | grep inet
    ip: The term ‘ip’ is not recognized as a name of a cmdlet, function, script file, or executable program.
    Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

    Suggestion [4,General]: The most similar commands are:
    PS Microsoft.PowerShell.Core\FileSystem::\wsl.localhost\Mint\var\www\html>

    GitHub Copilot: PowerShellではWSLのコマンドを直接実行するには、wslコマンドを使用する必要があります。以下の手順でWSL内のIPアドレスを確認してください。


    1. WSL内でip addrを実行する

    PowerShellからWSLのコマンドを実行するには、以下のようにwslコマンドを使います。

    wsl ip addr | grep inet

    これにより、WSL内のネットワークインターフェースのIPアドレスが表示されます。


    2. IPアドレスを確認する

    出力の中で、inetの後に表示されるIPアドレスを探してください。例えば:

    inet 172.20.0.2/24 ...

    この場合、172.20.0.2がWSLのIPアドレスです。


    3. WSLに直接ログインして確認する方法

    もしPowerShellからの実行がうまくいかない場合、WSLに直接ログインして確認することもできます。

    wsl

    WSLにログインした後、以下のコマンドを実行します:

    ip addr | grep inet

    4. Windows側から接続する準備

    取得したIPアドレスを使用して、Windows側のMariaDBクライアントで接続を試みてください。

    shimimane: PS Microsoft.PowerShell.Core\FileSystem::\wsl.localhost\Mint\var\www\html> wsl ip addr | grep inet
    grep: The term ‘grep’ is not recognized as a name of a cmdlet, function, script file, or executable program.
    Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
    PS Microsoft.PowerShell.Core\FileSystem::\wsl.localhost\Mint\var\www\html>

    GitHub Copilot: PowerShellではgrepコマンドが使用できないため、代わりにPowerShellのフィルタリング機能を使うか、WSL内で直接コマンドを実行してください。


    方法1: PowerShellでフィルタリングする

    以下のコマンドを使用して、ip addrの出力をフィルタリングします。

    wsl ip addr | Select-String -Pattern "inet"

    これにより、inetを含む行が表示されます。


    方法2: WSL内で直接確認する

    PowerShellからWSLにログインして、WSL内でコマンドを実行します。

    wsl

    WSLにログインした後、以下のコマンドを実行します:

    ip addr | grep inet

    方法3: PowerShellで全出力を確認する

    もしフィルタリングが不要であれば、以下のコマンドで全出力を確認できます。

    wsl ip addr

    出力の中で、inetの後に表示されるIPアドレスを探してください。


    これでWSLのIPアドレスを確認できるはずです。

    shimimane: PS Microsoft.PowerShell.Core\FileSystem::\wsl.localhost\Mint\var\www\html> wsl ip addr | Select-String -Pattern “inet”
    <3>WSL (8) ERROR: CreateProcessParseCommon:717: Failed to translate \wsl.localhost\Mint\var\www\html

    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
    inet 172.25.209.34/20 brd 172.25.223.255 scope global eth0
    inet6 fe80::215:5dff:fed7:546b/64 scope link

    PS Microsoft.PowerShell.Core\FileSystem::\wsl.localhost\Mint\var\www\html>

    GitHub Copilot: 出力を見ると、WSLのネットワークインターフェースeth0に割り当てられたIPアドレスが確認できます。

    以下の情報が重要です:

    • WSLのIPアドレス: 172.25.209.34
      このIPアドレスを使用してWindows側からMariaDBに接続できます。

    次の手順

    1. MariaDBの設定確認:
      WSL内でMariaDBの設定ファイルを編集し、bind-address0.0.0.0に設定して外部接続を許可していることを確認してください。
       sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

    必要に応じてMariaDBを再起動します:

       sudo systemctl restart mariadb
    1. Windows側から接続:
      MariaDBクライアント(例: HeidiSQLやMySQL Workbench)を使用して以下の情報を入力します:
    • ホスト名: 172.25.209.34
    • ユーザー名: MariaDBで設定したユーザー名
    • パスワード: MariaDBで設定したパスワード
    • ポート: 3306

    これで接続できるはずです。もし接続できない場合は、WSLのファイアウォールやMariaDBの設定を再確認してください。

    shimimane: windowsgawakara

    GitHub Copilot: Windows側からWSL上のMariaDBに接続する手順を以下にまとめます。


    1. WSLのIPアドレスを確認

    WSL内で以下のコマンドを実行してIPアドレスを確認します。

    ip addr | grep inet

    出力例:

    inet 172.25.209.34/20 brd 172.25.223.255 scope global eth0

    この場合、172.25.209.34がWSLのIPアドレスです。


    2. MariaDBの設定を確認

    WSL内でMariaDBの設定ファイルを編集し、外部接続を許可します。

    sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

    以下の行を確認・変更します:

    bind-address = 0.0.0.0

    変更後、MariaDBを再起動します:

    sudo systemctl restart mariadb

    3. MariaDBユーザーの権限を設定

    MariaDBにログインし、外部接続を許可するユーザーを作成します。

    sudo mysql -u root -p

    以下のSQLコマンドを実行します:

    CREATE USER 'username'@'%' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
    FLUSH PRIVILEGES;

    4. Windows側でMariaDBクライアントを使用

    Windows側でMariaDBクライアント(例: HeidiSQLやMySQL Workbench)をインストールし、以下の情報を入力して接続します:

    • ホスト名: WSLのIPアドレス(例: 172.25.209.34
    • ユーザー名: MariaDBで設定したユーザー名(例: username
    • パスワード: MariaDBで設定したパスワード(例: password
    • ポート: 3306(デフォルトのMariaDBポート)

    注意点

    • WSLのIPアドレスは再起動すると変わる可能性があります。その場合は再度確認してください。
    • ファイアウォールやセキュリティソフトが接続をブロックしていないか確認してください。

    これでWindows側からWSL上のMariaDBに接続できるはずです。

    shimimane: powershell からmysql 172.25.209.34 を使用するコマンド

    GitHub Copilot: PowerShellからWSL上のMariaDB(MySQL)に接続するには、以下の手順を実行します。


    1. MySQLクライアントをインストール

    まず、Windows側にMySQLクライアントをインストールする必要があります。以下のリンクからインストールしてください:

    インストール後、mysql.exeがコマンドラインで使用可能になります。


    2. PowerShellから接続するコマンド

    以下のコマンドをPowerShellで実行してMariaDBに接続します:

    mysql -h 172.25.209.34 -u username -p
    • -h 172.25.209.34: WSLのIPアドレス
    • -u username: MariaDBで設定したユーザー名
    • -p: パスワードを入力するプロンプトを表示

    コマンドを実行すると、パスワードの入力を求められます。正しいパスワードを入力するとMariaDBに接続できます。


    3. 接続例

    以下は接続例です:

    mysql -h 172.25.209.34 -u root -p

    パスワードを入力後、MariaDBのプロンプトに入ります:

    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 10
    Server version: 10.5.12-MariaDB-1 Debian build
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    注意点

    • mysql.exeがPATHに含まれていない場合は、インストールディレクトリを指定して実行してください。
      例:
      "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -h 172.25.209.34 -u username -p
    • WSLのIPアドレスが変わる場合があるため、接続前に確認してください。

    これでPowerShellからMariaDBに接続できるはずです。

  • 便利なマクロ一覧45選!マクロの組み方やそのまま使えるコードを紹介

    便利なマクロ一覧45選!マクロの組み方やそのまま使えるコードを紹介

    https://www.sms-datatech.co.jp/column/aut_macro-list

    現代のビジネス環境において、業務効率化は企業の競争力を向上させる重要な要素といえます。業務効率化の中でも、広く知られているマクロは、作業の自動化やルーティーン作業の簡略化において大きな効果を発揮しています。また、サービスや商品の品質も重視される現代では、ヒューマンエラーの軽減においても効果的です。
    本記事では、業務の自動化に興味があるがマクロの組み方が分からない、あるいは既存の業務にマクロを取り入れて効率的に処理したいと考えている方々向けに、便利なマクロを紹介します。マクロは作業を自動化し、業務効率を向上させるための重要なツールです。マクロの基本的な定義から具体的な事例までを解説し、さらにそのまま使える便利なマクロのコード一覧を提供します。

    自動化ガイドブックをダウンロードする

    目次 [非表示]

    マクロとは

    マクロは、プログラム内に記録された一連の操作を自動的に実行する機能を指します。
    これは、通常、複雑なタスクや繰り返しの作業を単一のボタンやショートカットキーで実行できるようにするために使用されます。具体的な例として、ExcelのVBA(Visual Basic for Applications)を利用したマクロは、データの整形や集計、レポート作成など、多岐にわたる業務に適用することができます。

    VBAについては下記のブログで詳しく紹介しています。
    ➡「VBAとは?メリットやVBAでできる業務改善事例15選をご紹介!

    マクロは単なる作業の効率化だけでなく、精度や生産性の向上にも寄与します。例えば、大量のデータを処理する場合、人為的なミスのリスクが高まりますが、マクロを利用することで一貫性のある処理が可能となります。また、業務の自動化により、従業員はより戦略的な仕事に時間を費やすことができ、クリエイティブな側面に注力できるようになります。

    マクロの組み方

    マクロを組む基本的なステップは、録画機能を使うことです。ExcelVBAを使用する場合、まずは録画機能を使って基本的な操作を記録し、それを修正して必要な処理に合わせます。このプロセスを通じて、マクロの基本的な概念や構造を理解できます。

    マクロの組み方の詳細な手順は、下記のブログで紹介しています。
    ➡【マクロの組み方とは?VBAとの違いやサンプルコードについて紹介

    新規CTA

    便利なマクロの一覧

    ここでは、さまざまな業務シーンで役立つマクロを紹介します。コードは実際の環境に合わせてカスタマイズしてください。

    1.ExcelマクロVBAでWord連携!ワード操作して差し込み印刷

    Sub Word連携_印刷()
        Dim wdApp As Object
        Dim wdDoc As Object
    
        ' Wordアプリケーションの起動
        Set wdApp = CreateObject("Word.Application")
        wdApp.Visible = True ' Wordを表示
    
        ' 新しいドキュメントを作成
        Set wdDoc = wdApp.Documents.Add
    
        ' ここにWordでの操作や文書の編集を記述
    
        ' ドキュメントを印刷
        wdDoc.PrintOut
    
        ' Wordを閉じる
        wdApp.Quit
        Set wdApp = Nothing
        Set wdDoc = Nothing
    End Sub

    2.Excel表をコピーしてWordに貼り付ける

    Sub Excel表をWordに貼り付け()
        Dim wdApp As Object
        Dim wdDoc As Object
    
        ' Wordアプリケーションの起動
        Set wdApp = CreateObject("Word.Application")
        wdApp.Visible = True ' Wordを表示
    
        ' 新しいドキュメントを作成
        Set wdDoc = wdApp.Documents.Add
    
        ' Excelの選択範囲をコピー
        Range("A1:D10").Copy
    
        ' Wordに貼り付け
        wdDoc.Range.Paste
    
        ' ここにWordでの操作や文書の編集を記述
    
        ' Wordを閉じる
        wdApp.Quit
        Set wdApp = Nothing
        Set wdDoc = Nothing
    End Sub

    3. VBAでフォルダ内の全てのExcelデータを1つにまとめる

    Sub フォルダ内Excelデータ結合()
        Dim wbMaster As Workbook
        Dim wsMaster As Worksheet
        Dim myPath As String
        Dim myFile As String
        Dim currentFile As String
    
        ' マスターブックを新規作成
        Set wbMaster = Workbooks.Add
        Set wsMaster = wbMaster.Sheets(1)
    
        ' フォルダのパスを指定
        myPath = "C:\Your\Folder\Path\"
    
        ' フォルダ内の全てのExcelファイルに対して処理
        myFile = Dir(myPath & "*.xlsx")
        Do While myFile <> ""
            currentFile = myPath & myFile
    
            ' Excelファイルをマスターブックに追加
            Workbooks.Open currentFile
            ActiveSheet.UsedRange.Copy wsMaster.Cells(wsMaster.Rows.Count, "A").End(xlUp).Offset(1)
            Workbooks(myFile).Close SaveChanges:=False
    
            ' 次のファイルへ
            myFile = Dir
        Loop
    End Sub

    4.請求書PDF作成

    Sub 請求書PDF作成()
        Dim wsData As Worksheet
        Dim wsInvoice As Worksheet
        Dim pdfFileName As String
        Dim lastRow As Long
    
        ' データが格納されているシートを指定
        Set wsData = ThisWorkbook.Sheets("データ")
    
        ' 請求書のテンプレートが格納されているシートを指定
        Set wsInvoice = ThisWorkbook.Sheets("請求書テンプレート")
    
        ' データの行数を取得
        lastRow = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row
    
        ' 各行ごとに請求書を作成
        For i = 2 To lastRow
            ' ここに取引先別の請求書作成処理を記述
    
            ' PDFファイル名の生成
            pdfFileName = "請求書_" & wsData.Cells(i, 1).Value & ".pdf"
    
            ' 請求書をPDFとして保存
            wsInvoice.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfFileName
        Next i
    End Sub

    5.ExcelマクロVBAで毎週の作業チェックリストの作成・印刷を自動化

    Sub 作業チェックリスト作成()
        Dim wsChecklist As Worksheet
        Dim checklistFileName As String
    
        ' 作業チェックリストが格納されているシートを指定
        Set wsChecklist = ThisWorkbook.Sheets("作業チェックリスト")
    
        ' ここに作業チェックリストの作成処理を記述
    
        ' PDFファイル名の生成
        checklistFileName = "作業チェックリスト_" & Format(Date, "yyyymmdd") & ".pdf"
    
        ' 作業チェックリストをPDFとして保存
        wsChecklist.ExportAsFixedFormat Type:=xlTypePDF, Filename:=checklistFileName
    End Sub

    6.ExcelマクロVBAで折れ線グラフを連続自動作成

    Sub 折れ線グラフ作成()
        Dim wsData As Worksheet
        Dim cht As ChartObject
        Dim lastRow As Long
    
        ' データが格納されているシートを指定
        Set wsData = ThisWorkbook.Sheets("データ")
    
        ' データの行数を取得
        lastRow = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row
    
        ' グラフの挿入
        Set cht = wsData.ChartObjects.Add(Left:=100, Width:=375, Top:=75, Height:=225)
    
        ' グラフの種類を折れ線グラフに設定
        cht.Chart.ChartType = xlLine
    
        ' グラフのデータ範囲を設定
        cht.Chart.SetSourceData Source:=wsData.Range("A1:B" & lastRow)
    
        ' グラフにタイトルを追加
        cht.Chart.HasTitle = True
        cht.Chart.ChartTitle.Text = "折れ線グラフ"
    
        ' 軸ラベルの追加
        cht.Chart.Axes(xlCategory, xlPrimary).HasTitle = True
        cht.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "X軸ラベル"
    
        ' 軸の最小値と最大値を設定
        cht.Chart.Axes(xlValue, xlPrimary).MinimumScale = 0
        cht.Chart.Axes(xlValue, xlPrimary).MaximumScale = 100
    
        ' グラフの色を設定
        cht.Chart.SeriesCollection(1).Format.Line.ForeColor.RGB = RGB(255, 0, 0)
    End Sub

    7.ExcelマクロVBAで大量データの処理動作が遅いときの対処法

    Sub データ処理の高速化()
        ' 以下にデータ処理のコードを追加
    
        ' 処理前の状態を最適化する
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        Application.EnableEvents = False
    
        ' ここに処理コードを追加
    
        ' 処理後に元の状態に戻す
        Application.ScreenUpdating = True
        Application.Calculation = xlCalculationAutomatic
        Application.EnableEvents = True
    End Sub

    8.ショートカットキーを作成する方法

    Sub ショートカットキーの作成()
        ' 任意のショートカットキーを設定
        Application.OnKey "^+s", "マクロの実行"
    End Sub

    9.SUM関数を作成

    Function カスタムSUM(rng As Range) As Double
        Dim cell As Range
        Dim total As Double
        
        ' セルごとに値を加算
        For Each cell In rng
            total = total + cell.Value
        Next cell
        
        ' 関数の戻り値として合計値を返す
        カスタムSUM = total
    End Function

    10.自動チェック機能を作成

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim rng As Range
        Dim cell As Range
    
        ' チェック対象のセル範囲を指定
        Set rng = Range("A1:B10")
    
        ' 対象セルが変更された場合の処理
        If Not Intersect(Target, rng) Is Nothing Then
            For Each cell In Intersect(Target, rng)
                ' ここに入力ミスのチェック処理を追加
                If cell.Value < 0 Then
                    MsgBox "エラー: 負の値は入力できません。", vbExclamation
                    cell.ClearContents ' 負の値をクリア
                End If
            Next cell
        End If
    End Sub

    11.表を自動作成する方法

    Sub 表の自動作成()
        Dim ws As Worksheet
        Dim rng As Range
        Dim lastRow As Long
        Dim lastCol As Long
    
        ' 対象のシートを指定
        Set ws = ThisWorkbook.Sheets("データ")
    
        ' データの範囲を取得
        lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
        lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    
        ' データの範囲を指定
        Set rng = ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol))
    
        ' 表の罫線を設定
        rng.Borders.LineStyle = xlContinuous
    
        ' ヘッダーの背景色を変更
        rng.Rows(1).Interior.Color = RGB(200, 200, 200)
    End Sub

    12.マクロの自動記録

    Sub マクロの自動記録()
        ' マクロの記録を開始
        With ThisWorkbook.Sheets("Sheet1")
            .Cells.Clear
            .Cells(1, 1).Value = "データ1"
            .Cells(1, 2).Value = "データ2"
            .Cells(2, 1).Value = "データ3"
            .Cells(2, 2).Value = "データ4"
        End With
    
        ' ここで手動で行った操作を確認
    
        ' マクロの記録を終了
    End Sub

    13.フォルダ内の不要ファイルをまとめて削除

    Sub 不要ファイルの削除()
        Dim folderPath As String
        Dim fileName As String
    
        ' 削除対象のフォルダを指定
        folderPath = "C:\Users\ユーザー名\Documents\不要ファイル"
    
        ' フォルダ内のファイルを一括で削除
        fileName = Dir(folderPath & "\*.*")
        Do While fileName <> ""
            Kill folderPath & "\" & fileName
            fileName = Dir
        Loop
    End Sub

    14.VBAでExcel内の複数シートのデータを1つにまとめる

    Sub シートのデータ結合()
        Dim ws As Worksheet
        Dim combinedSheet As Worksheet
        Dim lastRow As Long
    
        ' 結合先のシートを指定
        Set combinedSheet = ThisWorkbook.Sheets("結合データ")
    
        ' すべてのシートをループ
        For Each ws In ThisWorkbook.Sheets
            ' 結合先のシートは除外
            If ws.Name <> combinedSheet.Name Then
                ' 最終行を取得
                lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
                ' データを結合先の次の行にコピー
                ws.Range("A1").Resize(lastRow, ws.UsedRange.Columns.Count).Copy _
                    combinedSheet.Cells(combinedSheet.Rows.Count, "A").End(xlUp).Offset(1)
            End If
        Next ws
    End Sub

    15.ExcelマクロVBAで商品別に売上集計

    Sub 商品別売上集計()
        Dim dataSheet As Worksheet
        Dim summarySheet As Worksheet
        Dim lastRow As Long
    
        ' データが格納されているシートと集計結果を表示するシートを指定
        Set dataSheet = ThisWorkbook.Sheets("売上データ")
        Set summarySheet = ThisWorkbook.Sheets("商品別売上集計")
    
        ' 商品別に集計
        dataSheet.Range("A1:B" & dataSheet.Cells(dataSheet.Rows.Count, "A").End(xlUp).Row).Copy _
            summarySheet.Cells(1, 1)
    
        ' 集計データをソートしてランキングを表示
        With summarySheet.Sort
            .SortFields.Clear
            .SortFields.Add Key:=summarySheet.Range("B:B"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
            .SetRange summarySheet.Range("A:B")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub

    16.Excel一覧表で複数条件に合致したデータを抽出して表示

    Sub 条件抽出()
        Dim dataSheet As Worksheet
        Dim resultSheet As Worksheet
        Dim criteria1 As String
        Dim criteria2 As String
        Dim lastRow As Long
    
        ' データが格納されているシートと結果を表示するシートを指定
        Set dataSheet = ThisWorkbook.Sheets("データ")
        Set resultSheet = ThisWorkbook.Sheets("抽出結果")
    
        ' 抽出条件を指定
        criteria1 = "条件1"
        criteria2 = "条件2"
    
        ' データを結果シートに抽出
        dataSheet.Range("A1:C" & dataSheet.Cells(dataSheet.Rows.Count, "A").End(xlUp).Row).AutoFilter _
            Field:=1, Criteria1:=criteria1
        dataSheet.Range("A1:C" & dataSheet.Cells(dataSheet.Rows.Count, "A").End(xlUp).Row).AutoFilter _
            Field:=2, Criteria1:=criteria2
        dataSheet.AutoFilterMode = False
    
        ' 抽出データを結果シートにコピー
        dataSheet.UsedRange.SpecialCells(xlCellTypeVisible).Copy resultSheet.Range("A1")
    End Sub

    17. 四半期ごとの合計を出力

    Sub 四半期別合計()
        Dim dataSheet As Worksheet
        Dim resultSheet As Worksheet
        Dim lastRow As Long
        Dim quarter As Integer
        Dim i As Integer
    
        ' データが格納されているシートと結果を表示するシートを指定
        Set dataSheet = ThisWorkbook.Sheets("データ")
        Set resultSheet = ThisWorkbook.Sheets("四半期別合計")
    
        ' データの最終行を取得
        lastRow = dataSheet.Cells(dataSheet.Rows.Count, "A").End(xlUp).Row
    
        ' 四半期ごとにデータを合計
        For i = 2 To lastRow
            quarter = Int((Month(dataSheet.Cells(i, 1)) - 1) / 3) + 1
            resultSheet.Cells(quarter, 2).Value = resultSheet.Cells(quarter, 2).Value + dataSheet.Cells(i, 2).Value
        Next i
    End Sub

    18.データを月別計算して表に出力

    Sub 月別計算()
        Dim dataSheet As Worksheet
        Dim resultSheet As Worksheet
        Dim lastRow As Long
        Dim month As Integer
        Dim i As Integer
    
        ' データが格納されているシートと結果を表示するシートを指定
        Set dataSheet = ThisWorkbook.Sheets("データ")
        Set resultSheet = ThisWorkbook.Sheets("月別計算")
    
        ' データの最終行を取得
        lastRow = dataSheet.Cells(dataSheet.Rows.Count, "A").End(xlUp).Row
    
        ' 月ごとにデータを合計
        For i = 2 To lastRow
            month = Month(dataSheet.Cells(i, 1))
            resultSheet.Cells(month, 2).Value = resultSheet.Cells(month, 2).Value + dataSheet.Cells(i, 2).Value
        Next i
    End Sub

    19.Excelマクロでデータを日別に合計して表に出力

    Sub 日別合計()
        Dim dataSheet As Worksheet
        Dim resultSheet As Worksheet
        Dim lastRow As Long
        Dim dateValue As Date
        Dim i As Integer
    
        ' データが格納されているシートと結果を表示するシートを指定
        Set dataSheet = ThisWorkbook.Sheets("データ")
        Set resultSheet = ThisWorkbook.Sheets("日別合計")
    
        ' データの最終行を取得
        lastRow = dataSheet.Cells(dataSheet.Rows.Count, "A").End(xlUp).Row
    
        ' 日ごとにデータを合計
        For i = 2 To lastRow
            dateValue = dataSheet.Cells(i, 1).Value
            resultSheet.Cells(DateValue, 2).Value = resultSheet.Cells(DateValue, 2).Value + dataSheet.Cells(i, 2).Value
        Next i
    End Sub

    20.週ごとにデータを合計して表に出力

    Sub 週ごと合計()
        Dim dataSheet As Worksheet
        Dim resultSheet As Worksheet
        Dim lastRow As Long
        Dim startDate As Date
        Dim endDate As Date
        Dim i As Integer
    
        ' データが格納されているシートと結果を表示するシートを指定
        Set dataSheet = ThisWorkbook.Sheets("データ")
        Set resultSheet = ThisWorkbook.Sheets("週ごと合計")
    
        ' データの最終行を取得
        lastRow = dataSheet.Cells(dataSheet.Rows.Count, "A").End(xlUp).Row
    
        ' 週ごとにデータを合計
        For i = 2 To lastRow
            startDate = WorksheetFunction.WorkDay(dataSheet.Cells(i, 1).Value, -Weekday(dataSheet.Cells(i, 1).Value) + 1)
            endDate = startDate + 6
    
            resultSheet.Cells(startDate, 2).Value = resultSheet.Cells(startDate, 2).Value + dataSheet.Cells(i, 2).Value
        Next i
    End Sub
    新規CTA

    21.オブジェクトを削除する

    Sub オブジェクト削除()
        Dim obj As Object
    
        ' 削除対象のオブジェクトを指定(例:シート上のすべての図形を削除)
        For Each obj In ActiveSheet.Shapes
            obj.Delete
        Next obj
    End Sub

    22.Excelデータを項目毎に別ファイルへ転記

    Sub データ転記()
        Dim dataSheet As Worksheet
        Dim lastRow As Long
        Dim i As Long
        Dim newWorkbook As Workbook
    
        ' データが格納されているシートを指定
        Set dataSheet = ThisWorkbook.Sheets("データ")
    
        ' データの最終行を取得
        lastRow = dataSheet.Cells(dataSheet.Rows.Count, "A").End(xlUp).Row
    
        ' 列ごとにデータを別ファイルに転記
        For i = 1 To dataSheet.UsedRange.Columns.Count
            ' 新しいブックを作成
            Set newWorkbook = Workbooks.Add
    
            ' データをコピー
            dataSheet.Columns(i).Copy newWorkbook.Sheets(1).Range("A1")
    
            ' ブックを保存
            newWorkbook.SaveAs "転記データ_" & dataSheet.Cells(1, i).Value & ".xlsx"
            newWorkbook.Close SaveChanges:=False
        Next i
    End Sub

    23.Excelの不要シートを一斉削除

    Sub 不要シート削除()
        Dim sheet As Worksheet
    
        ' 削除対象のシートを指定(例: "Sheet2"と"Sheet3"を削除)
        Application.DisplayAlerts = False
        For Each sheet In ThisWorkbook.Sheets
            If sheet.Name = "Sheet2" Or sheet.Name = "Sheet3" Then
                sheet.Delete
            End If
        Next sheet
        Application.DisplayAlerts = True
    End Sub

    24.ExcelマクロVBAでデータ項目別にシートコピーし自動転記

    Sub データ項目別自動転記()
        Dim dataSheet As Worksheet
        Dim lastRow As Long
        Dim i As Long
        Dim targetSheet As Worksheet
    
        ' データが格納されているシートを指定
        Set dataSheet = ThisWorkbook.Sheets("データ")
    
        ' データの最終行を取得
        lastRow = dataSheet.Cells(dataSheet.Rows.Count, "A").End(xlUp).Row
    
        ' 列ごとにデータを項目別に新しいシートに転記
        For i = 2 To dataSheet.UsedRange.Columns.Count
            ' 新しいシートを作成
            Set targetSheet = Sheets.Add(After:=Sheets(Sheets.Count))
            targetSheet.Name = dataSheet.Cells(1, i).Value
    
            ' データをコピー
            dataSheet.Columns(i).Copy targetSheet.Range("A1")
        Next i
    End Sub

    25. データを月別にシートを分ける

    Sub 月別シート分け()
        Dim dataSheet As Worksheet
        Dim lastRow As Long
        Dim i As Long
        Dim targetSheet As Worksheet
        Dim currentMonth As String
    
        ' データが格納されているシートを指定
        Set dataSheet = ThisWorkbook.Sheets("データ")
    
        ' データの最終行を取得
        lastRow = dataSheet.Cells(dataSheet.Rows.Count, "A").End(xlUp).Row
    
        ' 列ごとにデータを月別に新しいシートに分けて転記
        For i = 2 To lastRow
            ' 日付から月を取得
            currentMonth = Format(dataSheet.Cells(i, 1).Value, "yyyy年mm月")
    
            ' 月ごとに新しいシートを作成
            If WorksheetExists(currentMonth) Then
                Set targetSheet = Sheets(currentMonth)
            Else
                Set targetSheet = Sheets.Add(After:=Sheets(Sheets.Count))
                targetSheet.Name = currentMonth
            End If
    
            ' データをコピー
            dataSheet.Rows(i).Copy targetSheet.Cells(targetSheet.Cells(targetSheet.Rows.Count, "A").End(xlUp).Row + 1, 1)
        Next i
    End Sub
    
    Function WorksheetExists(shtName As String) As Boolean
        On Error Resume Next
        WorksheetExists = Not Worksheets(shtName) Is Nothing
        On Error GoTo 0
    End Function

    26.大量データを比較・照合する

    Sub データ比較照合()
        Dim dataSheet1 As Worksheet
        Dim dataSheet2 As Worksheet
        Dim resultSheet As Worksheet
        Dim lastRow1 As Long
        Dim lastRow2 As Long
        Dim i As Long
        Dim j As Long
        Dim matchFound As Boolean
    
        ' データが格納されているシートを指定
        Set dataSheet1 = ThisWorkbook.Sheets("データ1")
        Set dataSheet2 = ThisWorkbook.Sheets("データ2")
        Set resultSheet = ThisWorkbook.Sheets.Add(After:=Sheets(Sheets.Count))
        resultSheet.Name = "マッチング結果"
    
        ' データの最終行を取得
        lastRow1 = dataSheet1.Cells(dataSheet1.Rows.Count, "A").End(xlUp).Row
        lastRow2 = dataSheet2.Cells(dataSheet2.Rows.Count, "A").End(xlUp).Row
    
        ' データ1の各行をデータ2と比較して一致するものを新しいシートに転記
        For i = 2 To lastRow1
            matchFound = False
            For j = 2 To lastRow2
                If dataSheet1.Cells(i, 1).Value = dataSheet2.Cells(j, 1).Value Then
                    matchFound = True
                    dataSheet1.Rows(i).Copy resultSheet.Cells(resultSheet.Cells(resultSheet.Rows.Count, "A").End(xlUp).Row + 1, 1)
                    Exit For
                End If
            Next j
        Next i
    End Sub

    27.色の塗りつぶしがない行や列の表示・非表示を切替

    Sub 色の塗りつぶし非表示()
        Dim dataSheet As Worksheet
        Dim lastRow As Long
        Dim lastCol As Long
        Dim i As Long
        Dim j As Long
        Dim rowHasFill As Boolean
        Dim colHasFill As Boolean
    
        ' データが格納されているシートを指定
        Set dataSheet = ThisWorkbook.Sheets("データ")
    
        ' データの最終行と最終列を取得
        lastRow = dataSheet.Cells(dataSheet.Rows.Count, "A").End(xlUp).Row
        lastCol = dataSheet.Cells(1, dataSheet.Columns.Count).End(xlToLeft).Column
    
        ' 各行に色の塗りつぶしがない場合は非表示に、ある場合は表示にする
        For i = 1 To lastRow
            rowHasFill = False
            For j = 1 To lastCol
                If dataSheet.Cells(i, j).Interior.ColorIndex <> -4142 Then ' -4142は白色のColorIndex
                    rowHasFill = True
                    Exit For
                End If
            Next j
            dataSheet.Rows(i).Hidden = Not rowHasFill
        Next i
    
        ' 各列に色の塗りつぶしがない場合は非表示に、ある場合は表示にする
        For j = 1 To lastCol
            colHasFill = False
            For i = 1 To lastRow
                If dataSheet.Cells(i, j).Interior.ColorIndex <> -4142 Then
                    colHasFill = True
                    Exit For
                End If
            Next i
            dataSheet.Columns(j).Hidden = Not colHasFill
        Next j
    End Sub

    28.セルの値で同じ階層に複数フォルダ一括作成

    Sub フォルダ作成()
        Dim baseFolder As String
        Dim cellValue As Variant
        Dim folderPath As String
    
        ' ベースとなるフォルダを指定
        baseFolder = "C:\Users\YourUsername\Documents\"
    
        ' データが格納されているセルの範囲を指定
        Dim dataRange As Range
        Set dataRange = ThisWorkbook.Sheets("シート1").Range("A1:A10") ' 適切な範囲を指定
    
        ' セルの値で同じ階層に複数フォルダを一括作成
        For Each cell In dataRange
            If Not IsEmpty(cell.Value) Then
                cellValue = Replace(cell.Value, "/", "-") ' フォルダ名に使えない文字を変換
                folderPath = baseFolder & cellValue & "\"
                MkDir folderPath
            End If
        Next cell
    End Sub

    29.複数フォルダを階層別に一括作成

    Sub 階層フォルダ作成()
        Dim baseFolder As String
        Dim folderList As Variant
        Dim folderPath As String
        Dim subFolder As Variant
    
        ' ベースとなるフォルダを指定
        baseFolder = "C:\Users\YourUsername\Documents\"
    
        ' 作成するサブフォルダのリストを指定
        folderList = Array("フォルダ1", "フォルダ2", "フォルダ3")
    
        ' 各サブフォルダをベースフォルダ内に一括で作成
        For Each subFolder In folderList
            folderPath = baseFolder & subFolder & "\"
            MkDir folderPath
        Next subFolder
    End Sub

    30.フォルダ内のファイル名を取得

    Sub ファイル名取得()
        Dim folderPath As String
        Dim fileName As String
        Dim fileExtension As String
    
        ' 対象のフォルダを指定
        folderPath = "C:\Users\YourUsername\Documents\SampleFolder\"
    
        ' フォルダ内のファイル名を取得
        fileName = Dir(folderPath & "*.*")
    
        ' ファイルが存在する限りループ
        Do While fileName <> ""
            ' ファイル名と拡張子を表示
            Debug.Print fileName
            ' 次のファイルを取得
            fileName = Dir
        Loop
    End Sub

    31. フォルダ内のファイル名とサブフォルダを取得して一覧化(拡張子あり)

    Sub ファイルとサブフォルダ取得()
        Dim folderPath As String
        Dim fileName As String
        Dim subFolderName As String
        Dim fileExtension As String
        Dim resultSheet As Worksheet
        Dim rowNumber As Long
    
        ' 対象のフォルダを指定
        folderPath = "C:\Users\YourUsername\Documents\SampleFolder\"
    
        ' フォルダ内のファイル名とサブフォルダ名を取得して一覧表示
        Set resultSheet = ThisWorkbook.Sheets.Add(After:=Sheets(Sheets.Count))
        resultSheet.Name = "ファイル一覧"
    
        rowNumber = 1
    
        ' ファイル名を取得
        fileName = Dir(folderPath & "*.*")
    
        Do While fileName <> ""
            ' ファイル名と拡張子を分割
            fileExtension = Right(fileName, Len(fileName) - InStrRev(fileName, "."))
            
            ' ファイル名と拡張子を表示
            resultSheet.Cells(rowNumber, 1).Value = fileName
            resultSheet.Cells(rowNumber, 2).Value = fileExtension
            
            rowNumber = rowNumber + 1
    
            ' 次のファイルを取得
            fileName = Dir
        Loop
    
        ' サブフォルダ名を取得
        subFolderName = Dir(folderPath & "*", vbDirectory)
    
        Do While subFolderName <> ""
            ' "." と ".." 以外のディレクトリを処理
            If subFolderName <> "." And subFolderName <> ".." Then
                ' サブフォルダ名を表示
                resultSheet.Cells(rowNumber, 1).Value = subFolderName
                resultSheet.Cells(rowNumber, 2).Value = "フォルダ"
    
                rowNumber = rowNumber + 1
            End If
    
            ' 次のサブフォルダを取得
            subFolderName = Dir
        Loop
    End Sub

    32.サブフォルダ含めフォルダ名とファイル名をテキストファイル出力

    Sub フォルダファイルリスト出力()
        Dim folderPath As String
        Dim fileName As String
        Dim subFolderName As String
        Dim fileExtension As String
        Dim outputFilePath As String
        Dim outputText As String
    
        ' 対象のフォルダを指定
        folderPath = "C:\Users\YourUsername\Documents\SampleFolder\"
    
        ' 出力するテキストファイルのパスを指定
        outputFilePath = "C:\Users\YourUsername\Documents\FolderFileList.txt"
    
        ' フォルダ内のファイル名とサブフォルダ名をテキストファイルに出力
        Open outputFilePath For Output As #1
    
        ' ファイル名を取得
        fileName = Dir(folderPath & "*.*")
    
        Do While fileName <> ""
            ' ファイル名と拡張子を分割
            fileExtension = Right(fileName, Len(fileName) - InStrRev(fileName, "."))
            
            ' ファイル名と拡張子をテキストファイルに出力
            Print #1, fileName & "," & fileExtension
    
            ' 次のファイルを取得
            fileName = Dir
        Loop
    
        ' サブフォルダ名を取得
        subFolderName = Dir(folderPath & "*", vbDirectory)
    
        Do While subFolderName <> ""
            ' "." と ".." 以外のディレクトリを処理
            If subFolderName <> "." And subFolderName <> ".." Then
                ' サブフォルダ名をテキストファイルに出力
                Print #1, subFolderName & ",フォルダ"
            End If
    
            ' 次のサブフォルダを取得
            subFolderName = Dir
        Loop
    
        Close #1
    End Sub

    33. フォルダ名・ファイル名を一括変更

    Sub フォルダファイル名一括変更()
        Dim folderPath As String
        Dim newFolderName As String
        Dim newFileName As String
        Dim oldPath As String
        Dim newPath As String
    
        ' 対象のフォルダを指定
        folderPath = "C:\Users\YourUsername\Documents\SampleFolder\"
    
        ' 変更後のフォルダ名とファイル名を指定
        newFolderName = "新しいフォルダ名"
        newFileName = "新しいファイル名"
    
        ' フォルダ内のフォルダ名を一括変更
        Name folderPath & "*" & "\", folderPath & newFolderName & "\"
    
        ' フォルダ内のファイル名を一括変更
        Dim fileName As String
        fileName = Dir(folderPath & "*.*")
    
        Do While fileName <> ""
            oldPath = folderPath & fileName
            newPath = folderPath & newFileName & "." & Right(fileName, Len(fileName) - InStrRev(fileName, "."))
            Name oldPath As newPath
            fileName = Dir
        Loop
    End Sub

    34. Shellを使ってフォルダを開く(アクティブ化)

    Sub フォルダを最前面で開く()
        Dim folderPath As String
    
        ' 開く対象のフォルダを指定
        folderPath = "C:\Users\YourUsername\Documents\SampleFolder\"
    
        ' フォルダを最前面で開く
        Shell "explorer.exe /select," & folderPath, vbNormalFocus
    End Sub

    35. ダイアログからフォルダ選択し複数ファイル名を取得・一覧表示

    Sub フォルダ選択してファイル名取得()
        Dim folderPath As String
        Dim fileName As String
        Dim fileNames As String
        Dim selectedFolder As Variant
        Dim resultSheet As Worksheet
        Dim rowNumber As Long
    
        ' ダイアログからフォルダを選択
        With Application.FileDialog(msoFileDialogFolderPicker)
            If .Show = -1 Then
                selectedFolder = .SelectedItems(1)
            Else
                Exit Sub
            End If
        End With
    
        ' 選択されたフォルダ内のファイル名を取得して一覧表示
        Set resultSheet = ThisWorkbook.Sheets.Add(After:=Sheets(Sheets.Count))
        resultSheet.Name = "選択フォルダファイル一覧"
    
        rowNumber = 1
    
        ' ファイル名を取得
        fileName = Dir(selectedFolder & "\*.*")
    
        Do While fileName <> ""
            ' ファイル名を表示
            resultSheet.Cells(rowNumber, 1).Value = fileName
            rowNumber = rowNumber + 1
    
            ' 次のファイルを取得
            fileName = Dir
        Loop
    End Sub

    36.フォルダ内のExcelファイルの処理

    Sub Excelファイル処理()
        Dim folderPath As String
        Dim fileName As String
        Dim wb As Workbook
    
        ' 対象のフォルダを指定
        folderPath = "C:\Users\YourUsername\Documents\ExcelFiles\"
    
        ' フォルダ内のExcelファイルを処理
        fileName = Dir(folderPath & "*.xlsx")
    
        Do While fileName <> ""
            ' Excelファイルを開く
            Set wb = Workbooks.Open(folderPath & fileName)
    
            ' ここにExcelファイルに対する処理を追加
    
            ' 例:シート1のA1セルに値を表示
            wb.Sheets(1).Range("A1").Value = "Hello, Excel!"
    
            ' Excelファイルを保存して閉じる
            wb.Close SaveChanges:=True
    
            ' 次のExcelファイルを取得
            fileName = Dir
        Loop
    End Sub

    37. テキストファイルの文字列を一斉置換・変換

    Sub テキスト置換変換()
        Dim filePath As String
        Dim text As String
        Dim newText As String
        Dim fileContent As String
    
        ' 対象のテキストファイルを指定
        filePath = "C:\Users\YourUsername\Documents\TextFile.txt"
    
        ' 置換前の文字列と置換後の文字列を指定
        text = "置換前の文字列"
        newText = "置換後の文字列"
    
        ' テキストファイルを読み込む
        Open filePath For Input As #1
        fileContent = Input$(LOF(1), #1)
        Close #1
    
        ' 文字列を置換
        fileContent = Replace(fileContent, text, newText)
    
        ' 置換後の内容をテキストファイルに書き込む
        Open filePath For Output As #1
        Print #1, fileContent
        Close #1
    End Sub

    38.フォルダ内のファイル数とフォルダ数をカウントしてExcelに出力

    Sub フォルダ統計情報()
        Dim folderPath As String
        Dim fileCount As Long
        Dim folderCount As Long
    
        ' 対象のフォルダを指定
        folderPath = "C:\Users\YourUsername\Documents\SampleFolder\"
    
        ' フォルダ内のファイル数とフォルダ数をカウント
        fileCount = GetFileCount(folderPath)
        folderCount = GetFolderCount(folderPath)
    
        ' カウント結果をExcelに出力
        ThisWorkbook.Sheets("Sheet1").Range("A1").Value = "ファイル数"
        ThisWorkbook.Sheets("Sheet1").Range("B1").Value = fileCount
        ThisWorkbook.Sheets("Sheet1").Range("A2").Value = "フォルダ数"
        ThisWorkbook.Sheets("Sheet1").Range("B2").Value = folderCount
    End Sub
    
    Function GetFileCount(folderPath As String) As Long
        Dim file As String
        Dim fileCount As Long
    
        file = Dir(folderPath & "*.*")
        Do While file <> ""
            If (GetAttr(folderPath & file) And vbDirectory) = 0 Then
                fileCount = fileCount + 1
            End If
            file = Dir
        Loop
    
        GetFileCount = fileCount
    End Function
    
    Function GetFolderCount(folderPath As String) As Long
        Dim subFolder As String
        Dim folderCount As Long
    
        subFolder = Dir(folderPath & "*", vbDirectory)
        Do While subFolder <> ""
            If subFolder <> "." And subFolder <> ".." Then
                folderCount = folderCount + 1
            End If
            subFolder = Dir
        Loop
    
        GetFolderCount = folderCount
    End Function

    39.VBAでフォルダ内のファイルや特定フォルダを一括コピー

    Sub フォルダ内ファイルコピー()
        Dim sourceFolderPath As String
        Dim destinationFolderPath As String
        Dim file As String
    
        ' コピー元のフォルダを指定
        sourceFolderPath = "C:\Users\YourUsername\Documents\SourceFolder\"
    
        ' コピー先のフォルダを指定
        destinationFolderPath = "C:\Users\YourUsername\Documents\DestinationFolder\"
    
        ' コピー元フォルダ内のファイルをコピー先に一括コピー
        file = Dir(sourceFolderPath & "*.*")
        Do While file <> ""
            FileCopy sourceFolderPath & file, destinationFolderPath & file
            file = Dir
        Loop
    End Sub

    40.複数フォルダのセットを一括コピー

    Sub フォルダセットコピー()
        Dim sourceBaseFolderPath As String
        Dim destinationBaseFolderPath As String
        Dim folder As String
        Dim sourceFolderPath As String
        Dim destinationFolderPath As String
    
        ' コピー元の基準フォルダを指定
        sourceBaseFolderPath = "C:\Users\YourUsername\Documents\SourceBaseFolder\"
    
        ' コピー先の基準フォルダを指定
        destinationBaseFolderPath = "C:\Users\YourUsername\Documents\DestinationBaseFolder\"
    
        ' コピー元フォルダのセットを指定
        folder = "Folder1" ' 適切なフォルダ名を指定
        sourceFolderPath = sourceBaseFolderPath & folder & "\"
    
        ' コピー先フォルダのセットを指定
        destinationFolderPath = destinationBaseFolderPath & folder & "\"
    
        ' コピー元フォルダ内のファイルをコピー先に一括コピー
        FileCopy sourceFolderPath & "*.*", destinationFolderPath
    End Sub

    41.Wordと連携して資料送付状を作成

    Sub 資料送付状作成印刷()
        Dim wordApp As Object
        Dim wordDoc As Object
        Dim ws As Worksheet
        Dim customerName As String
        Dim documentPath As String
    
        ' Wordアプリケーションの新規作成
        Set wordApp = CreateObject("Word.Application")
        wordApp.Visible = True ' Wordを表示
    
        ' シートと Word ドキュメントの関連付け
        Set ws = ThisWorkbook.Sheets("Sheet1") ' 適切なシート名を指定
        customerName = ws.Range("A1").Value ' 取引先の顧客名が A1 セルにあると仮定
    
        ' Word ドキュメントを作成
        Set wordDoc = wordApp.Documents.Add
    
        ' Word ドキュメントに内容を追加(例:「資料送付状」)
        wordDoc.Content.Text = "尊敬する" & customerName & "様" & vbCrLf & _
                               "お世話になっております。" & vbCrLf & _
                               "資料をお送りいたします。" & vbCrLf & vbCrLf & _
                               "敬具" & vbCrLf & _
                               "(差出人)"
    
        ' Word ドキュメントを保存
        documentPath = "C:\Users\YourUsername\Documents\送付状_" & customerName & ".docx"
        wordDoc.SaveAs documentPath
    
        ' Word ドキュメントを印刷
        wordDoc.PrintOut
    
        ' Word アプリケーションを終了
        wordApp.Quit
    
        ' 解放
        Set wordDoc = Nothing
        Set wordApp = Nothing
    End Sub

    42.Word議事録メモを作成して最前面表示

    Sub 議事録メモ作成()
        Dim wordApp As Object
        Dim wordDoc As Object
        Dim memoText As String
        Dim memoPath As String
        Dim destinationPath As String
        Dim ws As Worksheet
        Dim lastRow As Long
    
        ' Wordアプリケーションの新規作成
        Set wordApp = CreateObject("Word.Application")
        wordApp.Visible = True ' Wordを表示
    
        ' シートと Word ドキュメントの関連付け
        Set ws = ThisWorkbook.Sheets("Sheet1") ' 適切なシート名を指定
        lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' データが入力されている最終行を取得
    
        ' Word ドキュメントを作成
        Set wordDoc = wordApp.Documents.Add
    
        ' メモ内容を取得
        memoText = ""
        For i = 1 To lastRow
            memoText = memoText & ws.Cells(i, 1).Value & vbCrLf
        Next i
    
        ' Word ドキュメントに内容を追加
        wordDoc.Content.Text = "議事録メモ" & vbCrLf & vbCrLf & memoText
    
        ' Word ドキュメントを保存
        memoPath = "C:\Users\YourUsername\Documents\議事録メモ.docx"
        wordDoc.SaveAs memoPath
    
        ' Word ドキュメントを最前面に表示
        wordApp.Activate
    
        ' Word アプリケーションを終了
        wordApp.Quit
    
        ' 解放
        Set wordDoc = Nothing
        Set wordApp = Nothing
    End Sub

    43.Word操作で差し込み印刷

    Sub Word連携_差し込み印刷()
        Dim wordApp As Object
        Dim wordDoc As Object
        Dim ws As Worksheet
        Dim dataSourcePath As String
        Dim letterPath As String
    
        ' Wordアプリケーションの新規作成
        Set wordApp = CreateObject("Word.Application")
        wordApp.Visible = True ' Wordを表示
    
        ' シートと Word ドキュメントの関連付け
        Set ws = ThisWorkbook.Sheets("Sheet1") ' 適切なシート名を指定
    
        ' メールマージのデータソースのパス
        dataSourcePath = "C:\Users\YourUsername\Documents\DataSource.xlsx" ' データソースのExcelファイルを指定
    
        ' ワード文書のテンプレートパス
        letterPath = "C:\Users\YourUsername\Documents\LetterTemplate.docx" ' ワード文書のテンプレートを指定
    
        ' メールマージ実行
        Set wordDoc = wordApp.Documents.Add(dataSourcePath)
        wordDoc.MailMerge.OpenDataSource Name:=dataSourcePath, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
            AddToRecentFiles:=False, PasswordDocument:=vbNullString, PasswordTemplate:=vbNullString, WritePasswordDocument:=vbNullString, _
            WritePasswordTemplate:=vbNullString, Revert:=False, Format:=wdOpenFormatAuto, Connection:=vbNullString, SQLStatement:=vbNullString, _
            SQLStatement1:=vbNullString, SubType:=wdMergeSubTypeAccess
        wordDoc.MailMerge.MainDocumentType = wdFormLetters
        wordDoc.MailMerge.OpenHeaderSource Name:=letterPath, LinkToSource:=True, Connection:=vbNullString, SQLStatement:=vbNullString, _
            SubType:=wdMergeSubTypeAccess
    
        ' 差し込み印刷
        wordDoc.MailMerge.Execute
    
        ' Word アプリケーションを終了
        wordApp.Quit
    
        ' 解放
        Set wordDoc = Nothing
        Set wordApp = Nothing
    End Sub

    44.FSOを使ってフォルダ存在をチェックしてフォルダ作成

    Sub フォルダ作成()
        Dim folderPath As String
        Dim folderName As String
        Dim newFolderPath As String
        Dim fso As Object
    
        ' フォルダのパスと作成するフォルダ名を指定
        folderPath = "C:\Users\YourUsername\Documents"
        folderName = "NewFolder" ' 適切なフォルダ名を指定
    
        ' FSO (ファイルシステムオブジェクト) を作成
        Set fso = CreateObject("Scripting.FileSystemObject")
    
        ' 新しいフォルダのパスを作成
        newFolderPath = folderPath & "\" & folderName
    
        ' フォルダが存在するかチェック
        If Not fso.FolderExists(newFolderPath) Then
            ' フォルダを作成
            fso.CreateFolder newFolderPath
            MsgBox "フォルダが作成されました。"
        Else
            MsgBox "フォルダは既に存在します。"
        End If
    
        ' FSO を解放
        Set fso = Nothing
    End Sub

    45.フォルダ内のファイルや特定フォルダのリストを取得

    Sub フォルダ内容取得()
        Dim folderPath As String
        Dim fso As Object
        Dim folder As Object
        Dim subFolder As Object
        Dim file As Object
        Dim ws As Worksheet
        Dim i As Integer
    
        ' フォルダのパスを指定
        folderPath = "C:\Users\YourUsername\Documents\FolderContent" ' 適切なフォルダパスを指定
    
        ' FSO (ファイルシステムオブジェクト) を作成
        Set fso = CreateObject("Scripting.FileSystemObject")
    
        ' 新しいワークシートを作成
        Set ws = Worksheets.Add
    
        ' フォルダ内の各要素に対して処理
        Set folder = fso.GetFolder(folderPath)
    
        ' ファイルのリストをワークシートに出力
        ws.Range("A1").Value = "ファイル名"
        i = 2
        For Each file In folder.Files
            ws.Range("A" & i).Value = file.Name
            i = i + 1
        Next file
    
        ' 特定のサブフォルダのリストをワークシートに出力
        ws.Range("B1").Value = "サブ

    まとめ

    今回は便利なマクロのコードを45個紹介しました。マクロは作業時間の短縮、ミスの抑制といったさまざまな面で役立ちます。
    いちから組むのが苦手な場合でも、ここで紹介したコードを参考にカスタマイズしてみてはいかがでしょうか。

  • Legion Tower 5 Gen 8(AMD)

    Legion Tower 5 Gen 8(AMD)

    https://chimolog.co/bto-legion-t5-amd

    初めてゲーミングPCデビューする初心者に、予算20万円でおすすめなゲーミングPCを聞かれたら「Legion Tower 5 Gen 8(AMD)」と答えます。

    コストパフォーマンスの良いスペック構成、割安価格なのに拡張性も抜かりなし、さらに優れた静音性まで。今まで買ってきたLenovo製ゲーミングPCで過去最高の内容です。

    (公開:2024/5/11 | 更新:2024/5/11

    この記事の目次

    やかもち

    Lenovoリワード(5%)込み、実質19万円で買いました。「値段おかしくないか?」と思ったから買ってみた。

    Legion Tower 5 Gen 8(AMD)の仕様とスペック

    Legion Tower 5 Gen 8 AMD(RTX 4070)

    最新の価格とスペックは公式サイトで確認してください

    Legion Tower 5 Gen 8(AMD)
    (第5世代AMD Ryzenモデル)
    CPURyzen 7 7700X
    (8コア16スレッド)
    クーラー空冷(120 mm)
    グラボRTX 4070 12GB
    メモリ16 GB
    (DDR5-5600 / 2枚組)
    マザーボードAMD B650
    SSD1 TB(NVMe SSD)
    HDDなし
    無線LANWi-Fi 6E
    (最大2.4 Gbps / BT 5.2 対応)
    電源500 W
    (80 PLUS Silver 認証)
    OSWindows 11 Home
    保証1年間(引取修理保証)
    参考価格
    2024/05時点

    「Legion Tower 5 Gen 8」公式サイト

    「Legion Tower 5 Gen 8」は、BTOパソコンの世界最大手メーカー「Lenovo(レノボ)」が販売するゲーミングPCブランドです。

    ガレリアやパソコン工房と比較して日本での知名度がかなり低いものの、スペックの割に安い価格が大きなメリット。コストパフォーマンスの高さから、PCスペックをきちんと読めるユーザーから人気を集めています。

    たとえば筆者がそうです。スペックと価格を一覧にまとめて、ザッと流し見するとすぐに「Legionだけずいぶんとコスパが良いな」と気づきます。逆に言えば、案件動画を流し見している層だとLegionの存在自体に気づかないでしょう。

    初心者もち

    Ryzen 7 7700XとRTX 4070で実質19万円が安いのかイマイチよくわからないや・・・

    RTX 4070はRTX 3080に匹敵するゲーミング性能(→ 性能比較)があり、同じ価格帯のBTOパソコンでよく組み合わせられるCore i5 14400FやRyzen 7 5700X程度のCPUではフレームレートを引き出しづらいです。

    一方、Legion Tower 5 Gen 8に搭載されたRyzen 7 7700X(第5世代)はCore i7 13700にあと一歩のゲーミング性能を持ちながら、ゲーム時の消費電力が半分くらいで済みます。

    少ない消費電力(放熱)でパワフルな性能を実現できるCPUです。消費電力が少なく済むから各種パーツにかかるコストも節約でき、結果的にスペックの割に安い価格が可能になる要因です。

    だからコストパフォーマンスが良いです。コストパフォーマンスは「支払った金額に対する実効性能」を意味するキーワードで、決して値段が安いだけを意味しません。

    同じ値段でも出せる性能が高ければ高いほど、コストパフォーマンスが高いといえます。

    やかもち

    しかも標準スペックで「Wi-Fi 6E」「低遅延 2.5G LAN」「容量1 TBのPCIe 4.0(7000 MB/s)SSD」など、トレンドな仕様に対応します。

    Legion Tower 5 Gen 8(AMD)の梱包と付属品

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(梱包)

    Lenovo公式通販で4月22日に注文して、2日後の24日に到着しました。「最短1~2営業日で出荷」と記載しているとおり、スピーディーな納期でよかったです。

    段ボール一面に「LEGION」とインパクトの太い英字フォントが印刷されています。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(梱包)
    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(梱包)
    梱包
    クリックで画像拡大

    ゲーミングPC本体の梱包状況です。薄いポリ袋で本体をつつみ、分厚い高密度スチロールの緩衝材でハンバーガー状態です。よほど配送で雑に扱われても、そう簡単にキズはつかないでしょう。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(付属品)
    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(付属品)
    付属品
    クリックで画像拡大
    • サポートの案内
    • PCリサイクルの申し込み書類
    • 説明書
    • 電源ケーブル(2ピン変換付き)

    付属品は以上です。必要最低限の付属品が揃っています。

    SATAデバイス(SSDやHDD)の増設に必要な各ケーブル類は、すでにPCケース内部にそれぞれ2本ずつ装着済みです。別途購入する必要はありません。

    Legion Tower 5 Gen 8(AMD)のPCケースデザイン

    5 mm厚ガラスサイドパネルのデスクトップ筐体

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(筐体デザイン)

    最近のトレンドを意識したデザインを盛り込んだデスクトップ筐体です。

    サイドパネルに強化ガラス製サイドパネル(5 mm厚)を使い、ケース内部が透けて見えるオシャレな構成。ブサイクな印象を与えるケーブルが見えないように、仕切り板を増設して目隠しする工夫まで施されています。

    ケーブルを隠すための仕切り板はグラフィックボードにケースファンの風が当たりやすくする効果もあり、実用面でのメリットも考慮済みです。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(筐体デザイン)
    • 高さ:44.0 cm
    • 横幅:20.5 cm
    • 奥行き:39.4 cm
    • 容量:約35.5リットル

    メジャーでLegion Tower 5 Gen 8のサイズを測定しました。割とよくある中型サイズ(ミニタワー型)のPCケースです。

    コントロール可能なLEDライティングを搭載

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(外観デザイン)

    電源をいれると、LEDライティングで光ります。強化ガラスサイドパネルに若干スモーク加工が入っているらしく、LEDの光だけがケース外に透過してくる印象です。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(外観デザイン)

    フロントパネルの「LEGION」ロゴ、120 mm径ケースファン(2個)も光ります。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(外観デザイン)

    リアパネル(背面)側の120 mm径ケースファンも光っています。よく見ると、ガラスサイドパネルの裏側も少しだけ光っていて、ケース内部をうっすらと照らす効果が。

    プリインストールアプリ「Lenovo Vantage」から、LEDライティングをコントロール可能です。

    • 120 mm径ケースファン(フロント)
    • 120 mm径ケースファン(リア)
    • CPUクーラーのファン
    • サイドパネル裏側
    • グラフィックボード

    標準スペックで搭載されているパーツであれば、すべてコントロールできます。もちろん「消灯」もできます。

    PCケースのデザインをもう少しチェック

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(外観デザイン)

    フロントパネルは外気をよく吸い込める「ハニカム構造」を採用。Apple Mac Proのおろし金を彷彿とさせるデザインです。

    リアパネル(背面)もマットブラックカラーのパーツで統一され、安物PCにありがちなダサい印象を排除します。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(外観デザイン)

    各種ロゴマークがフロントパネルの意匠にうまく取り入れられています。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(外観デザイン)

    トップパネル(天板)に排気用スリット(通気口)が設けられています。天板に何か置いて遮るとエアフローが悪化して、ケース内部の温度がこもってしまうので注意。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(外観デザイン)

    ケース底面に、電源ユニットを効率よく冷やす吸気用スリット(通気口)が設けられています。ホコリの侵入を防ぐ防塵フィルターも取り付け済み。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(外観デザイン)

    滑り止めと制震をかねる、奥行きの長いゴム足を合計4本取付済みです。滑り止めの効果がかなり強いので、PC本体をうっかり押すと横に倒れます。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(外観デザイン)
    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(外観デザイン)
    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(外観デザイン)
    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(外観デザイン)
    デザイン(4面)
    クリックで画像拡大

    Legion Tower 5 Gen 8(AMD)のデザインをまとめて掲載します。

    好みの問題もあるので一概に言えないですが、個人的にまったく不満ないデザインです。LEDライティングも派手すぎず程よく、設定ソフトから消灯もできます。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(外観デザイン)

    強化ガラス製サイドパネルは実測5 mm厚で、キズがつかないよう保護シートが貼ってあります。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(外観デザイン)

    サイズ感の比較です。PS5(初期型)より一回り大きいです。

    インターフェイスの内容

    フロントパネル(前面)
    クリックで画像拡大
    USB 5 GbpsUSB 5 Gbpsヘッドホン出力(3.5 mm)マイク入力(3.5 mm)電源ボタン

    トップパネル正面に各インターフェイスが上向きに配置されています。

    5 Gbps対応のUSBポートが2つ、ヘッドセットやマイクをそのままつないで使える3.5 mmオーディオ端子が2つです。

    インターフェイスが天井向きに配置されているため床置きでも抜き差ししやすいです。

    リアパネル(背面)
    クリックで画像拡大
    LEDライティングボタンUSB 10 Gbps(2ポート)USB 10 Gbps Type-CUSB 5 Gbps(2ポート)USB 2.0(2ポート)LANポート(2.5G LAN)オーディオ入出力(3.5 mm)HDMI 2.1Display Port 1.4aDisplay Port 1.4aDisplay Port 1.4a

    リアパネル(背面)のインターフェイスです。USBポートが合計7ポート、内USB 5~10 Gbpsポートが5ポートです。

    LANポートはRealtek製2.5G LANチップ搭載で最大2500 Mbpsの通信速度に対応。

    最大2400 Mbps対応のWi-Fi 6Eアンテナはケース外部に設置されておらず、ケースの内部に埋め込んでいるタイプです。

    USBポートの性能
    クリックで画像拡大

    高速SSD「Samsung 980 PRO」を最大40 Gbps対応のSSDケース(ASM2464PDコントローラ)に搭載して、Legion Tower 5 Gen 8のUSBポートの性能をベンチマークしました。

    USB 10 Gbpsポートで最大1000 MB/s近くまで確認、リアパネルのUSB 5 Gbpsはなぜか10 Gbps相当で動作します。フロントパネルのUSB 5 Gbpsは問題なく5 Gbps相当です。

    USB 10 Gbpsポートでゲームフォルダをコピーすると、平均650 MB/sくらいです。ポータブルSSD経由でゲームも安定して動きます。

    Satechi USB4エンクロージャー(ASM2464PD)

    Satechi / コントローラ:ASM2464PD / 規格:USB4(40 Gbps)/ 対応SSD:NVMe(M.2 2280~2230)

    インターネット性能
    クリックで画像拡大

    eo光10G(回線レビュー)とWi-Fi 6ルーターの組み合わせで、LANポートと無線LAN(Wi-Fi)の性能をチェック。

    LANポート(Realtek RTL8125)は実測2350 Mbpsまで確認でき、ほぼスペックどおりです。無線LAN(MediaTek RZ616)は実測950 Mbpsまで確認でき、理論値の80%に相当します。

    Legion Tower 5 Gen 8(AMD)のパーツ拡張性

    ケースを開けて中身を見てみよう

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(ケースを開けて中身を見る)

    ガラスサイドパネルを取り外します。背面側にある2本のプラスネジを、プラスドライバーで回して外すだけです。

    プラスドライバー(プラス2×100)

    VESSEL / 長さ : 200mm / 先端 : マグネット / 規格 : プラス2×100

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(ケースを開けて中身を見る)

    ネジを十分にゆるめたら、後ろへスライドするようにサイドパネルをズラして取り外し完了。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(ケースを開けて中身を見る)

    ガラスサイドパネル側から見た、Legion Tower 5 Gen 8のケース内部です。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(ケースを開けて中身を見る)

    反対側のサイドパネルも同じ手順で取り外しました。10 mm程度のゆったりとした裏配線スペースがあり、指で曲げられる柔らさかの金属製ケーブルホルダーがあちこちに配置されています。

    PCパーツになるべく最短距離でアクセスできるよう、ケーブルホール(配線穴)も設けられており、まるで自作PC向けに設計されたケースに仕上がっています。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(ケースを開けて中身を見る)

    ケーブル隠しをかねている仕切り板を外します。プラスドライバーで2本のネジを外すだけです。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(ケースを開けて中身を見る)

    プラスチック製の仕切り板です。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(ケースを開けて中身を見る)

    PCケースの中がよく見えます。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(ケースを開けて中身を見る)

    フロントパネルは手で掴んで、持ち上げるように引っ張るとパキッと剥がれます。

    ケースファンを交換したり、マグネット式の防塵フィルターを付けたり自分でカスタマイズ可能です。

    120 mmサイズ マグネット防塵フィルター(SST-FF123B)

    SilverStone / マグネット式 / 120 mm用 / 3枚入り

    必要十分なパーツ拡張性を備えます

    マザーボードの拡張性
    クリックで画像拡大
    M.2スロット(すでに使用済み)SATAポート(2個)PCIe x16スロット(すでに使用済み)M.2スロットPCIe x4スロットM.2スロットSATAポートSATAポート

    拡張スロットの詳細な仕様について

    中型サイズ(Micro-ATX規格)のLenovo特注マザーボードを搭載します。型番は「LENOVO 3768」、AMD B650チップセット搭載モデルです。

    マザーボードの面積そのものは狭いですが、必要十分なパーツ拡張性を備えています。

    • M.2 SSD:あと2個
    • 拡張ボード:あと1個
      (キャプチャボードやサウンドカードなど)
    • SATA HDD or SATA SSD:あと4個
      (ケースの制約でHDDは最大2台まで)

    あとから最大4台のストレージを増設でき、キャプチャボードやサウンドカードはあと1枚まで増設できます。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(マザーボード)

    メモリスロットはDDR5規格に対応。全部で4スロットあり、内2スロットが使用済みです。

    メモリの増設(交換)

    Crucial DDR5-5200(16GB×2枚)

    Crucial / DDR5-5200 / 16 GB(2枚組)/ 備考:互換性の高いネイティブ規格品

    メモリの増設について解説します。

    今回はDDR5規格のメモリなので、空いているスロットにそのまま増設ではなく、すでに取り付けてあるDDR5メモリを丸ごと交換します。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(メモリの交換)

    メモリスロットの留め具(ロック)を指でグッと押して外します。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(メモリの交換)

    反対側の留め具(ロック)も外します。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(メモリの交換)

    留め具(ロック)を外したら、指でつまんで引っ張るだけでDDR5メモリが抜けます。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(メモリの交換)

    最初から付いていたDDR5メモリを2枚とも抜きました。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(メモリの交換)

    交換するDDR5メモリをメモリスロットに挿し込みます。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(メモリの交換)

    指でグッと押し込んでください。上下の留め具(ロック)がカチッと勝手に閉じるまで、力強く指で抑えてください。中途半端な挿し込みはエラーや故障の原因です。

    上下の留め具(ロック)がカチッと最後まで閉まりました。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(メモリの交換)

    同じ手順で、もう1枚のDDR5メモリも取り付けます。

    以上の手順で、メモリの容量が16 GB → 32 GBへ増えました。

    残った2枚のDDR5メモリについてですが、(万が一)メーカー保証を受けるときに備えて残しておくと良いでしょう。

    M.2 SSDの増設

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(M.2 SSDの増設)

    M.2 SSDの増設を解説します。

    マザーボードの一番下にある「M.2ヒートシンク」をいったん取り外しますが、注意点がひとつ。左右のネジで規格が微妙に違ってるので、規格の違うプラスドライバーが2本必要です。

    左のネジが「プラス0(PH0)」規格、いわゆる精密プラスドライバーが必要です。

    精密ドライバー(+00×50)

    アネックス / 長さ : 144mm / 規格 : プラス00×50

    右のネジは「プラス1(PH1)」規格のプラスドライバーが必要です。

    プラスドライバー(プラス1×75)

    ベッセル(VESSEL) / 長さ : 153mm / 規格 : プラス1×75 / 備考 : M.2スロット用の固定ネジでよく使う

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(M.2 SSDの増設)

    M.2ヒートシンクを無事取り外せました。

    SSDの熱伝導率を高めるサーマルパッドが付属します。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(M.2 SSDの増設)

    空いたM.2スロットに、増設したいM.2 SSD(NVMe SSD)をやや斜めの角度から挿し込みます。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(M.2 SSDの増設)

    挿し込んだM.2 SSDごと、M.2ヒートシンクを取り付けて固定してしまいます。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(M.2 SSDの増設)

    以上の手順でM.2 SSDの増設が完了。とてもかんたんです。

    中央のM.2スロットは、ネジ穴に最初から取り付けてある「小ネジ」を使って固定できます。わざわざAmazonで小ネジを買ってこなくて大丈夫です。

    WD Black SN770 NVMe(1TB)

    Western Digital / NAND : KIOXIA製 112層 3D TLC NAND / 性能 : 最大5150 MB秒 / 容量 : 1TB / 耐久性 : 600 TBW / 保証 : 5年

    SATA SSDの増設(2.5インチ)

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(SATA SSDの増設)

    SATA SSD(2.5インチ)の増設を解説します。

    裏配線スペース側にある、薄い金属でできたトレイが「2.5インチマウントベイ」です。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(SATA SSDの増設)

    プラスドライバーで固定ネジを1本外すとかんたんに取り外せます。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(SATA SSDの増設)

    2.5インチマウントベイに標準で付いている4本の小ネジを外します。プラス1(PH1)規格のプラスドライバーがあると回しやすいです。

    プラスドライバー(プラス1×75)

    ベッセル(VESSEL) / 長さ : 153mm / 規格 : プラス1×75 / 備考 : M.2スロット用の固定ネジでよく使う

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(SATA SSDの増設)

    増設したいSATA SSDを2.5インチマウントベイにセットして、先ほど外した4本の小ネジで裏側から固定します。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(SATA SSDの増設)

    2.5インチマウントベイをもとあった位置に戻して、ネジで固定します。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(SATA SSDの増設)

    PCケースの中から「SATAケーブル」と「SATA補助電源ケーブル」を探し出して、SATA SSDに接続して増設完了です。

    Samsung 870 EVO(2 TB)

    Samsung / NAND : Samsung製128L TLC NAND / 性能 : 最大560 MB秒 / 容量 : 2 TB / 耐久性 : 1200 TBW / 保証 : 5年

    SATA HDDの増設(3.5インチ)

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(SATA HDDの増設)

    PCケースの底面に「3.5インチマウントベイ」が2台あります。3.5インチ規格のSATA HDDや、2.5インチ規格のSATA SSDを増設できるトレイです。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(SATA HDDの増設)

    指でつまんで引っ張るだけで、3.5インチマウントベイを取り外せます。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(SATA HDDの増設)

    増設したいSATA HDDを、マウントベイにはめ込み固定します。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(SATA HDDの増設)

    SATA HDDを固定したら、3.5インチマウントベイをもとの位置に戻します。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(SATA HDDの増設)

    PCケースの配線から、「SATAケーブル」と「SATA補助電源ケーブル」を探して引っ張り出してください。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(SATA HDDの増設)

    SATA HDDに2本のケーブルを接続して完了です。

    WD Blue 8TB(WD80EAZZ)

    Western Digital / 容量 : 8 TB / 記録方式 : CMR / 回転数 : 5640 rpm / バッファ : 128 MB / 保証 : 2年 / 備考 : 製造元はHGST

    搭載パーツを詳しく見てみる

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(ケースファン)

    LEDライティングに対応する「120 mm空冷CPUクーラー」を標準搭載します。

    冷却性能に優れるサイドフロー型で、リアパネル(背面)に設置された120 mm径ケースファンで熱をケース外へ放出する流れです。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(グラフィックボード)
    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(グラフィックボード)
    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(グラフィックボード)
    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(グラフィックボード)
    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(グラフィックボード)

    PrevNext

    1 / 3

    搭載グラフィックボードは「RTX 4070」です。ボードの製造元(OEM)はおそらく台湾MSI(微星)だと思われます。

    金属製バックプレートで基板の放熱性と強度(歪み耐性)を補強し、経年によるボードのたわみや配送時の揺れに対する保険としてVGAサポートステイも取付済みです。

    全長228 mmと比較的コンパクトなサイズですが、厚み51 mmの分厚いボードデザインに90 mm径デュアルファンを搭載して、冷却性能もしっかり稼ぐ狙いが見られます。

    やかもち

    すごくしっかりした作りのAIBモデルが入ってて(いい意味で)驚きました。割安価格のBTOなら、普通は厚み40 mm程度しかない廉価モデルを使います。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(電源ユニット)
    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(電源ユニット)
    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(電源ユニット)
    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(電源ユニット)
    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(電源ユニット)

    PrevNext

    1 / 3

    電源ユニットはHuntkey製「HK600-15PP」が搭載されています。

    変換効率がピーク時88%を超える80 PLUS SILVER認証を取得している、スタンダードな電源ユニットです。

    横幅が150 mm、高さが86 mm、奥行き140 mmのATX規格電源です。市販されている自作PC向けの電源ユニットとまったく同じ規格なので、(やる気と技術があれば)別の電源ユニットに交換できます。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(電源ユニットの交換)

    電源ユニットの設置スペースは奥行きがかなり狭いです。ケーブルを置いておくスペースを考慮すると、奥行き140 mmがほとんど上限です。

    ケーブルを少なくできるプラグイン方式の電源なら奥行き160 mmまで、ギリギリ収納できるかもしれませんが・・・おすすめしません。

    初心者もち

    容量500 Wで大丈夫なの?足りる?

    やかもち

    余裕です。ゲーミング時の消費電力はせいぜい300 W(実測済み)だったから、まったくもって余裕。何も不安はありません。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(電源ユニット)

    電源ユニットから伸びているケーブルは必要最低限の内容です。

    SATAデバイス(SATA HDDやSATA SSD)の増設に必要な「SATA補助電源コネクタ」は全部で5個あります。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(電源ユニット)

    グラフィックボードに使う「PCIe 6 + 2 pin」ケーブルが2個あり、ハイエンドなグラフィックボードに対応できます。

    「RTX 4070 Ti SUPER」や「RTX 3080」など、上位モデルに交換が可能です。

    ただし、搭載できるボード全長は308 mmまで。フロントパネルのケースファンを1個外せば、25 mm増えて333 mmまで搭載可能です。

    「Legion Tower 5 Gen 8」公式サイト

    やかもち

    Legion Tower 5 Gen 8(AMD)モデルは、ほとんど標準規格のPCパーツだけで構成されています。パーツの交換・増設がかんたんです。

    【マニア向け】UEFI BIOS画面について

    パソコンの電源ボタンを入れたら、すぐにF1連打でLegion Tower 5 Gen 8のUEFI(BIOS)画面を開けます。

    基本的にプリインアプリの「Lenovo Vantage」でたいていの設定ができるので、一般人はアプリからどうぞ。UEFIから設定したいマニアな方は以下のガイドを確認してください。UEFI BIOS画面について

    Legion Tower 5 Gen 8(AMD)のゲーム性能を検証

    ベンチマーク時のスペック
    (第5世代AMD Ryzenモデル)
    CPURyzen 7 7700X
    (8コア16スレッド / 最大5.4 GHz)
    グラボRTX 4070 12GB
    メモリ32 GB
    (DDR5-4800 / 2枚組)
    ドライバNVIDIA 551.86 WHQL
    ゲーミングモニターINNOCN 27M2V
    (3840 x 2160 / 160 Hz)

    「Legion Tower 5 Gen 8」公式サイト

    「Legion Tower 5 Gen 8(AMD)」のゲーミング性能を実際にテストします。

    定番ベンチマークで性能チェック

    定番ベンチマーク
    「3DMark」
    設定GPUスコア画像
    FireStrike
    軽いゲーム向け
    42247
    TimeSpy
    重たいゲーム向け
    17142
    Port Royal
    レイトレゲーム向け
    10741
    Speed Way
    重量級ゲーム向け
    4276

    ゲーム性能をチェックする定番ベンチマークソフト「3DMark」でざっくり性能をスコア化します。

    フルHDゲーム向けの「FireStrike」は約42000点超えで、フルHDゲーミングなら平均200 fps程度を狙える性能です。設定次第で240 fpsも狙える目安です。

    重量級ゲーム向けの「TimeSpy」は約17000点ほど、最高画質でWQHD(2560 x 1440)ゲーミングを快適に動かせます。

    レイトレの性能をはかる「Port Royal」は約10700点で平均的なスコア。フルHDのレイトレなら快適にプレイでき、WQHD以上は「NVIDIA DLSS」を使わないと厳しいです。

    Legion Tower 5 Gen 8 AMD (RTX 4070)のゲーミング性能を比較

    「FireStrike」のスコアで他のグラフィックボードを比較してみた。

    Legion Tower 5 Gen 8(RTX 4070)の性能は、1世代前のハイエンドモデル「RTX 3080」をやや上回るスコアです。

    定番ベンチマーク
    「FF14:黄金のレガシー」
    設定スコア画像
    1920 x 1080
    最高品質
    22927
    平均166.7 fps
    2560 x 1440
    最高品質
    17155
    平均121.0 fps

    「FF14:黄金のレガシー」を最高品質でテストした結果、スコアは約23000点(平均167 fps)でした。FF14を快適にプレイできます。

    実際にゲームをプレイして性能をテスト

    Apex Legends
    射撃訓練場でテスト
    フルHD
    (中設定)
    平均237 fps
    (下位1%:137 fps)
    フルHD
    (最高設定)
    平均207 fps
    (下位1%:124 fps)
    WQHD
    (最高設定)
    平均158 fps
    (下位1%:87 fps)

    Apex Legendsは中設定で平均237 fpsでプレイできます。実際のプレイだと、もう少しフレームレートが伸びる場合があります。

    グラフィック設定を調整して平均300 fps前後も十分に狙えます。

    Escape from Tarkov
    マップ「Streets of Tarkov」でテスト
    フルHD
    (カスタム設定)
    平均143 fps
    (下位1%:110 fps)
    WQHD
    (カスタム設定)
    平均100 fps
    (下位1%:72 fps)
    4K
    (カスタム設定)
    平均54 fps
    (下位1%:44 fps)
    4K
    (DLSS:バランス)
    平均97 fps
    (下位1%:82 fps)

    タルコフはやや高画質な競技設定で固定。フルHDで平均143 fps、WQHDで平均100 fpsでプレイ可能でした。

    オーバーウォッチ2
    マップ「KING’S ROW(4 vs 4)」で撃ち合い
    フルHD
    (エピック設定 / 100%)
    平均227 fps
    (下位1%:150 fps)
    WQHD
    (エピック設定 / 100%)
    平均157 fps
    (下位1%:112 fps)
    4K
    (エピック設定 / 100%)
    平均84 fps
    (下位1%:64 fps)

    オーバーウォッチ2はエピック設定(レンダリング100%)でテスト。フルHDで平均227 fps、WQHDで平均157 fpsでした。

    VALORANT
    マップ「トレーニングエリア」でテスト
    フルHD
    (最高設定 + MSAA x4)
    平均684 fps
    (下位1%:264 fps)
    WQHD
    (最高設定 + MSAA x4)
    平均503 fps
    (下位1%:256 fps)
    4K
    (最高設定 + MSAA x4)
    平均278 fps
    (下位1%:203 fps)

    VALORANTは最高設定で平均684 fps、WQHDでも平均500 fps前後、余裕すぎる動作です。

    Rainbow Six Siege
    ベンチマークモード
    フルHD
    (最高設定 / 100%)
    平均348 fps
    (下位1%:251 fps)
    WQHD
    (最高設定 / 100%)
    平均218 fps
    (下位1%:165 fps)
    4K
    (最高設定 / 100%)
    平均103 fps
    (下位1%:88 fps)

    レインボーシックスシージはフルHDで平均348 fps、WQHDで平均218 fpsでプレイ可能でした。

    ARMORED CORE VI(AC6)
    マップ「武装採掘艦破壊」でテスト
    フルHD
    (最高設定)
    平均117 fps
    (下位1%:96 fps)
    WQHD
    (最高設定)
    平均105 fps
    (下位1%:91 fps)
    4K
    (最高設定)
    平均58 fps
    (下位1%:51 fps)

    アーマードコア6は最高設定で平均117 fps、WQHDで平均105 fpsでした。

    サイバーパンク2077
    ベンチマークモードでテスト
    フルHD
    (最高設定)
    平均113 fps
    (下位1%:78 fps)
    WQHD
    (最高設定)
    平均71 fps
    (下位1%:55 fps)
    4K
    (最高設定)
    平均26 fps
    (下位1%:20 fps)
    4K
    (DLSS:生成)
    平均55 fps
    (下位1%:44 fps)

    サイバーパンク2077はフルHDで平均113 fps、WQHDは平均71 fpsでした。4Kゲーミング時に平均60 fpsを大きく割りますが、DLSS:バランス(フレーム生成)を適用すると平均60 fps近くまで改善します。

    パルワールド
    マップ「兎花山山頂」でテスト
    PalWorldのベンチマーク設定
    フルHD
    (最高設定)
    平均108 fps
    (下位1%:60 fps)
    WQHD
    (最高設定)
    平均84 fps
    (下位1%:68 fps)
    4K
    (最高設定)
    平均47 fps
    (下位1%:40 fps)

    パルワールド(PalWorld)は最高設定のフルHDで平均108 fps、WQHDで平均84 fpsでした。4Kでプレイすると平均60 fpsを割ってしまうので、DLSS:バランスモード適用をおすすめ。

    ELDEN RING
    マップ「ケイリッド地方」でテスト
    ELDEN RINGのベンチマーク結果
    フルHD
    (高設定)
    平均144 fps
    (下位1%:127 fps)
    WQHD
    (最高設定)
    平均118 fps
    (下位1%:105 fps)
    4K
    (最高設定)
    平均68 fps
    (下位1%:60 fps)

    ELDEN RINGは最高設定で平均144 fps、WQHDで平均118 fpsでした。

    ドラゴンズドグマ2
    フィールド「アレス山麓」でテスト
    フルHD
    (最高設定)
    平均95 fps
    (下位1%:83 fps)
    WQHD
    (最高設定)
    平均79 fps
    (下位1%:70 fps)
    4K
    (最高設定)
    平均50 fps
    (下位1%:46 fps)

    ドラゴンズドグマ2は平均95 fps、WQHDで79 fpsでプレイできます。

    4Kだと平均60 fpsを割り込みます。設定からDLSSモードを有効化がおすすめです。

    モンスターハンターワールド:アイスボーン
    マップ「古代樹の森」でテスト
    フルHD
    (最高設定 + HiRes)
    平均108 fps
    (下位1%:60 fps)
    WQHD
    (最高設定 + HiRes)
    平均84 fps
    (下位1%:68 fps)
    4K
    (最高設定 + HiRes)
    平均47 fps
    (下位1%:40 fps)

    モンハンワールド:アイスボーン(High Resolution Texture Packを適用済み)は、フルHDで平均108 fps、WQHDで平均84 fps前後でした。

    4Kゲーミングは平均60 fpsを割ってしまいます。設定からDLSSモード有効化をおすすめします。

    原神(Genshin Impact)
    マップ「神に捨てられた殿閣」でテスト
    フルHD
    (最高設定 + MSAA x16)
    平均251 fps
    (下位1%:137 fps)
    WQHD
    (最高設定 + MSAA x16)
    平均216 fps
    (下位1%:143 fps)
    4K
    (最高設定 + MSAA x16)
    平均129 fps
    (下位1%:94 fps)

    原神は最高設定(精度1.5 / シーン細部:最高 / MSAA x16)、マップ「神に捨てられた殿閣」にてテスト。フルHDで平均251 fps、WQHDで平均216 fps、4Kですら平均129 fpsで安定した動作です。

    ストリートファイター6
    「LUKE vs RYU」でテスト
    フルHD
    (ULTRA設定)
    平均60 fps
    (下位1%:56 fps)
    WQHD
    (ULTRA設定)
    平均60 fps
    (下位1%:56 fps)
    4K
    (ULTRA設定)
    平均60 fps
    (下位1%:56 fps)

    ストリートファイター6(FIGHTING GROUNDモード:60 fps上限)は、フルHDで平均60 fps、4Kも同じく平均60 fpsです。

    VRChat
    「Yayoi Forest House」でテスト
    フルHD
    (Ultra x8設定)
    平均214 fps
    (下位1%:178 fps)
    WQHD
    (Ultra x8設定)
    平均145 fps
    (下位1%:123 fps)
    4K
    (Ultra x8設定)
    平均74 fps
    (下位1%:66 fps)

    VRChat(Ultra x8設定)はフルHDで平均214 fps、WQHDで平均145 fps、4K解像度で平均74 fpsでした。Valve Indexなど、高解像度なVR HMDでプレイするには設定を妥協しないと平均60 fpsに届かないです。

    マインクラフト
    筆者のオリジナルマップでテスト
    フルHD
    (16チャンク)
    平均80 fps
    (下位1%:70 fps)
    WQHD
    (16チャンク)
    平均80 fps
    (下位1%:69 fps)
    4K
    (16チャンク)
    平均53 fps
    (下位1%:49 fps)

    マインクラフト(Bedrock Edition / Vanilla RTXシェーダー / 描画距離16チャンク)は、フルHDで平均80 fps、WQHDも平均80 fpsです。4K解像度で60 fps維持は微妙に届かないです。

    設定から「アップスケール(NVIDIA DLSS)」を有効化すると、4Kで平均60 fpsも余裕でした。

    「Legion Tower 5 Gen 8」公式サイト

    やかもち

    「RTX 4070」はほとんどのゲーム、解像度設定で快適にプレイできます。NVIDIA DLSS対応ゲームであれば、4Kゲーミングもそこそこ快適です。

    Legion Tower 5 Gen 8(AMD)のクリエイティブ性能

    レンダリング / 動画エンコード

    Legion Tower 5 Gen 8 AMD (RTX 4070)のCPU性能を比較

    CPUの定番ベンチマーク「Cinebench R23」の比較です。

    今回のレビュー機に入ってるCPU「Ryzen 7 7700X」は8コア16スレッドのCPUで、従来のRyzen 7から約1.4倍の性能に。

    Legion Tower 5 Gen 8 AMD (RTX 4070)のCPU性能を比較

    サクサクとした体感性能に影響が大きいシングルスレッド性能の比較です。「Ryzen 7 7700X」のシングルスレッド性能は過去のレビューでトップクラスです。

    Legion Tower 5 Gen 8 AMD (RTX 4070)のCPU性能を比較

    動画エンコードは無料ソフト「Handbrake 1.42」を使って検証します。容量が約1 GBのフルHDアニメを「Fast 480p30(x264)」でエンコード。

    かつてハイエンドだったCore i9 10900K(10コア)やCore i7 11700(8コア)以上のエンコード性能です。消費電力は100 W前後で、ワットパフォーマンスも高いです。

    やかもち

    今のところ最速クラスの8コアCPUで、体感性能がサックサク。ゲーム性能もかなり優秀です。

    オフィスワーク

    Microsoft Office
    「PCMark 10 Pro」でベンチマーク
    Edge15865
    Word11679
    Excel22347
    PowerPoint16131
    総合スコア16253

    PCMark 10 Pro版を使って、オフィスワークの代表例「Microsoft Office」の処理速度をチェック。

    「Legion Tower 5 Gen 8(AMD)」の結果は「16253点」です。PCMark 10公式の目安である4500点を大幅に超えているため、オフィスワーク性能は十分すぎます。

    PCMark 10
    Video Conference(ビデオ会議)
    PCMark 10でビデオチャットの性能をテスト
    総合スコア84515000点以上ならOK
    ビデオチャットの快適度29.9 /30.00 fps

    PCMark 10の「Video Conference(ビデオ会議)」モードを使って、ビデオチャットの快適さをテストしました。

    結果は8451点で、5000点以上を余裕でクリア。複数人とビデオチャットを同時に行った場合の、映像のスムーズさ(フレームレート)はほぼ30 fpsで、上限の30 fpsに迫ります。ビデオ通話も余裕です。

    写真編集

    Adobe Photoshop CC
    「Puget Bench」でベンチマーク
    ガレリアZGを実機レビュー(写真)
    総合スコア
    Overall Score
    1518.4/1000
    一般処理のスコア
    General Score
    142.7
    フィルタ系のスコア
    Filter Score
    164.2
    GPUスコア
    GPU Score
    175.3

    写真編集は「Photoshop CC」で処理速度をテスト。Puget Systems社が配布しているベンチマーク用のバッチファイル※を使い、実際にPhotoshopを動かして性能をスコア化します。

    Photoshopベンチのスコアは「1518.4点」です。1000点満点を大幅に超える余裕あるスコアで、Photoshopの基本的なタスクをサクサクとこなせます。

    ただし、扱う写真のサイズによってはメモリ容量が不足する可能性はあります。

    AIイラスト

    Stable Diffusion Web UI
    AIイラストベンチマーク
    SD 1.5 Benchmark
    (512 x 768サイズ)
    2.2秒/1枚あたり
    SDXL Benchmark
    (1024 x 1536サイズ)
    10.0秒/1枚あたり

    最近流行りのAIイラスト(Stable Diffusion Web UI Forge版)の生成時間をベンチマークします。

    SD 1.5モデル(512 x 768サイズ)は1枚あたり平均2.2秒でした。負荷の重たいSDXLモデル(1024 x 1536サイズ)では、1枚あたり平均10.0秒まで伸びます。

    RTX 4070のVRAM容量が12 GBなので少し心もとないと思いきや、VRAMの利用効率がいいForge版なら問題なくAIイラストを生成可能です。

    【Stable Diffusion】AIイラストにおすすめなグラボを検証

    ゲーム実況配信

    OBSの設定
    ※画像クリックすると拡大します
    エンコーダ:NVENC H.264レート制御:CBRビットレート:6000 kbpsキーフレーム:2秒プリセット:P4 Medium心理視覚:有効Bフレーム:2エンコーダ:NVENC H.264レート制御:VBRビットレート:6000 kbpsキーフレーム:2秒プリセット:P5 Slow心理視覚:有効Bフレーム:2

    ゲーム実況配信の定番ソフト「OBS Studio」を、グラフィックボードを使って快適に動くかどうかをチェックします。

    OBSの録画配信は非常に負荷が重たいリアルタイムエンコードですが、グラボに搭載されているハードウェアエンコード機能を使うと、CPUにほとんど負荷をかけずに快適な録画と配信が可能です。

    GeForce系のグラボは「NVEnc」、Radeon系だと「VCE」と呼ばれるハードウェアエンコード機能でリアルタイムなエンコードができます。

    OBSの設定

    解像度はフルHD(1920 x 1080)、フレームレートは60 fps、ビットレートは6000 kbps(最大9000 kbps)です。配信をCBR形式、録画をVBR形式で同時に実行します。

    テストに使用するゲームは「Apex Legends(最高設定)」で、ゲーム側にフレームレート上限をかけてテストします(※上限なしだとエンコードが安定しない場合があるため)。

    設定ドロップフレーム率
    普通にプレイ0%
    録画と配信(60 fps)0%
    録画と配信(240 fps)0%
    録画と配信(無制限)0%

    Legion Tower 5 Gen 8(AMD)のゲーム配信性能は非常に安定しています。

    フレームレート制限に関係なく、ドロップフレーム率(コマ落ち)が0%です。配信時のフレームレート低下は1割くらいで問題なし。高いフレームレートを維持したまま安定したゲーム実況配信ができます。

    デスクトップ画面とプリインアプリ

    初回起動時のデスクトップ画面はまっさらな状態です。

    • Lenovo Vantage
    • Lenovo Now
    • Legion Arena
    • マカフィーリブセーフ

    主なプリインアプリは以上4つです。

    セキュリティソフトはWindows付属の「Defender」で十分すぎるほどに高性能なので、有料のマカフィーはまっさきに削除します。

    「Lenovo Vantage」は、ゲーミングPCのデバイス情報やドライバーの更新、メーカー保証の残り期間やサポートの依頼まで。LenovoのゲーミングPCに関する包括的な管理アプリです。

    「サーマルモード設定」で、CPUクーラーのファン回転数をコントロールできます。

    温度ごとにファンの回転数を入力して、自分好みのファンカーブも適用可能です。

    CPUファンのほか、各ケースファン(フロントとリア)の回転数も設定できます。

    やかもち

    出荷設定でそこそこ静かだけど、自分で設定をカスタムしてさらなる静音化も可能です。

    「照明」メニューから、LEDライティングをかなり自由に設定できます。

    パーツごとに光り方(パターン)、LEDの明るさ、点灯する速度(周期)まで細かく設定できます。

    すべてのLEDライティングをオフにして「消灯」も可能です。

    デバイス情報を表示する画面です。

    ソフトウェアの状況にある「システムアップデート」から、利用できるアップデートを確認できます。BIOSアップデートもここから可能です。

    右上にある「サポート」タブから、メーカー保証を確認できます。保証期間は残り14ヶ月と表示されています。

    Lenovo製品のメーカー保証は個人ではなく、パソコン本体に紐づけられているため、個人情報や購入明細を必要としません。何も個人情報を入れていないのに、保証期間がきちんと表示され機能する仕様です。

    サポート画面から、Lenovo純正の保守パーツの購入も可能です。

    ただし、保守パーツの単品価格は見ての通りボッタクリ価格です。実際に買った人はほとんどいないと思います。

    「Nahimic」オーディオ画面で、5.1 chバーチャルサラウンド機能やオーディオイコライザーの設定ができます。

    購入特典もチェックできます。今回買ったLegion Tower 5 Gen 8(AMD)の場合、Amazon Music Unlimitedが3ヶ月無料(3240円相当)で始められる特典でした。

    「Legion Arena」アプリは、ゲーミングPCにインストールされたゲームソフトを自動で認識して、一覧にまとめて表示するゲームランチャーです。

    Steamを使っているゲーマーならほとんど出番がなく、使いどころが思いつかないアプリです。削除してしまっていいように思います。

    Legion Tower 5 Gen 8(AMD)のストレージ性能

    ストレージ詳細ベンチマーク
    SSD

    「Legion Tower 5 Gen 8(AMD)」に入ってる標準ストレージは容量1 TB(1024 GB)のNVMe SSDです。

    SSDの型番は「SK Hynix HFS001TEJ9X102N」、SK Hynixが製造する3D TLC NAND搭載のハイエンドNVMe SSDです。市販モデルだと「SK Hynix Platinum P41」に相当します。

    割安価格のゲーミングPCに・・・ずいぶんと豪華なNVMe SSDを搭載していて衝撃です。

    ベンチマーク結果は読み込みが約7360 MB/s、書き込みは約6000 MB/sを叩き出し、一般的なSATA SSDより10~14倍も高速なNVMe SSDです。

    Legion Tower 5 Gen 8 AMD (RTX 4070)をレビュー(マザーボード)

    M.2スロットはあと2つ空きがあります。

    容量が不足してきたら、自分でM.2 SSD(NVMe SSD)を買ってきてM.2スロットに挿し込むだけで容量を増やせます。

    おすすめなSSDを解説【7選】

    やかもち

    メーカーでカスタマイズすると料金がかなり割高です。もっと容量が欲しい人はSSDを別に買ってきてセルフ増設を推奨します。

    Legion Tower 5 Gen 8(AMD)の温度とエアフロー

    Legion Tower 5 Gen 8 AMD (RTX 4070)のエアフロー設計について

    Legion Tower 5 Gen 8(AMD)のエアフロー設計をわかりやすく写真に書き込んでみた。

    フロントパネルの吸気用スリットから、2つのケースファンで外気をケース内部へ取り込み、リアパネルのケースファンとケース上部の排気用スリットから熱を逃がす流れです。

    ゲーミングPCで定番のシンプルで一方通行なエアフローが構築されています。

    Legion Tower 5 Gen 8 AMD (RTX 4070)のパーツの温度

    30分間ゲームを起動したまま放置すると、CPUの温度が50℃前後、グラフィックボードの温度は68℃前後で飽和(温度上昇の停止)を確認できます。

    温度による性能低下(サーマルスロットリング)も特に発生せず、とても安定した動作です。最初から取付済みのケースファンで十分なエアフローを得られています。

    サーモグラフィーカメラ
    各パーツに異常な発熱がないか
    Legion Tower 5 Gen 8 AMD (RTX 4070)のパーツの温度
    マザーボード周辺
    (45℃前後:異常なし)
    Legion Tower 5 Gen 8 AMD (RTX 4070)のパーツの温度
    グラフィックボード
    (70℃前後:異常なし)
    Legion Tower 5 Gen 8 AMD (RTX 4070)のパーツの温度
    電源ユニット内部
    (70℃前後:異常なし)

    長時間のストレステスト完了後に、ケースを開けてサーモグラフィーカメラでPCパーツの表面温度をチェックします。

    マザーボード周辺は大きなヒートシンクとエアフローの効果で、ゲーミング程度の負荷では温度が上昇しづらいです。グラフィックボード本体も特に異常な発熱は見られません。

    電源ユニット内部の温度も普通、もっとも熱いエリアで70℃で特に異常なし。

    動作温度をチェック

    CPU温度をテスト
    (気温:22.5℃)
    Legion Tower 5 Gen 8 AMD (RTX 4070)のCPU温度
    レンダリング中
    (CR23ベンチマーク)
    ゲームプレイ中
    (3DMark Speed Way)
    最大:80℃
    平均:79℃
    最大:79℃
    平均:50℃

    CPUベンチマーク中のCPU温度は平均79℃(最大80℃)で、ゲームプレイ中だと平均50℃(最大79℃)でした。

    Legion Tower 5 Gen 8(AMD)に搭載されたRyzen 7 7700Xは、高負荷時に100 W前後まで消費電力が上昇します。100 W程度しか熱が出ないため、付属品の「120 mmサイドフロー型空冷クーラー」で問題なく冷やし切れます。

    グラフィックボードの温度をテスト
    (気温:22.5℃)
    Legion Tower 5 Gen 8 AMD (RTX 4070)のグラフィックボードの温度
    ゲームプレイ中
    (3DMark Speed Way)
    最大:70.5℃
    平均:68℃

    3DMark Speed Wayベンチマーク中のグラボの温度は平均68℃(最大70.5℃)です。

    厚み51 mmのやや分厚いボード設計に、90 mm径デュアルファンを搭載しているだけあり、(比較的)コンパクトなサイズでなかなかの冷却性能を出せています。

    静音性能を騒音計で検証

    動作音(騒音)をテスト
    (本体から50 cmの距離で測定)
    Legion Tower 5 Gen 8 AMD (RTX 4070)の動作音(騒音)を測定
    シャットダウン
    (電源オフ時)
    インターネット
    (Youtubeを表示)
    ゲームプレイ中
    (FF14:黄金レガシー)
    31.2 dB34.0 dB36.4 dB

    校正済みのデジタル騒音メーターを使って「Legion Tower 5 Gen 8(AMD)」の動作音(騒音レベル)を、シーン別に測定しました。それぞれの結果は中央値です。

    動作音の比較(ゲーム中)

    • M75s Small Gen232.7 dB
    • Legion Tower 5i Gen 835.1 dB
    • Legion T5 Gen 8 AMD36.4 dB
    • Legion T550i36.9 dB
    • M75q-1 Tiny37.1 dB
    • IdeaCentre T540 G38.0 dB
    • G-Tune HM38.0 dB
    • G-Tune PM38.1 dB
    • ガレリアRM5R38.6 dB
    • M75q Tiny Gen238.8 dB
    • HP Victus 15L42.8 dB
    • ガレリアZA9R43.0 dB
    • G-GEAR by MSI43.3 dB
    • M75q Tiny Gen244.8 dB
    • LEVEL M-Class44.8 dB
    • ガレリアRJ545.0 dB
    • LEVEL∞46.6 dB
    • Legion Y54049.9 dB

    騒音値の目安と評価

    他のLegion製品と同じく、Legion Tower 5 Gen 8(AMD)の静音性もまた優秀ゲーム時の騒音値が36.4 dB前後で、「やや静か」に分類される動作音です。

    Lenovoは静音性に優れたゲーミングPCを低コストで作る技術に長けています。比較グラフのうち、グラボを搭載するパソコンで上位3つすべてがLenovo製です。

    しいて言えば、低負荷時(オフィスワークやYoutubeなど)でもケースファンがちょっと回っていて、動作音が静まり切らないです。気になる方は「Lenovo Vantage」アプリから、ファンの回転数を好きに設定すると良いでしょう。

    やかもち

    こうして騒音値を並べると、メーカーごとの思想が見えてきて面白いです。Lenovoは出荷設定の時点で静音性にこだわるようです。

    消費電力をコンセント経由で測定

    消費電力をテスト
    (コンセント経由の消費電力)
    Legion Tower 5 Gen 8 AMD (RTX 4070)の消費電力を測定
    アイドル時
    (何もしていない)
    CPUベンチ
    (Cinebench R23)
    ゲーミング
    (3DMark Speed Way)
    62 W158 W268 W

    Legion Tower 5 Gen 8(AMD)は性能の割に省エネなゲーミングPCです。

    CPUベンチマーク中でピーク時に180 W前後、長時間で158 W前後です。グラボに負荷がかかるゲーミング時で268 W前後にとどまり、ピーク時ですら300 Wを少し超える程度。

    標準搭載の容量500 W電源で安心して運用できます。1ヶ月あたりの電気代【目安を計算】

    まとめ:割安価格なのにライバル製品より高い完成度

    「Legion Tower 5 Gen 8(AMD)」の微妙なとこ

    • アイドル時の動作音
    • 在庫が切れると納期が極めて不安定
    • メーカーカスタマイズ不可
      (即納モデルのみ)

    「Legion Tower 5 Gen 8(AMD)」の良いところ

    • PCケースのデザインがいい
    • メンテナンス性が高い設計
    • 汎用パーツ多めで交換しやすい
    • 優れた冷却性能
    • 余裕のフルHDゲーミング
    • WQHDゲーミングも快適
    • 4Kゲーミングも可能
      (NVIDIA DLSS有効時)
    • 写真編集やAIイラストも快適
    • 動作音が静か(ゲーム時)
    • 標準でWi-Fi 6E対応(最大2.4 Gbps)
    • 低遅延な2.5G LANポート
    • USB 5~10 Gbpsポートが多め
    • 充実した付属品(ケーブル類)
    • 「Lenovo Vantage」アプリが便利
    • パーツの増設・交換は保証に影響しない
      (うっかり壊した場合を除く)
    • コストパフォーマンスが非常に高い
    • 納期が速い(1~2営業日で出荷)
    • 標準14ヶ月保証

    ちもろぐのゲーミングPCレビュー史上、めったにない高い完成度のゲーミングPCを発掘できた気がします。

    省エネでパワフルなゲーミング性能を誇る「Ryzen 7 7700X(8コア)」に、省エネでRTX 3080に迫る性能を持つ「RTX 4070 12GB」を組み合わせて、万人ウケのいい性能に仕上げました。

    フルHD~WQHDゲーミングが快適にでき、NVIDIA DLSS対応なら4Kゲーミングもそこそこプレイできる性能です。DDR5メモリ搭載でクリエイティブ性能も優秀でした。

    一般的に19万円台のゲーミングPCでは、Ryzen 7 5700XかRyzen 5 7500Fの組み合わせが多いです。

    そんな中、LenovoはRyzen 7 7700X(8コア)を搭載。さらにトレンドな仕様(Wi-Fi 6Eや2.5G LAN)を加えて、4本のメモリスロットや3本のM.2スロットなど十分なパーツ拡張性まで付けています。

    現時点で、文句なしのコストパフォーマンスです。

    「Legion Tower 5 Gen 8」公式サイト

    PCパーツにまったく詳しくないし興味もないPCゲーマーにおすすめです。

    なお、PCパーツの増設経験がある中級者にとってもLegion Tower 5 Gen 8は魅力的です。市販モデルと同じ汎用規格のパーツで揃えられており、市販のPCパーツへかんたんに交換できます。

    予算19~20万円でゲーミングPCを買うなら、今回レビューした「Legion Tower 5 Gen 8(AMD)」がほぼ一強の状況に見えます。

    あえて難癖をつけるとすれば「ブランド感」でしょうか。某国内BTOのように有名ストリーマーやVtuberとまったくコラボしてないので、いわゆるブランド感を求める方には物足りないかもしれません。

    以上「Legion Tower 5 Gen 8(AMD)レビュー:予算20万円ゲーミングPCの答えがコレ」でした。

    やかもち

    さすが世界最大手のBTOメーカー、圧倒的な量産能力で価格を捻じ曲げてます。国内メーカーが広告合戦に走るわけです。マトモに取り合ったら勝てない。

    LenovoのゲーミングPC【レビューまとめ】

    Legion Tower 5i Gen 8レビュー:過去もっとも「静かな」ゲーミングPCが低価格で

    IdeaCentre Mini Gen 8レビュー:電源ユニット内蔵でスッキリ設計

    IdeaCentre 5i Gen 8レビュー:グラボ増設で格安ゲーミングが完成

    RTX 4000シリーズ搭載ゲーミングPC【解説】

    「RTX 4060」搭載でおすすめなゲーミングPC:4選

    「RTX 4060 Ti」搭載でおすすめなゲーミングPC:4選

    「RTX 4070」搭載でおすすめなゲーミングPC:4選

    「RTX 4070 Ti」搭載でおすすめなゲーミングPC:4選

    「RTX 4090」搭載でおすすめなゲーミングPC:4選

    シェア!

    ゲーミングPCの最新記事