bqコマンド(BigQuery) チートシート

cheatsheet

よく使うbqコマンドの目的別リファレンス

📌 認証と設定

bqコマンドを使用するための初期設定やプロジェクトの確認を行います。

目的 コマンド例 説明
初期設定 (プロジェクト選択、認証)
bq init
bq init --project_id=<PROJECT_ID>
bq init --service_account --project_id=<PROJECT_ID> --service_account_credential_file=<KEY_FILE_PATH>
対話形式またはオプション指定でデフォルトプロジェクトや認証方法を設定します。サービスアカウント認証も可能です。多くの場合、gcloud auth logingcloud config set project の方が推奨されます。
現在の設定確認
bq show --format=prettyjson
gcloud config list
bqコマンドの現在の設定 (デフォルトプロジェクトIDなど) をJSON形式で表示します。gcloud コマンドでも確認できます。
Google Cloud SDKの認証
gcloud auth login
gcloud auth application-default login
gcloud auth activate-service-account --key-file=<KEY_FILE_PATH>
bqコマンドはGoogle Cloud SDKの一部であり、認証情報は共有されます。ユーザーアカウントまたはサービスアカウントで認証します。
デフォルトプロジェクト設定
gcloud config set project <PROJECT_ID>
コマンド実行時にプロジェクトIDを省略した場合に使用されるデフォルトプロジェクトを設定します。

🏗️ プロジェクト、データセット、テーブルの操作

リソースの一覧表示、作成、削除、詳細確認、コピーなどを行います。

