🌅

日々のWeb開発でよく使うコマンドを1つの記事に集約する ※具体例付き

2025/01/01に公開

概要

日々のWeb開発でよく使うコマンドを集約する記事となります❗❗❗
よく使うコマンドを1つの記事に集約することで、日々の生産性を向上したいと考えております。
逆に普段あまり使っていないコマンドは追求しておりません。例えばGUIツールでカバーしているコマンドについては追求していないです。

具体的には下記のコマンド集を集約いたします

  1. Dockerコマンド集
  2. AWS CLIコマンド集
  3. Terraformコマンド集
  4. CDKコマンド集
  5. Python/FastAPI
    1. uv
    2. Alembic
    3. Python
  6. PHP/Laravel
    1. Laravel
    2. PHP
  7. Linuxコマンド集
  8. その他コマンド集
    1. Zenn CLI
    2. Qiita CLI

また、自身のスキルを証明する一つの材料として執筆しております

1. Dockerコマンド集

Dockerコンテナを起動する

概要
docker-compose.ymlの中に定義されているコンテナを起動するコマンド

構文
docker-compose up -d
具体例
$ docker-compose up -d
【結果】
Starting db ... done
Starting python_app ... done

Dockerコンテナを起動する && ターミナルにコンテナのログを出力する

概要
コンテナ起動 && ターミナルにコンテナのログを出力するを同時に行うコマンド

ユースケース

  • ターミナル上でコンテナのログを確認したい時
構文
 docker-compose up
具体例
$ docker-compose up
【結果】
db   | 2024-12-30 11:33:59.979 UTC [1] LOG:  starting PostgreSQL 15.4 on aarch64-unknown-linux-musl, compiled by gcc (Alpine 12.2.1_git20220924-r10) 12.2.1 20220924, 64-bit

Dockerコンテナ起動する && コンテナをビルドする

概要
コンテナビルド && コンテナ起動を同時に行うコマンド

ユースケース

  • docker-compose.ymlやDockerfileの変更をコンテナに反映したい時
  • コンテナの中に新しくライブラリーを追加した時
  • etc
構文
docker-compose up -d --build 
具体例
$ docker-compose up -d --build 
【結果】
[+] Building 4.8s (5/12)   
Recreating python_app ... done

現在起動中のコンテナ一覧を表示する

概要
現在起動中のコンテナ一覧を表示するコマンド

ユースケース

  • 立ち上げたコンテナが起動しているかどうかを確認したい時
構文
docker ps
具体例
$ docker ps
【結果】
CONTAINER ID   IMAGE               COMMAND                  CREATED          STATUS         PORTS                    NAMES
31a8f4920194   nginx:latest        "/docker-entrypoint.…"   33 minutes ago   Up 3 seconds   0.0.0.0:80->80/tcp       web_1
7cce55cc3857   php8                "docker-php-entrypoi…"   33 minutes ago   Up 4 seconds   9000/tcp                 php_1
d4e432df05eb   mariadb:10.4        "docker-entrypoint.s…"   6 weeks ago      Up 4 seconds   0.0.0.0:3306->3306/tcp   mariadb_1

Dockerコンテナに潜る

概要
Dockerコンテナに潜るコマンド

ユースケース

  • コンテナの中を確認・操作したい時。例)エラー調査、コンテナ操作
構文
docker exec -it {コンテナID or コンテナ名} bash
具体例
$ docker ps
【結果】
CONTAINER ID   IMAGE         COMMAND               CREATED          STATUS        PORTS               NAMES
b1231d15b8cc   backend_app   "uv run python -m de…" 25 minutes ago   Up 2 minutes   0.0.0.0:8080->8080/tcp  backend_app_1

// backend_app_1コンテナに潜る
$ docker exec -it backend_app_1 bash
【結果】
bash-5.2# 

Dockerコンテナを停止する

概要
docker-compose.ymlの中に定義されているコンテナを停止するコマンド

ユースケース

  • docker-compose.ymlの中に定義されているコンテナを一括で止めたい時
構文
docker-compose stop
具体例
$ docker-compose stop
【結果】
Stopping web_1 ... done
Stopping php_1 ... done

Dockerコンテナのログを表示する

概要
Dockerコンテナのログを表示するコマンド

ユースケース

  • ターミナル上でコンテナのログを確認したい時
構文
docker logs {コンテナID or コンテナ名}
具体例
$ docker logs backend_db_1
【結果】
PostgreSQL Database directory appears to contain a database; Skipping initialization
2024-12-30 11:33:59.979 UTC [1] LOG:  starting PostgreSQL 15.4 on aarch64-unknown-linux-musl, compiled by gcc (Alpine 12.2.1_git20220924-r10) 12.2.1 20220924, 64-bit

2. AWS CLIコマンド集

AWS CLIのプロファイルをexportする

概要
AWS CLI実行時に使用するプロファイルをexportするコマンド

ユースケース

  • SSM接続
  • ポートフォワーディング
  • IaCデプロイ
  • etc
構文
export AWS_PROFILE={プロファイル名}
具体例
$ export AWS_PROFILE=xxx-stg-admin
// 例)踏み台EC2経由でSSM接続
$ aws ssm start-session --target {踏み台サーバーID} --profile xxx-stg-admin

AWS CLIのプロファイル初期設定を行う

概要
AWS CLI を使うためのプロファイル初期設定を行うコマンド

ユースケース

  • ローカルPCからクラウド上のRDSにポートフォワーディング接続したい時
  • クラウド上のAWSリソースを操作したい時
構文
aws configure --profile {プロファイル名}
具体例
$ aws configure --profile xxx-stg-admin
【結果】
AWS Access Key ID [None]: xxxxxxxxx
AWS Secret Access Key [None]:xxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json

