Slide 1

Slide 1 text

初めての Azure Functions を Claude Code で作ってみた 青柳 英明 2025/06/22 JAZUG Fukuoka 第2回 〜 Azureの知識地図を語る!

Slide 2

Slide 2 text

自己紹介 氏名: 青柳 英明 所属: クラスメソッド 福岡オフィス 職種: AWS ソリューションアーキテクト/ コアメンバーやってます 生成 AI エンジニア

Slide 3

Slide 3 text

Azure OpenAI をご利用のお客様から、ご要望 「社内のエンドユーザー向けに、毎月の Azure OpenAI 利用料を周知したい」 「Azure ポタールの『コスト分析』ダッシュボードを共有しましょう」 「エンドユーザーには Azure ポータルのログイン権限を与えてない」 (※ Azure OpenAI は IAM 権限ではなく API キー経由で利用させている) 「(うーん・・・)」 「Excel で料金レポートをまとめてくれない?」 「(うーーん・・・・・)」

Slide 4

Slide 4 text

ワタシの属性 ・インフラ出身で、プログラムは基本書かない (書けない) ・AWS の Lambda でチョロっとしたスクリプトは書いたりする ・Azure のインフラは多少は分かる (構築もする) ・Azure 上でのプログラミング (Azure Functions など) は全くの未経験 どげんする?

Slide 5

Slide 5 text

世は「Vibe Coding」ブーム たまたま、社内で「Claude Code」が利用できるようになったので、使ってみる (「JAZUG 的には Copilot だろ!」というのは分かります。スマン・・・)

Slide 6

Slide 6 text

使ってみる ・作業用ディレクトリを作る ・Claude Code モジュールをインストール % npm install –g @anthropic-ai/claude-code ・Claude Code を起動 % claude

Slide 7

Slide 7 text

要件を整理してもらうと良いらしい (と聞いた) いきなり「コードを書いて」とお願いするのではなく、 やりたいことを伝えて、要件を整理してもらう > Azureの料金データをダウンロードしてレポートを作成するツールを作りたいです。 私にヒアリングして要件を整理してください。 ●Azureの料金データをレポート作成するツールについて、要件を整理させていただきます。 以下の点について教えてください: 1. データソース - Azure Cost Management APIを使用しますか?それとも既存のCSVエクスポートを使用しますか? - 対象のAzureサブスクリプションは単一ですか、複数ですか? 2. レポート内容 - どのような期間のデータが必要ですか?(月次、週次、日次など) - 主に見たい項目は何ですか?(サービス別、リソースグループ別、タグ別など) - コスト予測やトレンド分析は必要ですか? 3. ・・・

Slide 8

Slide 8 text

ヒアリングに答えていく と言っても正直よくわからんので、お勧めを聞いてみる ・・・ これらの情報を教えていただければ、具体的な実装方針を提案できます。 > 要件を順に伝えます。 データソース: - APIを使うか、CSVエクスポートを使うか、決めていません。お勧めを教えてください。 - 対象のAzureサブスクリプションは単一です。 ●データソースについてのお勧め: Azure Cost Management APIをお勧めします。理由は: メリット: - リアルタイムデータ取得 - 自動化しやすい(定期実行に最適) - 柔軟なフィルタリング・グループ化 - プログラムで完結 デメリット: ・・・

Slide 9

Slide 9 text

ヒアリングに答えていく Claude Code お勧めのヤツにしておく 残りのヒアリングにも答えていく > レポート内容: - 期間は月次で、次の2パターンのレポートが欲しいです - 月間トータル利用費を出力 (表形式) - 日毎の利用費の推移を出力 (グラフ形式) - 対象サービスはAzure OpenAI (Cognitive Serviceアカウント) で、分析軸はリソース別です - 日毎の利用費推移には、コスト予測も出力してください > 出力形式: Excelでお願いします > 実行環境: Pythonでお願いします > わかりました、Azure Cost Management APIを使用してください。

Slide 10

Slide 10 text

要件が整理された ●要件整理完了! Azure料金レポートツール仕様: - データソース: Azure Cost Management API - 認証: Azure CLI認証 - 対象: Azure OpenAI (Cognitive Service)、リソース別 - 言語: Python - 出力: Excel形式 - レポート内容: a. 月間トータル利用費(表形式) b. 日毎利用費推移+月末までの予測(グラフ形式) - 実行: 手動、指定月のレポート生成 実装を開始しますか? > 開始してください

Slide 11

Slide 11 text

実装開始 タスクを展開して、次々に作業を進めてくれる ●Update Todos ⎿ ☒ Complete requirements gathering for Azure cost report tool ☐ Set up Python project structure and dependencies ☐ Research Azure Cost Management API endpoints and authentication ☐ Implement Azure OpenAI cost data retrieval by resource ☐ Create monthly total cost report (table format) ☐ Create daily cost trend analysis with prediction ☐ Implement Excel export functionality ☐ Create command line interface for month specification ・・・ Wrote 9 lines to requirements.txt ・・・ Wrote 241 lines to azure_cost_reporter.py ・・・

