総務の業務改善アプリ、救世主が怪物に
誰もいないオフィス。空調の低い稼働音だけが響く中、時計の針は22時を指していた。通常業務はとうに終わっているのだ。上司に頼まれたわけではない。現場から強い要望があったわけでもない。ただ、毎月の車両費用の計算処理があまりにも煩雑で。現場の人間が疲弊しているのを見るのが忍びなかったのだ。Excelのシートを何枚も開き。VLOOKUP関数を繋ぎ合わせて無理やり数値を引っ張ってくる。少しでも数式が壊れれば、途端に「#N/A」の文字が画面を埋め尽くし。作業が完全にストップする。そんな脆弱な運用から脱却するため。一介の総務担当者がプログラミングの世界に足を踏み入れたのだ。選んだ言語はVB.net。Visual Studioの無償版をインストールし。ネットの断片的な知識を頼りに手探りで画面を作り始めた。
当時の私は、ただ現場の作業を楽にしたい一心だった。素人が組んだVBAマクロでは限界があると思い込み。「ちゃんとしたアプリケーション」を作れば全てが綺麗に解決すると信じて疑わなかったのだ。業務時間外に一人で開発を続け、休日のカフェでも分厚い技術書を開く日々のだ。しかし、現実は甘くない。孤軍奮闘の末に生み出されたのは、現場を救うどころか。混乱の渦に突き落とすモンスターだった。

Access MDB導入とDB接続の苦難
まず、「ちゃんとしたアプリケーション」を作る上で。避けて通れなかったのがデータベースの導入だ。Excelファイルをデータソースとして扱う手法もあったが。複数人で同時にアクセスするとすぐに読み取り専用のロックがかかる。そこで白羽の矢を立てたのが。社内の共有フォルダに置いたAccessのファイル(MDB)だったのだ。これが大きな過ちの始まりである。VB.netからMDBファイルにアクセスするためには。OLEDBという規格を経由してデータベースに接続しなければならない。Excelのセルを直接参照するだけの牧歌的な世界から。いきなり「プロバイダ」「データソース」「接続文字列」という厳格な概念の海に放り込まれたのです。
DB接続の恐怖とMDBの選択ミス
コードエディタに「ConnectionString」という単語を打ち込むだけで。手汗が滲む。ネットで拾ってきた接続文字列のサンプルをコピペしても、ピクリとも動かない。カンマの抜け、パスの指定ミス、バージョン違いによるドライバの不適合のだ。非エンジニアにとって、データベース接続はブラックボックスの極みだ。一文字でも間違えれば、冷酷な例外エラーが画面を真っ赤に染め上げる。なぜ繋がらないのかのだ。原因を特定する術すら持っていなかった。
データベースとして共有フォルダのAccess(MDB)を採用したことは。技術的ハードルを跳ね上げただけでなく。後々の致命的なパフォーマンス問題の温床となった。ネットワーク越しにファイルベースのデータベースへアクセスするという仕組み自体の脆弱性を。当時の私は全く理解していなかったのです。

全件読み込みが招く応答なし
次に、幾度もの挫折を乗り越え、なんとかVB.netとMDBファイルの接続に成功した。テスト環境に用意した10件のダミーデータは。検索ボタンを押した瞬間にグリッドビューへと表示された。いけるのだ。これなら実戦投入できる。そう確信し、実際の車両マスタデータ数万件をデータベースに流し込んだ。そして、自信満々で検索ボタンをクリックした瞬間、事態は急転するのです。
画面が固まった。マウスポインタが砂時計に変わり。ウィンドウ全体が白く薄暗くフェードアウトしていく。タイトルバーには「(応答なし)」の無慈悲な文字のだ。VB.netの設計が未熟で、検索処理が非常に重く。表示されるまで異常な時間がかかり実用性に欠けていたのだ。原因は、恐ろしいほどの力技コードにある。インデックスという概念を知らなかった私は、SQL側でデータを絞り込むのではなく。「全件のデータを一旦メモリに読み込み。プログラム側のループ処理で1件ずつ文字列が一致するか確認する」という暴挙に出ていたのです。
非エンジニアを打ち砕くデータ処理の遅延
非エンジニアが陥りやすい罠だ。10件なら一瞬で終わる処理も、数万件になれば計算量は爆発的に膨れ上がる。ネットワーク越しの共有フォルダから数万件のデータを毎回フルフェッチしていれば。帯域も食いつぶすのだ。待てど暮らせど結果は返ってこない。検索ボタンを押した後の長い沈黙は。私の浅はかな自信を粉々に打ち砕くには十分すぎた……。