AWS CLIのプロファイル一覧を表示する

概要
AWS CLI に設定されているすべてのプロファイルの一覧を表示するコマンド

ユースケース

  • プロファイル名を忘れてしまった時
  • どのプロファイルを設定したか確認したい時
構文
aws configure list-profiles
具体例
$ aws configure list-profiles
【結果】
default
xxx-stg-admin
xxx-prod-admin
...

SSMポートフォワーディング

概要
SSMを用いて、ローカルPCの任意ポートをリモートホスト(ここではRDSエンドポイント)とトンネル接続するコマンド

ユースケース

  • ローカルPCのデータベースGUIクライアントからクラウド上のRDSに接続したい時
構文
aws ssm start-session \
    --target {踏み台サーバーID} \
    --document-name AWS-StartPortForwardingSessionToRemoteHost \
    --parameters '{
        "portNumber": ["{リモートポート}"],
        "localPortNumber": ["{ローカルポート}"],
        "host": ["{RDSエンドポイント}"]
    }' \
    --profile {プロファイル名}
具体例
// localPortNumberは、ローカルPCの空いている任意なポートを指定する
// RDSエンドポイントは、AWSマネコン>RDSサービス>RDSクラスター>詳細から確認する
$ aws ssm start-session \
    --target i-xxxxxxxxxx \
    --document-name AWS-StartPortForwardingSessionToRemoteHost \
    --parameters '{
        "portNumber": ["3306"],
        "localPortNumber": ["1053"],
        "host": ["mydb.xxxxxx.ap-northeast-1.rds.amazonaws.com"]
    }' \
    --profile stg-admin
【結果】
Starting session with SessionId: stg-admin-0abcdef123456...
Port 3306 opened for sessionId stg-admin-0abcdef123456...
補足
Host:127.0.0.1
Port:1053 ※ポートフォワーディングで指定したport
User:xxx ※パラメーターストア等から確認する
Password:xxx ※パラメーターストア等から確認する
Database:xxx ※パラメーターストア等から確認する

コンテナの中にあるアプリから接続する場合
// .env
DB_HOST=host.docker.internal

ECS ExecでFargateコンテナに潜る

概要
AWS ECSの「ECS Exec」を用いて、Fargateコンテナに潜るコマンド

ユースケース

  • コンテナの中を確認・操作したい時。例)エラー調査、コンテナ操作
構文
// 1. 現在起動しているタスクIDを取得する
aws ecs list-tasks --cluster {クラスター名} --service-name {サービス名} --region {リージョン名} --profile {プロファイル名}

// 2. 上記で取得したタスクIDを使い、ECS Execでコンテナにログインする
aws ecs execute-command \
    --region {リージョン名} \
    --cluster {クラスター名} \
    --container {コンテナ名} \
    --interactive \
    --command "/bin/sh" \
    --task {タスクID} \
    --profile {プロファイル名}

具体例
// 1. 現在起動しているタスクIDを取得する
$ aws ecs list-tasks --cluster {クラスター名} --service-name {サービス名} --region {リージョン名} --profile {プロファイル名}

// 2. 上記で取得したタスクIDを使い、ECS Execでコンテナにログインする
$ aws ecs execute-command \
    --region {リージョン名} \
    --cluster {クラスター名} \
    --container {コンテナ名} \
    --interactive \
    --command "/bin/sh" \
    --task {タスクID} \
    --profile {プロファイル名}

SSM接続

概要
SSM接続でクラウド上のサーバーに潜るコマンド

ユースケース

  • ローカルPCからクラウド上のサーバーに潜って、サーバー上での調査・操作をしたい時
構文
aws ssm start-session --target {踏み台サーバーID} --profile {プロファイル名}
具体例
$ aws ssm start-session --target i-xxxxxxxxxx --profile {プロファイル名}
【結果】
# ここでEC2インスタンスのシェルに接続
sh-4.2$ sudo su -
[root@ip-xx-xx-xx-xx ~]# 

.awsディレクトリ

概要
AWS CLI で利用する設定ファイルが格納されているディレクトリ。

ユースケース

  • AWS CLIの設定ファイルを直接編集・確認したい時
  • 各プロファイルのリージョンや認証情報を確認したい時
具体例
// .awsディレクトリに移動する
$ cd ~/.aws
$ ls
【結果】
cli		config		credentials
// プロファイルを確認
$ cat config
//アクセスキーやシークレットキーなどを確認
$ cat credentials

3. Terraformコマンド集

terraform init

概要
Terraform 作業ディレクトリを初期化するコマンド。
コマンド実行後は、隠しフォルダ「.terraform」ディレクトリが生成される

ユースケース

  • プロジェクトをgit cloneしてきた直後に Terraform を利用可能な状態にしたい時
構文
terraform init
具体例
$ pw
【結果】
infra/env/stg

$ ls
【結果】
隠しフォルダ「.terraform」ディレクトリ
main.tf
.terraform.lock.hcl

$ terraform init
【結果】
Terraform has been successfully initialized!

terraform plan

概要
差分や実行プランを確認するコマンド。

ユースケース

  • 変更がデプロイされる前にどのリソースが追加・変更・削除されるかを確認したい時
  • 思わぬリソースの削除などがないか事前にチェックしたい時
構文
terraform plan
具体例
$ pw
【結果】
infra/env/stg

$ ls
【結果】
main.tf
.terraform.lock.hcl

$ terraform plan
【結果】
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create
  ~ update in-place
  - destroy
...
Plan: 1 to add, 0 to change, 0 to destroy.

terraform apply

概要
クラウド上へリソースを作成・変更・削除するコマンド

