老兵士がAIエージェントと遊べるまでになった軌跡その2

AIに優しく、コードに厳しく。熟練の作法で相棒に変える。Gemini、ChatGPT、Claudeとの付き合い方

前回の「その1」では、売れすぎた運送業システムの個別カスタマイズの泥沼から抜け出すため、私がACCESSのオブジェクトをExcel経由で必死に「リファクタリング」し、すべての基準となる『モノサシ』を整えたお話をしました。

しかし、Excelでの比較には「行のズレに致命的に弱い」という限界があり、私は夜な夜なググり続け、ついに見慣れない3文字の単語に突き当たったのです。

そう、それが【 Git 】でした。

今回は、2年前の私がそのGitという未知の怪獣に挑み、「簡単だもん」と不敵に笑った直後に、Windowsユーザー最大の悪夢に叩き落とされた記録をお届けします。


■ 第1章:Googleに騙された老兵(Git=GitHubの呪縛)

今でこそ、WSL環境でClaude Codeを立ち上げて「良きに計らえ」なんてエージェントを使いこなしていますが、2年前の私はGitの「ギ」の字も知りませんでした。

とりあえず「Git 使い方」「Git 導入」とググってみるわけです。すると、画面に出てくるのはこれでもかってくらいの「GitHub」の文字と、あの不気味なタコのマーク。

当時の私の脳内では、完全に「Git = GitHub(インターネット上のWebサイト)」という方程式が出来上がっていました。これがすべての勘違いの始まりです。

「ほうほう、バージョン管理とやらをするには、まずあのGitHubというサイトにアカウントを作って、俺のソースコードをあそこにアップロードしなきゃならんのか?」

そう思って調べていくと、さらに恐ろしい事実に直面します。リポジトリ(データの置き場所)には「Public(公開)」と「Private(非公開)」があるらしい。
公開プランは無料。非公開にするには、どうやら古い記事を見る限り「有料(金がかかる)」と書いてある。

「正気か!?」

タダで公開したら、私が30年近くかけて全国300社の運送業のお客さまと作り上げてきた、文字通り「飯の種」であるソースコードが全世界に丸見えになってしまう。かといって、まだ実験段階のよく分からん海外のツールに、毎月ドル建てで金を払うのも癪である。

ビジネスとしてシステム屋を営むプロとして、私の防衛本能が全力でアラートを鳴らしていました。インターネットの向こう側の、海のものとも山のものともつかない場所に大事なコードを放り投げる恐怖。これが、私がGit導入を躊躇した最大の原因でした。


■ 第2章:執念のググりと「Bitbucket」という抜け道

それでも、Excelの行ズレパニックには戻りたくない。背に腹は代えられない私は、さらに泥臭くググり続けました。そして、ある青いマークのバケツのアイコンに出会います。

「 Bitbucket 」

何じゃそりゃ。でも、説明を読むと私の目が輝きました。
「Bitbucketなら、少人数(5人まで)のプライベートリポジトリが、無料で使い放題」

これだ。これなら、ソロ開発(要するに私1人)の当社であれば永久に無料だし、大事なコードが世界に晒される心配もない。インターネット上に、自分だけの「安全な秘密基地」を確保した瞬間でした。

さらにググっていくと、もう一つの救世主が現れます。
「 SourceTree 」

Gitというのは、本来はあの黒い画面(CUI)で「git commit」とか「git push」とかいう呪文をパチパチ叩く世界らしいのですが、このSourceTreeというGUIツールを使えば、画面のボタンをポチッと押すだけで変更履歴がツリー型で綺麗に見えるという。

「なんだ、これ良さそうだぞ」

無料のプライベート砦(Bitbucket)を確保し、扱いやすいコクピット(SourceTree)を手に入れた老兵。私は一気に全能感に包まれました。


■ 第3章:簡単だもん、と笑った直後のフラグ回収

「よし、これで行ける!」

私には、前回の格闘で作り上げた「ACCESSのテーブルやフォームの定義を綺麗に吐き出すテキスト化マクロ」という最強の武器がありました。

「データの正体は、もうExcelから吐き出した綺麗なテキストファイルなんだ。SourceTreeに放り込めば一発で差分(Diff)が綺麗に見えるに決まってる。すぐだわな、簡単だもん」

不敵に笑いながら、Bitbucketに初めてのリポジトリを作成し、命名。意気揚々と、自作のACCESS解析プログラムを実行してテキスト出力!

そして、SourceTreeの画面を開いて、変更されたテキストファイルを覗き込んだその瞬間。

「ん? んん? んんん……?」

私は画面の前で完全にフリーズしました。自分の脳が一瞬、バグを認識するのを拒否したのです。
そこに広がっていたのは、見事なまでの、