目的 コマンド例 説明
プロジェクト一覧表示
bq ls --projects
gcloud projects list
アクセス可能なプロジェクトの一覧を表示します。gcloudコマンドでも可能です。
データセット一覧表示
bq ls
bq ls <PROJECT_ID>:
デフォルトプロジェクト、または指定したプロジェクト内のデータセット一覧を表示します。
テーブル/ビュー/モデル一覧表示
bq ls <DATASET_ID>
bq ls <PROJECT_ID>:<DATASET_ID>
指定したデータセット内のテーブル、ビュー、MLモデルなどの一覧を表示します。
データセット作成
bq mk <DATASET_ID>
bq mk --location=<LOCATION> <PROJECT_ID>:<DATASET_ID>
bq mk --description "説明文" --default_table_expiration 3600 <DATASET_ID>
新しいデータセットを作成します。ロケーション、説明、デフォルトのテーブル有効期限などを指定できます。
テーブル作成 (スキーマ指定)
bq mk --table <DATASET_ID>.<TABLE_ID> <SCHEMA>
bq mk --table <PROJECT_ID>:<DATASET_ID>.<TABLE_ID> name:STRING,age:INTEGER
bq mk --table <DATASET_ID>.<TABLE_ID> schema.json
bq mk --table --time_partitioning_field timestamp_col --time_partitioning_type DAY <DATASET_ID>.<TABLE_ID> schema.json
bq mk --table --clustering_fields field1,field2 <DATASET_ID>.<TABLE_ID> schema.json
スキーマを指定して新しい空のテーブルを作成します。スキーマはコマンドラインで直接指定するか、JSONファイルで指定します。パーティション分割やクラスタリングも指定可能です。
テーブル作成 (クエリ結果から)
bq query --nouse_legacy_sql --destination_table <DATASET_ID>.<TABLE_ID> 'SELECT * FROM `<SOURCE_TABLE>` LIMIT 10'
クエリの実行結果を新しいテーブルとして保存します。(詳細はクエリ実行のセクションを参照)
データセット削除
bq rm <DATASET_ID>
bq rm -r <DATASET_ID>
bq rm -f -r <PROJECT_ID>:<DATASET_ID>
データセットを削除します。-r (--recursive) はデータセット内のテーブルも削除します。-f (--force) は確認プロンプトなしで削除します。⚠️注意して使用してください。
テーブル/ビュー削除
bq rm <DATASET_ID>.<TABLE_ID>
bq rm -t <PROJECT_ID>:<DATASET_ID>.<TABLE_ID>
bq rm -f -t <DATASET_ID>.<TABLE_ID>
テーブルまたはビューを削除します。-t (--table) でテーブルタイプを明示的に指定できます。-f は確認なしで削除します。⚠️注意して使用してください。
データセット/テーブル詳細表示
bq show <DATASET_ID>
bq show <PROJECT_ID>:<DATASET_ID>
bq show <DATASET_ID>.<TABLE_ID>
bq show --schema <DATASET_ID>.<TABLE_ID>
bq show --format=prettyjson <DATASET_ID>.<TABLE_ID>
データセットまたはテーブルの詳細情報(作成日時、最終更新日時、ロケーション、スキーマ、行数、サイズなど)を表示します。--schema でスキーマ情報のみを表示、--format=prettyjson でJSON形式で表示します。
テーブルコピー
bq cp <SOURCE_TABLE> <DESTINATION_TABLE>
bq cp <PROJECT1>:<DATASET1>.<TABLE1> <PROJECT2>:<DATASET2>.<TABLE2>
bq cp -a <SOURCE_TABLE> <DESTINATION_TABLE>
bq cp -f <SOURCE_TABLE> <DESTINATION_TABLE>
bq cp -n <SOURCE_TABLE> <DESTINATION_TABLE>
bq cp <SOURCE_TABLE>@<SNAPSHOT_TIME_MS> <DESTINATION_TABLE>
テーブルをコピーします。プロジェクト間コピーも可能です。 -a (--append_table): 宛先テーブルに追記します。 -f (--force): 宛先テーブルが存在する場合、上書きします。 -n (--no_clobber): 宛先テーブルが存在する場合、何もしません。 @<SNAPSHOT_TIME_MS>: 特定時点のスナップショットをコピーします(過去7日間)。
テーブル情報更新
bq update --description "新しい説明" <DATASET_ID>.<TABLE_ID>
bq update --expiration 7776000 <DATASET_ID>.<TABLE_ID>
bq update --expiration 0 <DATASET_ID>.<TABLE_ID>
bq update <DATASET_ID>.<TABLE_ID> schema_update.json
テーブルの説明や有効期限(秒数、0で無期限)を更新します。スキーマの更新も可能です(詳細はスキーマ操作のセクションを参照)。
データセット情報更新
bq update --description "新しい説明" <DATASET_ID>
bq update --default_table_expiration 86400 <DATASET_ID>
データセットの説明やデフォルトのテーブル有効期限を更新します。

📊 データの表示・取得

テーブル内のデータをプレビュー表示します。

目的 コマンド例 説明
テーブルの先頭行を表示
bq head <DATASET_ID>.<TABLE_ID>
bq head -n 100 <DATASET_ID>.<TABLE_ID>
bq head --selected_fields field1,field2 <DATASET_ID>.<TABLE_ID>
bq head --start_row 50 <DATASET_ID>.<TABLE_ID>
bq head --format=csv <DATASET_ID>.<TABLE_ID> > head_data.csv
テーブルの先頭から指定した行数(デフォルトは5行)のデータを表示します。-nで行数指定、--selected_fieldsで列指定、--start_rowで開始行指定、--format=csvでCSV形式出力などが可能です。大量データの取得には向きません。
テーブルデータを全件取得 (非推奨)
bq query --nouse_legacy_sql --format=csv --max_rows=<LARGE_NUMBER> "SELECT * FROM `<DATASET_ID>.<TABLE_ID>`" > all_data.csv
bq extract <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/data*.csv
⚠️ bq query --format=csv で全件取得するのは、データ量が多い場合に非効率的で失敗する可能性があります。大量データのエクスポートには bq extract コマンドを使用してください。(詳細はデータ書き出しのセクションを参照)

📥 データの読み込み (Load)