ユースケース

  • リソースの新規作成や構成変更を本番環境やステージング環境に反映したい時
構文
terraform apply
具体例
$ pw
【結果】
infra/env/stg

$ ls
【結果】
main.tf
.terraform.lock.hcl

$ terraform apply
【結果】
Terraform used the selected providers to generate the following execution plan...
Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

Enter a value: yes

aws_vpc.main: Creating...
aws_vpc.main: Creation complete after 4s [id=vpc-0abcd123456...]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

terraform destroy

概要
Terraform 管理下のクラウドリソースを削除するコマンド。

ユースケース

  • 不要になったクラウドリソースを一括削除したい時
構文
$ pwd
【結果】
infra/env/stg

$ ls
【結果】
main.tf
.terraform.lock.hcl

$ terraform destroy
【結果】
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  - destroy
...

Plan: 0 to add, 0 to change, 1 to destroy.
Do you really want to destroy all resources?
  Only 'yes' will be accepted to approve.

Enter a value: yes

aws_vpc.main: Destroying... (ID: vpc-0abcd123456...)
aws_vpc.main: Destruction complete after 3s

Destroy complete! Resources: 1 destroyed.

terraform fmt

概要
.ディレクトリ配下にあるtfファイルを一括フォーマットするコマンド

ユースケース

  • スペースやインデントが乱れた .tf ファイルを整形したい時
構文
terraform fmt --recursive
具体例
$ terraform fmt --recursive
【結果】
ファイル名.tf
ファイル名.tf
ファイル名.tf

4. AWS CDKコマンド集

CDKプロジェクト作成

概要
CDK のプロジェクト(雛形)を作成するコマンド

ユースケース

  • 新規で AWS CDK のプロジェクトを開始したい時
構文
cdk init app --language {使用言語}
具体例
// TypeScript で新規プロジェクトを作成する場合
$ cdk init app --language typescript

【結果】
Applying project template app for typescript
...
✅ All done!

cdk bootstrap

概要
初めて CDK を使用するリージョン・アカウントに対しては、この bootstrap 実行が必要です。
CDKでAWSクラウドリソースを構築・追加・変更・削除する為のIAMロールを引き受けるコマンド。
IAMロールが引き受けるアカウントは、AWS CLIで設定した現在のプロファイルとなる。

ユースケース

  • CDK デプロイする際に必要なリソースを準備したい時。例)新環境でCDKでIaCする時など

参考記事
cdk bootstrapってなんだ?

構文①
cdk bootstrap aws://{アカウントID}/{リージョン名}
構文②
cdk bootstrap
具体例
$ cdk bootstrap aws://{アカウントID}/us-east-1
【結果】
15:52:20 | CREATE_IN_PROGRESS   | AWS::CloudFormation::Stack | CDKToolkit
15:52:22 | CREATE_IN_PROGRESS   | AWS::ECR::Repository    | ContainerAssetsRepository
15:52:22 | CREATE_IN_PROGRESS   | AWS::IAM::Role          | LookupRole
15:52:22 | CREATE_IN_PROGRESS   | AWS::IAM::Role          | ImagePublishingRole
15:52:22 | CREATE_IN_PROGRESS   | AWS::IAM::Role          | FilePublishingRole
15:52:22 | CREATE_IN_PROGRESS   | AWS::IAM::Role          | CloudFormationExecutionRole
15:52:22 | CREATE_IN_PROGRESS   | AWS::SSM::Parameter     | CdkBootstrapVersion
...
✅  CDKToolkit

cdk diff --all ※マルチスタック

概要
CDK で定義した複数のスタック(マルチスタック)に対して、CloudFormation テンプレートの差分をまとめて表示するコマンド。
マルチスタックとは、1つの CDK アプリケーション内で複数の CloudFormation スタックを同時に管理する形態を指します。

ユースケース

  • 変更差分を一括で把握したい時
構文
cdk diff --all
具体例
$ cdk diff --all
【結果】
Stack DevVpcStack
There were no differences

Stack DevEcsStack
Resources
[-] AWS::EC2::Instance MyInstance MyInstance1234
[~] AWS::ECS::Service EcsService
  └─ containerDefinitions:
    ...

cdk diff {スタック名} ※任意スタック

概要
任意スタックに対して差分を表示するコマンド。

ユースケース

  • 任意スタックの差分を確認したい時
構文
cdk diff {スタック名}
具体例
// DevVpcStack スタックに対して差分を確認
$ cdk diff DevVpcStack

【結果】
Resources
[-] AWS::EC2::Instance MyInstance MyInstance1234
[~] AWS::EC2::VPC MyVpc MyVpc5678
  ...

cdk deploy --all ※マルチスタック

概要
定義した複数スタックを一括でデプロイするコマンド。
コードで記述したリソース構成を CloudFormation によって実際の AWS 環境に作成・更新します。

ユースケース

  • 複数スタックを一括リリースしたい時
構文
cdk deploy --all
具体例
$ cdk deploy --all
【結果】
DevVpcStack: deploying...
DevEcsStack: deploying...
 ✅  DevVpcStack
 ✅  DevEcsStack

Stack ARN:
arn:aws:cloudformation:ap-northeast-1:123456789012:stack/DevVpcStack/...
arn:aws:cloudformation:ap-northeast-1:123456789012:stack/DevEcsStack/...

cdk deploy {スタック名} ※任意スタック

概要
任意スタックをデプロイするコマンド。

ユースケース

  • 任意スタックのみデプロイしたい時
構文
cdk deploy {スタック名}
具体例
// DevVpcStack のみデプロイ
$ cdk deploy DevVpcStack
【結果】
DevVpcStack: deploying...
 ✅  DevVpcStack

