この記事の要点
Geminiで既存スクリプトをAIレビュー!処理効率30%改善の実践術
Google Geminiを活用して既存のGASやExcelマクロをレビュー・改善する方法。手作りスクリプトの処理効率を30%向上させた事例を解説します。
課題:手作りスクリプトが複雑化して保守困難に
企業プロフィール
自動化スクリプトの現状
同事務所では、業務効率化のために複数のGASやExcelマクロを活用しています。しかし、これらは「必要に応じてその都度追加」してきたため、様々な問題が生じていました。
主な自動化スクリプト
- 請求書自動発行スクリプト(GAS):顧問先への請求書をGoogleスプレッドシートから自動生成
- データ集計マクロ(Excel VBA):月次決算データの集計・転記
- メール送信スクリプト(GAS):顧問先への定期連絡の自動送信
発生していた問題
- 処理が遅い:追加を繰り返した結果、無駄な処理ステップが多い
- 手作業が残っている:完全自動化できておらず、一部で担当者の作業が必要
- エラーが発生しやすい:条件分岐が複雑になり、予期しないエラーが起きる
- 改修が難しい:コードが読みにくく、修正すると別の場所が壊れる
- 属人化:作った本人しか中身を理解していない
請求書発行スクリプトの例
- 処理ステップ数:約150行のコード
- 実行時間:顧問先150社分で約15分
- 手作業の介入:3箇所(データ確認、送信前チェック、例外処理)
- エラー発生頻度:月に2〜3回
担当者の声(導入前)
「数年前に自分で作ったスクリプトなんですが、その場しのぎで継ぎ足してきたので、今では自分でも全体像を把握しきれていません。直したいけど、どこから手をつけていいか分からない状態でした」
— 経理担当者(入社8年目)
施策:GeminiでスクリプトをAIレビュー
Geminiを選んだ理由
同事務所がGeminiを選んだ理由は、既にGoogle Workspaceを利用しており、GASとの親和性が高かったためです。また、長いコードを一度に解析できる大容量のコンテキストウィンドウも魅力でした。
活用方法1:既存コードの問題点を診断
まず、既存のスクリプトをGeminiに読み込ませ、問題点を指摘してもらいます。
コードレビュー依頼のプロンプト例
以下のGASコードをレビューして、改善点を指摘してください。
【観点】
1. 処理効率の悪い部分
2. エラーが発生しやすい部分
3. 可読性を損なっている部分
4. 重複している処理
5. より良い書き方があれば提案
【コード】
function createInvoices() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('顧問先一覧');
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
var clientName = data[i][0];
var fee = data[i][1];
// 以下、請求書作成処理...
// [実際のコードを貼り付け]
}
}
Geminiからの指摘例
レビュー結果
1. 処理効率の問題
- ループ内で毎回
getValues()を呼んでいるため、API呼び出しが多い → ループ外で一度だけ取得すべき - 日付計算を毎回行っている → 定数として定義すべき
2. エラーリスク
- データが空の場合の処理がない → null/undefinedチェックを追加
- try-catchがない → エラー時に全処理が停止するリスク
3. 可読性の問題
- マジックナンバー([0], [1]等)が多い → 定数で列名を定義すべき
- 長すぎる関数 → 処理を分割すべき
活用方法2:改善版コードの生成
問題点を把握したら、Geminiに改善版のコードを生成してもらいます。
リファクタリング依頼のプロンプト例
先ほど指摘された問題点を踏まえて、以下の改善を行ったコードに書き換えてください。
【改善要件】
1. API呼び出しを最小限に
2. エラーハンドリングを追加
3. 可読性の向上(定数定義、関数分割)
4. コメントを追加して処理内容を明確に
5. 既存の機能は維持すること
【出力形式】
- 改善後のコード全文
- 主な変更点の説明
- 期待される効果
Geminiが生成した改善版コード(抜粋)
// 定数定義(列インデックス)
const COLUMNS = {
CLIENT_NAME: 0,
FEE: 1,
EMAIL: 2,
// ...
};
/**
* 請求書を一括作成するメイン関数
*/
function createInvoices() {
const sheet = SpreadsheetApp.getActiveSpreadsheet()
.getSheetByName('顧問先一覧');
const data = sheet.getDataRange().getValues();
const today = new Date();
// ヘッダー行をスキップ
const clients = data.slice(1).filter(row => row[COLUMNS.CLIENT_NAME]);
const results = { success: 0, failed: 0, errors: [] };
clients.forEach((client, index) => {
try {
createSingleInvoice(client, today);
results.success++;
} catch (error) {
results.failed++;
results.errors.push({
client: client[COLUMNS.CLIENT_NAME],
error: error.message
});
Logger.log(`Error for ${client[COLUMNS.CLIENT_NAME]}: ${error}`);
}
});
// 結果サマリーをログ出力
Logger.log(`完了: 成功${results.success}件, 失敗${results.failed}件`);
return results;
}
/**
* 単一の請求書を作成
*/
function createSingleInvoice(clientData, issueDate) {
// 請求書作成処理...
}
活用方法3:手作業部分の自動化提案
現在手作業で行っている部分を説明し、自動化できないか相談します。
自動化相談のプロンプト例
現在、以下の部分で手作業が発生しています。
これらを自動化する方法を提案してください。
【手作業の内容】
1. 請求書発行前に、顧問料が変更された顧客がないか確認
2. 送信前に、メールアドレスが空欄の顧客を除外
3. エラーが出た顧客を手動でリストアップ
【制約】
- GASで実現可能な方法
- 既存のデータ構造は変えたくない
段階的な改善アプローチ
一度にすべてを改修するのではなく、段階的に改善を進めました。
- Phase 1: 診断:既存コードの問題点を洗い出し
- Phase 2: 軽微な改善:影響の少ない部分から修正
- Phase 3: リファクタリング:コード構造の整理
- Phase 4: 自動化拡張:手作業部分の自動化
運用上の注意点
本番適用前のテスト
- テスト用のスプレッドシートで動作確認
- 少数のデータで試運転
- 旧バージョンのバックアップを保持
AIの出力を鵜呑みにしない
- 生成されたコードは必ず動作確認
- 既存機能が壊れていないかチェック
- 不明な部分は追加で質問
成果:処理ステップを30%削減
定量的な成果(請求書発行スクリプト)
他のスクリプトへの展開
請求書発行スクリプトでの成功を受けて、他のスクリプトも同様に改善しました。
年間での効果
- スクリプト実行時間の短縮:年間約50時間削減
- 手作業の削減:年間約30時間削減
- エラー対応工数の削減:年間約10時間削減
- 合計:年間約90時間の業務削減
定性的な成果
保守性の向上
- コードが読みやすくなった:誰でも内容を理解できるように
- 修正が怖くなくなった:構造化されたことで影響範囲が明確に
- ドキュメント化:コメントが充実し、引継ぎが容易に
安定性の向上
- エラーが減少:適切なエラーハンドリングにより、予期しないエラーが減った
- エラー時の対応が容易:どこで何が起きたかログで分かる
- 手作業によるミスがなくなった:完全自動化による品質安定
組織としての成長
- AIを活用したコード改善のノウハウ蓄積
- 他のスタッフも改善に参加:AIがあれば専門知識がなくても相談できる
- 新しいスクリプト作成時の品質向上:最初からAIにレビューしてもらう習慣
担当者の声(導入後)
「既存のコードをAIに見せるだけで、改善点を的確に指摘し、より洗練されたコードに書き換えてくれることに驚きました。コードの品質向上と効率化を同時に実現できました」
— 経理担当者(入社8年目)
「自分で作ったスクリプトの『技術的負債』をずっと気にしていたんですが、一人で直すのは難しかった。AIに相談しながら進められたことで、ようやく解消できました」
— 所長
まとめ:AIで「技術的負債」を解消
成功のポイント
- 段階的に改善する
一度に全てを変えるのではなく、影響の少ない部分から段階的に改善しました。
- 診断から始める
いきなり書き換えるのではなく、まず問題点を明確にしてから改善しました。
- テストを徹底する
AIが生成したコードも、必ず動作確認してから本番適用しました。
- 既存機能を維持する
改善によって既存の機能が失われないよう、要件を明確に伝えました。
他業種への応用
「既存スクリプトのAIレビュー」は、様々な企業で応用可能です。
- 営業部門:見積作成マクロ、CRM連携スクリプト
- 人事部門:勤怠集計マクロ、給与計算シート
- 総務部門:備品管理、経費精算の自動化スクリプト
- マーケティング:レポート自動生成、データ集計
AIを活用したコード改善の進め方
- 対象スクリプトの選定:問題が多いもの、よく使うものから
- 現状の問題点を整理:処理時間、エラー頻度、手作業箇所
- AIに診断を依頼:改善点を洗い出してもらう
- 優先度をつけて改善:効果が大きいものから着手
- テストと検証:動作確認後に本番適用
導入を検討される企業様へ
Geminiを活用したスクリプト改善について、詳しいご相談を承っております。
- 既存スクリプトの診断・改善提案
- GAS・Excel VBAの効率化支援
- AIを活用したコード品質向上の研修
まずはお気軽にお問い合わせください。
関連記事
この事例で確認した実務ポイント
対象業種: サービス業
支援の観点: 業務フローの棚卸し、既存ツールの整理、現場で使い続けられる運用設計、導入後の定着確認。
同じ課題に向く企業: IT担当者が不在、紙や表計算での管理が限界、AIや自動化を試したいが社内だけでは進めにくい企業。