概要
日々のWeb開発でよく使うコマンドを集約する記事となります❗❗❗
よく使うコマンドを1つの記事に集約することで、日々の生産性を向上したいと考えております。
逆に普段あまり使っていないコマンドは追求しておりません。例えばGUIツールでカバーしているコマンドについては追求していないです。
具体的には下記のコマンド集を集約いたします
- Dockerコマンド集
- AWS CLIコマンド集
- Terraformコマンド集
- CDKコマンド集
- Python/FastAPI
- uv
- Alembic
- Python
- PHP/Laravel
- Laravel
- PHP
- Linuxコマンド集
- その他コマンド集
- Zenn CLI
- Qiita CLI
また、自身のスキルを証明する一つの材料として執筆しております
本記事は下記のサービスにて公開しております。公開日時:2025年01月01日
複数のプラットフォームで発信することで、多くの方にご覧いただき、少しでも参考になれば幸いです。
- Zenn
- Qiita
- Findy
- Forkwell
- LAPRAS
- 職務経歴書のレジュメ
- etc
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-compose exec {コンテナサービス名} php artisan make:model {モデル名} -m
enumファイル作成:
php artisan make:enum {ファイル名}
docker-compose exec {コンテナサービス名} php artisan make:enum {ファイル名}
seedファイル作成:
php artisan make:seed {モデル名}Seeder
docker-compose exec {コンテナサービス名} php artisan make:seed {モデル名}Seeder
Factoryファイル作成:
php artisan make:factory {モデル名}Factory
docker-compose exec {コンテナサービス名} php artisan make:factory {モデル名}Factory
Policyファイル作成:
php artisan make:policy {モデル名}Policy --model={モデル名}
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-compose exec {コンテナサービス名} php artisan ide-helper:models
指定したモデルのみ生成する場合:
php artisan ide-helper:models "App\Models\{モデル名}"
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コントローラの構成で保守性を高めたい時
docker-compose exec {コンテナサービス名} php artisan make:route {エンドポイントURL} --method={GET}
$ docker-compose exec app php artisan make:route /admin/admins --method=GET
docker-compose exec {コンテナサービス名} php artisan make:route {エンドポイントURL} --method=POST
$ docker-compose exec app php artisan make:route /admin/admins/create --method=POST
docker-compose exec {コンテナサービス名} php artisan make:route {エンドポイントURL} --method=PUT
$ docker-compose exec app php artisan make:route /admin/admins/id --method=PUT
docker-compose exec {コンテナサービス名} php artisan make:route {エンドポイントURL} --method=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/
記事の投稿
概要
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!
同期
概要
同期コマンド
通常:
npx qiita pull
強制:
npx qiita pull --force
tech-blog-content $ npx qiita pull
Sync local articles from Qiita
Successful!