Stack ARN:
arn:aws:cloudformation:ap-northeast-1:123456789012:stack/DevVpcStack/...

cdk destroy --all ※マルチスタック

概要
複数のスタックを一括で削除(destroy)するコマンド。不要になったリソースをまとめて削除できます。

ユースケース

  • 複数スタックの各リソースを一括削除したい時
構文
cdk destroy --all
具体例
$ cdk destroy --all
【結果】
Are you sure you want to delete: DevVpcStack, DevEcsStack (y/n)? y
DevVpcStack: destroying...
DevEcsStack: destroying...
 ✅  DevVpcStack: destroyed
 ✅  DevEcsStack: destroyed

cdk destroy {スタック名} ※任意スタック

概要
任意スタックだけを削除するコマンド。
誤って重要なスタックを削除しないように、限定的に破棄したい時に利用します。

ユースケース

  • 部分的に不要になった任意スタックを削除したい時
構文
cdk destroy {スタック名}
具体例
// DevVpcStack のみ削除
$ cdk destroy DevVpcStack
【結果】
Are you sure you want to delete: DevVpcStack (y/n)? y
DevVpcStack: destroying...
 ✅  DevVpcStack: destroyed

cdk synth --all ※マルチスタック

概要
複数のスタックを一括で CloudFormation テンプレート(.template.json など)に合成(synthesize)するコマンド。
デプロイせずに、どのようなテンプレートが生成されるかを確認できます。

ユースケース

  • リソース構成が期待通りになっているかを確認したい時
構文
cdk synth --all
具体例
cdk synth --all
【結果】
Resources:
  MyVpc:
    Type: AWS::EC2::VPC
    Properties:
      ...
  ...
---
Resources:
  MyEcsCluster:
    Type: AWS::ECS::Cluster
    Properties:
      ...
  ...

cdk synth {スタック名} ※任意スタック

概要
任意スタックを指定してテンプレートを合成(synthesize)するコマンド。

ユースケース

  • 任意スタックのリソース構成を確認したい時
構文
cdk synth {スタック名}
具体例
// DevVpcStack のテンプレートを生成
$ cdk synth DevVpcStack
【結果】
Resources:
  MyVpc:
    Type: AWS::EC2::VPC
    Properties:
      ...
  MySubnet:
    Type: AWS::EC2::Subnet
    Properties:
      ...

5. Python/FastAPI

1. uv

uv add

概要
パッケージを本番/開発依存として追加し、pyproject.toml を更新するコマンド

ユースケース

  • 新しくライブラリを導入したい時

本番環境用:

構文
uv add {パッケージ名}

開発環境用:

構文
uv add --dev {パッケージ名}
具体例
// バージョン指定して requests を本番環境に追加する例
$ uv add requests==2.28.1
【結果】
backend/pyproject.tomlファイルに下記のような依存が追記されます
dependencies = [
  "requests >= 2.28.1",
]

uv remove

概要
パッケージを本番/開発依存から削除し、pyproject.toml を更新するコマンド

ユースケース

  • 不要になったライブラリを整理したい時

本番環境用:

構文
uv remove {パッケージ名}

開発環境用:

構文
uv remove --dev {パッケージ名}
具体例
// バージョン指定は不要だが、参考として示す例
$ uv remove requests
【結果】
backend/pyproject.tomlファイルから
requests が削除されます

uv sync

概要
xxxするコマンド

ユースケース

  • xxx
構文
uv sync
具体例
$ uv sync
【結果】
xxx

uv pip freeze > requirements.txt

概要
uv コマンドで管理されている Python パッケージを pip freeze 形式で requirements.txt に書き出すコマンド

ユースケース

  • AWSクラウド上にLambda関数をデプロイする場面などで requirements.txt が必要な場合がある。
構文
uv pip freeze > requirements.txt
具体例
$ uv pip freeze > requirements.txt
【結果】
requirements.txt が生成され、中身は
requests==2.28.1
fastapi==0.98.0
uvicorn==0.22.0
...

2. Alembic

マイグレーションファイルを新規作成 & マイグレーション実施

概要
データベーススキーマをバージョン管理する Alembic を使い、新規マイグレーションファイルを自動生成(revision --autogenerate)し、データベースを最新化(upgrade head)するためのコマンド

ユースケース

  • マイグレーションファイルを新規作成する時
構文
alembic revision --autogenerate -m "{コメント}"

ユースケース

  • バージョン管理された DB スキーマを最新の状態にアップグレードしたい時
構文
alembic upgrade head
具体例
// 1. まず DB を最新状態にしておく
$ alembic upgrade head
【結果】
No changes detected or DB is already up to date

// 2. テーブル追加などのモデル変更を app/models/user.py に反映

// 3. 新規マイグレーションファイルを作成
$ alembic revision --autogenerate -m "create-users-table"
【結果】
INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
  Generating /path/to/alembic/versions/20240101_create_users_table.py ... done

// 4. マイグレーションを適用
$ alembic upgrade head
【結果】
INFO  [alembic.runtime.migration] Running upgrade  -> 20240101, create-users-table

マイグレーションのダウングレード(ロールバック)

概要
最新のマイグレーションを1つ切り戻す(-1)コマンド

ユースケース

  • 新しく適用したマイグレーションで不具合があったため、直前の状態に戻したい時
構文
alembic downgrade -1
具体例
$ alembic downgrade -1
【結果】
INFO  [alembic.runtime.migration] Running downgrade 20240101 -> 20231212, remove-latest-changes

現在のマイグレーション情報を確認する

概要
現在適用されているマイグレーションのバージョンを確認するコマンド

ユースケース

  • マイグレーションの現状を確認したい時
