完璧な自動化のはずだった。1週間、誰も気づかなかった『保存先の間違い』
「よっしゃ、これで全部自動だ!」
深夜のオフィス、私はひとり小さくガッツポーズをしました。
今まで毎日手動でダウンロードし、集計し、サーバーの共有フォルダに保存していた面倒な業務。
それをPythonですべて自動化するスクリプトが、ついに完成したのです。
テスト実行は完璧。指定した時間に、指定したフォルダへ、正確にファイルが書き出される。
私は誇らしげに、そのスクリプトを社内の共有サーバー(本番環境)へとデプロイしました。
それから1週間、私は自分の仕事を「自動化した」という優越感に浸っていました
それから1週間、私は自分の仕事を「自動化した」という優越感に浸っていました。
毎朝、スクリプトが正常に終了したという通知メールを確認し。「うん、今日も順調です」とコーヒーをすする日々。
しかし、その平和な日常は、部長の何気ない一言で粉々に打ち砕かれました。
「 担当者さん、今週の集計データ、共有フォルダに全然更新されてないけど……何かあった?」
一瞬、頭の中が真っ白になりました
一瞬、頭の中が真っ白になりました
一瞬、頭の中が真っ白になりました。
「え
? 毎朝、正常終了のログが出てますよ?」
慌ててサーバーを確認すると、そこには1週間前の古いデータだけが。寂しく取り残されていました。
プログラムは確かに「動いていた」。でも、生み出されたデータはどこにも存在しなかったのです。

『C:\Users\myname\…』は時限爆弾。自分のPCでしか動かないコードを書くことの罪
原因は、拍子抜けするほど「初歩的な凡ミス」でした。
コードの中身を恐る恐る確認して、私は自分の目を疑いま
した。
❌ 恥ずかしすぎる失敗コード outpu
❌ 恥ずかしすぎる失敗コード outpu
❌ 恥ずかしすぎる失敗コード outpu
❌ 恥ずかしすぎる失敗コード
output_path = "C:\Users\yasuhiro_kaneko\Desktop\output\report.xlsx"
……やってしまいました。
自分のPCでテストしていた時に書いた「絶対パス」を、そのまま残していたのです。
サーバー環境には当然、私の個人フォルダ(yasuhiro_kaneko)なんて存在しません。
VBAを使っていた頃から
VBAを使っていた頃から、この「自分の環境でしか動かない」問題には何度も泣かされてきました。
でも、Pythonならもっとスマートに書けるはずだと思っていたのに。結局やっていることは初心者レベルのハードコード。
自分のPCという「井の中の蛙」状態のまま、広い世界(本番サーバー)にコードを放り出してしまった自分の未熟さが。ただただ恥ずかしくてたまりませんでした。