ローカルファイルやCloud Storage上のファイルからデータをBigQueryテーブルに読み込みます。

注意: Cloud Shell以外のローカル環境からローカルファイルを直接bq loadで読み込むことは非推奨です。通常はCloud Storage経由で読み込みます。
目的 / オプション コマンド例 説明
Cloud StorageからCSV読み込み (スキーマ自動検出)
bq load --autodetect --source_format=CSV <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data.csv
GCS上のCSVファイルを読み込みます。--autodetectでスキーマを自動検出します。
Cloud StorageからCSV読み込み (スキーマ指定)
bq load --source_format=CSV <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data.csv <SCHEMA>
bq load --source_format=CSV <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/data.csv name:STRING,age:INTEGER
bq load --source_format=CSV <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/data.csv ./schema.json
スキーマをコマンドラインまたはJSONファイルで指定してCSVファイルを読み込みます。
Cloud StorageからJSON (Newline Delimited) 読み込み
bq load --autodetect --source_format=NEWLINE_DELIMITED_JSON <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data.jsonl
bq load --source_format=NEWLINE_DELIMITED_JSON <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/data.jsonl schema.json
GCS上の改行区切りJSON (JSONL) ファイルを読み込みます。スキーマ自動検出または指定が可能です。
Cloud StorageからAvro/Parquet/ORC読み込み
bq load --source_format=AVRO <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data.avro
bq load --source_format=PARQUET <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data.parquet
bq load --source_format=ORC <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data.orc
Avro, Parquet, ORC形式はスキーマがファイル自体に含まれているため、通常スキーマ指定や--autodetectは不要です。
ローカルファイルからCSV読み込み (Cloud Shellなど)
bq load --autodetect --source_format=CSV <DATASET_ID>.<TABLE_ID> ./local_data.csv
ローカルのCSVファイルを読み込みます。Cloud Shell環境などで利用可能です。大規模ファイルには不向きです。
ワイルドカードによる複数ファイル読み込み
bq load --autodetect --source_format=CSV <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/data_*.csv
GCS上のパスにワイルドカードを使用して複数のファイルを一度に読み込みます。
テーブル上書き (Replace)
bq load --replace --autodetect --source_format=CSV <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/new_data.csv
--replaceフラグを指定すると、読み込み先に同名テーブルが存在する場合、そのテーブルを削除してから新しいデータでテーブルを作成します。
テーブル追記 (Append)
bq load --noreplace --autodetect --source_format=CSV <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/additional_data.csv
--noreplace (またはフラグなしのデフォルト) は、読み込み先に同名テーブルが存在する場合、データを追記します。スキーマが一致しない場合はエラーになることがあります。
スキーマ更新オプション (追記時)
bq load --noreplace --schema_update_option=ALLOW_FIELD_ADDITION --source_format=CSV <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/data_with_new_cols.csv schema_with_new_cols.json
bq load --noreplace --schema_update_option=ALLOW_FIELD_RELAXATION --source_format=CSV <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/data.csv schema.json
追記時にスキーマの変更を許可します。 ALLOW_FIELD_ADDITION: 新しい列の追加を許可します。 ALLOW_FIELD_RELAXATION: REQUIRED列がNULLABLEに変更されるのを許可します。
ヘッダー行スキップ (CSV)
bq load --skip_leading_rows=1 --autodetect --source_format=CSV <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/data_with_header.csv
--skip_leading_rows=<N> で、CSVファイルの先頭N行をスキップします。ヘッダー行を除外する場合によく使われます。
区切り文字指定 (CSV)
bq load --field_delimiter='\t' --source_format=CSV <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/data.tsv schema.json
--field_delimiter でCSVの区切り文字を指定します。デフォルトはカンマ(,)です。タブ区切り(TSV)の場合は \t を指定します。
不正な行の許容
bq load --max_bad_records=10 --source_format=CSV <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/data.csv schema.json
--max_bad_records=<N> で、スキーマに合わないなどの理由で不正と判断される行がN行まで許容されます。デフォルトは0です。
同期/非同期実行
bq load --sync=false ... (非同期、デフォルト)
bq load --sync=true ... (同期)
--sync=true を指定すると、ロードジョブが完了するまでコマンドが待機します。デフォルト(false)ではジョブを開始してすぐにコマンドプロンプトが返ります。