構文
alembic current
具体例
$ alembic current
【結果】
Current revision(s) for postgresql://user:pass@localhost:5432/db_name:
20240101 (head)

3. Python

仮想環境の非アクティベート

概要
アクティブになっている仮想環境(venv / conda など)を解除するコマンド

ユースケース

  • システム Python へ戻したい時
構文
deactivate
具体例
(venv) MacBook-Pro:Desktop user$ deactivate
【結果】
仮想環境が解除され、(venv) の表示が外れます
MacBook-Pro:Desktop user$

python diagram.py ※独自ファイル

概要
pythonファイルからpng形式でdiagramを出力するコマンド

ユースケース

  • 構成図をサクッと作成したい時
構文
python diagram.py
具体例
$ python diagram.py
【結果】
xxxxx.png

6. PHP/Laravel

1. Laravel

開発に関するartisanコマンド

概要
Laravel開発に関するartisanコマンド

ユースケース

  • Laravelを使って開発する時

モデル作成&&マイグレーションファイル作成:

構文
php artisan make:model {モデル名} -m
構文(Docker)
docker-compose exec {コンテナサービス名} php artisan make:model {モデル名} -m

enumファイル作成:

構文
php artisan make:enum {ファイル名}
構文(Docker)
docker-compose exec {コンテナサービス名} php artisan make:enum {ファイル名}

seedファイル作成:

構文
php artisan make:seed {モデル名}Seeder
構文(Docker)
docker-compose exec {コンテナサービス名} php artisan make:seed {モデル名}Seeder

Factoryファイル作成:

構文
php artisan make:factory {モデル名}Factory
構文(Docker)
docker-compose exec {コンテナサービス名} php artisan make:factory {モデル名}Factory

Policyファイル作成:

構文
php artisan make:policy {モデル名}Policy --model={モデル名}
構文(Docker)
docker-compose exec {コンテナサービス名} php artisan make:policy {モデル名}Policy --model={モデル名}
具体例
// モデル作成 && マイグレーションファイル作成
$ docker-compose exec app php artisan make:model Admin -m
【結果】
Model created successfully.
Created Migration: 2025_01_01_000000_create_admins_table

// enumファイル作成
$ docker-compose exec app php artisan make:enum {ファイル名}
【結果】
Enum [{ファイル名}] created successfully.

// seedファイル作成
$ docker-compose exec app php artisan make:seed AdminSeeder
【結果】
Seeder created successfully.

// factoryファイル作成
$ docker-compose exec app php artisan make:factory AdminFactory
【結果】
Factory created successfully.

// policyファイル作成
$ docker-compose exec app php artisan make:policy AdminPolicy --model=Admin
【結果】
Policy created successfully for model [App\Models\Admin].

データベース操作に関するartisanコマンド

概要
Laravelのartisanコマンド経由でデータベース操作するためのコマンド

ユースケース

  • database/migrations/ディレクトリの直下のマイグレーションファイルに基づいて、テーブルをCREATEしたい時。例)初回テーブル作成

fresh:

構文
php artisan migrate:fresh

DockerのComposerコンテナ経由する場合:

構文
docker-compose exec {コンテナサービス名} php artisan migrate:fresh

ユースケース

  • マイグレーションを実行したい時。例)運用フェーズの既存テーブルに対して、新たに追加・更新・削除などを適用したい時

migrate:

構文
php artisan migrate

Composerコンテナ経由する場合:

構文
docker-compose exec {コンテナサービス名} php artisan migrate

ユースケース

  • database/seeders/ディレクトリ直下のseedファイルに基づいて、ダミーデータを生成したい時

seed:

構文
php artisan db:seed

Composerコンテナ経由する場合:

構文
docker-compose exec {コンテナサービス名} php artisan db:seed
具体例
// fresh〜migrate〜seedまでの一連の流れ(例)
$ docker-compose exec app php artisan migrate:fresh
【結果】
Dropped all tables successfully.
Migration table created successfully.
Migrated: 2025_01_01_000000_create_users_table
Migrated: 2025_01_01_000001_create_posts_table

$ docker-compose exec app php artisan migrate
【結果】
Nothing to migrate. // 既に最新の状態になっている場合

$ docker-compose exec app php artisan db:seed
【結果】
Database seeding completed successfully.
Seeded: AdminSeeder
Seeded: PostsSeeder

ide-helperコマンド

概要
エディタのIDE補完を生成するコマンド

ユースケース

  • IDE補完を強化して保守性向上したい時

すべてのモデルに対して一括指定する場合:

構文
php artisan ide-helper:models
構文(Docker)
docker-compose exec {コンテナサービス名} php artisan ide-helper:models

指定したモデルのみ生成する場合:

構文
php artisan ide-helper:models "App\Models\{モデル名}"
構文(Docker)
docker-compose exec {コンテナサービス名} php artisan ide-helper:models "App\Models\{モデル名}"
具体例
$ docker-compose exec app php artisan ide-helper:models
【結果】
A new helper file was written to _ide_helper_models.php
Model information was written for:
- App\Models\User
- App\Models\Admin
- App\Models\Post
...  // 実際のモデルに応じて変わります

$ docker-compose exec app php artisan ide-helper:models "App\Models\Admin"
【結果】
A new helper file was written to _ide_helper_models.php
Model information was written for:
- App\Models\Admin

シングルアクションコントローラ自動生成 ※独自コマンド

概要
開発体験の高い「シングルアクションコントローラアーキテクチャ」を生成するコマンド
一部、Next.js × App Router × ダイナミック辺りの思想を少し参考にしている

ユースケース

  • 1ルート=1コントローラの構成で保守性を高めたい時