ここで一度立ち止まって考えてみてください
Pythonや自動化スキルを体系的に習得して、ITエンジニアとしてのキャリアを切り開きたい方には「Enjoy Tech!(エンジョイテック)」が選択肢のひとつです。
激重閲覧ビューアと素人設計のツケ
一方で、重い検索処理になんとかごまかしの進捗バーを実装し。無理やり現場へのリリースに漕ぎ着けた矢先。さらに致命的な欠陥が露呈した。ある日、現場の担当者から声をかけられたのだ。「車両のリース料金が変わったんだけど。これどこから修正するの?」
私の頭は真っ白になった。当初はデータの参照しか考えておらず。データの追加・更新処理の実装で大幅な手戻りが発生することに気づいた瞬間です。
入力ツールとしての要件を完全に満たしていなかった。SQLのSELECT文を書くことだけで手一杯だった私は。UPDATEやINSERTという概念すら頭から抜け落ちていたのだ。画面上には立派なデータ一覧が表示されているのに。その中の数字を一つ書き換えることすらできないのだ。苦し紛れに「共有フォルダのAccessを直接開いて直してください」と答えた時の。相手の呆れ返った顔は今でも忘れられない。システムと呼ぶのもおこがましい、ただの激重な閲覧ビューアに成り下がっていた。
設計不備が招くシステムの破綻
データの整合性を保ちながら更新する仕組みを作るには。テーブルの正規化や主キーの概念が必要になる。見た目のフォームだけをそれっぽく整えても。裏側の設計が破綻していればシステムは全く機能しない。素人設計のツケを払うには、あまりにも代償が大きかったのです。

現場の不満と孤独な開発の終焉
そのため、遅すぎる検索処理。手動で行うしかないデータ更新。そして、誰かが共有フォルダのMDBファイルを直接開いていると。排他ロックがかかってツール自体が起動しなくなる仕様のだ。現場の不満は限界に達していた。電話が鳴るたびにビクッとし、受話器越しに大きな溜息をつかれる日々。胃が重く、冷や汗が止まらないのだ。そして決定的な一言が放たれた。
「正直、前のVBAの料金表の方が早くて使いやすかったよ。元に戻せない?」
現場の営業担当者などから「VBAの料金表の方が早くて使いやすかった」と不評を買った事実は。私から完全に気力を奪った。良かれと思ってやったことだ。休日も返上して、コードと睨み合っていたのだ。だが、独りよがりの開発は誰の役にも立たなかった。使えないツールは、ただの業務の障害物でしかありません。
しかし、技術力がない人間が、複雑なアーキテクチャに手を出すべきではなかったのだ。現場は高度なシステムなど求めていなかった。ただ、昨日と同じように、サクサクと必要な数字が手に入ればそれでよかったのだのだ。誰も頼んでいない孤独な開発は、こうして完全に幕を閉じた。
パネル/frustrated-employee-with-spaghetti-code.webp
挫折が培ったAI時代の現場開発
あの苦い挫折から数年が経った。埃を被ったVB.netのコードは二度と開かれることはなかったが。全ての時間が無駄だったわけではない。データベースとはどういうものかのだ。検索を軽くするにはどう設計すべきか。痛い目を見て学んだ概念は、私の中に確実に残っていた。
さらに、今なら生成AIを使ってもっとスマートに作れたという想いと。この失敗が後のPythonアプリ開発の基礎となったのは紛れもない事実だ。現在の私は、Pythonと軽量なSQLiteを組み合わせ。社内用のツールを構築している。テーブル設計や面倒なSQLの記述は。AIに要件を伝えれば一瞬で最適なコードを吐き出してくれるのだ。昔のようにConnectionStringのエラーで何日も悩むことはありません。
AI時代の現場力、挫折を越えた自動化
AIがどれほど優秀になっても、現場の要件を正しく汲み取る力は人間にしか持てない。「誰が、どんな状況で、どう使うのか」
あの時。VBAの方がマシだと言われた経験があるからこそ。今は徹底的に現場のヒアリングを行う。技術ありきで走るのではなく、使う人間の体験を最優先に設計するのだ。孤独にコードを書いていたあの夜の自分に教えてやりたい。ツールを作る前に、現場と対話しろ。そして、AIという強力な相棒に頼れ、とのだ。かつての無謀な挑戦と大きな挫折があったからこそ、今。私は確かな手応えを持って業務自動化のコードを書いている。茨の道で負った傷は。確実に私を前へ進ませてくれた!パネル/modern-vscode-python-chatgpt.webp📘 このスキルを活かしてさらに前へ進むならPythonやVBAを体系的に学びたい方には「SAMURAI ENGINEER」のマンツーマン指導が効果的です。
AI時代の現場力、挫折を越えた自動化(続き)
自分の業務で使うコードを講師と一緒に作りながら学べるため。「独学で挫折した」という方でも確実にスキルを習得できます。SAMURAI ENGINEER(Pythonコース) →
📘 このスキルを活かしてさらに前へ進むならAIを使ったプログラミングをゼロから体系的に学びたい方には。生成AIプログラミングの教科書『大蔵~TAIZO~』がおすすめです。ChatGPTやClaude等の生成AIと組み合わせた実践的なコーディング手法を習得できます。生成AIプログラミングの教科書『大蔵~TAIZO~』 →
関連リンクとチェックリスト
著者はこうして解決の糸口を見つけた
著者も同じ境遇から始まりました。独学でここまで自動化した道のりを参考にしてみてください。
学習サービスとアンケート
このスキルを活かしてさらに前へ進むなら
Pythonや自動化スキルを体系的に習得して、ITエンジニアとしてのキャリアを切り開きたい方には「Enjoy Tech!(エンジョイテック)」が選択肢のひとつです。

