非エンジニアの情シスが知っておくべきPython最小知識:これだけ覚えれば業務スクリプトが読める
TL;DR
変数・if文・for文・関数(def) ― この4つの構文を知っていれば、業務スクリプトの8割は読める。
「書けるようになる」は目標にしない。「読める・何をしているか説明できる・依頼できる」が情シス担当として必要な到達点です。
情シスにとって「読める」は十分な武器になる
毎月末のExcel転記やCSV集計に2〜3時間かかっている場合、「自動化できないか」という問いは自然に出てきます。ただ、そこから「Pythonを学ぼう」と調べ始めると、チュートリアルの量と専門用語の多さで止まることが多い。
自動化を外注する、あるいは社内の詳しい人に依頼するにしても、スクリプトを「読める」状態になっていると発注精度が変わります。「このfor文は何行のCSVでも繰り返してくれるから、来月のデータが増えても動く」という理解があれば、依頼時の認識ズレが減り、確認のやり取りが1回で済みます。
インソースの事例では、人事部で3か月に1度・3時間かかっていた集計業務がスクリプト化によって1回3分になり、営業部では月次の入力作業を20名分で年間280時間短縮しています。いずれも「書けるエンジニアが1人いる環境」で実現されたケースです。読める情シス担当がいると、そういう人に的確に依頼できます。
業務スクリプトを読むために必要な構文は4つだけ
Python公式チュートリアルをベースに、実務スクリプトで頻繁に登場する構文を4つに絞ります。これ以外の書き方は、4つを理解してから追加で覚えれば十分です。
1. 変数 ― スクリプトの設定値が読める
変数は「名前のついた箱」です。スクリプトの冒頭にまとめて書かれていることが多く、ここを読むだけでそのスクリプトが何をするものか8割わかります。
# 処理対象のフォルダパスと出力ファイル名を設定
input_folder = "C:/Users/tanaka/Desktop/monthly_data"
output_file = "summary_2026_07.csv"
このコードが読めると「input_folder を変更すれば別月のフォルダにも使えるな」という判断ができます。変数の名前は作成者が自由につけているので、input_folder や target_path のような名前から用途を読み取るのが最初のポイントです。
2. if文 ― 条件分岐が読める
if文は「条件が当てはまるときだけ処理する」という書き方です。
# ファイル名に「2026」が含まれる場合だけ処理する
if "2026" in filename:
process(filename) # 対象ファイルを処理する
else:
skip(filename) # 対象外はスキップする
if 〇〇: の後にインデント(字下げ)が入っている部分が「条件を満たしたときの処理」です。else: は「それ以外のとき」。このパターンを見つけたら「ここで振り分けをしている」と読めます。
インソースの解説では、条件分岐は「状況に応じた処理の分岐」として整理されており、業務スクリプトで最も頻繁に登場する構文の一つです。
3. for文 ― 繰り返し処理が読める
for文は「リストの中のものを1件ずつ取り出して処理する」書き方です。Python公式チュートリアルによると、Pythonのfor文は「任意のシーケンス型(リストまたは文字列)にわたって反復を行います。反復の順番はシーケンス中に要素が現れる順番」です。
# ファイルリストの中のCSVを1件ずつ読み込む
for csv_file in csv_files:
read_and_aggregate(csv_file) # 集計処理を実行
for 〇〇 in 〇〇: というパターンが見えたら「ここで繰り返している」と判断できます。CSVが10件でも100件でも同じコードで処理できるのがfor文の強みです。「来月データが増えても動きますか?」という質問への答えが、このコードを見るとわかります。
4. 関数(def) ― 処理のかたまりの目的が読める
関数(def で始まる部分)は「繰り返し使う処理をまとめて名前をつけたもの」です。
# CSV集計処理をまとめた関数
def aggregate_csv(filepath):
# ここに集計の詳細処理が入る
return result # 結果を返す
def 関数名(引数): という形で定義され、後から aggregate_csv("data.csv") のように呼び出して使います。関数名を見るだけで「何をする処理か」がわかるように名付けられているので、スクリプトの全体像を把握するのに役立ちます。詳細を読み込まなくても「この関数はCSVを集計するんだな」と流し読みできるのが利点です。
情シスの実務でよく出てくるライブラリ3つ
ライブラリとは「よく使う処理をまとめたツール集」のことで、import ライブラリ名 という行があれば使われています。Pythonには標準で付属するもの(pip不要)と、別途インストールが必要なもの(pip install必要)があります。pipとはPythonのパッケージ管理ツールです。
pathlib(pip不要)― ファイルパス操作
pathlibはファイルやフォルダのパスを扱うためのライブラリです。Python公式ドキュメントによると、Path クラスは「I/Oを伴わない純粋な計算操作」から「ファイルの読み書き」まで対応します。
from pathlib import Path
# フォルダ内のCSVファイルを全部リストアップ
folder = Path("C:/Users/tanaka/Desktop/monthly_data")
csv_files = list(folder.glob("*.csv"))
dotpro.netの整理では、pathlibはPython 3.4以降の標準ライブラリで、2026年現在の公式ドキュメントでも推奨されているとされています。旧来の os.path より直感的に書けるため、最近のスクリプトではpathlibが使われていることが多いです。
csv(pip不要)― CSV読み書き
csvライブラリはCSVファイルを読み書きするためのライブラリです。Python公式ドキュメントによると「CSVフォーマットは、スプレッドシートやデータベース間でのデータのインポートやエクスポートにおける最も一般的な形式」として位置づけられています。
import csv
# CSVファイルを1行ずつ読み込む
# newline='' はWindowsでの改行コード二重読み込みを防ぐ必須オプション
with open("data.csv", newline="", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
print(row["社員名"], row["売上"])
公式ドキュメントでは「csvfile を file object として開く場合は newline='' で開く必要があります」と明記されています。この newline="" が抜けているスクリプトは古い書き方か、書いた人が見落としている可能性があります。
requests(pip install必要)― 外部サービス連携
requestsはWebのAPIやサービスにアクセスするためのライブラリです。Slackへの通知送信や、クラウドサービスのデータ取得などで使われます。標準ライブラリではないため、pip install requests でのインストールが必要です。
import requests
# Slack Webhookに通知を送る
response = requests.post(
"https://hooks.slack.com/services/XXXXX",
json={"text": "月次集計が完了しました"},
timeout=10 # 10秒でタイムアウト
)
response.raise_for_status() # エラー時に例外を発生させる
森の株の解説では、response.raise_for_status() を呼び出すことで「HTTPステータスコードがエラーを示している場合に例外を送出させ、正常系と異常系の処理を明確に分けることができます」と説明されています。また timeout=10 の指定は「堅牢なアプリケーションを作る上で非常に重要」とされています。この2行があるスクリプトは、エラー処理まで考えて書かれています。
最初にハマりがちな3つのエラーと対処法
Python公式チュートリアルのエラーと例外では「エラーには(少なくとも)二つのはっきり異なる種類があります。それは構文エラー(syntax error)と例外(exception)です」と説明されています。初心者が最初に詰まるのは、たいていこの3パターンです。
インデントエラー(タブ/スペース混在)
Pythonはインデント(行頭の字下げ)で処理のまとまりを判断します。タブキーで字下げした部分とスペースで字下げした部分が混在すると、エラーになります。
Python WebAcademyによると、代表的なメッセージは以下の3種類です。
IndentationError: unexpected indent― 不要なインデントがあるIndentationError: expected an indented block― インデントが必要な場所にないTabError: inconsistent use of tabs and spaces in indentation― タブとスペースが混在
対処法は、エディタの設定で「タブをスペース4つに変換」を有効にすることです。既存スクリプトを受け取ったときにこのエラーが出たら、まずタブ/スペースの混在を疑います。
文字コードエラー(Windows CSVのShift-JIS問題)
エンコーディングとは「文字をコンピューターが扱えるデータに変換する方式」のことです。WindowsのExcelで保存したCSVはShift-JIS(CP932)形式になることが多く、スクリプトがUTF-8として読もうとするとエラーになります。
# NG: WindowsのExcelから出力したCSVはUTF-8でないことが多い
with open("data.csv", encoding="utf-8") as f: # → UnicodeDecodeError
# OK: encoding="cp932" または encoding="shift-jis" を指定する
with open("data.csv", newline="", encoding="cp932") as f:
reader = csv.DictReader(f)
ファイルの文字コードがわからない場合は、テキストエディタ(VS CodeやメモなどのアプリはBOMを自動認識する)で開いて確認するのが早いです。
バックスラッシュ問題(Windowsパスのコピペミス)
Windowsのファイルパスをエクスプローラーからコピーすると C:\Users\tanaka\Desktop のようにバックスラッシュ区切りになります。このままPythonの文字列に貼り付けるとバックスラッシュが特殊文字として解釈されてエラーになる場合があります。
rawstringとは「バックスラッシュを特殊文字として解釈しない文字列」のことで、文字列の前に r をつけることで指定できます。
# NG: \t や \U が特殊文字として解釈される場合がある
path = "C:\Users\tanaka\Desktop"
# OK: 先頭に r をつける(rawstring)
path = r"C:\Users\tanaka\Desktop"
# OK: スラッシュに変える(Pythonはスラッシュでも動く)
path = "C:/Users/tanaka/Desktop"
エクスプローラーからパスをコピーしたら、先頭に r をつけるか、バックスラッシュをスラッシュに置換するのが確実です。
「読める」から「依頼できる」へ
dotpro.netの比較表では、Python自動化スクリプトの行数は用途によってまとめられており、シンプルなファイル操作や通知送信は10〜40行程度で書けるとされています。「プログラムというものは何百行もある」というイメージがあると思いますが、業務で使うスクリプトの多くは思ったより短いです。
4つの構文を知っている状態でそのスクリプトを見ると「for文でCSVを繰り返し読んで、if文で条件を判定して、関数にまとめている」という構造が見えます。構造が見えると、依頼の解像度が上がります。
「このスクリプト、来月のフォルダにも使いたいんですが、変数を変えるだけで動きますか?」「エラーが出たらSlackに通知を飛ばしてほしいんですが、requestsライブラリを使えばできますか?」という質問ができるようになると、エンジニアや外注先との確認が1回で終わります。
発注者側の情シス担当が「読めない・わからない」状態で依頼すると、要件の確認だけで1〜2往復増えます。読める状態で相談すれば、最初のやり取りで方向性が揃います。
自動化の導入を検討しているなら
以下のような相談に対応しています。
- 毎月繰り返しているExcel・CSV作業を自動化したい
- 既存のスクリプトが何をしているか確認・レビューしてほしい
- どこから手をつければいいかわからない