構文(GET)
docker-compose exec {コンテナサービス名} php artisan make:route {エンドポイントURL} --method={GET}
具体例(GET)
$ docker-compose exec app php artisan make:route /admin/admins --method=GET
構文(POST)
docker-compose exec {コンテナサービス名} php artisan make:route {エンドポイントURL} --method=POST
具体例(POST)
$ docker-compose exec app php artisan make:route /admin/admins/create   --method=POST
構文(PUT)
docker-compose exec {コンテナサービス名} php artisan make:route {エンドポイントURL} --method=PUT
具体例(PUT)
$ docker-compose exec app php artisan make:route /admin/admins/id   --method=PUT
構文(DELETE)
docker-compose exec {コンテナサービス名} php artisan make:route {エンドポイントURL} --method=DELETE
具体例(DELETE)
$ docker-compose exec app php artisan make:route /admin/admins/id   --method=DELETE

2. PHP

Composer

概要
PHP関連のパッケージ管理ツールに関連するコマンド

ユースケース

  • ライブラリを追加したい時

本番環境用:

構文
composer require {ライブラリ名}

Composerコンテナ経由する場合:

構文
docker-compose run composer composer require {ライブラリ名}

開発環境用:

構文
composer require --dev {ライブラリ名}

Composerコンテナ経由する場合:

構文
docker-compose run composer composer require --dev {ライブラリ名}
具体例
// Laravelデバッガーを開発環境のみインストールする
$ docker-compose run composer composer require --dev barryvdh/laravel-debugbar

7. Linuxコマンド集

historyコマンド

概要
過去に実行したコマンドの履歴を表示するコマンド

ユースケース

  • どのコマンドを実行したか履歴をさかのぼりたい時
  • コマンドの再実行や調査を行いたい時
構文
history {オプション}

主なオプション

オプション 説明
`-c` 履歴をクリア(削除)する
`-d [行番号]` 指定した行番号の履歴を削除する
具体例
$ history
【結果】
  1  pwd
  2  ls -la
  3  vim sample.txt
  4  history

$ history | grep docker
【結果】
過去に実行した docker 関連のコマンドが表示されます

// 範囲指定
$ history 10 30
  10  pwd
  11  ls -la
  12  vim sample.txt
  13  history

envコマンド

概要
現在の環境変数を表示、もしくは一時的に環境変数を設定した状態で別のコマンドを実行するコマンド

ユースケース

  • システム上に設定されている環境変数を確認したい時
  • 一時的に環境変数を変更した状態でコマンドを実行したい時
構文
env {オプション} {変数=値 ...} {コマンド [引数 ...]}
具体例
$ env
【結果】
LANG=ja_JP.UTF-8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
HOME=/root
...

$ env VAR1=TEST VAR2=EXAMPLE bash -c 'echo $VAR1 && echo $VAR2'
【結果】
TEST
EXAMPLE

cpコマンド

概要
ファイルやディレクトリをコピーするコマンド

ユースケース

  • ファイルを別名で複製したい時
  • ディレクトリ構造をまるごとコピーしたい時
構文
cp {オプション} {コピー元} {コピー先}

主なオプション

オプション 説明
-f コピー先に同名のファイルがあれば上書きする
-i コピー先に同名のファイルがあれば、上書き前に確認を行う
-p コピー元ファイルの属性(所有者、グループ、タイムスタンプ)を保持
-r/-R ディレクトリを再帰的にコピー(ディレクトリごとコピー)
-d シンボリックリンクをリンクとしてコピー
-a -dpRと同様。元ファイルの構成・属性を最大限保持してコピー

引用元:Linux教科書 LPICレベル1(あずき本)

具体例
// data.txtファイルを data.BKUP.txt という名前でコピー
$ cp data.txt data.BKUP.txt
【結果】
data.BKUP.txt  data.txt

// /usr/local/src/dir1 ディレクトリを /tmp/bkup ディレクトリに再帰的にコピー
$ cp -r /usr/local/src/dir1 /tmp/bkup

findコマンド

概要
ファイルやディレクトリを検索するコマンド

ユースケース

  • ファイル名や拡張子を指定して検索したい時
  • 所有者や最終更新時刻など、複数の条件でファイルを探したい時
構文
find {検索開始ディレクトリ} {検索式} {アクション}

主な検索式・オプション

検索式 説明
-name ファイル名 ファイル名で検索
-type [f/d/l] ファイルの種類で検索
f:ファイル、d:ディレクトリ、l:シンボリックリンク
-mtime +/-日数 最終更新時刻が◯日以内(-)または◯日より前(+)のファイルを検索
-size サイズ ファイルサイズで検索
-user ユーザー名 ファイル所有者で検索
-print マッチしたファイルを表示(省略可能)
-exec コマンド \; 見つかったファイルに対して指定のコマンドを実行

引用元:Linux教科書 LPICレベル1(あずき本)

具体例
// /etcディレクトリ以下で、ファイル名が sshd_config のファイルを検索
$ find /etc -type f -name "sshd_config"
【結果】
/etc/ssh/sshd_config

// /varディレクトリ以下で、フォルダ名が tmp のディレクトリを検索
$ find /var -type d -name "tmp"
【結果】
/var/opt/remi/php80/tmp
/var/tmp

// /etcディレクトリ以下で、拡張子 .conf のファイルを検索
$ find /etc -type f -name "*.conf"
【結果】
/etc/man_db.conf
/etc/abrt/gpg_keys.conf
/etc/abrt/abrt.conf

grepコマンド

概要
ファイル内の文字列を検索するコマンド

ユースケース

  • 特定の文字列を含む行だけを抜き出したい時
  • ログファイルからエラー文言を探したい時
構文
grep {オプション} "検索文字列" {ファイルやディレクトリ}

