【前回までのあらすじ】
実業務で使えるGeminiの利用方法
https://qiita.com/futayubi5656/items/47326bca955927938aef
現在、私が利用するAIの98%は Gemini Pro です。その最大の理由は、学習データとして利用されないセキュアな環境で、10,000行を超えるような大規模なソースコードでも正確にその意図を理解してくれる卓越した能力にあります。
この能力のおかげで、既存ライブラリの改修、機能追加、それを利用した新しいプログラムの実装、さらには仕様書の作成まで、あらゆる開発タスクを 「共同開発者」 として高い精度で実行できます。
【本題】AI開発ツールの「流行」に振り回されない、普遍的な開発手法
Cursor、Windsurf、そして最近話題のKiroなど、AIを統合した開発環境は次々と登場し、そのキャッチアップは非常に大変です。また、これらのAIエディタの多くは、別契約でAPIキーを取得しないと使えません。さらに、使用する言語によって使えるエディタが制限されるのはとても不便ではないでしょうか?
例えば:
- .Net系開発:VisualStudioでなければ開発ができない → 解決策:VSのソースコードをそのまま結合ツールへ
- VB6・Excel・Accessマクロ:流行のAIエディタでは対応していない → 解決策:マクロエディタから全コードをテキスト出力し、結合ツールで処理。AI生成コードは再度マクロエディタに貼り付け
このように、テキストファイルとして出力できるものなら、どんな開発環境でもAI開発の恩恵を受けられるのです。
流行のAIエディタに振り回される開発者の悩み
- 新しいツールが登場するたびに環境を乗り換え、その「お作法」を学び直すのは効率的?
- 多くのAIエディタは別契約でAPIキーを取得しないと使えない
- 従量課金制の高性能モデルは大規模開発ですぐに高額請求や処理上限に達する
- 使用言語によってエディタが制限される(.Net系→VisualStudio必須、VB6・Excel・Accessマクロ→対応エディタなし)
2025年の現時点で重要なのは、AI開発の本質を理解すること
特定のAIエディタの使用方法の言いなりになるのではなく、自分自身がエディタの仕組みを理解して、エンジニアも同じようにAIタスクを振れるようになるべきです。
なぜなら:
ソースや仕様を分割したり、結合してGeminiに渡しやすくすれば、言語やエディタ関係なくAI開発ができるから。
このアプローチの核心が、「AI開発における継続性の断絶」という深刻な問題を解決する、自作の ファイル文字列結合ツール なのです。
人間主導のAI開発プロセス
AIエディタが自動で行う「ソースコードや仕様書を読み込んでプログラムを製造する」処理を、あえて人間のエンジニアが分割して処理し、AIにタスクを振ることで、「AI開発における継続性の断絶」 を解決します。
この手法なら、エディタや言語に関係なく、テキストファイルとして出力できるものなら何でもAI開発の対象にできます。
このツールの役割はシンプルです。複数のソースコードファイルを、ファイルパスの情報をヘッダーに含んだ1つの巨大なテキストファイルに結合することです。
なぜファイルを「結合」し、そして「分割」出力する必要があるのか?
ここで重要なのが、ツールに「最大出力行数」という設定がある点です。これは、Geminiを始めとする大規模言語モデルには、一度のやり取りで処理できるテキスト量(コンテキストウィンドウ)に上限があるためです。AIが一度に記憶できる「作業メモリの広さ」だと考えてください。
この上限を超えた長文を一度に送ると、AIは情報を完全には理解できず、指示が抜け落ちたり、精度が著しく低下したりします。結合ツールがデフォルトでファイルを約8000行ごとに分割するのは、この制約を回避し、AIに情報を確実に取り込ませるためです。
私がGeminiを最も信頼している理由の一つが、このコンテキストウィンドウの広さとコスト効率です。他の有料モデルと比較しても、Geminiはより多くの情報を一度に扱えるため、大規模なプロジェクトの引き継ぎにおいて絶大なアドバンテージがあります。
コンテキストウィンドウとは?
AIが一度に記憶できる「作業メモリの広さ」のことです。この上限を超えた長文を一度に送ると:
- AIは情報を完全には理解できない
- 指示が抜け落ちる
- エラーで処理を受け付けない
結合ツールがデフォルトでファイルを約8000行ごとに分割するのは、この制約を回避し、AIに情報を確実に取り込ませるためです。
重要なポイント:自動化でテキスト出力、AI開発を効率化
手動でのコピー&ペーストは非効率的です。VBAの自動出力機能を使えば、古い言語や特殊な開発環境でも、ワンクリックで全コードをテキスト化でき、最新のAI技術の恩恵を受けられます。「流行のツールに合わせる」のではなく、「既存の環境にAIを適応させる」発想が重要です。
具体的な手順は下部の「様々な開発環境での具体的な活用方法」に記載しておきます。
実例:ファイル結合ツールを使ったライブラリの引き継ぎガイド
ステップ1: 結合ツールの起動とファイルの準備
まず、後述するPythonスクリプトを実行してツールを起動します。そして、AIに理解させたいプロジェクトのソースコードが格納されたフォルダ(例: app や src ディレクトリ)や個別のファイルを、ウィンドウにドラッグ&ドロップします。
ステップ2: ファイルの結合
出力ファイル名を指定し、「ファイルを結合」ボタンをクリックします。ツールは「最大出力行数」に基づいて、必要であれば複数の連番付きファイル(例: combined_001.txt, combined_002.txt)を生成します。
ステップ3: 分割されたソースコードをAIに記憶させる
生成されたファイルが複数ある場合、次のプロンプトを使って、AIに段階的に情報を記憶させます。これは、AIに「これから大容量のデータを送る」と予告し、受け入れ準備をさせるための重要な儀式です。
プロンプト例(1回目):
「これからプロジェクトのソースコードを複数回に分けて送ります。私が『完了』と言うまでは、内容を記憶することに専念し、『OK』とだけ返信してください。」
AIが「OK」と返信したら、1つ目のファイル (combined_001.txt) の内容を貼り付けて送信します。AIが再び「OK」と返したら、2つ目のファイル (combined_002.txt) の内容を…という流れで、全てのファイルを送信します。
ステップ4: AIに改修を指示する
全てのファイルを渡し終えたら、「完了」と伝えた上で、本来の指示を出します。
重要:必ず仕様書も合わせて渡す
ソースコードだけでなく、仕様書もセットで渡すことで、AIがより正確な理解と適切な改修を行えます。
プロンプト例(最後):
「完了。以上が現在開発中のLaravelプロジェクトの全ソースコードです。」
「次に仕様書を渡します。理解できたらOKと出力してください。」
「内容を完全に理解した上で、以下の改修を行ってください。
改修内容: UserController.php に、ユーザーのプロフィールを更新する updateProfile メソッドを追加してください。」
たったこれだけで、AIはプロジェクトの全体像、ファイル間の依存関係、そしてあなたのコーディングスタイルまでを完全に把握した上で、精度の高いコードを提案してくれます。
結論:この手法が、あなたの開発を「未来」に適応させる
この手法の最大の利点は、その普遍性にあります。
特定のAIエディタの機能や、特定のAIモデルの性能に依存しません。あなたがやるべきことは、開発の根幹となるソースコードという「事実」を、AIが理解できる形に整形して渡すだけ。これにより、チャットセッションを横断しても開発の継続性を失うことなく、まるで優秀なアシスタントに完璧な引き継ぎ資料を渡すかのように、スムーズに共同開発を続けることができるのです。
2025年の現時点では、特定のAIエディタの使用方法の言いなりになるのではなく、自分自身がエディタの仕組みを理解して、エンジニアも同じようにAIタスクを振れるようになる方が有効です。ソースや仕様を分割したり、結合してGeminiに渡しやすくすれば、言語やエディタ関係なくAIによる開発ができるからです。
新しいツールを追いかけるのに疲れた開発者こそ、ぜひこの「対話の土台」を自らコントロールする手法を試してみてほしいと思います。
様々な開発環境での具体的な活用方法
1. Visual Studio (.Net系)
- プロジェクトフォルダ全体を結合ツールにドラッグ&ドロップ
- 生成されたファイルをGeminiに渡してAI開発
2. Excel VBA
- 以下のVBAコードを実行して全マクロを自動出力
- 結合ツールで処理後、AI生成コードを再度VBAエディタに貼り付け
Excel/Access VBA実行前の設定
- Excel:「ファイル」→「オプション」→「セキュリティセンター」→「セキュリティセンターの設定」→「マクロの設定」→「VBAプロジェクト オブジェクト モデルへのアクセスを信頼する」にチェック
- Access:特別な設定は不要(デフォルトで
SaveAsTextメソッドが使用可能)
Sub ExportAllMacros()
Dim vbComp As Object
Dim folderPath As String
Dim exportFolder As String
' 保存先フォルダのパスを作成
folderPath = ThisWorkbook.Path
If folderPath = "" Then
MsgBox "このブックは一度保存されている必要があります。", vbExclamation
Exit Sub
End If
exportFolder = folderPath & "\VBA_Code"
' フォルダが存在しない場合は作成
If Dir(exportFolder, vbDirectory) = "" Then
MkDir exportFolder
End If
' 全てのコンポーネントをエクスポート
For Each vbComp In ThisWorkbook.VBProject.VBComponents
Dim exportPath As String
Dim fileExtension As String
Select Case vbComp.Type
Case 1: fileExtension = ".bas" ' 標準モジュール
Case 2: fileExtension = ".cls" ' クラスモジュール
Case 3: fileExtension = ".frm" ' ユーザーフォーム
Case 100: fileExtension = ".cls" ' シートモジュール
Case Else: fileExtension = ".txt"
End Select
exportPath = exportFolder & "\" & vbComp.Name & fileExtension
vbComp.Export exportPath
Next vbComp
MsgBox "全てのマクロコードを " & exportFolder & " に出力しました。", vbInformation
End Sub
3. Access VBA
- 以下のVBAコードで全オブジェクトを自動出力
- AI生成コードをAccessのコードエディタにインポート
Sub ExportAllObjectsAsText()
Dim db As DAO.Database
Dim doc As DAO.Document
Dim container As DAO.Container
Dim folderPath As String
Dim exportFolder As String
folderPath = CurrentProject.Path
exportFolder = folderPath & "\VBA_Code"
If Dir(exportFolder, vbDirectory) = "" Then
MkDir exportFolder
End If
Set db = CurrentDb
For Each container In db.Containers
If container.Name = "Forms" Or container.Name = "Reports" Or container.Name = "Modules" Then
For Each doc In container.Documents
Dim objectName As String
Dim objectType As AcObjectType
Dim exportPath As String
objectName = doc.Name
Select Case container.Name
Case "Forms"
objectType = acForm
exportPath = exportFolder & "\" & objectName & ".form.txt"
Case "Reports"
objectType = acReport
exportPath = exportFolder & "\" & objectName & ".report.txt"
Case "Modules"
objectType = acModule
exportPath = exportFolder & "\" & objectName & ".module.txt"
End Select
Application.SaveAsText objectType, objectName, exportPath
Next doc
End If
Next container
Set db = Nothing
MsgBox "全てのオブジェクトを " & exportFolder & " にテキストとして出力しました。", vbInformation
End Sub
4. VB6(レガシー環境)
- プロジェクトファイル(.vbp)と関連する.bas、.frm、.clsファイルを結合
- フォームのコードも含めてテキスト化してAI処理
5. その他のレガシー言語
- PowerBuilder、Delphi、COBOLなど、どんな言語でもテキスト出力可能ならAI開発対象



