R6施行の産業分類がCSV形式で欲しい

これは何?

現行の日本標準産業分類はR6施行版だが、総務省のサイトにH25改定版のときはあった「分類項目名(CSVファイル)」が見当たらないので、加工して作ろう、という話。

産業分類

日本標準産業分類(平成25年10月改定)

総務省

総務省|統計基準等|日本標準産業分類(平成25年10月改定)

「分類項目名(CSVファイル)※コードは、大分類・中分類・小分類・細分類に独立して付与しています。」としてファイルが公開されている。

e-Stat

日本標準産業分類(平成25年[2013年]10月改定) | 統計分類・用語の検索 | 政府統計の総合窓口

CSVファイルがダウンロード可能ですが、RDBに取り込むには微妙な形式です。

e-Statダウンロードファイル

日本標準産業分類(令和6年4月施行)

総務省

総務省|統計基準等|日本標準産業分類(令和5年7月告示)

いまのところ、「分類項目名(CSVファイル)」の公開はなさそうです。

e-Stat

日本標準産業分類(令和5年[2023年]7月改定) | 統計分類・用語の検索 | 政府統計の総合窓口

H25改定と同じ。

変換手順

  1. e-Statで「すべて表示」を指定。
  2. 下の方の「ダウンロード」で「CSV形式(UTF-8(BOM無し))」を指定して、ダウンロード。「FEK_download.csv」を適当なフォルダに保存。
  3. 同じフォルダに以下のPowerShellスクリプトを作成して実行し、変換する。
# 2行目をヘッダとして、4行目からをデータとして、一時ファイルに書き出し
Get-Content .\FEK_download.csv -Encoding UTF8|Select-Object -Skip 1|Select-Object -First 1|Set-Content .\temp.csv -Encoding UTF8
Get-Content .\FEK_download.csv -Encoding UTF8|Select-Object -Skip 3|Add-Content .\temp.csv -Encoding UTF8

# 一時ファイルをCSVとして読み込み
$data = Import-Csv .\temp.csv -Encoding UTF8

# データ確認
#$data|Out-GridView

$dai = ''
$result = @()

$data|%{
    # 分類コードの長さで、大分類、中分類、小分類、細分類を分岐
    if($_.分類コード.Length -eq 1){
        $dai = $_.分類コード
        $chu = '00'
        $sho = '000'
        $sai = '0000'
    }elseif($_.分類コード.Length -eq 2){
        $chu = $_.分類コード
        $sho = '000'
        $sai = '0000'
    }elseif($_.分類コード.Length -eq 3){
        $sho = $_.分類コード
        $sai = '0000'
    }elseif($_.分類コード.Length -eq 4){
        $sai = $_.分類コード
    }
    $koumoku = $_.項目名
    #出力用のオブジェクト作成
    $row = [PSCustomObject]@{
        大分類コード = $dai
        中分類コード = $chu
        小分類コード = $sho
        細分類コード = $sai
        項目名       = $koumoku
    }
    $result += $row
}

#$result|Out-GridView
#$result|Format-Table
$result|Export-Csv .\Sanbun_R6.csv -Encoding utf8 -NoTypeInformation

# H25改定の「000420038.csv」と比較する場合に、ダブルクォーテーションを除く処理
#(Get-Content .\Sanbun_H25.csv)|%{
#    $_ -replace '"',''
#}|Set-Content .\Sanbun_H25.csv

変換結果は以下のようになります。

変換結果

一人用gitコマンドメモ

これは何?

自分のユースケースに限定した、gitとgithubの使い方メモ。masterブランチしか使わない。

  • githubの利用は、ほぼプライベートレポジトリのみ。

  • gitを業務で使う場合は、ローカルレポジトリをファイルサーバ上のリモートレポジトリに退避するだけ。

状態遷移図

状態遷移図

リンク先の「図8 ファイルの状態の流れ」を整形。

git-scm.com

GitHubの利用

レポジトリを新規に作成する場合

githubでレポジトリを作成

② ローカルにクローン(github→local)

git clone <url>

③ ファイルのステージング

git add <file>

④ コミット

git commit -m "<message>"