主なオプション

  • -r:指定ディレクトリを再帰的に検索
  • -i:大文字/小文字を区別しない
  • -n:マッチした行番号を表示
具体例
// /etcディレクトリ以下で、文字列 localdomain を含むファイルを再帰的に検索
$ grep -r "localdomain" /etc
【結果】
/etc/sysconfig/network-scripts/network-functions:        '(none)' | 'localhost' | 'localhost.localdomain')
/etc/sysconfig/network-scripts/network-functions:        # ['(none)', 'localhost' or 'localhost.localdomain' are not valid]
/etc/hostname:localhost.localdomain
/etc/pki/tls/certs/make-dummy-cert:     echo localhost.localdomain
/etc/pki/tls/certs/make-dummy-cert:     echo root@localhost.localdomain
/etc/hosts:127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
/etc/hosts:#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

chmodコマンド

概要
ファイルやディレクトリのアクセス権を変更するコマンド

ユースケース

  • ファイルのパーミッションをまとめて変更したい時
  • 再帰的にディレクトリ配下の権限を変えたい時
構文
chmod {オプション} {モード} {ファイル名}

主なオプション

オプション 説明
-R 指定したディレクトリ以下を再帰的に処理
-v 実行結果を表示
-c 変更があった場合のみ実行結果を表示

引用元:Linux教科書 LPICレベル1(あずき本)

具体例
//「dir」ディレクトリのパーミッションは777であることを確認
$ ls -l
【結果】
drwxrwxrwx 2 root root 4096 Oct 12 11:48 dir

// パーミッションを777から755に変更
$ chmod -cR 755 dir
【結果】
mode of ‘dir’ changed from 0777 (rwxrwxrwx) to 0755 (rwxr-xr-x)

//「dir」ディレクトリのパーミッションは775であることを確認
$ ls -l
【結果】
drwxr-xr-x 2 root root 4096 Oct 13 11:48 dir

chownコマンド

概要
ファイルやディレクトリの所有者を変更するコマンド。rootユーザー権限が必要。

ユースケース

  • ファイルの所有者をまとめて変更したい時
  • Webサーバー用に ownership を apache ユーザーへ変更したい時
構文
chown {オプション} {ユーザー名:グループ名} {ファイル名}

グループ名を省略するとグループの変更は行われません

具体例
// 所有者がlinuxである
$ ls -l testfile
【結果】
-rw-rw--r-- 1 linux staff 2048 Jun 27 10:00 testfile

// testfileファイルの所有者をlpicに変更
$ chown lpic testfile

// 所有者がlpicである
$ ls -l testfile
【結果】
-rw-rw--r-- 1 lpic staff 2048 Jun 27 10:00 testfile

chgrpコマンド

概要
ファイルやディレクトリのグループを変更するコマンド

ユースケース

  • 所有者はそのまま、グループだけを変更したい時
  • rootユーザーなら任意のグループに変更可能
構文
chgrp {オプション} {グループ名} {ファイル名}
具体例
// 所有グループがstaffである
$ ls -l testfile
-rw-rw--r-- 1 linux staff 2048 Jun 27 10:00 testfile

// testfileファイルの所有者をlpicに変更
$chgrp lpic testfile

// 所有グループがlpicである
$ ls -l testfile
-rw-rw--r-- 1 lpic lpic 2048 Jun 27 10:00 testfile

useraddコマンド

概要
新規ユーザーアカウントを作成するコマンド

ユースケース

  • 新規サーバー構築時にユーザーを追加したい時
  • 共同作業者ごとにユーザーを追加したい時
構文
useradd {オプション} {ユーザー名}

主なオプション

オプション 説明
-g グループ プライマリグループを指定
-G グループ サブグループを指定
-d パス ホームディレクトリを指定
-s シェル ログインシェルを指定
-m ホームディレクトリを自動作成(Debian系で有効)

引用元:Linux教科書 LPICレベル1(あずき本)

具体例
// apacheユーザーをプライマリグループ apache で作成
$ useradd -g apache apache

usermodコマンド

概要
既存のユーザーアカウント情報を変更するコマンド

ユースケース

  • 追加のグループにユーザーを所属させたい時
  • ホームディレクトリやログインシェルを変更したい時
構文
usermod {オプション} {ユーザー名}
具体例
//「testuser」ユーザーは、「testuser」グループに所属している
$ grep testuser /etc/group
【結果】
testuser:x:1001:

//「testuser」ユーザーのサブグループに「apache」グループを追加する
$ usermod -aG apache testuser

$ grep testuser /etc/group
【結果】
testuser:x:1001:
apache:x:48:admin,root,testuser

-aG をつけないとサブグループ設定が上書きされる点に注意


groupaddコマンド

概要
新しいグループを作成するコマンド

ユースケース

  • 共同開発用に新しいグループを追加したい時
  • グループ管理で権限を整理したい時
構文
groupadd {オプション} {グループ名}
具体例
$ groupadd dev

// グループ一覧を確認
$ cat /etc/group
【結果】
mysql:x:993:
redis:x:992:
dev:x:1003:

groupmodコマンド

概要
既存のグループの情報を変更するコマンド

ユースケース

  • グループ名を変更したい時
  • GIDを変更したい時
構文
groupmod {オプション} {グループ名}

主なオプション

オプション 説明
-g GIDを変更する
-n グループ名を変更する

引用元:Linux教科書 LPICレベル1(あずき本)

具体例
// devグループを develop にリネーム
$ groupmod -n develop dev

tarコマンド

概要
ファイルやディレクトリをアーカイブ・展開するコマンド
オプションで gzip 圧縮 (-z) や bzip2 圧縮 (-j) などと組み合わせられる