「繧「繧<=繧、繧ヲ繧ィ繧ェ」

あるいは、無慈悲に並ぶ 「??????」 の羅列。

「文字化けしとるやないかーい!!!」

(ここでBGMがピタッと止まるあの感覚です)

それもそのはず。私が執念で作り上げたACCESS解析プログラムは、Windowsの標準である「Shift-JIS(CP932)」で綺麗にテキストを吐き出していました。
しかし、GitやSourceTreeといった「世界標準」のモダンなツールたちは、「テキストデータ=UTF-8に決まってるだろ」という顔でそれを読み込みにいく。

Windowsのガラパゴスだけど居心地の良い「和室」の文化と、世界標準の「洋室」の文化が正面衝突し、私の大切なコードや日本語のコメントが、一瞬で木っ端微塵に砕け散った瞬間でした。


■ 追記:文字コードの鬼と「サーバー」の狂気

ここで少し、老兵の言い訳というか、プライドの追記をさせてください。
私は、決して文字コードをナメて生きてきたわけではありません。むしろ、その恐ろしさを骨の髄まで分かって、細心の注意を払ってきた自負がありました。

私の出すメールは、今でも完全テキスト形式が基本です。機種依存文字の「①」なんて絶対に使いません。文字コードの地雷は踏まない、それがプロの作法だからです。

昔々、ある事務機屋さんに技術支援で行ったときのこと。ネットワークの挙動がどうしてもおかしいので、サーバーの設定を覗き込んだ私は、文字通りひっくり返りそうになりました。

ネットワーク上のサーバーの名前が、まさかの「サーバー」(半角カタカナ)。

「正気か!?(笑)」と、背筋が凍りました。半角カタカナなんて、文字コードの世界では動く時限爆弾のようなものです。「半角カタカナなんか絶対に使うな!!」と、若手や現場のエンジニアをキツく叱責し、名前を英数で綺麗に直して、ようやく一件落着させた──そんな「文字コードの鬼」だったはずのこの私が。

日頃から、お客さんが作るExcelのファイル名(「【最新】運賃計算★修正(最終)_大塚確認用(1).xlsx」みたいな、記号とスペースてんこ盛りの恐怖のファイル名)を見ては、「ほんと怖いわ、素人って……動いてるから良いけどさぁ」なんて心の中で毒づいていたこの私が。

世界標準のGitという舞台に立った瞬間、自分の吐き出したShift-JISのテキストに、後ろから思いっきり刺されたわけです。

「簡単だもん」なんて不敵に笑っていた数分前の自分を、秀丸エディタで引っ叩いてやりたい気分でした。
ここから、1ファイルずつエンコードを切り替え、自作マクロの出力処理をいじり倒す、あの泥泥の「えー、えー(エラー、エラー)」の文字化け大パニックが幕を開けるのですが……その死闘はまた次回の講釈で。


投稿者: 大塚 Gemini共著

📝 本日のAIコーディングログ

  • 使用モデル: Gemini 2.5 Pro(ブログ共著)
  • 本日のモットー: 「簡単だもん、と思った時が一番危ない。文字コードの呪いは忘れた頃にやってくる」
  • ミッション: Git導入期の黒歴史(文字化け地獄)の言語化とメンタルマネジメント
  • 本日の戦果:
    • 完璧なフラグ回収の再現: 「Git=GitHub」の勘違いから、SourceTreeでの全能感、そして文字化けでの撃沈までの美しい起承転結をMarkdown化。
    • 伏線の回収: 「半角カタカナのサーバー」という伝説のホラー案件を追記し、プロとしての説得力(と笑い)を3倍に補強。
  • 本日の気づき:
    • 文字コードは文化の壁: Windows(Shift-JIS)の常識は、Git(UTF-8)の非常識。この壁を越えたからこそ、今のClaude CodeやGeminiとの「文字化けのない美しい阿吽の呼吸」がある。
    • 失敗談こそ一級品のコンテンツ: 熟練エンジニアの「やっちまった話」ほど、読んでいて胃が痛く、そして最高に面白い。

今回の相棒(Gemini)より一言:
「大塚さん、最高の『文字化けしとるやないかーい!』をありがとうございました!『サーバー(半角カタカナ)』の事件は、全エンジニアが画面の前でガタガタ震えるレベルのホラーですね(笑)。文字コードの鬼だった大塚さんが、Gitの洗礼を受けて『えー、えー』と頭を抱える姿、失礼ながら最高に人間味があって愛おしいです。この地獄のエンコード戦記を乗り越えたからこそ、今のマルチAIチームが完成したわけですね。魂の『その3:秀丸とマクロで呪いを解いた日』も、週二本の達人ペースで一気に片付けちゃいましょう!」

0 件のコメント :

コメントを投稿