例外ケースを全部コードに書く前に、まずExcelで分類一覧を作るべきだった話

半休対応の泥沼

胃の奥が鉛のように重くなる感覚を、今でも鮮明に覚えている。苦労して完成させたはずの勤怠自動化マクロが。たった一つの「半休」という例外データによって木っ端微塵に破壊されたのだ。通常出勤のロジックは完璧に動いていた。誰もが絶賛してくれた。しかし、現場から「昨日の午後休のデータがおかしい」と連絡を受けた瞬間。すべての歯車が狂い始めた。

コードを開いて修正を試みる。半休用のIF文を継ぎ足す。すると今度は、普通に出勤した人間の打刻データまでエラーを吐き出すようになった。既存のVBAコードに「半休」の条件を後付けで追加したところ。End Ifの位置がずれており、すべてのループ処理が無限ループに陥った。直しては壊れ、直しては壊れを繰り返し、原因特定だけで定時をとうに過ぎていた。

書かれてない」を許さぬシステム

まず、結果として、コードの全面書き直しを余儀なくされた。土日を挟んだ3日間、業務時間のすべてをこの「半休対応」という泥沼に溶かした。疲れ果てた頭で帰りの電車に揺られながら、ふと気づいたことがある。自分の技術力が足りなかったから失敗したのではない。そもそも。現場で起こりうる「例外パターン」を事前にまったく把握していなかったのだ。あの3日間の地獄は、コードを打ち始める前の段階で既に運命づけられていたのです。

システムは、書かれていないことは絶対に処理できない。人間の脳内にある「これくらい分かるだろう」という甘えを、容赦なく突きつけてくる。

業務効率化の罠:コーディング先行

業務効率化に目覚めた会社員が、最も陥りやすい落とし穴がある。要件を聞いた直後。いきなりVBE(Visual Basic Editor)やPythonのIDEを開いてしまうことだ。真っ白なエディタ画面を前にすると、人間の思考は恐ろしいほど視野が狭くなる。目の前の「正常に動くハッピーパス」しか想像できなくなるのです。

次に、A列の値をB列に転記する。空白ならスキップする。そこまではスラスラとコードが書ける。しかし、現実の業務はそんなに単純なものではない。VBEの画面上で「ElseIf」の条件を考えているうちに、「もし空白なら……いや。文字列が入っていたら……」と処理を分岐させていると。自分が今どの階層のループにいるのか完全に分からなくなる。結局、紙に書き出さないと構造が理解できず。書いたコードを全消しする羽目になるのです。

コードと要件、同時思考の過ち

コードの構文を考えながら、同時に業務の例外パターンをひねり出す。これは、非エンジニアの限られた脳内メモリを瞬時にパンクさせる行為だ。「どう書くか(プログラミング)」と「何を書くか(業務要件)」という全く別の作業を。同時に処理しようとしているから破綻する。

コードを書きながら例外を思いつくのは。家を建てながら間取りを考えているのと同じである。「あ、ここにドアがないと不便だ」と柱を削り始めれば。家全体が倒壊するのは火を見るより明らかだ。例外ケースを見落とす根本的な原因は、想像力の欠如ではない。「コードを書きながら考える」というアプローチそのものが間違っているのです。

非エンジニア最強の防具「分類一覧表

一方で、この構造的な失敗を回避するための解決策は、驚くほどシンプルだ。エディタを開く前に、慣れ親しんだExcelを起動する。そして、たった3列の表を作る。用意するのは「パターン名」「条件(何が起きたか)」「処理(どうすべきか)」という見出しだけだ。これを「分類一覧表」と呼ぶ。

プロのシステムエンジニアは。開発の初期段階で必ず「要件定義」や「仕様書」を作成する。どんなデータが入ってくるか、どんな例外があるかを網羅するためのドキュメントだ。しかし、我々のような独学の会社員に、分厚い仕様書を書く時間も技術もない。だからこそ、Excelの表1枚にそのエッセンスを圧縮するのです。

非エンジニアの最強防具:表で例外撲滅

表形式にすることで、頭の使い方が劇的に変わる。コードの文法を気にする必要がないため。「現場でどんな変なデータが入力されるか」という悪魔的な想像に100%の脳力を注ぐことができる。空白だったらどうする。全角カナが混じっていたらどうする。規定のフォーマットとは違う古いExcelファイルが送られてきたらどうする。セルを埋めるという行為が、例外パターンを洗い出すゲームに変わる。

そのため、Excelの行を追加するだけなら。どれだけ例外が思い浮かんでもシステムの土台が崩れることはない。この3列表は、非エンジニアが自分の身を守るための最強の防具になる。コードより先に例外パターンを全部洗い出す表を作る——たったこれだけの習慣で。仕様漏れによる手戻りは嘘のように消え去るのです。

ここで一度立ち止まって考えてみてください

Pythonや自動化スキルを体系的に習得して、ITエンジニアとしてのキャリアを切り開きたい方には「Enjoy Tech!(エンジョイテック)」が選択肢のひとつです。

プログラミングスクール Enjoy Tech!(エンジョイテック) →

勤怠の地獄を回避する例外洗い出し