⑤ originへのプッシュ(local→github

git push origin master

originの更新履歴を置き換えてしまうらしいので、実行には賛否あり。 ここでは、レポジトリの個人利用を想定しているので、気にせず実行。

github上で更新した場合は、ローカルにプル(github→local)

git pull origin master

ローカル環境でのGit利用

ローカルPCでの作業

① 対象フォルダに移動

cd <targeet>

② レポジトリ初期化

git init

隠しフォルダ「.git」が作成される。最近のプロジェクトテンプレートには含まれている気もする。

③ ファイルのステージング

git add <file>

④ コミット

git commit -m "<message>"

リモートフォルダでの作業

① ファイルサーバ上の対象フォルダで、PowerShellなどを開く

② クローン(local→file server)

git clone <path>

③ プル(local→file server)

git pull

「.git/config」に origin の情報が登録されているので、pull だけでよい。

※ 先にリモートフォルダで「--bare」オプションで管理情報のみのレポジトリを作成する方法もあるが、自分のユースケースでは、管理対象のプロジェクトの雛形が先に作られていることが多いので、リモートフォルダの作成を後にした。

共通

  • 初期設定
git config --global user.name "taro"
git config --global user.email "taro@example.co.jp"

レポジトリごとに設定を変える場合は「--local」で。

  • 設定確認
git config -l
  • レポジトリの状況
git status
  • レポジトリの履歴
git log
  • 最終更新での対象ファイルの確認
git diff --name-only HEAD^
  • ファイルを元に戻す
git restore <file>

[参考]

PostgreSQL を使い始める前に知っておきたかったことひととおり

他のRDBを使ったことがある前提で。

また、SQL Server でいうところのsa(Server Administrator)である、postgres(スーパーユーザー)で設定を行ってしまっているので、その点は留意されたい。

バージョンとサポート期間

まず、バージョン管理ポリシーを押さえます。これから使うなら、少なくとも13以降ですね。

PostgreSQL グローバル開発グループは、最初のリリース後 5 年間、メジャー バージョンをサポートします。その後、最終マイナー バージョンがリリースされ、ソフトウェアはサポートされなくなります (サポート終了)。

バージョン 現在のマイナー サポート 最初のリリース 最終リリース
16 16.3 はい 2023年9月14日 2028年11月9日
15 15.7 はい 2022年10月13日 2027年11月11日
14 14.12 はい 2021年9月30日 2026年11月12日
13 13.15 はい 2020年9月24日 2025年11月13日
12 12.19 はい 2019年10月3日 2024年11月14日

PostgreSQL: Versioning Policy

ドキュメントが充実しているRHELを例に利用可能なバージョンを見てみます。

RHEL 9.0 は、この Application Stream の初期バージョンとして PostgreSQL 13 を提供します。これは、RPM パッケージとして簡単にインストールできます。

RHEL 9 のマイナーリリースで、ライフサイクルがより短い追加の PostgreSQL バージョンが、モジュールとして提供されます。

データベースサーバーの設定および使用 | Red Hat Product Documentation

また、PostgeSQLのサイトで、各プラットフォームでのインストール方法が参照できます。

PostgreSQL: Downloads

インストール

ここでは、AlmaLinux 9.4 でのバイナリからのセットアップを行うことにします。

パッケージのインストール

PostgreSQL 13の場合、パッケージに含まれているので、そのまま、インストールできます。

dnf install postgresql-server

PostgreSQL 15または16の場合、postgresql モジュールから、バージョンとプロファイルを指定するそうです。

dnf module install postgresql:16/server

データベースクラスタの初期化

postgresql-setup --initdb

デフォルトで/var/lib/pgsql/dataがデータ格納用ディレクトリとして、初期化されます。

このディレクトリは、ここで作成されたUnixユーザpostgresUnixグループpostgresがOwnerとなります。

サービスの開始と自動起動の設定

systemctl start postgresql.service
systemctl enable postgresql.service

設定ファイル

最低限、知っておく必要があるファイルは2つです。

  • postgresql.conf:全般の設定
  • pg_hba.conf:認証関係の設定

ファイルは、locate等で探してもよいですが、基本的にデータ格納ディレクトリの直下(/var/lib/pgsql/data/)にあるはずです。

設定を反映するには、サービスの再起動が必要になります。

systemctl restart postgresql.service

postgresql.conf のうち、接続関係のここだけは確認しておく

パラメータ 説明
listen_addresses クライアント接続を許可するTCP/IPアドレスのリスト。デフォルトはlocalhot
port listenするポート。デフォルトは5432。
max_connections 同時接続する最大数。デフォルトは100。

pg_hba.conf は完全に理解しなければならない

クライアント認証はデータベースクラスタのデータディレクトリ内の、伝統的にpg_hba.confという名前の設定ファイルで管理されています (HBAとは、host-based authentication: ホストベース認証の略です)。

以下は、PostgreSQL 13 の初期状態から、よくある編集を行った状態です。上から走査して、一致したものを用いられます。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
-host    all             all             127.0.0.1/32            ident
+host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
-host    all             all             ::1/128                 ident
+host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            ident
host    replication     all             ::1/128                 ident
項目 説明
TYPE local: Unixドメインソケット。ローカル接続のみ可能。
host: TCP/IP接続。ホスト接続。
DATABASE 対応するデータベース名を指定。allはすべて。
USER 対応するデータベースユーザ名を指定。 allはすべて。
ADDRESS クライアントPCのアドレス。
METHOD このレコードに合致する認証方式を指定。

主なMETHODは以下のとおりです。

METHOD 説明
peer クライアントのオペレーティングシステムにおけるユーザ名をオペレーティングシステムから取得し、ユーザ名が要求されたデータベースユーザ名と一致するか検査します。 これはローカル接続の時にのみ使用可能です。
ident クライアントのオペレーティングシステムにおけるユーザ名をクライアント上のidentサーバに尋ねてユーザ名が要求されたデータベースユーザ名と一致するか検査します。 ident認証は、TCP/IP接続でのみ使用可能です。
md5 ユーザのパスワードを検証するために、SCRAM-SHA-256あるいはMD5認証を実行します。
scram-sha-256 ユーザのパスワードを検証するためにSCRAM-SHA-256認証を実行します。

基本的には、以下の段取りを踏むことが多いでしょう。

  1. pg_hba.conf を編集して、host接続のlocalhostからの認証方式を ident から md5 または scram-sha-256 に修正。
  2. postgresを再起動systemctl restart postgresql.service
  3. peer接続でログインして、データベースユーザ「postgres」のパスワード設定。
  4. psql でホスト接続可能になる。

peer接続して、パスワード設定する方法は以下のとおりです。ここで指定している postgres はUnixユーザです。

sudo -u postgres psql
\password
\quit

パスワード設定後は、ホスト接続できるようになります。ここで指定している postgres は データベースユーザです。区別できるように-Uが大文字になっているのでしょうか。

psql -h localhost -U postgres

昨今の環境では、IPv4IPv6の両方が有効になっており、IPv6が優先して使われる場合があります。接続先をlocalhostにして、下記のエラーになる場合は、identが指定されている「::1」(IPv6)に繋ごうとして失敗しています。

psql: error: FATAL:  Ident authentication failed for user "postgres"

この問題の対応は、IPv4で接続するようにpsql -h 127.0.0.1 -U postgresとするか、pg_hba.conf で、IPv4IPv6のMETHODを揃えることです。

21.1. pg_hba.confファイル

PostgreSQLのインストールで利用可能になるツール群

インストールで利用可能になるツール群のうち、よく使うものは以下のとおりです。

ツール 説明
psql PostgreSQLの対話的ターミナル
createdb 新しいPostgreSQLデータベースを作成する
dropdb PostgreSQLデータベースを削除する
pg_dump PostgreSQLデータベースをスクリプトファイルまたは他のアーカイブファイルへ抽出する

PostgreSQLクライアントアプリケーション

psqlとメタコマンド

psql 接続時のメタコマンドでよく使うものは以下のとおりです。

コマンド 説明
\q psqlの終了
\c [database] データベースへの接続
\conninfo 接続情報の表示
\l データベース一覧の表示
\dt テーブル一覧の表示
\d [table] テーブル定義の表示
\du ユーザの表示
\copy [table] {from|to} [filename] using delimiters 'csv' header ヘッダ行のあるCSVファイルの入出力
\i [filename] ファイルを読み取って実行
\? メタコマンドのヘルプ

PostgreSQL: Documentation: 16: psql

バックアップとリストア

バックアップ

容量的に問題なければ、SQLスクリプトを取得する論理バックアップが手軽です。 論理バックアップではバックアップの要件を満たせないようであれば(未使用時間帯にバックアップが終わらない等)、物理バックアップを検討します。 データベースを指定してのバックアップは、下記のようになります。

pg_dump -h localhost -U postgres -d [databse] -f [filename]

みんな標準入出力が好きなのか、下記のようにリダイレクトで説明されていることが多い印象です。

pg_dump -h localhost -U postgres -d [databse] > [filename]

4.5. PostgreSQL データのバックアップ | Red Hat Product Documentation

リストア

バックアップで取得したファイルがあれば、以下の手順で、別サーバに復元できます。

createdb -h localhost -U postgres [database]
psql -h localhost -U postgres -d [database] -f [filename]

認証情報の保存

ホームディレクトリに .pgpassファイルを作成し、以下の内容を登録しておくことで、psqlpg_dump使用時に対話的なパスワード入力が不要になります。複数行登録可能です。

hostname:port:database:username:password

自分のみがアクセスできるようにするため、以下のとおりownerのみにReadWriteを設定します。

chmod 0600 ~/.pgpass

34.16. パスワードファイル

その他

データベース一覧

メタコマンドの\lで、データベースの一覧が表示でき、OwnerやEncodingが確認できます。

Name 説明
postgres システムデータベース。SQL Server での master に相当?。
template0 テンプレートデータベース。template0のテンプレート。
template1 テンプレートデータベース。ユーザーデータベースのテンプレート。SQL Server での model に相当?

第23章 データベース管理

データベースオブジェクト

データベース管理下のオブジェクトの説明も読んでおいた方がよいでしょう。

ロール、データベース、テーブル空間名のような少数のオブジェクトはクラスタレベルで定義されており、pg_globalテーブル空間に格納されています。 クラスタの中には複数のデータベースがあり、互いに分離されているもののクラスタレベルのオブジェクトにはアクセスできます。 各データベースの中には複数のスキーマがあり、スキーマはテーブルや関数などのオブジェクトを含みます。 したがって階層の全体像は、クラスタ、データベース、スキーマ、テーブル(や関数などの何らかのオブジェクト)となります。

SQL Serverだとオブジェクト階層は、インスタンス.データベース.スキーマ.オブジェクト となっていました。

  • デフォルトスキマーは public です。SQL Server のデフォルトスキーマはdboでした。
  • オブジェクト名は必要に応じてダブクォーテーションで括ります。SQL Server ではブラケット(角かっこ)で括っていました。
  • 1つの接続で複数のデータベースにアクセスすることはできません。 SQL Server では、権限が許せば、複数のデータベースに同時にアクセス可能でした。

23.1. 概要

ロールとユーザー

メタコマンドの\duで、ロールの一覧が確認できます。

PostgreSQLは、ロールという概念を使用してデータベースへの接続承認を管理します。 ロールは、その設定方法に応じて、データベースユーザ、またはデータベースユーザのグループとみなすことができます。

ユーザーとロールは、システムテーブルから参照できます。

select * from pg_roles;
select * from pg_user;

第22章 データベースロール

ログ

一度は、ログの設定を確認しておきましょう。

 sudo cat /var/lib/pgsql/data/postgresql.conf|grep log

logging_collector = onとなっていることが、確認できます。

このパラメータはlogging collectorを有効にします。 それはstderrに送られたログメッセージを捕捉し、ログファイルにリダイレクトするバックグラウンドプロセスです。 この手法はsyslogへのログよりもしばしば有用です。 メッセージの一部の種類がsyslogでは出力されない可能性があるためです。

以下でログの一覧が確認できます。

 sudo ls /var/lib/pgsql/data/log/

PostgreSQL 13だと曜日ごとのファイル名なので、木曜日だと以下のとおりです。

sudo cat /var/lib/pgsql/data/log/postgresql-Thu.log

20.8. エラー報告とログ取得

公式文書

HTML版、PDF版、EPUB版とそろっているのがありがたいです。なお、PostgreSQL 16 のPDF版は長大で、3447ページとなっています。

日本PostgreSQLユーザ会: PostgreSQL 16.0 付属ドキュメント

WSLのAlmaLinux9でLaravel11のサンプルプロジェクトを起動するまで

WSLのAlmaLinux9でLaravel11のサンプルプロジェクトを起動するまで

前提

  • Windows10 Pro(x64)
  • WSL2インストール済み
  • MicrosoftStoreからAlmaLinux9インストール済み
  • WSLは初回起動してユーザー作成済み

Docker と Laravel Sail は使いません。またこの環境は SELinux が有効でなく、Firewall も動いていませんので、ご留意ください。 WSLについては、よければ下記を参照ください。

pipin68k.hatenablog.com

この記事は、以下の焼き直しです。

pipin68k.hatenablog.com

AlmaLinuxの初期状態確認

まずはOSを確認する。インストール時期で異なると思われるが、ここでは、9.3 であることが確認できる。redhat-releaseとsystem-releaseは、almalinux-release のリンボリックリンクになっている。

cat /etc/almalinux-release
AlmaLinux release 9.3 (Shamrock Pampas Cat)

パッケージは minimal となっているのか、hostname,ip addrといった基本的なコマンドが使えない。また、systemd が有効になっていない。ping が動作しないのは、パッケージ不足ではなく、ケイパビリティかカーネルパラメータの変更によるもの。

hostname -> NG
ip addr -> NG
whoami -> OK
ping www.google.com -> NG
sudo systemctl -> NG
dnf list --installed -> OK

systemd 有効化

ゲストOSの動作を制御する設定ファイル(/etc/wsl.conf)を作成し、WSLを再起動してこれを有効にする。

[boot]
systemd=true

コンソールからshutdown -h nowは通らないので、PowerShellからシャットダウンする。ターミナル等からアクセスすれば自動的に起動する。再起動後はsystemctlが利用可能になっている。

wsl --shutdown

参考

基本的なコマンドのインストール

locateは好みで。findで良ければ不要。

sudo dnf install hostname iproute
sudo dnf install zip unzip
sudo dnf install mlocate
sudo dnf update

ping を実行できるようにするには、ICMPのため raw socket を開く許可を与えるか、ping_group_range を変更するか、のどちらかが必要になる。詳細はリンク先を参照のこと。

sudo setcap 'cap_net_raw+p' /bin/ping
or
sudo sysctl -w net.ipv4.ping_group_range="0 65535"
hostname -> OK
ip addr -> OK
sudo systemctl -> OK
ping www.google.com -> OK

参考

Apache2のインストール

インストールして、起動して、サービス登録する。

sudo dnf install httpd
sudo systemctl start httpd
sudo systemctl enable httpd

Windows側から「http://localhost 」にアクセスして、AlmaLinuxのテストページが表示されることを確認する。

Apache Test Page

参考

PHP8.2のインストール

インストール可能なPHPを確認する。

dnf module list php
AlmaLinux 9 - AppStream
Name            Stream           Profiles                             Summary
php             8.1              common [d], devel, minimal           PHP scripting language
php             8.2              common [d], devel, minimal           PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Laravel11の対応はPHP8.2~8.3なので、レポジトリの追加なしでインストールできる。

sudo dnf module install php:8.2

Laravel11に必要なモジュールをインストールする。公式サイトに記載のサーバ要件はこれで満たせるはず。

sudo dnf install php-pdo

Apacheと同様にFastCGIの起動とサービス登録をしておく。Apacheを再起動する。パッケージは、phpと同時にインストールされている。

sudo systemctl start php-fpm
sudo systemctl enable php-fpm
sudo systemctl restart httpd

httpdphp-fpm サービスが「running」となっていることを確認する。

systemctl list-units --type=service

httpd.conf を探して、DocumentRootを確認する。

sudo updatedb
locate httpd.conf
sudo cat /etc/httpd/conf/httpd.conf |grep DocumentRoot

PHP情報確認用ページ(/var/www/html/info.php)を作成する。

<?php
  phpinfo();

Windows側から「http://localhost/info.php 」にアクセスして、PHPが有効なことを確認する。

参考

PostgerSQL 16 のインストール

今回は、PostgerSQL を使いたいのでインストールする。 インストール後は、データベースを初期化し、サービスとして起動しておく。クライアントの php-pgsql もインストールする。

# Install the repository RPM:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Disable the built-in PostgreSQL module:
sudo dnf -qy module disable postgresql

# Install PostgreSQL:
sudo dnf install -y postgresql16-server

# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16
sudo dnf install php-pgsql

認証に関する設定は、pg_hba.conf ファイルで行う。

sudo locate pg_hba.conf
sudo cat /var/lib/pgsql/16/data/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
#local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

初期状態ではローカルからのpeer認証しかできないので、ローカル接続して、パスワードを設定する。

sudo -u postgres psql
\password
\quit

パスワード設定後は、ホスト接続して、テスト用データベースを作成する。

psql -h localhost -U postgres
create database laravel;
\list
\quit

参考

phAdmin4のインストール

PostgreSQLの管理ツールもインストールしておく。

sudo rpm -i https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-2-1.noarch.rpm

Desktopモードはインストールせず、Webモードのみをインストールする。セットアップスクリプト実行時に、ログインIDとなるメールアドレスとパスワードを登録する。

# Install for web mode only.
sudo yum install pgadmin4-web

sudo /usr/pgadmin4/bin/setup-web.sh

http://localhost/pgadmin4 にアクセスして、ログインすると管理が可能になっている。設定(/etc/httpd/conf.d/pgadmin4.conf)は以下のとおり、ローカル接続からのアクセスのみ許可されているので、必要に応じて、特定のIPアドレスを追加しておく。

LoadModule wsgi_module modules/mod_wsgi.so
WSGIDaemonProcess pgadmin processes=1 threads=25 python-home=/usr/pgadmin4/venv
WSGIScriptAlias /pgadmin4 /usr/pgadmin4/web/pgAdmin4.wsgi

<Directory /usr/pgadmin4/web/>
        WSGIProcessGroup pgadmin
        WSGIApplicationGroup %{GLOBAL}
        <IfModule mod_authz_core.c>
                # Apache 2.4
                Require all granted
        </IfModule>
        <IfModule !mod_authz_core.c>
                # Apache 2.2
                Order Deny,Allow
                Deny from All
                Allow from 127.0.0.1
                Allow from ::1
+                Allow from AAA.BBB.CCC.DDD
        </IfModule>
</Directory>

参考

Composerのインストール

公式サイトの案内どおり。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
composer -v # Composer version 2.7.7 2024-06-10 22:11:12

参考

Laravelプロジェクト作成

composer で、Laravel プロジェクトを作成する。

composer create-project laravel/laravel sample-app
cd sample-app
php artisan -V # Laravel Framework 11.15.0

個別環境設定ファイル(.env)で、DBにpgsqlを使うように変更。

-DB_CONNECTION=sqlite
-# DB_HOST=127.0.0.1
-# DB_PORT=3306
-# DB_DATABASE=laravel
-# DB_USERNAME=root
-# DB_PASSWORD=
+DB_CONNECTION=pgsql
+DB_HOST=127.0.0.1
+DB_PORT=5432
+DB_DATABASE=laravel
+DB_USERNAME=postgres
+DB_PASSWORD=postgres

migrateを実行すると、.envで設定したlaravelデータベースにテーブルが作成される。

php artisan migrate
php artisan serve

Windows側から「http://localhost:8000 」にアクセスして、サンプルプロジェクトが表示されることを確認する。

参考

node.js のインストール

アセットのコンパイルに必要なのでインストールしておく。npmもインストールされる。

dnf module list nodejs
Name           Stream         Profiles                                      Summary
nodejs         18             common [d], development, minimal, s2i         Javascript runtime
nodejs         20             common [d], development, minimal, s2i         Javascript runtime        
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
sudo dnf module install nodejs:20/common
node -v # v20.12.2
npm -v # 10.5.0

npmは他でも使えた方が便利なので、グローバル環境にインストールしておく。

sudo npm install -g npm

上記のあと、プロジェクトのルートフォルダでnpm install することで、package.json を参照して、node関連のパッケージがインストールされる。

cd sample-app
npm install

参考

Starter Kits(Breeze)のインストールと日本語化

ログイン回り一式を提供してくれる Starter Kits があるので、これを導入する。

composer require laravel/breeze --dev
php artisan breeze:install
php artisan migrate

すべて英語表記だが、日本語化パッケージを作ってくれている人がいるので、これを導入する。

composer require askdkc/breezejp --dev
php artisan breezejp

トップページの右上に「Log in」と「Register」が追加されている。クリックで表示される各画面が日本語化されているのが確認できる。

php artisan serve

Laravel Test Page

参考

Intel NUC12 に Windows 11をインストールする

これは何?

  • Intelの7世代NUC(BOXNUC7i5BNH)にWindows10(Retail)をインストールして使っていたが、Windows11を試したくなったので、12世代NUC(NUC12WSHi3)に更新した。セットアップに若干手間取ったので、その記録。
  • というのも、このNUCは、OSの標準ドライバでは、NICが有線も無線も認識されない。
  • USB-LANアダプタを使う方法もあるようだが、手作業でセットアップする方法を調べて実施した。

材料

項目 構成 備考
筐体 NUC12WSHi3 ASUS NUC 12 Pro|NUCs|ASUS 日本
メモリ 32GB  
SSD 2.5インチSSD  
OS Windows 10 Pro(Retail) Ver.1909

前知識

インテルの NUC 7 から NUC 13 システムへの技術および保証サポートは、2024年1月16日付けで ASUS に移行しました。
[ノート PC] 推奨されるドライバーのインストール順序

推奨されるドライバーのインストール順は搭載されている CPU により異なります。お使いの PC に搭載されている CPU をご確認の上、以下を参照してください。

お使いのシステムが Windows* 11 に対応しているかどうかを確認する方法

第 8 世代以降のすべてのインテル® Core™・プロセッサーは、Windows* 11 をサポートしています。

作業方針

BIOS はいつアップデートすればよいですか?

BIOS のアップデートは、新しいBIOSバージョンにて特定の問題を解決できる場合のみ行ってください。全ての BIOS 変更については、ダウンロード・センター 内の BIOS アップデートに付属するリリースノートにて>ご確認いただけます。

  • BIOS設定はデフォルト(NVMe SSDは使わないので、VMD不要)
  • 所持しているWindows10リテール版は古いので、Microsoftから22H2をダウンロードして使う
  • ドライバは手動でインストールする
  • Windows10でデバイスマネージャ上のエラーがなくなってから、Windows11にアップグレードする

準備

  • Windows10の入手(インストール用USBメモリを作成)

Windows 10 のダウンロード

  • 各ドライバの入手

NUC12WSHI3 - サポート

  • インストール順の整理

順序はASUSの「推奨されるドライバーのインストール順」。空欄は定めがないので、上から順にインストールする。ただし、「GNA Scoring Accelerator Driver」は「DriverPackage」なので、「オーディオ」の前にインストールする。「ユーティリティ」はインストールしない。

順序 分類 ソフトウェア ファイル名
1 Driver Package Intel® Serial IO Driver for Windows® 10 64-bit and Windows 11* for Intel® NUC 12 Pro Kits & Mini PCs - NUC12WS SerialIO-Win10_Win11-30.100.2212.4.zip
2 Chipset Intel Chipset Device Software V10.1.19376.8374 for Windows 10 64-bit and Windows 11 Chipset-Win10_Win11-10.1.19376.8374.zip
3 Driver Package Intel Management Engine Consumer Driver for Windows 10 64-bit and Windows 11* for Intel NUC 12 Pro Kits & Mini PCs - NUC12WS ME_Consumer-Win10_Win11-16.1.25.1865.zip
4 Driver Package Intel Rapid Storage Technology Driver V19.5.1.1040 RST_19.5.1.1040.zip
Driver Package Intel GNA Scoring Accelerator Driver for Windows 10/11 for Intel NUC 12 Series GNA-Win10_Win11-3.00.00.1457.zip
5 オーディオ AUD-Win10_Win11-6.0.9437.1_iSST_10.29.00.7767.zip
6 VGA Intel Graphics DCH Driver for Windows 10 & Windows 11 GFX-Win10_Win11-31.0.101.4575.zip
LAN Intel® Ethernet (LAN) Network Connection Driver for Windows 10 64-bit & Windows 11 LAN-Win11-1.1.3.34.zip
無線 Intel Wireless Technology-Based Driver for Windows 10 64-bit & Windows* 11 for Intel NUC Kits & Mini PCs Wireless-Win10_Win11-22.230.0.8.zip
USB USB Type C Power Delivery Controller for Windows 10 64-bit & Windows 11 UCM-WIN11-1.0.10.3.zip
Bluetooth Intel Wireless Bluetooth Driver for Windows 10 64-Bit and Windows 11 for Intel NUC Kits & Mini PCs Bluetooth-Win10_Win11-22.230.0.2.zip
Thunderbolt Intel Thunderbolt Driver v1.41.1340.0 for Windows 10 64-bit TBT-Win10-1.41.1340.0.zip

インストール実施

  1. Windows10を普通にインストール。USBメモリを挿して、F10(to Enter Boot Menu)。
  2. ドライバを順番にインストール。この作業の終了時点で、デバイスマネージャの一覧から警告(エクスクラメーションマーク)は消える。
    • Chipset のインストール後は再起動
    • RST は何故か「プラットフォームが異なります」と表示され、インストールできなかった
    • DNA は管理者権限のPowerShellからバッチファイルを実行
    • オーディオ のインストール後は再起動
    • VGA はカスタムインストールで、ドライバのみをインストール
    • LAN は「infファイル」を右クリックで、インストール
  3. WindowsUpdate を一時停止(設定>更新とセキュリティ>更新を7日間一時停止)。Windows11へアップグレードするので、Windows10でWindowsUpdateする意味はない。
  4. インターネット接続。ライセンス認証に必要。
  5. Windows10のライセンス認証。
  6. Windows11へのアップデート。

    Windows 11 をダウンロードする

  7. WindowsUpdate の再開。

感想

調べてセットアップするのが面倒だったので、今後はBTOで済ませたい。 最初にNICドライバをインストールして、あとは「インテル® ドライバー & サポート・アシスタント」や「WindowsUpdate」に任せてよかったのではないか?という話もある。

セットアップ後に気づいたが、User Guide では「Intel Driver&Support Assistant」と「Manually download」の2つが案内されていた。

参考

Win10/11におけるプロダクトキーの確認

ライセンスの種類とプロダクトキーの確認方法

ライセンスの種類 末尾5桁の確認 25桁(全て)の確認
完全パッケージ製品 (Retail)
バイスにプレインストール (OEM)
商用ライセンス

「可搬性のあるライセンスのプロダクトキーは一部しか確認できない」、「OEMのプロダクトキーは、昔、筐体に貼ってあったCOAのシールと同じ扱いなので、すべて確認できる」ということと思われます。

プロダクトキー末尾5桁の確認方法

PowerShellコマンドプロンプトで。

slmgr /dli

learn.microsoft.com

プロダクトキー25桁(全て)の確認方法

PowerShellで。

Get-WmiObject -query 'select * from SoftwareLicensingService'|select OA3xOriginalProductKey, OA3xOriginalProductKeyDescription

atmarkit.itmedia.co.jp

Windows のプロダクト キーを探す(Microsoft)

Microsoftのプロダクトキーの説明。

Windows 10またはWindows 11のコピーを入手した方法に応じて、ライセンス認証を行うには 25 文字のプロダクト キーまたはデジタル ライセンスが必要です。 デジタル ライセンス (Windows 10 バージョン 1511 のデジタルエンタイトルメントと呼ばれます) は、プロダクト キーを入力する必要のないWindows 10とWindows 11でライセンス認証を行う方法です。 いずれかがないと、デバイスのライセンス認証を行うことはできません。プロダクト キーが記載されている場所は、Windows のコピーを入手した方法によって異なります。

support.microsoft.com

Laravel 10 におけるファイルアップロード

少し詰まったので、メモ。

ルーティング

web.php

Route::post('/data_upload', [UploadController::class, 'upload']);

1ファイル

blade(ビュー)

<form action="/data_upload" method="post" enctype="multipart/form-data">
...
<input id="input_file" type="file" name="uploadfile">

php(コントローラ)

public function upload(Request $request)
{
    $fn = $request->uploadfile->getClientOriginalName();
    $request->uploadfile->storeAs('uploadfiles', $fn);
}

複数ファイル

blade(ビュー)

<form action="/data_upload" method="post" enctype="multipart/form-data">
...
<input id="input_file" type="file" name="uploadfiles[]" multiple>

php(コントローラ)

public function upload(Request $request)
{
    for($i=0;$i<count($request->uploadfiles);$i++){
        $fn = $request->uploadfiles[$i]->getClientOriginalName();
        $request->uploadfiles[$i]->storeAs('uploadfiles', $fn);
    } 
}