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

前回の「その2」では、Git(SourceTree)という世界標準の舞台に立った瞬間、自作プログラムが吐き出した「Shift-JIS」のテキストによって、見事なまでの文字化け地獄(繧「繧<=繧、繧ヲ繧ィ繧ェ)に叩き落とされたお話をしました。

「ここから出力処理をUTF-8に書き直す大工事が始まるのか……」と、暗澹たる気持ちで画面を見つめていた私ですが、結論から言うと、この問題は拍子抜けするほどあっさりと解決しました。

■ 第1章:灯台下暗し、オプション一個の拍子抜け

大騒ぎする前に、まずは自分が書いたVBAのソースコードを少し調べてみることにしました。どこに文字コード変換のロジックを潜り込ませようかと、関数の定義をじっと眺めていた、その時です。

画面の片隅、自作プログラムの出力設定を司る関数の引数リストに、それは最初からひっそりと佇んでいました。

引数:OutputEncoding As Long(デフォルト=0)

「……ん? 待てよ?」と思って過去の自分のメモをひっくり返してみると、そこには実にあっさりと、こう書かれていたのです。

「設定値を『1』にすると、UTF-8で出力します」

最初から、ありました。わざわざ新しいロジックを組む必要なんて1ミリもなかったのです。数年前に調子が良かった頃の自分が、未来の私のためにご丁寧にも「UTF-8出力オプション」を実装済みでした。

「あるんかい!」

夜中の事務所で、画面に向かって静かにツッコミを入れてスイッチを「1」に切り替え、私の文字コード大パニックは一瞬で幕を閉じました。

■ 第2章:これだよこれ!差分が丸裸に見える充実感

出力設定を「1(UTF-8)」に変えて再度ACCESSの解析プログラムを実行し、SourceTreeの画面を開きました。今度は文字化けもなく、日本語のコメントやフォームの定義が美しく表示されています。

そして、ここからが本当の感動でした。
マスター版と、個別に対応したプログラムのテキストを比較してみると、画面のグリーンとレッドの差分(Diff)で、変更点が手に取るように理解できたのです。

  • 「あぁ、このお客さんは備考欄を広げたんだな」
  • 「なるほど、ここはフィールドを追加したのか」
  • 「こっちはタイトルをこう書き換えたんだな」

モジュールのロジック変更が変わっているのはシステム屋として当然ですが、Accessのブラックボックスに隠されていた画面のプロパティやレイアウトの「微細な変更」までが、完全に可視化されて目の前に提示されている。

これだよ、これ。私が欲しかったのは、この正確な『モノサシ』だったんだ。
この仕組みを手に入れただけで、個別仕様の管理は劇的に楽になり、私はエンジニアとしての圧倒的な充実感にどっぷりと浸っていました。元々は、この状態だけで120%満足していたのです。

■ 第3章:エージェント?……待てよ、俺すでに準備できてるじゃん

そんなある日のことです。日課としてChatGPTを使いつつ、いつものようにAI関連の記事を何気なくチェックしていた私の目に、見慣れない単語が飛び込んできました。

「AIエージェント? Claudeが凄い?」

何だそれ? 知らんぞ。
どうやら、ただのチャット形式のAIとは違い、自分で勝手に判断してプログラムをガシガシ書いていく仕組みらしい。

「え~~、凄いじゃん!」

新しいもの好きの性分です。そんな面白そうなものを見せられて、好奇心が止まるはずがありません。「やってみたい」という衝動が激しく湧き上がってきました。

と同時に、私の頭の中で、点と点が一気に線へとつながる電撃が走ったのです。

「……待てよ? エージェントが勝手にコードを書くってことは、テキストベースのファイルを読み書きするんだよな?」
「俺、GitのためにAccessのオブジェクトを全部UTF-8のテキストに落とし込んでるじゃん……」

彼らはテキストが主食です。バイナリのAccessファイルを見せても途方に暮れますが、綺麗に整えられたUTF-8のテキストデータがあれば、そのままエージェントに食わせられるはず。

「これ、行けんじゃね!?」

トレンドに乗っかったんじゃない。自分が生き残るために必死に作ったあのテキスト化の仕組みが、まさか最新AIエージェントにとっての最高のコクピットになる。その可能性に気づいた瞬間、ワクワクが止まらなくなりました。

■ 第4章:全能感の罠と、再びアイツの洗礼

「出すのができてるんだから、余裕だろ」
すっかり全能感に包まれた私は、すぐに次のステップを思いつきました。エージェントがテキストを書き換えてくれるなら、逆にそれをAccess側に「戻す(インポートする)」マクロを作ればいい。

何度もリポジトリ作成ボタンをポチポチと押しながら、私は意気揚々とVBAの画面に戻りました。
「待ってろ、隣に取り込みボタンも増やしてあげるよ」

出力ボタンのすぐ隣に、誇らしげに配置された真新しい「取り込みボタン」。
これで完璧な双方向システムが完成したぞ、と満を持してそのボタンをポチッと押しました。Gitで美しく管理されているUTF-8のテキストファイルを、愛しの和室(Access)へと流し込む。

処理が完了し、ウキウキしながら復元されたはずのAccessのフォームを開いた、その瞬間。

画面に広がっていたのは、見事なまでの、
「繧「繧<=繧、繧ヲ繧ィ繧ェ」

「またお前かーーーーい!!!」

出力するときはオプション一発でUTF-8にできましたが、それを読み込む側のAccess(VBA)の内部は、依然としてShift-JISや独自の文化圏で生きています。何の配慮もなくUTF-8のテキストをそのまま突っ込めば、どうなるか。

完全に浮かれていた私は、再び暗闇から戻ってきた「アイツ(文字コードの呪い)」のブーメランを顔面で受け止め、三度パニックに陥るのでした。

(次回:『文字コードの呪いを解け!インポート機能完成への道(仮)』へ続く)


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

  • 本日のモットー: 「出すのは天国、戻すのは地獄。最新AIに触る前に、まずは足元の和室を整えろ」
  • ミッション: 自作ツールのUTF-8出力確認と、インポート機能(取り込みボタン)の増設。
  • 本日の戦果:
    • 出力オプションの発見: 過去の自分が仕込んでいた引数一発で文字化けをあっさり解決。
    • 正確な差分の掌握: SourceTreeでの可視化により、備考欄の拡張やフィールド追加などの微細な変更を完全に理解。
    • エージェントへの動機: 「テキスト化してあるならAIに行ける!」という閃きから、双方向化を目指して「取り込みボタン」を増設。
  • 本日の気づき:
    • 好奇心はエンジニアの動力源: 「何だそれ?凄いじゃん」から始まる試行錯誤こそが一番楽しい。
    • 文字コードのブーメラン: 出す処理と戻す処理、両方で文字コードを意識しないと、和室と洋室の壁に必ず弾かれる。

0 件のコメント :

コメントを投稿