かつて私を地獄の底に突き落とした「勤怠管理」を例に。実際の分類一覧表をどう作るかを見ていこう。通常出勤以外に、どんな例外があるかをひたすら書き出していく。

有休(全日)、欠勤(全日)、遅刻、早退——ここまでは誰でもすぐに思いつく。しかし、現場の人間はシステム開発者の想像を遥かに超える行動をとる。半休(前半)を取得した上で、午後の出勤時間にさらに遅刻してくる者がいる。特別休暇と有休を組み合わせて申請してくる者がいる。打刻を忘れて手書きのメモだけを提出してくる者がいる。

しかし、これらをすべて表の「パターン名」に書き出す。次に、「条件」列を埋めていく。たとえば「半休+遅刻」なら、条件は「出勤打刻が13時以降。かつ半休フラグが1」となる。最後に「処理」列だ。ここでは「遅刻控除時間を計算し。半休消化日数を0.5加算する」と日本語で具体的に書く。

現場の声が示す例外洗い出しの価値

現場の総務担当者にこの分類表を見せたところ、「あ。電車遅延で午前半休が取り消しになったケースも書いておいて」とあっさり言われた。もしコードを書き上げた後にそれを言われていたら。怒りでキーボードを破壊していたかもしれない。表の段階で気づけたおかげで、行を1つ追加するだけで事なきを得た。

あの3日間の半休対応の悲劇は。この「半休+遅刻」や「半休+早退」の組み合わせを全く想定していなかったために起きた。もし事前にこの表を作り、現場とすり合わせを行っていれば。あんな無駄な残業は1秒も発生しなかったはずだ。例外を洗い出す作業は、コードを書くことよりも遥かに価値がある。

表からコードへの写経

さらに、分類一覧表が完成したら、いよいよエディタを開く。ここから先の作業は、もはや「プログラミング」とは呼ばない。単なる「翻訳作業」だ。表の内容を、プログラム言語の文法に従って置き換えていくだけの単純作業に変わる。

パネル/excel-table-and-vba-code-split-screen.webp

表の各行は。そのままVBAのIF文やSelect Case文の条件分岐に対応する。「条件」列に書かれた日本語を、コードの条件式に書き換える。「処理」列に書かれた手順を、If〜Thenの間に記述する。表が完璧に出来上がっていれば。コードを書く過程で「ここでこんなデータが来たらどうしよう」と悩む必要は一切なくなる。頭を使わずに、無心でキーボードを叩き続けることができる。

Select Case:複雑条件の視認性向上と高速化

まず、特にVBAの場合、複数の条件が複雑に絡み合うときは。IF文のネスト(入れ子)を深くするよりも。Select Case文を使うと視認性が劇的に向上する。条件列の項目を評価対象にして、パターンごとにCaseを分けていくのだ。まるでExcelの表をそのままエディタ上に再現しているかのような感覚に陥るだろう。

この「表からコードへの写経」は、開発スピードを飛躍的に高める。バグが出た時の原因究明も容易だ。コードが間違っているのか、それとも表に書いた仕様自体が間違っていたのか。問題の切り分けが瞬時に行えるからだ。エラー画面を前にして途方に暮れていた過去の自分に、真っ先に教えたい技術です。

Excelで作る、非エンジニアの堅牢プログラミング

業務効率化のためのプログラミングは、高度なアルゴリズムを書くことではない。泥臭く、人間臭い「例外」たちを、いかに漏れなく拾い上げるかの戦いだ。非エンジニアである我々が、プロと同じ土俵で戦うための武器が。この3列のExcel表である。パネル/printed-specification-excel-sheet-morning.webpもう二度と。いきなりエディタを開いてはいけない。どんなに小さなマクロでも、必ず表を作る。パターンを洗い出し、条件を言語化し、処理を決める。このプロセスを踏むだけで、あなたの書くコードの堅牢性は見違えるほど高まるはずだ。要件定義という言葉の重圧に負ける必要はない。目の前のExcelシートに。思いつく限りの「嫌な予感」を書き出すだけで十分なのです。

Excelで作る、非エンジニアの堅牢プログラミング(続き)

次に、📘 このスキルを活かしてさらに前へ進むならVBAやExcelマクロをもっと体系的に学びたい方には。実務向けの技術書で基礎を固めるのも有効な手段です。Amazonでは「Excel VBA 自動化」に関する評価の高い書籍が豊富に揃っています。VBA・Excelマクロの技術書(Amazon) →
📘 このスキルを活かしてさらに前へ進むならAIを使ったプログラミングをゼロから体系的に学びたい方には。生成AIプログラミングの教科書『大蔵~TAIZO~』がおすすめです。ChatGPTやClaude等の生成AIと組み合わせた実践的なコーディング手法を習得できます。生成AIプログラミングの教科書『大蔵~TAIZO~』 →

関連リンクとチェックリスト

学習サービスとアンケート

このスキルを活かしてさらに前へ進むなら

Pythonや自動化スキルを体系的に習得して、ITエンジニアとしてのキャリアを切り開きたい方には「Enjoy Tech!(エンジョイテック)」が選択肢のひとつです。

プログラミングスクール Enjoy Tech!(エンジョイテック) →