ユースケース

  • 複数ファイル・フォルダをまとめて1つのアーカイブにしたい時
  • 配布された tar.gz ファイルを展開したい時
構文
tar {オプション} {アーカイブ名} {ファイル/ディレクトリ}
具体例
// latest-ja.tar.gz を展開
$ tar xvf latest-ja.tar.gz

// wordpress ディレクトリを wordpress.tar.gz に圧縮(gzip)
$ tar zcvf wordpress.tar.gz wordpress

SSH

概要
リモートホストへ接続するコマンド。ポートやユーザー、秘密鍵などの指定が可能

ユースケース

  • ローカルからリモートサーバーにログインして操作したい時
  • 特殊なSSHポートを使ってログインする時
構文
ssh {オプション} {ユーザー名@ホスト名(IPアドレス)}

主なオプション

オプション 説明
-p ポート番号を指定
-l 接続ユーザーを指定
-i 秘密鍵ファイルを指定

引用元:Linux教科書 LPICレベル1(あずき本)

具体例
// ポート番号12345で、adminユーザーとしてホスト1XX.XXX.XX.XXXへログイン
$ ssh -p 12345 admin@1XX.XXX.XX.XXX

lsofコマンド

概要
開いているポートや使用中のファイルを確認するコマンド

ユースケース

  • アプリケーションが使用しているポート番号を調べたい時
  • どのプロセスが特定ファイルを開いているか調べたい時
構文
lsof {オプション}

主なオプション

オプション 説明
-i TCP/UDPポートを使用しているプロセスを表示
-i:ポート番号 指定ポート番号を使用しているプロセスを表示

引用元:Linux教科書 LPICレベル1(あずき本)

具体例
// 開いているポート情報を数値ポート形式で表示
$ lsof -i -P
【結果】
sshd        909   root    3u  IPv4   80727      0t0  TCP *:12345(LISTEN)
mariadbd    930  mysql   24u  IPv4   17013      0t0  TCP *:3306 (LISTEN)
mariadbd    930  mysql   27u  IPv6   17014      0t0  TCP *:3306 (LISTEN)

// ポート3306を使用しているプロセスを表示
$ lsof -i:3306

その他

  • パーミッション(777や755などの設定方法)
  • netstat, ss, nmap 等のネットワーク関連コマンド
  • curl, wget 等のHTTP通信コマンド
  • ps, top, htop 等のプロセス管理コマンド
  • df, du 等のディスク使用状況コマンド

参考

8. その他コマンド集

1. Zenn CLIコマンド集

mdファイルを生成する

概要
Zenn仕様のmdファイルを1ファイル生成するコマンド

ユースケース

  • Zennで執筆したい時
構文
npx zenn new:{articles or books} --slug {slug名} --title {タイトル} --type {tech or idea} --emoji {任意な絵文字}
具体例
$ pwd
【結果】
codes/tech-blog-content

// 記事×技術記事指定
$ npx zenn new:article --slug line-scheduling-db-design  --title タイトル --type tech --emoji ✨

// 記事×アイデア記事指定
$ npx zenn new:article --slug line-scheduling-db-design  --title タイトル --type idea --emoji ✨
【結果】
created: articles/line-scheduling-db-design.md

プレビューする

概要
Zenn仕様のmdファイルをlocalhostのブラウザでプレビューするためのコマンド

ユースケース

  • 執筆内容をブラウザで確認したい時
構文
npx zenn preview
具体例
$ pwd
【結果】
codes/tech-blog-content

$ npx zenn preview
【結果】
👀 Preview: http://localhost:8000

2. Qiita CLIコマンド集

mdファイルを生成する_ファイル単位 ※独自コマンド

概要
ファイル単位でZenn記事仕様のmdファイルをQiita記事仕様のmdファイルに変換するスクリプトを実行する

ユースケース

  • ファイル単位でZenn記事仕様のmdファイル ➔ Qiita記事仕様のmdファイルに変換したい時
構文
node zenn_to_qiita.js articles/{ファイル名} public/{ファイル名}
具体例
$ pwd
【結果】
codes/tech-blog-content

$ node zenn_to_qiita.js articles/line-scheduling-db-design.md public/xxx.md
【結果】
変換成功: "articles/line-scheduling-db-design.md" → "public/xxx.md"

mdファイルを生成する_ディレクトリ単位 ※独自コマンド

概要
ディレクトリ単位で一括指定でZenn記事仕様のmdファイルをQiita記事仕様のmdファイルに変換するスクリプトを実行する

ユースケース

  • ディレクトリ単位でZenn記事仕様のmdファイル ➔ Qiita記事仕様のmdファイルに変換したい時
構文
node zenn_to_qiita.js articles/ public/ 
具体例
$ pwd
【結果】
codes/tech-blog-content

$ node zenn_to_qiita.js articles/ public/ 

mdファイルを生成する_ディレクトリ単位 ※独自コマンド

概要
ディレクトリ単位で一括指定でZenn記事仕様のmdファイルをQiita記事仕様のmdファイルに変換するスクリプトを実行する

ユースケース

  • ディレクトリ単位でZenn記事仕様のmdファイル ➔ Qiita記事仕様のmdファイルに変換したい時
構文
node zenn_to_qiita.js articles/ public/ 
具体例
$ pwd
【結果】
codes/tech-blog-content

$ node zenn_to_qiita.js articles/ public/ 

記事の投稿

概要
Qiita記事の投稿コマンド

通常:

構文
npx qiita publish {ファイル名}

強制:

構文
 npx qiita publish {ファイル名} --force
具体例
$ tech-blog-content % npx qiita publish web-command-cheat-sheet
【結果】
Updated: web-command-cheat-sheet -> af70697a995de9d3fcfd
Successful!

Discussion