Pathlibで実現する、未来の自分に優しいパス管理
Pathlibを教えてもらった私は、早速自分のスクリプトを書き換えました。
from pathlib import Path
# __file__ は実行中のスクリプト自身を指すため、どこで動かしても正確
# .parent をつけることで、スクリプトがあるディレクトリを基準にできます。
base_dir = Path(__file__).parent
# 出力フォルダを作成(存在しなければ)
output_dir = base_dir / "output"
output_dir.mkdir(exist_ok=True)
# レポートファイルのパスを作成
output_file = output_dir / "report.xlsx"
# この output_file を使ってファイルを書き込みます
# 例: df.to_excel(output_file, index=False)
このたった数行の変更が、私のプログラミングに対する考え方を大きく変えました。
まず、`Path(__file__).p
まず、`Path(__file__).parent` です。これは「このPythonスクリプト自身がどこにいるか」という情報を元に、そのスクリプトが置かれているフォルダを基準パスとして設定してくれるのです。私のPCのデスクトップだろうと、共有サーバーの奥深くにある特定フォルダだろうと、関係ありません。
常に「スクリプトがある場所」を起点にしてくれるので、もう自分のPCのCドライブのパスをハードコードする必要はなくなったのです。このシンプルさには本当に感動しました。
次に、パスの結合に `/` 記号を使えるようになったことです。今まではWindowsの `\` とLinuxやMacの `/` の違いに頭を悩ませていましたが、Pathlibは自動でOSに合った区切り文字を使ってくれます。
なので、`base_dir / “output”`…
なので、`base_dir / “output”` と書くだけで、実行環境がWindowsなら `C:\path\to\script\output` のようになり、Linuxなら `/path/to/script/output` のように、自動的に正しいパスを生成してくれるのです。もう、「このスクリプトはWindowsでしか動かせない」という縛りから解放された気分でした。
そして、何よりも重要だと感じたのが `output_dir.mkdir(exist_ok=True)` の一行です。これは「`output_dir` というフォルダが存在しなければ作成し、既に存在していれば何もしない」という命令です。あの時、もしこの一行があれば、私のスクリプトは存在しないパスにデータを書き込もうとして「沈黙の失敗」をすることはありませんでした。
フォルダが存在しない場合は、プログラムが自動でフォルダを作ってくれるので、安心してデータを保存できるようになったのです。エラーで止まるのではなく、実行環境を整えてくれる、まさに「痒い所に手が届く」機能だと感じました。
このPathlibを導入してから
このPathlibを導入してから、私のスクリプトはどんな環境にデプロイされても、ちゃんと意図した場所にファイルを保存できるようになりました。あの1週間の「空白」は、もう二度と繰り返さないと心に誓いました。Pathlibは、パスを単なる文字列としてではなく、「賢いオブジェクト」として扱うことで、プログラミング初心者の私でも、より堅牢で、より汎用性の高いコードを書く手助けをしてくれたのです。
失敗は成功の母。でも、その前に「仕組み」で防ぐ
今回の「保存先の間違い」という大失敗は、私にとってプログラミング学習における大きな転換点となりました。単に「動けばいい」という考え方から、「どんな環境でも、誰が使っても安全に動くにはどうすればいいか」という視点を持つきっかけになったのです。
Pathlibのような標準ライブラリが提供する機能は、まさに「先人たちの知恵の結晶」だと感じました。私が経験したような初歩的なミスは、多くの人が通ってきた道であり、それを解決するためのベストプラクティスが、Pythonにはきちんと用意されていたのだと気づかされました。それを知らずに、力技で文字列結合をしていた自分を、今では少し恥ずかしく思います。
事務職として、日々の業務でPythonを使って自動化を進める中で、私は何度も壁にぶつかってきました。VBAからPythonへの移行も、環境構築の壁、ライブラリの選定、そして今回のパスの問題など、一つ一つが大きな課題でした。しかし、そのたびに調べて、試して、失敗して、そしてまた学ぶというサイクルを繰り返すことで、少しずつですが着実にスキルアップしていることを実感しています。
今回の経験から学んだのは
今回の経験から学んだのは、「エラーが出ないから大丈夫」という思い込みがいかに危険か、ということです。特に、自動化されたシステムでは、人間が常に監視しているわけではありません。だからこそ、プログラム自身が異常を検知し、適切なエラーを出すか、あるいは今回のPathlibのように、未然に問題を解決する仕組みを組み込むことが、何よりも大切だと痛感しました。
私はこれからも、プログラミングの「プ」の字も知らなかった事務職として、泥臭い失敗談を赤裸々に語りながら、同じような境遇の方々が少しでもプログラミングに親しみ、業務改善の喜びを感じられるような情報を発信していきたいと思っています。完璧なエンジニアにはなれないかもしれませんが、日々の業務を少しでも楽に、そして安全にするための知恵を、これからも追求していきたいです。
今回の失敗は、そのための大きな一歩になったと、今は前向きに捉えています。
無料プレゼント
Excel業務を自動化する前に確認するチェックリスト(PDF)
自動化していい作業かどうか、VBAかPythonか
自動化していい作業かどうか、VBAかPythonか、最初に避けるべき落とし穴。実務でよく迷うポイントを1枚にまとめました。メールアドレスだけで受け取れます。
無料でチェックリストを受け取る¥980 ミニキット
コピペで動かせる3スクリプト+自動化チェックリスト
最新ファイルの自動選択・部署名ゆれの正規化・CSV文字コード確認の3本セット。今週の作業を1つだけ楽にするための最小キットです。
ミニキットを見る(¥980)関連リンクとチェックリスト
📖 著者はこうして解決の糸口を見つけた
著者も同じ境遇から始まりました。独学でここまで自動化した道のりを参考にどうぞ。
学習サービスとアンケート
📘 このスキルを活かしてさらに前へ進むなら
Pythonや自動化スキルを体系的に習得して、ITエンジニアとしてのキャリアを切り開きたい方には「Enjoy Tech!(エンジョイテック)」が選択肢のひとつです。現役エンジニアのサポートで、未経験から実践的なスキルを身につけられます。
エラーを吐かずに沈黙するプログラム。OSの挙動に惑わされた『空白の1週間』
ここで疑問が浮かびました。
「なぜ、存在しないパスに書き込もうとしたのに、エラーが出なかったのか?」
実は、私が使っていたライブラリやOSの組み合わせによって
実は、私が使っていたライブラリやOSの組み合わせに…
実は、私が使っていたライブラリやOSの組み合わせによって、「親切にも」存在しないフォルダへの書き込みを無視するか、あるいは一時的な仮想フォルダに書き込まれて消えてしまうという事象が起きていたのです。
プログラムは「指定された場所に書こうと努力した(そしてOSがそれを受け流した)」ため。Python側からは『正常終了』として処理されていました。
これが、メッセージボックスで止まるVBAよりもたちが悪い「沈黙の失敗」です
これが、メッセージボックスで止まるVBAよりもたちが悪い「沈黙の失敗」です。
エラーが出てくれれば、初日に気づけた。
でも、エラーが出ずに「成功しました」という顔をしながら。実は裏でデータを虚空に捨て続けていた。
この1週間、私が「自動化に成功した」と悦に浸っていた時間は。単にゴミを量産し、それを捨て続けていただけの無意味な時間だったのです。
自動化の最大の敵は、エラーではなく「成功を装った失敗」なのだと。この時ほど痛感したことはありません。

文字列結合よ、さらば。PythonのPathlibモジュールが教えてくれた『正しいパスの作り方』
この大失態の後
この大失態の後、私は「二度と絶対パスは使わない」と心に誓いました。
そして、ベテランエンジニアの同僚から教えてもらったのが。Pythonの `pathlib` という最強の武器です。
今まで私は、パスをただの「文字列」として扱っていました。
`”C:\” + “Users” + “\…”` のようにプラス記号で繋げたり。バックスラッシュの数に悩んだり。
さらに、Windowsでは `\` なのに。サーバーやMacでは `/` だったりと、OSによる違いにも頭を抱えていました。
💡 ここで一度立ち止まって考えてみてください
PythonやExcel自動化スキルを持ったまま、ITエンジニアとして転職したい方には「EBAエデュケーション」が選択肢です。企業が求めるエンジニア像に合わせたカリキュラムで、実務直結のスキルを習得できます。
でも、Pathlibを使えば
でも、Pathlibを使えば、パスは単なる文字列ではなく「オブジェクト」としてスマートに扱えるようになります。
例えば、`/` 記号を使って直感的にパスを結合でき、実行環境がWindowsだろうがLinuxだろうが。Pathlibが裏側でそのOSに最適な形に自動で変換してくれるのです。
from pathlib import Path
✅ 環境に依存しない「現在地」を基準にしたパス作成
# __file__ は実行中のスクリプト自身を指すため、どこで動かしても正確
base_dir = Path(__file__).parent
output_path = base_dir / "output" / "report.xlsx"
これなら、自分のPCで動かそうが、本番サーバーで動かそうが
これなら、自分のPCで動かそうが、本番サーバーで動かそうが、Macで動かそうが、常に「プログラムが置いてある場所」を基準に正しく保存先を見つけてくれます。
「 /(スラッシュ)」と「 \(バックスラッシュ)」の違いに怯える夜も、もうありません。
Pathlibは、私を「文字列操作」という泥沼から救い出し。「構造的な設計」という新しい視点を与えてくれたのです。
一度この快適さを知ってしまうと。もう二度と古い `os.path.join` には戻れない……それほどの衝撃でした。

ハードコードを卒業しよう。設定ファイル一つで『環境の差』を飲み込む設計思想
さらに一歩進んで、保存先や設定情報を「コードの外」に追い出すことも覚えました。
スクリプトの中に直接パスを書くのではなく。`config.json` などの設定ファイルに切り分けるのです。
「コードはロジックだけ。データは設定ファイルに」
この原則を守るだけで、コードの汎用性は劇的に高まります。
本番環境に移すときは、設定ファイルの中身を一行書き換えるだけ。コード本体を触る必要はありません。
これは、VBAでシートに設定値を書き込んでいた感覚に近いかもしれませんが。より安全で、より管理しやすい「プロの作法」に一歩近づけた気がしました。
この「設定の外部化
この「設定の外部化」を覚えたことで
この「設定の外部化」を覚えたことで、私のスクリプトは単なる「自分のためのツール」から、チームの誰もが、どのPCでも安心して使える「システム」へと進化したのです。
あの恥ずかしい失敗があったからこそ。私は「動くコード」の先にある「壊れない設計」の重要性に気づくことができたのでしょう。

結論:プログラミングの真髄は、コードの外側(環境)をいかに意識できるかにある
初心者の頃は、どうしても「どう書くか(文法)」ばかりに目が向きがちです。
でも、本当の自動化の壁は、「どこで動かすか(環境)」にこそ存在します。
絶対パスという、自分だけの「心地よい檻」から抜け出すこと。
それは、自分以外の誰かや。自分以外のPCという「他者」を想像するプロセスでもあります。
もし、あなたのコードにまです `C:\Users\自分の名前\` が残っているなら
もし、あなたのコードにまです `C:\Users\自分の名前\` が残っているなら。
今すぐそれを消して、`Pathlib` に書き換えてみてください。
その瞬間に、あなたのプログラムは、あなたのPCを飛び出して。世界中のどこでも動ける「自由」を手に入れることができるのです。
恥をかくのは一度でいい。でも、その教訓は一生モノのスキルになります。
さあ、あなたのコードを「どこでも動く本物」へと変えていきましょう。
❌ 恥ずかしすぎる失敗コード
output_path = "C:\Users\yasuhiro_kaneko\Desktop\output\report.xlsx"
……やってしまいました
……やってしまいました。
自分のPCでテストしていた時に書いた「絶対パス」を、そのまま残していたのです。
サーバー環境には当然、私の個人フォルダ(yasuhiro_kaneko)なんて存在しません。
VBAを使っていた頃から、この「自分の環境でしか動かない」問題には何度も泣かされてきました。
でも、Pythonならもっとスマートに書けるはずだと思っていたのに。結局やっていることは初心者レベルのハードコード。
自分のPCという「井の中の蛙」状態のまま、広い世界(本番サーバー)にコードを放り出してしまった自分の未熟さが。ただただ恥ずかしくてたまりませんでした。


