Python

Python is a general-purpose language widely used for automation, scripting, and data processing; this page gives you a practical “minimum working set” to write, run, and troubleshoot Python reliably.

Python

Pythonは「何ができるか」と「最小の型(実行・基本構文・例外・import・運用の勘所)」で迷わないための判断軸をまとめます。

このページでできるようになること

まずは直感:Pythonって何?

ざっくり言うと、Pythonは「定型作業をプログラムにして、何度でも同じ結果を出す」ための道具です。

正確な定義(仕様に沿った説明)

何のために存在するか

Pythonは、読みやすさを重視した汎用プログラミング言語で、短いスクリプトから大きなアプリまで同じ文法で書けます。実務では「運用の小さな自動化」を積み上げて、手作業のミスと時間を減らす目的でよく使います。

何に適用されるか(対象)

スクリプト(単体の.py
1回実行して結果を出す用途に向きます(ログ集計、ファイル整理など)。
モジュール(importされるファイル)
再利用したい処理を部品化します(共通処理、設定読込、APIクライアントなど)。
パッケージ(ディレクトリ単位)
複数モジュールを整理します。規模が増えたときに効きます。

できること / できないこと(制約)

できること
  • 標準ライブラリで、ファイルI/O、文字列処理、日時、JSON、HTTPなどを扱える
  • try / exceptで失敗を制御し、復旧・ログ・終了コードにつなげられる
  • venvでプロジェクトごとに依存関係を分離し、環境差事故を減らせる
できないこと(重要)
  • 環境差を無視して「どこでも同じように動く」を保証すること(Python本体・OS・依存パッケージで挙動は変わり得る)
  • 例外を無視して安全に運用すること(握りつぶすと原因が消える)
  • 外部入力(ファイル名、URL、環境変数)を無検証で安全に扱うこと(正規化と検証が必要)

影響範囲(実行結果/例外/性能/保守/セキュリティ/運用への影響)

実行結果
入力(ファイル、引数、環境変数)と状態(カレントディレクトリ、権限、文字コード)に強く依存します。
例外
失敗は例外として表れ、トレースバックに「どこで何が起きたか」が出ます。最初に見るべき情報です。
性能
小~中規模の運用自動化には十分なことが多い一方、巨大データや高頻度処理は設計(I/O削減、バッチ化、並列化)の影響が大きいです。
保守
関数化と命名が効きます。短いスクリプトでも「読み返して分かる」を優先すると運用が楽になります。
セキュリティ
外部入力(パス、URL、コマンド文字列)をそのまま使うと危険です。特にパスは「意図しない場所を書き換える」事故が起きます。
運用
ログ(いつ、何を、どこまでやったか)と終了コード(成功/失敗)を整えると、監視やジョブ管理に載せやすくなります。

基本の書き方(最短の型)

最小サンプル(コピペ用)

まずは「動いた!」を確認するだけの最短コードです(Hello, Python と1行表示)。

bash

python -V
python hello.py

Python

print("Hello, Python")
これが何をしているか(1つずつ丁寧に)
print(...)
画面(ターミナル)に文字を表示する命令です。カッコの中に入れた内容が表示されます。
"Hello, Python"
ダブルクォート(")で囲まれた部分は文字列(テキスト)です。つまり「Hello, Python」という文字そのものを表します。
print("Hello, Python") 全体
「Hello, Python という文字を画面に出してね」という意味になります。
初めて触る人向け:動かして確認する手順(迷わない版)
  1. ファイルを作る

    1. メモ帳 / VS Code などを開きます。
    2. 次の1行をそのまま貼り付けます。

    Python

    print("Hello, Python")
    1. ファイル名を hello.py で保存します(拡張子が .py になっていることが重要です)。
  2. ターミナル(コマンド)で実行する

    保存したフォルダでターミナル(Windowsならコマンドプロンプト / PowerShell、Macならターミナル)を開いて実行します。

    bash

    python -V

    バージョンが表示されれば、Pythonコマンドが使えています。次に実行します。

    bash

    python hello.py
  3. 成功の確認

    次のように表示されたら成功です。

    text

    Hello, Python
もし動かなかったとき(初心者が詰まりやすい所だけ最短で)
python: command not found / 「python は認識されません」

Pythonがインストールされていないか、コマンドが通っていません。

  • Mac / Linux:まず python3 を試します。
  • Windows:Pythonを入れた後に「Add Python to PATH」を入れていないと起きやすいです。

bash

python3 -V
python: can't open file 'hello.py' / 「ファイルが見つかりません」

コマンドを打っている場所(フォルダ)が違う可能性が高いです。

  • Windows:dirhello.pyが見えるか確認します。
  • Mac / Linux:lshello.pyが見えるか確認します。

bash

dir
# または
ls
何も表示されない

このコードは必ず1行表示されます。表示されない場合は、次を確認してください。

  • 保存できているか(hello.pyが更新されているか)
  • 実行しているファイルが本当にそのhello.pyか(同名ファイルが別フォルダにないか)
  • 拡張子が .py になっているか(hello.py.txtになっていないか)

よく使うパターン

条件分岐
ifで「条件なら実行」を書きます。
繰り返し
forでリストやファイル行を順番に処理します。
関数化
defで処理を分け、テストしやすくします。
例外処理
try / exceptで失敗を捕まえ、ログと終了コードにつなげます。
モジュール利用
importで標準ライブラリや自作モジュールを使います。

どこに書くか(単体スクリプト/モジュール化/関数化の位置づけ)

単体スクリプト(まずはここ)
1ファイルで完結する作業(ログ集計、ファイル整理)に向きます。ただし直書きが増えたら関数へ。
関数化(最優先で身につける)
「入力→処理→出力」を関数に分けると、壊れたときに原因が追いやすくなります。
モジュール化(増えたら)
共通処理(パス解決、設定読込、ログ設定)を別ファイルへ分離します。

仕様として押さえるポイント(初心者が事故りやすい所)

スコープ(ローカル/グローバル)
defの中で代入した名前は基本的にローカルです。外側の変数を代入で更新したい場合、安易にglobalに逃げず、引数と戻り値で受け渡す方が壊れにくいです。
例外(何が起きるか、どう捕まえるか)
例外は「起きる前提」で設計します。except Exceptionを広く捕まえるのは最終手段で、まずはFileNotFoundErrorなど具体的に捕まえます。
型(str/int/list/dict
運用で多い事故は「文字列だと思ったら数値だった」「空文字/空リストを想定してない」です。type()やログで入力の実体を確認できる形にします。
参照と代入、ミュータブル/イミュータブル
listdictはミュータブル(中身が変わる)なので、関数引数で受けたものを破壊的に変更すると呼び出し側に影響します。必要ならコピー(例:list(x))を作ります。
importの挙動
importは「どこから探すか」に依存します。同名ファイル(例:json.py)を置くと標準ライブラリより先に読まれて事故ります。
省略時の扱い、想定外入力の扱い
外部入力(ファイルパス、環境変数、JSON)は欠ける前提で扱います。dict.get()tryで「欠けたらどうする」を先に決めます。

よくある勘違い・混同ポイント

Pythonとpipは同じ?

Pythonは言語(実行環境)、pipは外部パッケージを入れる道具です。Pythonが入っていても、プロジェクトの依存はpipで揃える必要があります。

pythonpython3の違い

環境によってコマンド名が違います。運用では「どのPythonを使ったか」をログに出し、venvで固定するのが安全です。

print()で十分? ログは要る?

小さい検証はprint()で十分ですが、運用では出力先・時刻・レベルが揃うloggingが強いです。まずは「エラーだけでも分かる」形にします。

「動くけど危ない書き方」:except:で全部握る

except:は想定外まで飲み込みます。復旧不能になりやすいので、具体的な例外を捕まえるか、捕まえるならログと再送(raise)をセットにします。

実務でよくある使用例(Web運用の現場を想定)

ログ解析:エラーパターンの集計

.logを読み、特定の文字列を含む行数を数えるだけでも「手作業でgrepしてメモ」の時間を消せます。まずはpathlibsplitlines()で十分です。

監視補助:チェック結果を終了コードで返す

監視やジョブ管理は「成功/失敗」を欲しがります。main()intを返し、最後にraise SystemExit(...)で返す型は相性が良いです。

定期実行:再実行性(冪等性)を意識する

同じ処理を何度走らせても壊れないように、「上書きする/しない」「既に存在する場合の扱い」を決めます。ファイル出力なら一時ファイル→リネーム、も候補です。

実務で起きがちな事故と回避策

動かない(環境差)

原因候補:仮想環境が違う
venvを作って有効化し、同じ環境で実行します。まずsys.versionpipの向き先が一致しているか確認します。
原因候補:実行場所(cwd)が違う
相対パス(例:input.txt)はcwdに依存します。ログにPath.cwd()を出し、必要なら設定で入力パスを受け取ります。

想定外の結果(型・境界値)

原因候補:空データ
空ファイル、空リスト、欠けたキーが典型です。if not lines:のような分岐で扱いを決めます。
原因候補:文字コード
UnicodeDecodeErrorが出たら、まずencodingを指定して読みます。ログにファイル名と候補(utf-8/shift_jisなど)を残すと復旧が速いです。

想定外の影響(上書き・削除・秘密情報)

原因候補:パスを外部入力で受けている
外部入力(引数、環境変数)をそのままPathにすると危険です。許可ディレクトリ配下か、拡張子が期待どおりか、など最低限の検証を入れます。
原因候補:ログに秘密情報を出している
APIキーやトークンをそのままprint()しないようにします。必要なら伏字にします。

運用で破綻(冪等性不足、タイムアウト、終了コード)

原因候補:途中で落ちると次回が壊れる
途中成果物(一時ファイル)を分け、最後に確定させると復旧しやすいです。
原因候補:失敗しても成功扱いになる
失敗時は非0の終了コードを返します。監視は終了コードで判断できることが多いです。

アクセシビリティ/UX観点での注意(CLI/ログ/運用者体験)

関連構文・関連モジュールとの組み合わせ・相互作用

pathlib
パス文字列の手作業を減らし、OS差を吸収しやすいです。ファイルI/OはまずPathから始めると事故が減ります。
json
APIレスポンスや設定ファイルの読み書きで頻出です。例外(JSONDecodeError)が出る前提で設計します。
logging
運用に乗せるなら最終的にここへ寄せると強いです。まずはprint()で型を作り、必要になったら移行でもOKです。
argparse
引数(入力パス、モード)を受け取れるようにすると、相対パス事故が減ります。運用では「実行時に変える」を作ると便利です。
venv / pip
環境差事故を減らすセットです。依存はプロジェクト単位で固定する方が安定します。

試験(Pythonエンジニア認定基礎試験)で得点できる整理

用語ミニ辞典

statement(文)
ifforのように処理の流れを作る要素。
expression(式)
値を作る要素。例:1 + 2len(x)
exception(例外)
失敗を表す仕組み。try / exceptで扱う。
module(モジュール)
importで読み込める部品(多くは1ファイル)。
mutable(ミュータブル)
listdictのように中身が変わる型。

ひっかけポイント(短く)

「問われ方」っぽいミニ確認(解説付き)

  1. 問題:listを関数に渡して中でappend()した。呼び出し側のlistはどうなる?

    解説:listはミュータブルなので、同じオブジェクトを参照していれば呼び出し側にも反映されます。必要ならコピーを作ります。

  2. 問題:例外を捕まえるとき、まず避けたい書き方は?

    解説:except:except Exception:で何でも握るのは、原因が消えて運用で詰みやすいので避けます。

  3. 問題:import jsonが失敗する。よくある原因は?

    解説:同じディレクトリにjson.pyがあると、標準ライブラリより先に読み込まれて壊れることがあります。

  4. 問題:ファイル読込でUnicodeDecodeErrorが出た。最初の対応は?

    解説:read_text(encoding="utf-8")のようにencodingを明示し、必要なら別候補(shift_jisなど)を試します。

  5. 問題:スクリプトを監視に載せるときに役立つ「終了状態」の表現は?

    解説:終了コードです。成功は0、失敗は非0にすると外側が判断しやすいです。

よくある質問(FAQ)

Pythonは何に向いていますか?
自動化、ログ解析、API連携、運用補助など「手作業を減らして再現性を上げる」用途に向きます。
Pythonの実行方法(.py)はどう決めればいいですか?
まずはpython script.pyで実行し、処理が増えたら関数化し、共通処理はモジュールに分けます。定期実行なら終了コードとログを整えます。
importが失敗するのはなぜですか?
仮想環境が違う、実行場所が違う、同名ファイルが標準ライブラリを上書きしている、が典型原因です。sys.versionPath.cwd()を出すと切り分けが進みます。
例外は握りつぶしてもいいですか?
基本は避けます。運用で原因が追えなくなるので、捕まえるならログに残し、必要ならraiseで上位に伝えます。
最初に覚える標準ライブラリは何ですか?
pathlibjsondatetimeloggingが運用で効きやすいです。まずはpathlibでパス事故を減らすのが安全です。

よくあるエラー/症状 早見表

症状:FileNotFoundErrorが出る
原因候補:相対パスの基準(cwd)が想定と違う / パスの打ち間違い
最短の確認:Path.cwd()と対象パスをログに出す
解決の方向性:入力パスを引数化する、絶対パスで渡す、存在確認(Path.exists())を入れる
症状:UnicodeDecodeErrorが出る
原因候補:ファイルの文字コードが想定と違う
最短の確認:read_text(encoding="utf-8")のようにencodingを明示して試す
解決の方向性:運用で扱う文字コードを決める、失敗時に候補を案内するログを出す
症状:ModuleNotFoundErrorが出る
原因候補:仮想環境が違う / pipの向き先が違う / 探索順の問題(同名ファイル)
最短の確認:sys.versionpython -m pip --versionで対応を確認
解決の方向性:venvを固定する、同名ファイル(例:json.py)を避ける
症状:失敗しているのに成功扱いになる
原因候補:例外を握りつぶしている / 終了コードを返していない
最短の確認:except:passがないか検索する
解決の方向性:ログを残す、非0終了コードを返す、必要ならraiseで上位に伝える

まとめ:迷ったときの判断軸(短いチェックリスト)