📤 データの書き出し (Extract)

BigQueryテーブルのデータをCloud Storageにファイルとして書き出します。

目的 / オプション コマンド例 説明
テーブルデータをCSV形式でGCSに書き出し
bq extract <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data.csv
bq extract --destination_format CSV <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data_*.csv
テーブルデータをCSV形式でGCSに書き出します。デフォルトの形式はCSVです。データサイズが大きい場合、ファイルは分割されるため、出力パスにワイルドカード * を含める必要があります(例: data_*.csv)。
JSON (Newline Delimited) 形式で書き出し
bq extract --destination_format NEWLINE_DELIMITED_JSON <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data_*.jsonl
改行区切りJSON (JSONL) 形式で書き出します。
Avro形式で書き出し
bq extract --destination_format AVRO <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data_*.avro
Avro形式で書き出します。
Parquet形式で書き出し
bq extract --destination_format PARQUET <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data_*.parquet
Parquet形式で書き出します。
圧縮形式の指定
bq extract --compression GZIP <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data_*.csv.gz
bq extract --compression DEFLATE --destination_format AVRO <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data_*.avro
bq extract --compression SNAPPY --destination_format AVRO <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data_*.avro
--compression で圧縮形式を指定します。CSV, JSONでは GZIP、Avroでは DEFLATE, SNAPPY が指定可能です。Parquetは通常内部で圧縮されます。ファイル名に適切な拡張子 (例: .gz) を付けることが推奨されます。
区切り文字の指定 (CSV)
bq extract --field_delimiter '\t' <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data_*.tsv
--field_delimiter でCSV書き出し時の区切り文字を指定します。デフォルトはカンマ(,)です。
ヘッダー行の出力 (CSV)
bq extract --print_header=true <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data_*.csv
bq extract --print_header=false <DATASET_ID>.<TABLE_ID> gs://<BUCKET_NAME>/path/to/data_*.csv
--print_header=true (デフォルト) でCSVファイルの先頭にヘッダー行を出力します。false でヘッダーなしになります。
同期/非同期実行
bq extract --sync=false ... (非同期、デフォルト)
bq extract --sync=true ... (同期)
--sync=true を指定すると、エクスポートジョブが完了するまでコマンドが待機します。デフォルト(false)ではジョブを開始してすぐにコマンドプロンプトが返ります。

🔍 クエリの実行

SQLクエリを実行し、結果を表示したり、新しいテーブルに保存したりします。

