しごと自動化レシピ

WORK RECIPE Python

Pythonで自動化用JSON設定の必須項目と型を検査する

自動化処理を起動する前に、設定ファイルの項目名と型を点検します。キーの重複も止め、真偽値を数値と誤認しない条件を入れた、小さな検証用設定チェックです。

掲載コード実行確認

確認日時:2026-10-17T07:36:11.573547+00:00

確認環境:{"os": "Windows", "os_release": "11", "python": "3.14.2", "launch_flags": ["-I", "-X", "utf8"]}

確認した範囲

  • 記事の入力例と期待結果を照合
  • 元入力のバイト列が不変
  • 真偽値の数量扱い・重複キーを拒否

未確認・対象外

  • 実業務データ
  • 他OS・他Python版

実機での処理結果の確認と、記事の全画面操作の確認は別です。実行確認の記録(JSON)で確認結果と原稿のSHA-256を参照できます。

できあがるもの

サンプル設定はCONFIG_OKと表示される想定。欠落・重複キーや型違いは例外で停止する。確認環境と範囲は本記事の実行確認欄を参照してください。

始める前に

  • Python 3.11以降の実行環境。標準ライブラリだけを使い、追加パッケージや外部APIは不要。python --versionで起動を確認する。
  • 新しいローカル検証フォルダに架空の入力だけを置く。本番の共有フォルダや同期フォルダで実行しない。
入力例

config.jsonの本文は{"project":"demo","batch_size":20,"enabled":false}とする。認証情報や本番パスは書かない。

手順

  1. 新しい検証フォルダへconfig.jsonをUTF-8で作る。許可キーはproject・batch_size・enabledの3つだけとし、追加キーもエラーにする。プロジェクト名の存在や権限を外部サービスへ確認する手順ではない。
  2. 同じ検証フォルダへrecipe.pyをUTF-8で保存し、次のコードをコピーする。入力名が合うか確認し、出力ファイルが必要な手順では未作成の名前を使う。 ```python import json from pathlib import Path def unique_pairs(pairs): result = {} for key, value in pairs: if key in result: raise ValueError('duplicate key: ' + key) result[key] = value return result config = json.loads(Path('config.json').read_text(encoding='utf-8-sig'), object_pairs_hook=unique_pairs) if type(config) is not dict or set(config) != {'project', 'batch_size', 'enabled'}: raise ValueError('unexpected keys') if type(config['project']) is not str or not config['project'].strip(): raise ValueError('project must be nonempty text') if type(config['batch_size']) is not int or not 1 <= config['batch_size'] <= 100: raise ValueError('batch_size must be integer 1..100') if type(config['enabled']) is not bool: raise ValueError('enabled must be boolean') print('CONFIG_OK') ```
  3. ターミナルをその検証フォルダで開き、python recipe.pyを実行する。入力は読み取り専用で扱う。エラー時は元データを編集せず、表示されたファイル名や入力形式を確認して停止する。
  4. CONFIG_OKが出るか確認する。別のコピーでbatch_sizeをtrueに変更すると停止するか、キーを重複させるとduplicate keyで止まるかを試す。このスクリプトは検査だけで処理本体を起動しないのでenabledをtrueにしても外部操作は実行しない。

期待結果と照合する

サンプル設定はCONFIG_OKと表示される想定。欠落・重複キーや型違いは例外で停止する。確認環境と範囲は本記事の実行確認欄を参照してください。

まずこの入力例で確認し、件数や値が一致しているかを見ます。完了表示だけで判断せず、重複・空欄・対象外データも残っていないか確認してください。

うまくいかないとき

  • Pythonではboolがintの仲間として扱われるため、この例はtypeで厳密に型を確認する。
  • 構造が正しくても設定内容の妥当性や利用権限までは分からない。処理本体の事前確認も必要。

止める・元に戻す

プログラムを終了する。設定を自動修正も保存もしていないので、元のJSONが残る。変更した検証コピーだけを片付ける。

公式資料・対応範囲

参照日:2026-10-17。公式資料の一般的な機能説明と、本記事固有の入力例の実行検証は別です。実務での短縮時間や効果は未計測です。

同じツールで試す

Pythonの記事一覧へ →