Claude CodeとDatabricksで始めるVibe Data Science

[Claude Code](https://docs.anthropic.com/ja/docs/claude-code/overview)すごいですね。便利すぎてMaxプランにしてしまいました。

コーディングで使えるのはもちろんなのですが、Cursorを使い始めた頃から「これでデータ分析できないかな」と思ってました。Vibe CodingならぬVibe Data Science。Cursorでもできると思うのですが、チャットインタフェースが前面に押し出されていて、よりVibe感が得られそうなClaude Codeでやってみます。

# 準備

Claude Codeを[インストール](https://docs.anthropic.com/ja/docs/claude-code/getting-started)して、[VSCode](https://docs.anthropic.com/ja/docs/claude-code/ide-integrations#vs-code)と連携しておきます。

# 環境構築

Databricksに接続する前提なので、ホスト名やパーソナルアクセストークンを含むコードをプロジェクトのディレクトリに配置しておきます。初めは以下の`DATABRICKS_HOST`や`DATABRICKS_TOKEN`に直書きでも構いません。あとで`環境変数を別ファイルに`と指示すれば、`.env`に分離してくれます。

```py
from databricks.connect import DatabricksSession
from config import DATABRICKS_HOST, DATABRICKS_TOKEN

spark = DatabricksSession.builder.remote(
    host=DATABRICKS_HOST,
    token=DATABRICKS_TOKEN,
    serverless=True
).getOrCreate()

# Query covid schema tables
covid_cases = spark.sql("SELECT * FROM takaakiyayoi_catalog.covid.covid_cases_base LIMIT 10")
covid_cases.show()
```

これで、Claude Codeで`/init`を実行します。

今回は以下のような内容になっています。これは、何度かやり取りをした後で接続先情報も理解してもらった上で更新しているので、テーブルの情報なども記載されています。

````md:CLAUDE.md
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Project Overview

This is a Databricks data science project that connects to Databricks serverless compute to analyze COVID-19 data from Japan. The project demonstrates data analysis capabilities using Databricks Connect with PySpark SQL.

## Dependencies

The project requires the following Python packages:
- `databricks-connect` - For connecting to Databricks
- `python-dotenv` - For loading environment variables

To install dependencies:
```bash
pip install -r requirements.txt
```

## Security Considerations

- All scripts now use environment variables for credentials
- Configuration is centralized in `config.py`
- Use `.env` file for local development (never commit to version control)
- Copy `.env.example` and update with your credentials

## Databricks Connection

The project connects to:
- Host: `https://xxxxxx.cloud.databricks.com/`
- Compute: Serverless
- Catalog: `takaakiyayoi_catalog`
- Schema: `covid`
- Main tables:
  - `covid_cases_base` - COVID-19 case data (2022-2023)
  - `pref_area` - Prefecture area mapping
  - `pcr` - PCR testing data (2020-2023)

## Development Workflow

1. **Setup environment**:
   ```bash
   python3 -m venv venv
   source venv/bin/activate
   pip install -r requirements.txt
   ```

2. **Configure credentials**:
   - Copy `.env.example` to `.env`
   - Update `DATABRICKS_TOKEN` with your PAT

3. **Running scripts**:
   ```bash
   # Basic connection test
   python databricks_connect_test.py
   
   # Detailed COVID data analysis
   python covid_analysis.py
   
   # Explore COVID schema structure
   python explore_covid_schema.py
   ```

## Key Scripts

- `databricks_connect_test.py` - Quick test showing first 10 COVID cases from Hokkaido
- `covid_analysis.py` - Comprehensive analysis including:
  - Date range and coverage statistics
  - Top prefectures by case count
  - Monthly trends
  - Regional analysis by area
  - PCR testing statistics
- `explore_covid_schema.py` - Detailed schema exploration for all tables
- `config.py` - Centralized configuration management

## Data Schema Notes

### covid_cases_base
- Columns: `Prefecture` (string), `Cases` (bigint), `date_timestamp` (timestamp)
- Contains daily COVID-19 case counts by prefecture
- Date range: 2022-01-01 to 2023-05-08

### pref_area
- Maps prefectures to regions (北海道地方, 東北地方, 関東地方, etc.)
- Useful for regional aggregations

### pcr
- Contains daily PCR test counts
- Column names are in Japanese: `日付` (date), `PCR 検査実施人数(単日)` (daily tests)
- Requires backticks for querying Japanese column names
````

# 分析

ターゲットのスキーマには、私がよく使うCOVID-19の感染者数のデータが格納されています。

> 関東地方の感染者数の変化

![Screenshot 2025-06-18 at 14.58.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/ecc9b535-12fe-45ab-841f-e801d3cea0f7.png)

> グラフにして

Genie相当の機能ですが、複数のグラフを同時に作ってくれるのは嬉しいです。

![Screenshot 2025-06-18 at 15.04.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/79600f71-5f03-4d3d-9b0f-c1d1b54e3d3d.png)

![kanto_covid_charts.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/2e6675f5-a799-4bcb-907d-39111ef99775.png)
![kanto_monthly_trend.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/b95fbbcb-58e2-4733-833e-6e25f566d8cb.png)

## クラスタリング

ここまでですと、データ分析でデータサイエンスというか機械学習は使ってないので使ってみます。

> 全国の都道府県における感染の傾向からクラスタリングを行い可視化

クラスタリングを行うPythonスクリプトが生成されて実行されます。途中でエラーが出ても勝手に修正してくれます。

![Screenshot 2025-06-18 at 15.11.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/908b265d-32a6-4459-8da6-21f67606c12d.png)

結果も可視化されます。最適なクラスター数も探索してくれてます。なんてこった。

![prefecture_clustering_analysis.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/76d9317e-f01c-4c36-9923-f2e5b7e881d6.png)

## 時系列予測

予測はどうでしょうか。

> 東京都における2023/1/1から10日間の感染者数を予測するモデルを構築し、予測値と実績値との比較を可視化

どのアルゴリズムがいいかも比較してくれます。AutoMLだ。

![Screenshot 2025-06-18 at 15.17.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/cb543342-a80a-43d6-87aa-c37790dbb804.png)

![tokyo_covid_prediction_analysis.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/0cb51d49-92ef-4d89-b3bc-c763cb709e8e.png)

# ダッシュボードの生成

Claudeはアーティファクト生成が強力なので。

> これまでの分析結果をインタラクティブに操作できるダッシュボード

ダッシュボードを作ってくれました。

![Screenshot 2025-06-18 at 15.26.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/c2ef392d-567a-4430-bdc7-2df00aae4d10.png)
![Screenshot 2025-06-18 at 15.27.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/df8b497f-9326-42b1-9c20-a51afb8d869d.png)
![Screenshot 2025-06-18 at 15.27.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/1bc6720f-e9d5-4edf-b1e1-3a0d7e062817.png)

# まとめ

日本語の指示だけでここまでできるようになってしまうとは正直驚きです。昔の映画でハッカーが超高速でコーディングするシーンがあると思いますが、現実にはAIによって高速にコードが生成されるようになったというのには感慨深いです。

データサイエンスやデータ分析という文脈では思考とコーディングや設定変更を行ったり来たりすることになりますが、今回のようにVibe Data Scienceを行うことで、思考にフォーカスしてデータを操作できるようになったことに個人的に感動しています。

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)