目的 / オプション コマンド例 説明
標準SQLクエリ実行 (結果表示)
bq query --nouse_legacy_sql 'SELECT name, age FROM `<PROJECT_ID>.<DATASET_ID>.<TABLE_ID>` WHERE age > 30 LIMIT 10'
bq query --use_legacy_sql=false 'SELECT ...'
--nouse_legacy_sql または --use_legacy_sql=false を指定して標準SQL (GoogleSQL) を実行します。結果はコンソールに表示されます。テーブル名はバッククォート(`)で囲みます。
レガシーSQLクエリ実行 (結果表示)
bq query --use_legacy_sql 'SELECT name, age FROM [<PROJECT_ID>:<DATASET_ID>.<TABLE_ID>] WHERE age > 30 LIMIT 10'
--use_legacy_sql (または --use_legacy_sql=true) を指定してレガシーSQLを実行します。テーブル名は角括弧([])で囲みます。特別な理由がない限り、標準SQLの使用が推奨されます。
クエリ結果を新しいテーブルに保存
bq query --nouse_legacy_sql --destination_table <DATASET_ID>.<NEW_TABLE_ID> 'SELECT * FROM `<SOURCE_TABLE>` WHERE ...'
bq query --nouse_legacy_sql --destination_table <PROJECT_ID>:<DATASET_ID>.<NEW_TABLE_ID> 'SELECT ...'
--destination_table オプションで、クエリ結果を保存する新しいテーブルを指定します。テーブルが存在しない場合は作成されます。
クエリ結果を既存テーブルに追記
bq query --nouse_legacy_sql --destination_table <EXISTING_TABLE> --append_table 'SELECT * FROM `<SOURCE_TABLE>` WHERE ...'
--destination_table--append_table (または --append) を指定すると、既存のテーブルにクエリ結果を追記します。スキーマが一致する必要があります。
クエリ結果で既存テーブルを上書き
bq query --nouse_legacy_sql --destination_table <EXISTING_TABLE> --replace 'SELECT * FROM `<SOURCE_TABLE>` WHERE ...'
--destination_table--replace を指定すると、既存のテーブルを削除し、クエリ結果で新しいテーブルを作成(上書き)します。
バッチモードでの実行
bq query --nouse_legacy_sql --batch 'SELECT complex_calculation FROM `large_table`'
--batch フラグを指定すると、クエリはバッチジョブとしてキューイングされ、インタラクティブクエリよりも低い優先度で実行されます。実行開始まで時間がかかる場合がありますが、長時間実行されるクエリに適しています。
結果サイズ制限の緩和 (宛先テーブル指定時)
bq query --nouse_legacy_sql --allow_large_results --destination_table <TABLE> 'SELECT ... FROM `very_large_table`'
--allow_large_results フラグは、クエリ結果が無料枠のキャッシュサイズ制限を超える場合に必要です。宛先テーブル (--destination_table) の指定が必須です。レガシーSQLではデフォルトで有効です。
最大課金バイト数の設定
bq query --nouse_legacy_sql --maximum_bytes_billed 1000000000 'SELECT * FROM `some_table`'
# 1 GB = 10^9 bytes
--maximum_bytes_billed <BYTES> で、クエリがスキャンする最大バイト数を制限します。意図しない高額課金を防ぐのに役立ちます。超えた場合はエラーになります。
クエリパラメータの使用
bq query --nouse_legacy_sql --parameter='name:STRING:Alice' --parameter='min_age:INT64:30' 'SELECT * FROM `my_table` WHERE name = @name AND age > @min_age'
--parameter='<NAME>:<TYPE>:<VALUE>' 形式でクエリパラメータを指定します。SQLインジェクションを防ぎ、クエリの再利用性を高めます。標準SQLでのみ利用可能です。
ドライラン (Dry Run)
bq query --nouse_legacy_sql --nouse_cache --dry_run 'SELECT * FROM `large_table`'
--dry_run フラグを指定すると、実際にクエリを実行せずに、構文チェックやスキャンされるデータ量(課金対象バイト数)の見積もりを行います。コストの見積もりに便利です。--nouse_cache を併用するとキャッシュを無視してバイト数を見積もります。
SQLファイルを指定して実行
bq query --nouse_legacy_sql < query.sql
cat query.sql | bq query --nouse_legacy_sql
ファイルに保存されたSQLクエリを標準入力から読み込んで実行します。
結果のフォーマット指定 (コンソール出力時)
bq query --nouse_legacy_sql --format=csv 'SELECT ...'
bq query --nouse_legacy_sql --format=prettyjson 'SELECT ...'
--format オプションで、コンソールに出力される結果のフォーマットを指定できます (csv, json, prettyjson, none など)。bq head と同様に、大量データの取得には向きません。

⏱️ ジョブの管理

実行中のジョブや過去のジョブの状態を確認したり、キャンセルしたりします。

目的 コマンド例 説明
ジョブ一覧表示
bq ls -j
bq ls -j --all
bq ls -j -n 100
bq ls -j --project_id=<PROJECT_ID>
bq ls -j --state=running
最近実行されたジョブ(クエリ、ロード、エクスポートなど)の一覧を表示します。 -j (--jobs): ジョブ一覧を表示します。 --all: 全てのユーザーのジョブを表示します(権限が必要)。 -n <NUM>: 表示する最大ジョブ数を指定します。 --project_id: 対象のプロジェクトを指定します。 --state: ジョブの状態 (running, pending, done) でフィルタリングします。
ジョブ詳細表示
bq show -j <JOB_ID>
bq show --format=prettyjson -j <PROJECT_ID>:<LOCATION>.<JOB_ID>
指定したジョブIDの詳細情報(ジョブタイプ、状態、開始/終了時刻、処理バイト数、エラー情報など)を表示します。ジョブIDは bq ls -j で確認できます。プロジェクトIDやロケーションが必要な場合もあります。
ジョブのキャンセル
bq cancel <JOB_ID>
bq cancel <PROJECT_ID>:<LOCATION>.<JOB_ID>
実行中 (RUNNING) または待機中 (PENDING) のジョブをキャンセルします。キャンセルが必ず成功するとは限りません。

📝 スキーマの操作

テーブルのスキーマ定義を確認したり、変更したりします。

目的 コマンド例 説明
スキーマ表示
bq show --schema <DATASET_ID>.<TABLE_ID>
bq show --schema --format=prettyjson <DATASET_ID>.<TABLE_ID>
テーブルのスキーマ情報をJSON形式で表示します。--format=prettyjson を付けると見やすくなります。
スキーマ定義をファイルに保存
bq show --schema --format=prettyjson <DATASET_ID>.<TABLE_ID> > schema.json
bq show --schema の出力をリダイレクトして、スキーマ定義をJSONファイルとして保存します。
スキーマの更新 (列の追加など)
bq update <DATASET_ID>.<TABLE_ID> ./new_schema.json
# new_schema.json の例 (列 'new_column' を追加)
[
  {"name": "existing_col1", "type": "STRING", "mode": "NULLABLE"},
  {"name": "existing_col2", "type": "INTEGER", "mode": "NULLABLE"},
  {"name": "new_column", "type": "BOOLEAN", "mode": "NULLABLE"}
]
既存のテーブルスキーマを更新します。JSONファイルで新しいスキーマ全体を指定します。 可能な変更:
  • 列の追加 (modeNULLABLE または REPEATED のみ)
  • 列のモードを REQUIRED から NULLABLE に緩和
  • 列の説明 (description) の追加・変更
不可能な変更:
  • 列名の変更
  • 列のデータ型の変更
  • 列のモードを NULLABLE から REQUIRED に変更
  • 列の削除 (ビューを作成するか、新しいテーブルに再作成する必要があります)

💡 その他の便利なコマンド

その他の便利なbqコマンドやオプションです。

目的 コマンド例 説明
ヘルプ表示
bq help
bq help <COMMAND>
bq help load
bq query --help
bqコマンド全体、または特定のサブコマンド (load, query など) のヘルプメッセージを表示します。
バージョン表示
bq version
bqコマンドツールのバージョンを表示します。
グローバルフラグ: プロジェクトID指定
bq --project_id=<PROJECT_ID> ls
--project_id フラグを付けると、そのコマンド実行時のみ対象のプロジェクトIDを指定できます。デフォルト設定を一時的に上書きします。
グローバルフラグ: ロケーション指定
bq --location=<LOCATION> mk my_dataset
--location フラグで、データセット作成時などのロケーションを指定します (例: US, EU, asia-northeast1)。
APIリクエスト/レスポンス表示
bq --apilog=stdout ls
bq --apilog=./bq_api.log ls
--apilog フラグを指定すると、bqコマンドが内部で呼び出しているBigQuery APIのリクエストとレスポンスの詳細を標準出力または指定ファイルに出力します。デバッグに役立ちます。

コメント

タイトルとURLをコピーしました