Slide 12

Slide 12 text

実装完了 実装が終わったら、テストもしてくれる ●Azure Cost Reporterツールが完成しました! 作成したファイル 1. requirements.txt - 必要なPythonライブラリ 2. azure_cost_reporter.py - メインツール 3. README.md - 使用方法とドキュメント 主な機能 ・・・ 使用手順 ・・・ ツールの使用準備が整いました。実際に実行してテストしますか? > はい、実行してください

Slide 13

Slide 13 text

テスト 〜 エラーが出たら自動的に修正 テスト中にエラー発生 → エラー内容を踏まえて、コードや設定ファイルを修正してくれる ●Bash(python azure_cost_reporter.py --subscription-id XXXXXXXX --year 2024 --month 12) ⎿ Error: (eval):1: command not found: python ●Bash(python3 azure_cost_reporter.py --subscription-id XXXXXXXX --year 2024 --month 12) ⎿ Error: Traceback (most recent call last): File "/Users/hoge/test/claude-code-test/azure-cost-report-tool/ azure_cost_reporter.py", line 18, in from sklearn.linear_model import LinearRegression ModuleNotFoundError: No module named 'sklearn'

Slide 14

Slide 14 text

実行成功 レポートファイルが生成された! (生成された Excel をお見せしたいですが・・・実データ入ってるのでゴメン) ●ツールの実行が成功しました! Azure OpenAI の2024年12月のコストデータを取得 Excelレポート azure_openai_cost_report_2024_12.xlsx を生成 月間総コスト: $174,666.29 を表示 生成されたレポートの内容: 1. Monthly Summary シート - リソース別月間サマリー 2. Daily Trend シート - 日毎の推移データ(実績+予測) 3. Chart Data シート - グラフ作成用データ

Slide 15

Slide 15 text

Azure Functions 化してみる > ツールをAzure上でスケジュール実行したいです。どのようにすればよいですか? ●Azure上でスケジュール実行する方法を3つ提案します: 1. Azure Functions(推奨) - 利点: サーバーレス、コスト効率、簡単な設定、タイマートリガー対応 - 適用: 月次実行に最適 2. Azure Container Instances + Logic Apps - 利点: 既存Pythonコードをそのまま利用可能 - 適用: 定期実行にLogic Appsのスケジューラを使用 3. Azure Batch + Logic Apps - 利点: 大量データ処理、複雑なワークロード対応 - 適用: より高度な処理が必要な場合 どの方式がお好みですか? 最も簡単で運用コストが低い Azure Functions をお勧めします。以下の点で変更が必要です: ・・・

Slide 16

Slide 16 text

Azure Functions 化してみる ●Azure Functions版のコストレポートツールが完成しました! 作成したファイル 1. function_app.py - Azure Functions メイン実装 2. requirements-function.txt - Function用依存関係 3. host.json - Function設定 4. local.settings.json - ローカル環境設定 5. deploy.md - 詳細なデプロイガイド 主な機能 ・・・ スケジュール設定 ・・・ 次のステップ 1. Azure リソース作成 (deploy.mdの手順2) 2. サービスプリンシパル設定 (手順3) 3. 環境変数設定 (手順5) 4. デプロイ実行 (手順7)

Slide 17

Slide 17 text

解説もお願いしてみる 全自動でプログラムが完成したのはいいが、中身が全くわからん・・・ > function_app.py の処理内容を、Azure初心者にも分かるように解説してください ●function_app.py の解説(Azure初心者向け) 全体概要 このファイルはAzure Functions(Azureのサーバーレス機能)で動作するプログラムです。Azure OpenAIの利用料金を自動で集計してExcelレポートを作成します。 主要な構成要素 1. ライブラリの読み込み import azure.functions as func from azure.identity import DefaultAzureCredential from azure.mgmt.costmanagement import CostManagementClient from azure.storage.blob import BlobServiceClient 説明: Azureの各サービスと連携するためのライブラリを読み込んでいます。 - azure.functions: Azure Functionsで動作させるため - azure.identity: Azureへの認証 - azure.mgmt.costmanagement: 料金データの取得 - azure.storage.blob: Excelファイルの保存

Slide 18

Slide 18 text

Claude Code を使ってみて ・プログラムを作成するにも、何からどうやればいいのかわからん → 最初に要件を整理してもらうと良い → 要件整理が終わったら、自動でタスクに分割して作業を進めてくれる ・選択肢が複数あって、どれを選べばよいかわからん → お勧めを教えてもらう (お勧めの理由も教えてくれる) ・作ってくれたプログラムがサッパリ読めない → 「解説して」とお願いする → 上手く使うと、プログラミングや Azure の勉強にもなるかも (?)

Slide 19

Slide 19 text

まとめ もともとプログラミングができる人 → Vibe Coding を使って生産性を加速 プログラミングができない人 → Vibe Coding って、ある程度プログラムができる人のものでしょ? → AI に教えてもらいながら、勉強しながらプログラムを作れる