๐• f B! L
ๆกˆไปถใƒปๆฑ‚ไบบๆ•ฐ 12,345ไปถ
ๆกˆไปถใ‚’ๆŽขใ™๏ผˆๆบ–ๅ‚™ไธญ๏ผ‰ ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใ‚’ๆŽขใ™๏ผˆๆบ–ๅ‚™ไธญ๏ผ‰ ใŠๅฝน็ซ‹ใกๆƒ…ๅ ฑ ใƒญใ‚ฐใ‚คใƒณ
ๆกˆไปถใƒปๆฑ‚ไบบๆ•ฐ 12,345ไปถ
Google Antigravityใงๅค–้ƒจAPI้€ฃๆบใ‚’ๅฎŸ่ฃ…ใ™ใ‚‹ๆ–นๆณ•

Google Antigravityใงๅค–้ƒจAPI้€ฃๆบใ‚’ๅฎŸ่ฃ…ใ™ใ‚‹ๆ–นๆณ•

Google AntigravityAPI้€ฃๆบGeminiใ‚ณใƒผใƒ‰็”ŸๆˆSESใ‚จใƒณใ‚ธใƒ‹ใ‚ข
็›ฎๆฌก
โšก 3็ง’ใงใ‚ใ‹ใ‚‹๏ผใ“ใฎ่จ˜ไบ‹ใฎใƒใ‚คใƒณใƒˆ
  • Google AntigravityใฏREST APIใƒปGraphQLใƒปGCPใƒใ‚คใƒ†ใ‚ฃใƒ–APIใ‚’ใ‚ณใƒžใƒณใƒ‰ไธ€็™บใงๆŽฅ็ถšใงใใ‚‹
  • APIใจๆŽฅ็ถšๅพŒใฏ่‡ช็„ถ่จ€่ชžใฎๆŒ‡็คบใ ใ‘ใงTypeScriptๅž‹ๅฎš็พฉใ‚„ใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใ‚ณใƒผใƒ‰ใ‚’่‡ชๅ‹•็”Ÿๆˆใงใใ‚‹
  • ่จญๅฎšใƒ•ใ‚กใ‚คใƒซ๏ผˆconfig.yaml๏ผ‰ใซๆฐธ็ถšๅŒ–ใ™ใ‚Œใฐใ€SES็พๅ ดใฎ็คพๅ†…APIใ‚„่ค‡ๆ•ฐใƒžใ‚คใ‚ฏใƒญใ‚ตใƒผใƒ“ใ‚นใ‚‚็ฐกๅ˜ใซ็ฎก็†ใงใใ‚‹

ใ€Œๅค–้ƒจAPIใฎใƒฌใ‚นใƒใƒณใ‚นใ‹ใ‚‰ๅž‹ๅฎš็พฉใ‚’ๆ‰‹ใงๆ›ธใใฎใŒ้ขๅ€’ใใ•ใ„ใ€ใ€Œ็คพๅ†…ใฎ่ค‡ๆ•ฐใƒžใ‚คใ‚ฏใƒญใ‚ตใƒผใƒ“ใ‚นใ‚’ไฝฟใ†ใŸใณใซใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚’ๆผใฃใฆใ„ใ‚‹ใ€โ€”โ€”SES็พๅ ดใงๆฏŽๆ—ฅใ“ใ‚“ใช็Šถๆณใซ่ฟฝใ‚ใ‚Œใฆใ„ใพใ›ใ‚“ใ‹๏ผŸ

Google Antigravityใซใฏใ€ๅค–้ƒจAPIใ‚’CLIใ‹ใ‚‰็›ดๆŽฅๆŽฅ็ถšใ—ใฆใ€ใใฎไป•ๆง˜ใ‚’AIใŒ็†่งฃใ—ใŸไธŠใงใ‚ณใƒผใƒ‰ใ‚’็”Ÿๆˆใ—ใฆใใ‚Œใ‚‹ๅผทๅŠ›ใชAPI้€ฃๆบๆฉŸ่ƒฝใŒๆญ่ผ‰ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใ“ใฎ่จ˜ไบ‹ใงใฏใ€่จญๅฎšใฎๅŸบๆœฌใ‹ใ‚‰GCPใƒใ‚คใƒ†ใ‚ฃใƒ–้€ฃๆบใ€SES็พๅ ดใงใฎๅฎŸ่ทต็š„ใชไฝฟใ„ๆ–นใพใงใ€ใ‚นใƒ†ใƒƒใƒ—ใƒใ‚คใ‚นใƒ†ใƒƒใƒ—ใง่งฃ่ชฌใ—ใพใ™ใ€‚

Google AntigravityใฎAPI้€ฃๆบๆฉŸ่ƒฝใจใฏ

Google Antigravityใฏใ€GoogleใŒ้–‹็™บใ—ใŸCLIๅž‹AIใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใƒ„ใƒผใƒซใงใ™ใ€‚Gemini 2.5 Proใ‚’ๆญ่ผ‰ใ—ใฆใŠใ‚Šใ€ใƒญใƒผใ‚ซใƒซใฎใ‚ณใƒผใƒ‰ใƒ™ใƒผใ‚นใ‚’็†่งฃใ—ใŸไธŠใงใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใ‚’ๆ”ฏๆดใ™ใ‚‹็‚นใŒ็‰นๅพดใงใ™ใŒใ€ใใฎๅผทใฟใ‚’ใ•ใ‚‰ใซๅผ•ใๅ‡บใ™ใฎใŒๅค–้ƒจAPI้€ฃๆบๆฉŸ่ƒฝใงใ™ใ€‚

้€šๅธธใฎAIใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใƒ„ใƒผใƒซใฏใ€ใ‚ใชใŸใฎใ‚ณใƒผใƒ‰ใ‚’่ฆ‹ใฆใ‚ณใƒผใƒ‰ใ‚’ๆ›ธใใ“ใจใฏใงใใฆใ‚‚ใ€ใ€Œใ“ใฎไผš็คพใฎๅ†…้ƒจAPIใซใฏใฉใ‚“ใชใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆใŒใ‚ใ‚‹ใ‹ใ€ใ€Œใ“ใฎใ‚ตใƒผใƒ“ใ‚นใฎใƒฌใ‚นใƒใƒณใ‚นๅž‹ใฏใฉใ†ใชใฃใฆใ„ใ‚‹ใ‹ใ€ใ‚’ๆŠŠๆกใ™ใ‚‹ใ“ใจใฏใงใใพใ›ใ‚“ใ€‚ใ—ใ‹ใ—AntigravityใฎAPI้€ฃๆบๆฉŸ่ƒฝใ‚’ไฝฟใˆใฐใ€ๅค–้ƒจAPIใฎไป•ๆง˜ใ‚’Antigravityใซๆ•™ใˆ่พผใฟใ€ใใฎๆƒ…ๅ ฑใ‚’ๆดปใ‹ใ—ใŸใ‚ณใƒผใƒ‰็”ŸๆˆใŒๅฏ่ƒฝใซใชใ‚Šใพใ™ใ€‚

ๅฏพๅฟœใ—ใฆใ„ใ‚‹API้€ฃๆบใฎ็จฎ้กž

REST API๏ผˆOpenAPI/Swaggerๅฏพๅฟœ๏ผ‰ใ€GraphQLใ€gRPCใ€GCPใƒใ‚คใƒ†ใ‚ฃใƒ–API๏ผˆBigQueryใƒปCloud StorageใƒปPub/Sub็ญ‰๏ผ‰ใฎ4็จฎ้กžใซๅฏพๅฟœใ—ใฆใ„ใพใ™ใ€‚GCPใƒใ‚คใƒ†ใ‚ฃใƒ–APIใฏgcloud CLIใฎ่ช่จผๆƒ…ๅ ฑใ‚’ใใฎใพใพไฝฟ็”จใงใใ‚‹ใŸใ‚ใ€่ฟฝๅŠ ใฎ่ช่จผ่จญๅฎšใŒไธ่ฆใงใ™ใ€‚

ไบ‹ๅ‰ๆบ–ๅ‚™๏ผšใ‚คใƒณใ‚นใƒˆใƒผใƒซใจๅˆๆœŸ่จญๅฎš

ใพใ Antigravityใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ—ใฆใ„ใชใ„ๅ ดๅˆใฏใ€ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใงๅฐŽๅ…ฅใ—ใพใ™ใ€‚

pip install google-antigravity

ใ‚คใƒณใ‚นใƒˆใƒผใƒซๅพŒใ€ๅˆๅ›ž่ตทๅ‹•ๆ™‚ใซGoogleใ‚ขใ‚ซใ‚ฆใƒณใƒˆใงใฎ่ช่จผใ‚’ๆฑ‚ใ‚ใ‚‰ใ‚Œใพใ™ใ€‚

antigravity --auth
# ใƒ–ใƒฉใ‚ฆใ‚ถใŒ้–‹ใ„ใฆGoogleใƒญใ‚ฐใ‚คใƒณ็”ป้ขใŒ่กจ็คบใ•ใ‚Œใ‚‹
# ใƒญใ‚ฐใ‚คใƒณๅพŒใซ่ช่จผใƒˆใƒผใ‚ฏใƒณใŒ ~/.antigravity/config.yaml ใซไฟๅญ˜ใ•ใ‚Œใ‚‹

่จญๅฎšใƒ•ใ‚กใ‚คใƒซใฎๅ ดๆ‰€ใ‚’็ขบ่ชใ—ใฆใŠใใพใ—ใ‚‡ใ†ใ€‚

# ่จญๅฎšใƒ•ใ‚กใ‚คใƒซใฎใƒ‘ใ‚นใ‚’็ขบ่ช
antigravity config --show-path
# ๅ‡บๅŠ›: /Users/yourname/.antigravity/config.yaml

ใ‚นใƒ†ใƒƒใƒ—1๏ผšREST APIใ‚’ๆŽฅ็ถšใ™ใ‚‹

ๆœ€ใ‚‚ใ‚ˆใไฝฟใ†ใ‚ฑใƒผใ‚นใ‹ใ‚‰ๅง‹ใ‚ใพใ™ใ€‚ใพใšใฏๅŸบๆœฌ็š„ใชREST APIใฎๆŽฅ็ถšๆ–นๆณ•ใงใ™ใ€‚

๐Ÿ‘ค
็คพๅ†…ใฎไผšๅ“ก็ฎก็†APIใ‚’้€ฃๆบใ•ใ›ใŸใ„ใ‚“ใงใ™ใŒใ€่ช่จผใซBearerใƒˆใƒผใ‚ฏใƒณใŒๅฟ…่ฆใชใ‚“ใงใ™ใ‚ˆใ€‚
๐Ÿค–
ใใ‚Œใชใ‚‰ `--auth bearer` ใ‚ชใƒ—ใ‚ทใƒงใƒณใ‚’ไฝฟใˆใฐOKใงใ™ใ€‚ใƒˆใƒผใ‚ฏใƒณใฏ็›ดๆŽฅๆ›ธใ‹ใšใ€็’ฐๅขƒๅค‰ๆ•ฐใงๆธกใ™ใฎใŒใƒ™ใ‚นใƒˆใƒ—ใƒฉใ‚ฏใƒ†ใ‚ฃใ‚นใงใ™ใ‚ˆใ€‚

ใ‚ทใƒณใƒ—ใƒซใชBearer่ช่จผใฎREST API

# ็’ฐๅขƒๅค‰ๆ•ฐใซใƒˆใƒผใ‚ฏใƒณใ‚’ใ‚ปใƒƒใƒˆ
export COMPANY_API_TOKEN="your-bearer-token-here"

# APIใ‚’ๆŽฅ็ถš๏ผˆใƒˆใƒผใ‚ฏใƒณใฏ็’ฐๅขƒๅค‰ๆ•ฐใ‹ใ‚‰่‡ชๅ‹•่ชญใฟ่พผใฟ๏ผ‰
antigravity api connect \
  --url https://api.example.com \
  --auth bearer \
  --token-env COMPANY_API_TOKEN \
  --name company-api

ใ‚ซใ‚นใ‚ฟใƒ ใƒ˜ใƒƒใƒ€ใƒผใŒๅฟ…่ฆใชAPI

APIใ‚ญใƒผใ‚’HTTPใƒ˜ใƒƒใƒ€ใƒผใซๆธกใ™ๅฝขๅผใฎAPIใ‚‚ๅคšใ„ใงใ™ใ€‚

antigravity api connect \
  --url https://api.example.com \
  --header "X-API-Key: your-api-key" \
  --header "Content-Type: application/json" \
  --name legacy-api

OpenAPIไป•ๆง˜๏ผˆSwagger๏ผ‰ใŒใ‚ใ‚‹APIใ‚’ๆŽฅ็ถšใ™ใ‚‹

OpenAPIใฎspec.yamlใ‚„swagger.jsonใŒใ‚ใ‚‹ๅ ดๅˆใ€Antigravityใฏใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆใฎๅ…จไป•ๆง˜ใ‚’่‡ชๅ‹•ใง่ชญใฟ่พผใฟใพใ™ใ€‚ใ“ใ‚Œใซใ‚ˆใ‚Šใ€ใ‚ณใƒผใƒ‰็”Ÿๆˆใฎ็ฒพๅบฆใŒๆ ผๆฎตใซไธŠใŒใ‚Šใพใ™ใ€‚

# ใƒญใƒผใ‚ซใƒซใฎspec.yamlใ‚’ๆŒ‡ๅฎš
antigravity api connect \
  --url https://api.example.com \
  --spec ./openapi-spec.yaml \
  --auth bearer \
  --name main-api

# ใƒชใƒขใƒผใƒˆใฎspec.yamlใ‚’็›ดๆŽฅ่ชญใฟ่พผใ‚€
antigravity api connect \
  --url https://api.example.com \
  --spec https://api.example.com/openapi.yaml \
  --auth bearer \
  --name main-api

ๆŽฅ็ถšใŒๆˆๅŠŸใ™ใ‚‹ใจใ€ไปฅไธ‹ใฎใ‚ˆใ†ใช็ขบ่ชใƒกใƒƒใ‚ปใƒผใ‚ธใŒ่กจ็คบใ•ใ‚Œใพใ™ใ€‚

API connected: main-api
  Endpoints discovered: 42
  Auth type: bearer
  Spec: openapi.yaml (loaded 42 operations)

ใ‚นใƒ†ใƒƒใƒ—2๏ผšGCPใƒใ‚คใƒ†ใ‚ฃใƒ–APIใ‚’ๆŽฅ็ถšใ™ใ‚‹

Google Antigravityๆœ€ๅคงใฎๅผทใฟใŒGCPใจใฎๆทฑใ„็ตฑๅˆใงใ™ใ€‚gcloudใ‚ณใƒžใƒณใƒ‰ใงใƒญใ‚ฐใ‚คใƒณๆธˆใฟใงใ‚ใ‚Œใฐใ€่ฟฝๅŠ ใฎ่ช่จผ่จญๅฎšใชใ—ใซGCPใ‚ตใƒผใƒ“ใ‚นใ‚’ๆŽฅ็ถšใงใใพใ™ใ€‚

# BigQueryใ‚’ๆŽฅ็ถš
antigravity api connect \
  --gcp-service bigquery \
  --project my-gcp-project \
  --name bq-prod

# Cloud Storageใ‚’ๆŽฅ็ถš
antigravity api connect \
  --gcp-service storage \
  --project my-gcp-project \
  --name gcs-prod

# Pub/Subใ‚’ๆŽฅ็ถš
antigravity api connect \
  --gcp-service pubsub \
  --project my-gcp-project \
  --name pubsub-prod
GCPใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฎ่ช่จผๆƒ…ๅ ฑใซใคใ„ใฆ

GCPใƒใ‚คใƒ†ใ‚ฃใƒ–้€ฃๆบใงใฏใ€gcloud auth application-default login ใง่จญๅฎšใ—ใŸใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ่ช่จผๆƒ…ๅ ฑใŒ่‡ชๅ‹•็š„ใซไฝฟ็”จใ•ใ‚Œใพใ™ใ€‚ใ‚ตใƒผใƒ“ใ‚นใ‚ขใ‚ซใ‚ฆใƒณใƒˆใ‚’ไฝฟใ†ๅ ดๅˆใฏ --credentials /path/to/service-account.json ใ‚’่ฟฝๅŠ ๆŒ‡ๅฎšใ—ใฆใใ ใ•ใ„ใ€‚

ๆŽฅ็ถšๆธˆใฟใฎAPIใฎไธ€่ฆงใฏๆฌกใฎใ‚ณใƒžใƒณใƒ‰ใง็ขบ่ชใงใใพใ™ใ€‚

antigravity api list
# ๅ‡บๅŠ›ไพ‹:
# NAME            TYPE        URL/SERVICE         STATUS
# company-api     REST        https://api.ex...   connected
# bq-prod         GCP         bigquery            connected
# gcs-prod        GCP         storage             connected

ใ‚นใƒ†ใƒƒใƒ—3๏ผšๆŽฅ็ถšใ—ใŸAPIใ‚’ไฝฟใฃใฆใ‚ณใƒผใƒ‰ใ‚’็”Ÿๆˆใ™ใ‚‹

APIๆŽฅ็ถšๅพŒใฏใ€่‡ช็„ถ่จ€่ชžใงๆŒ‡็คบใ™ใ‚‹ใ ใ‘ใงใ‚ณใƒผใƒ‰ใ‚’็”Ÿๆˆใงใใพใ™ใ€‚AntigravityใฏAPIใฎไป•ๆง˜ใ‚’ๆŠŠๆกใ—ใฆใ„ใ‚‹ใŸใ‚ใ€ใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆๅใƒปใƒ‘ใƒฉใƒกใƒผใ‚ฟใƒปใƒฌใ‚นใƒใƒณใ‚นๅž‹ใ‚’ๆญฃ็ขบใซๅๆ˜ ใ—ใŸใ‚ณใƒผใƒ‰ใ‚’ๅ‡บๅŠ›ใ—ใพใ™ใ€‚

TypeScriptๅž‹ๅฎš็พฉใฎ่‡ชๅ‹•็”Ÿๆˆ

# APIใƒฌใ‚นใƒใƒณใ‚นใ‹ใ‚‰TypeScriptใฎๅž‹ใ‚’่‡ชๅ‹•็”Ÿๆˆ
antigravity "company-apiใฎ /users ใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆใฎใƒฌใ‚นใƒใƒณใ‚นใ‹ใ‚‰TypeScriptๅž‹ๅฎš็พฉใ‚’็”Ÿๆˆใ—ใฆ"

ๅ‡บๅŠ›ไพ‹๏ผš

// Generated by Google Antigravity
// API: company-api (https://api.example.com)
// Endpoint: GET /users

export interface User {
  id: string;
  name: string;
  email: string;
  role: 'admin' | 'member' | 'guest';
  createdAt: string;
  updatedAt: string;
}

export interface UsersResponse {
  users: User[];
  total: number;
  page: number;
  perPage: number;
}

APIใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใ‚ณใƒผใƒ‰ใฎ่‡ชๅ‹•็”Ÿๆˆ

# OpenAPI specใ‹ใ‚‰APIใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใ‚’TypeScriptใง็”Ÿๆˆ
antigravity "main-apiใฎOpenAPI specใ‹ใ‚‰fetchใ‚’ไฝฟใฃใŸTypeScript APIใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใ‚’็”Ÿๆˆใ—ใฆใ€‚ใ‚จใƒฉใƒผใƒใƒณใƒ‰ใƒชใƒณใ‚ฐใ‚‚ๅซใ‚ใฆ"
# Reactใฎใ‚ซใ‚นใ‚ฟใƒ ใƒ•ใƒƒใ‚ฏใจใ—ใฆ็”Ÿๆˆ
antigravity "company-apiใฎ /users ใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆใ‚’React Query๏ผˆTanStack Query๏ผ‰ใฎใ‚ซใ‚นใ‚ฟใƒ ใƒ•ใƒƒใ‚ฏใจใ—ใฆๅฎŸ่ฃ…ใ—ใฆ"

BigQueryใ‚ฏใ‚จใƒชใ‚ณใƒผใƒ‰ใฎ่‡ชๅ‹•็”Ÿๆˆ

GCPใƒใ‚คใƒ†ใ‚ฃใƒ–้€ฃๆบใฎๅ ดๅˆใ€ใƒ†ใƒผใƒ–ใƒซใ‚นใ‚ญใƒผใƒžใ‚’็†่งฃใ—ใŸไธŠใงใ‚ณใƒผใƒ‰ใ‚’็”Ÿๆˆใ—ใฆใใ‚Œใพใ™ใ€‚

antigravity "bq-prodใฎmy_dataset.ordersใƒ†ใƒผใƒ–ใƒซใ‹ใ‚‰ใ€ๅ…ˆๆœˆใฎๅฃฒไธŠๅˆ่จˆใ‚’้›†่จˆใ™ใ‚‹BigQueryใ‚ฏใ‚จใƒชใจใ€Node.jsใ‹ใ‚‰ๅ‘ผใณๅ‡บใ™ใ‚ณใƒผใƒ‰ใ‚’็”Ÿๆˆใ—ใฆ"
๐Ÿ‘ค
ใƒ†ใƒผใƒ–ใƒซใ‚นใ‚ญใƒผใƒžใ‚’่ฆšใˆใฆใใ‚Œใ‚‹ใ‚“ใงใ™ใ‹๏ผŸๆฏŽๅ›žใ‚นใ‚ญใƒผใƒžๆ›ธใ‹ใชใใฆใ„ใ„ใฎใฏๅŠฉใ‹ใ‚Šใพใ™ใญใ€‚
๐Ÿค–
ใฏใ„ใ€`api connect` ใ—ใŸๆ™‚็‚นใงใ‚นใ‚ญใƒผใƒžๆƒ…ๅ ฑใ‚‚ๅ–ๅพ—ใƒปใ‚ญใƒฃใƒƒใ‚ทใƒฅใ—ใฆใ„ใพใ™ใ€‚ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆๅ†…ใฎใƒ†ใƒผใƒ–ใƒซไธ€่ฆงใ‚‚ๅ‚็…งใงใใพใ™ใ‚ˆใ€‚

ใ‚นใƒ†ใƒƒใƒ—4๏ผš่จญๅฎšใƒ•ใ‚กใ‚คใƒซใงๆฐธ็ถšๅŒ–ใ™ใ‚‹

ใ‚ณใƒžใƒณใƒ‰ใงๆŽฅ็ถšใ—ใŸAPIๆƒ…ๅ ฑใฏ ~/.antigravity/config.yaml ใซ่‡ชๅ‹•ไฟๅญ˜ใ•ใ‚Œใพใ™ใŒใ€ใƒใƒผใƒ ใง่จญๅฎšใ‚’ๅ…ฑๆœ‰ใ—ใŸใ‚Šใ€่ค‡ๆ•ฐใฎ็’ฐๅขƒใ‚’็ฎก็†ใ™ใ‚‹ๅ ดๅˆใฏๆ‰‹ๅ‹•ใง่จญๅฎšใƒ•ใ‚กใ‚คใƒซใ‚’็ทจ้›†ใ™ใ‚‹ใปใ†ใŒไพฟๅˆฉใงใ™ใ€‚

# ~/.antigravity/config.yaml

# ่ช่จผ่จญๅฎš
auth:
  google_account: [email protected]

# APIๆŽฅ็ถš่จญๅฎš
apis:
  # ใƒ™ใ‚ขใƒฉใƒผใƒˆใƒผใ‚ฏใƒณ่ช่จผใฎREST API
  - name: company-api
    url: https://internal-api.company.com
    spec: https://internal-api.company.com/openapi.yaml
    auth:
      type: bearer
      token_env: COMPANY_API_TOKEN

  # APIใ‚ญใƒผใ‚’ใƒ˜ใƒƒใƒ€ใƒผใงๆธกใ™API
  - name: external-service
    url: https://api.external-service.com
    auth:
      type: header
      headers:
        X-API-Key: "${EXTERNAL_SERVICE_API_KEY}"
        Accept: "application/json"

  # GCPใƒใ‚คใƒ†ใ‚ฃใƒ–๏ผšBigQuery
  - name: bq-prod
    type: gcp-native
    service: bigquery
    project: my-gcp-project
    datasets:
      - analytics
      - sales

  # GCPใƒใ‚คใƒ†ใ‚ฃใƒ–๏ผšCloud Storage
  - name: gcs-prod
    type: gcp-native
    service: storage
    project: my-gcp-project

# ใ‚ณใƒผใƒ‰็”Ÿๆˆใฎ่จญๅฎš
codegen:
  default_language: typescript
  style: functional
  include_error_handling: true
ๆณจๆ„๏ผšAPIใ‚ญใƒผใ‚’config.yamlใซ็›ดๆ›ธใใ—ใชใ„ใ“ใจ

config.yamlใฏใƒ›ใƒผใƒ ใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใซไฟๅญ˜ใ•ใ‚Œใ‚‹ใŸใ‚ใ€่ชคใฃใฆGitใซใ‚ณใƒŸใƒƒใƒˆใ™ใ‚‹ใƒชใ‚นใ‚ฏใŒใ‚ใ‚Šใพใ™ใ€‚ๅฟ…ใš็’ฐๅขƒๅค‰ๆ•ฐ๏ผˆ${ENV_VAR_NAME}ๅฝขๅผ๏ผ‰ใงๅ‚็…งใ™ใ‚‹็ฟ’ๆ…ฃใ‚’ใคใ‘ใพใ—ใ‚‡ใ†ใ€‚ใƒใƒผใƒ ใงๅ…ฑๆœ‰ใ™ใ‚‹ๅ ดๅˆใฏใ€ใƒˆใƒผใ‚ฏใƒณ้ƒจๅˆ†ใ‚’ไผใ›ใŸ็Šถๆ…‹ใฎconfig.yamlใ‚’dotfiles็ฎก็†ใ™ใ‚‹ใ“ใจใ‚’ใŠใ™ใ™ใ‚ใ—ใพใ™ใ€‚

GraphQLใจgRPCใฎๆŽฅ็ถš

GraphQL

# GraphQLใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆใ‚’ๆŽฅ็ถš
antigravity api connect \
  --url https://api.example.com/graphql \
  --type graphql \
  --auth bearer \
  --name graphql-api

# ใ‚นใ‚ญใƒผใƒžใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ๅ ดๅˆ
antigravity api connect \
  --url https://api.example.com/graphql \
  --type graphql \
  --schema ./schema.graphql \
  --name graphql-api

ๆŽฅ็ถšๅพŒใฏGraphQLใฎใ‚นใ‚ญใƒผใƒžใ‚’็†่งฃใ—ใŸไธŠใงใ‚ณใƒผใƒ‰ใ‚’็”Ÿๆˆใงใใพใ™ใ€‚

# Apollo Clientใฎใ‚ฏใ‚จใƒชใƒ•ใƒƒใ‚ฏใ‚’่‡ชๅ‹•็”Ÿๆˆ
antigravity "graphql-apiใฎUserใ‚ฏใ‚จใƒชใ‚’Apollo ClientใฎuseQueryใƒ•ใƒƒใ‚ฏใจใ—ใฆ็”Ÿๆˆใ—ใฆ"

gRPC

# gRPCใ‚ตใƒผใƒ“ใ‚นใ‚’ๆŽฅ็ถš๏ผˆprotoใƒ•ใ‚กใ‚คใƒซใŒๅฟ…่ฆ๏ผ‰
antigravity api connect \
  --url grpc://api.example.com:50051 \
  --type grpc \
  --proto ./protos/service.proto \
  --name grpc-service

SES็พๅ ดใงใฎๅฎŸ่ทต็š„ใชๆดป็”จไพ‹

ๆดป็”จใ‚ทใƒผใƒณ1๏ผš็คพๅ†…ใฎ่ค‡ๆ•ฐใƒžใ‚คใ‚ฏใƒญใ‚ตใƒผใƒ“ใ‚นAPI็ฎก็†
SES็พๅ ดใงใฏใ€่ช่จผใ‚ตใƒผใƒ“ใ‚นใƒปใƒฆใƒผใ‚ถใƒผ็ฎก็†ใƒป้€š็Ÿฅใ‚ตใƒผใƒ“ใ‚นใชใฉ่ค‡ๆ•ฐใฎใƒžใ‚คใ‚ฏใƒญใ‚ตใƒผใƒ“ใ‚นใŒๅญ˜ๅœจใ™ใ‚‹ใ“ใจใŒๅคšใ„ใงใ™ใ€‚ใใ‚Œใžใ‚Œใ‚’config.yamlใซ็™ป้Œฒใ—ใฆใŠใ‘ใฐใ€ใ€Œauth-serviceใฎ่ช่จผใƒ•ใƒญใƒผใ‚’sequenceDiagramใงๅ›ณ่งฃใ—ใฆใ€ใ€Œuser-serviceใฎๅ…จใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆใ‚’็ถฒ็พ…ใ—ใŸAPIใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใ‚ฏใƒฉใ‚นใ‚’็”Ÿๆˆใ—ใฆใ€ใชใฉใฎๆŒ‡็คบใŒใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆๅ˜ไฝใงไฝฟใ„ๅ›žใ›ใพใ™ใ€‚
ๆดป็”จใ‚ทใƒผใƒณ2๏ผšAPIใฎใƒฌใ‚นใƒใƒณใ‚นๅค‰ๆ›ดใธใฎๅณๅบงใชๅฏพๅฟœ
APIใฎใƒฌใ‚นใƒใƒณใ‚นไป•ๆง˜ใŒๅค‰ใ‚ใฃใŸใจใใ€ๅฝฑ้Ÿฟ็ฏ„ๅ›ฒใฎๆŠŠๆกใจใ‚ณใƒผใƒ‰ไฟฎๆญฃใŒๅฟ…่ฆใซใชใ‚Šใพใ™ใ€‚Antigravityใซspec.yamlใ‚’ๅ†่ชญใฟ่พผใฟใ•ใ›ใŸๅพŒใ€ใ€Œๅ‰ๅ›žใฎspecใจๆฏ”่ผƒใ—ใฆๅค‰ๆ›ด็‚นใ‚’ๆ•™ใˆใฆใ€ใ€Œๅค‰ๆ›ดใ•ใ‚ŒใŸใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆใ‚’ไฝฟใฃใฆใ„ใ‚‹ใ‚ณใƒผใƒ‰ใ‚’ไฟฎๆญฃใ—ใฆใ€ใจๆŒ‡็คบใ™ใ‚‹ใ ใ‘ใงๅฏพๅฟœใงใใพใ™ใ€‚
ๆดป็”จใ‚ทใƒผใƒณ3๏ผšๅค–้ƒจSaaS APIใจใฎ็ตฑๅˆใ‚ณใƒผใƒ‰็”Ÿๆˆ
StripeใƒปSendGridใƒปTwilio็ญ‰ใ€ๅ…ฌๅผใซOpenAPI specใ‚’ๅ…ฌ้–‹ใ—ใฆใ„ใ‚‹SaaSใ‚ตใƒผใƒ“ใ‚นใฏใใฎใพใพๆŽฅ็ถšใงใใพใ™ใ€‚ใ€Œstripe-apiใฎๅฎšๆœŸ่ชฒ้‡‘๏ผˆSubscription๏ผ‰ใ‚’ไฝœๆˆใ™ใ‚‹ใ‚ณใƒผใƒ‰ใ‚’TypeScriptใง็”Ÿๆˆใ—ใฆใ€‚ใ‚จใƒฉใƒผใƒใƒณใƒ‰ใƒชใƒณใ‚ฐใจWebhookๆคœ่จผใ‚‚ๅซใ‚ใฆใ€ใชใฉใ€ๅฎŸ้š›ใฎ้–‹็™บใงไฝฟใˆใ‚‹ใƒฌใƒ™ใƒซใฎใ‚ณใƒผใƒ‰ใŒ็”Ÿๆˆใ•ใ‚Œใพใ™ใ€‚

ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃไธŠใฎๆณจๆ„็‚น

  • APIใ‚ญใƒผใ‚„ใƒˆใƒผใ‚ฏใƒณใฏๅฟ…ใš็’ฐๅขƒๅค‰ๆ•ฐใง็ฎก็†ใ—ใ€config.yamlใซใฏ็›ดๆ›ธใใ—ใชใ„
  • GCPใƒใ‚คใƒ†ใ‚ฃใƒ–้€ฃๆบใงใฏใ€ๆœ€ๅฐๆจฉ้™ใฎๅŽŸๅ‰‡ใซๅŸบใฅใ„ใฆใ‚ตใƒผใƒ“ใ‚นใ‚ขใ‚ซใ‚ฆใƒณใƒˆใฎๆจฉ้™ใ‚’่จญๅฎšใ™ใ‚‹
  • config.yamlใ‚’่ชคใฃใฆGitใƒชใƒใ‚ธใƒˆใƒชใซใ‚ณใƒŸใƒƒใƒˆใ—ใชใ„ใ‚ˆใ†ใ€.gitignoreใซ่ฟฝๅŠ ใ™ใ‚‹
  • ๆœฌ็•ช็’ฐๅขƒใฎAPIใจ้–‹็™บ็’ฐๅขƒใฎAPIใ‚’ๅˆฅใ€…ใซ็ฎก็†ใ—ใ€่ชคๆ“ไฝœใ‚’้˜ฒใ
  • APIๆŽฅ็ถšๆƒ…ๅ ฑใฏใƒใƒผใƒ ้–“ใงๅ…ฑๆœ‰ใ™ใ‚‹้š›ใ€ใ‚ทใƒผใ‚ฏใƒฌใƒƒใƒˆ็ฎก็†ใ‚ตใƒผใƒ“ใ‚น๏ผˆGCP Secret Manager็ญ‰๏ผ‰ใ‚’็ตŒ็”ฑใ™ใ‚‹
# .gitignoreใซ่ฟฝๅŠ ใ™ใ‚‹ไพ‹
echo "~/.antigravity/config.yaml" >> .gitignore

# ใพใŸใฏใ€ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆๅ›บๆœ‰ใฎ่จญๅฎšใƒ•ใ‚กใ‚คใƒซใ‚’้™คๅค–
echo ".antigravity.yaml" >> .gitignore

APIๆŽฅ็ถšใฎใƒˆใƒฉใƒ–ใƒซใ‚ทใƒฅใƒผใƒ†ใ‚ฃใƒณใ‚ฐ

ๆŽฅ็ถšๆ™‚ใซใ‚จใƒฉใƒผใŒ็™บ็”Ÿใ—ใŸๅ ดๅˆใฎ็ขบ่ชๆ–นๆณ•ใงใ™ใ€‚

# ๆŽฅ็ถšใ‚นใƒ†ใƒผใ‚ฟใ‚นใฎ่ฉณ็ดฐ็ขบ่ช
antigravity api status --name company-api --verbose

# ๆŽฅ็ถšใฎใƒ†ใ‚นใƒˆ๏ผˆๅฎŸ้š›ใซAPIใ‚’ๅ‘ผใณๅ‡บใ—ใฆ็ขบ่ช๏ผ‰
antigravity api test --name company-api --endpoint /health

# ๆŽฅ็ถšๆƒ…ๅ ฑใฎใƒชใ‚ปใƒƒใƒˆ
antigravity api disconnect --name company-api
ใ€ŒConnection refusedใ€ใ‚จใƒฉใƒผใŒๅ‡บใ‚‹ๅ ดๅˆ

VPNๆŽฅ็ถšใŒๅฟ…่ฆใช็คพๅ†…APIใฎๅ ดๅˆใ€VPNใซๆŽฅ็ถšใ—ใŸ็Šถๆ…‹ใง antigravity api connect ใ‚’ๅฎŸ่กŒใ—ใฆใใ ใ•ใ„ใ€‚AntigravityใฏAPIใธใฎๅˆๅ›žๆŽฅ็ถšๆ™‚ใซspecๆƒ…ๅ ฑใ‚’ๅ–ๅพ—ใ™ใ‚‹ใŸใ‚ใ€ๆŽฅ็ถšๅฏ่ƒฝใช็Šถๆ…‹ใŒๅฟ…่ฆใงใ™ใ€‚specๆƒ…ๅ ฑใฎๅ–ๅพ—ใ•ใˆๅฎŒไบ†ใ™ใ‚Œใฐใ€ใใฎๅพŒใฎใ‚ณใƒผใƒ‰็”Ÿๆˆใฏใ‚ชใƒ•ใƒฉใ‚คใƒณใงใ‚‚ๅ‹•ไฝœใ—ใพใ™ใ€‚

ใ‚ˆใใ‚ใ‚‹่ณชๅ•๏ผˆFAQ๏ผ‰

APIใฎ่ช่จผใƒˆใƒผใ‚ฏใƒณใŒๆœŸ้™ๅˆ‡ใ‚ŒใซใชใฃใŸใ‚‰ใฉใ†ใ™ใ‚Œใฐใ„ใ„ใงใ™ใ‹๏ผŸ
็’ฐๅขƒๅค‰ๆ•ฐใ‚’ๆ›ดๆ–ฐใ™ใ‚‹ใ ใ‘ใง่‡ชๅ‹•็š„ใซๆ–ฐใ—ใ„ใƒˆใƒผใ‚ฏใƒณใŒไฝฟใ‚ใ‚Œใพใ™ใ€‚config.yamlใง token_env: YOUR_TOKEN_ENV ใจๆŒ‡ๅฎšใ—ใฆใ„ใ‚‹ๅ ดๅˆใ€export YOUR_TOKEN_ENV="new-token" ใงๆ›ดๆ–ฐใงใใพใ™ใ€‚ๆฐธ็ถšๅŒ–ใ™ใ‚‹ๅ ดๅˆใฏ .zshrc ใ‚„ .bashrc ใฎ็’ฐๅขƒๅค‰ๆ•ฐใ‚’ๆ›ดๆ–ฐใ—ใฆใใ ใ•ใ„ใ€‚
OpenAPI specใฎใชใ„REST APIใงใ‚‚ๅž‹ๅฎš็พฉใ‚’็”Ÿๆˆใงใใพใ™ใ‹๏ผŸ
ใงใใพใ™ใ€‚specใŒใชใ„ๅ ดๅˆใ€AntigravityใฏๅฎŸ้š›ใซAPIใ‚’ๅ‘ผใณๅ‡บใ—ใฆใƒฌใ‚นใƒใƒณใ‚นใ‚’่งฃๆžใ—ใ€ๅž‹ๅฎš็พฉใ‚’ๆŽจๆธฌใ—ใพใ™ใ€‚antigravity api connect --url https://api.example.com --infer-schema --name api-name ใฎใ‚ˆใ†ใซ --infer-schema ใƒ•ใƒฉใ‚ฐใ‚’่ฟฝๅŠ ใ—ใฆใใ ใ•ใ„ใ€‚ใŸใ ใ—ใ€specใŒใ‚ใ‚‹ๅ ดๅˆใ‚ˆใ‚Š็ฒพๅบฆใŒไฝŽใใชใ‚‹ๅ ดๅˆใŒใ‚ใ‚Šใพใ™ใ€‚
่ค‡ๆ•ฐใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใง็•ฐใชใ‚‹APIใ‚ปใƒƒใƒˆใ‚’ไฝฟใ„ๅˆ†ใ‘ใŸใ„ใฎใงใ™ใŒ๏ผŸ
ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใซ .antigravity.yaml ใจใ„ใ†ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆๅ›บๆœ‰ใฎ่จญๅฎšใƒ•ใ‚กใ‚คใƒซใ‚’็ฝฎใใ“ใจใงใ€ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ”ใจใซAPIใ‚ปใƒƒใƒˆใ‚’ๅˆ‡ใ‚Šๆ›ฟใˆใ‚‰ใ‚Œใพใ™ใ€‚ใ“ใฎใƒ•ใ‚กใ‚คใƒซใฏใ‚ฐใƒญใƒผใƒใƒซใฎ ~/.antigravity/config.yaml ใ‚ˆใ‚Šๅ„ชๅ…ˆใ•ใ‚Œใพใ™ใ€‚
GCPไปฅๅค–ใฎใ‚ฏใƒฉใ‚ฆใƒ‰๏ผˆAWSใฎAPI Gatewayใชใฉ๏ผ‰ใฏๆŽฅ็ถšใงใใพใ™ใ‹๏ผŸ
AWS API Gatewayใชใฉใ€OpenAPI specใ‚’ๅ‡บๅŠ›ใงใใ‚‹APIใงใ‚ใ‚ŒใฐREST APIใจใ—ใฆๆŽฅ็ถšๅฏ่ƒฝใงใ™ใ€‚AWSใฎSigV4่ช่จผใฏ --auth aws-sigv4 --aws-region ap-northeast-1 --aws-service execute-api ใงๅฏพๅฟœใ—ใฆใ„ใพใ™ใ€‚ใŸใ ใ—ใ€GCPใƒใ‚คใƒ†ใ‚ฃใƒ–ใปใฉๆทฑใ„็ตฑๅˆใฏใ•ใ‚Œใฆใ„ใพใ›ใ‚“ใ€‚
APIๆŽฅ็ถšใฎๆƒ…ๅ ฑใฏใฉใ“ใซไฟๅญ˜ใ•ใ‚Œใฆใ„ใพใ™ใ‹๏ผŸใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃไธŠๅ•้กŒใ‚ใ‚Šใพใ›ใ‚“ใ‹๏ผŸ
ๆŽฅ็ถšๆƒ…ๅ ฑ๏ผˆใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆURLใ€specใ€ใƒ˜ใƒƒใƒ€ใƒผใ‚ญใƒผๅ๏ผ‰ใฏ ~/.antigravity/config.yaml ใซใ€specๆƒ…ๅ ฑใฎใ‚ญใƒฃใƒƒใ‚ทใƒฅใฏ ~/.antigravity/cache/ ใซไฟๅญ˜ใ•ใ‚Œใพใ™ใ€‚ๅฎŸ้š›ใฎใƒˆใƒผใ‚ฏใƒณๅ€คใฏ็’ฐๅขƒๅค‰ๆ•ฐใจใ—ใฆ็ฎก็†ใ™ใ‚‹่จญ่จˆใซใชใฃใฆใŠใ‚Šใ€ใƒ•ใ‚กใ‚คใƒซใซใฏไฟๅญ˜ใ•ใ‚Œใพใ›ใ‚“ใ€‚ใŸใ ใ—ใ€config.yaml่‡ชไฝ“ใฎใƒ‘ใƒผใƒŸใƒƒใ‚ทใƒงใƒณใ‚’ chmod 600 ~/.antigravity/config.yaml ใซ่จญๅฎšใ™ใ‚‹ใ“ใจใ‚’ๆŽจๅฅจใ—ใพใ™ใ€‚

ใพใจใ‚

Google AntigravityใฎAPI้€ฃๆบๆฉŸ่ƒฝใ‚’ไฝฟใ†ใ“ใจใงใ€ๅค–้ƒจAPIใจใฎใ‚ณใƒผใƒ‰็ตฑๅˆไฝœๆฅญใŒๅคงๅน…ใซๅŠน็އๅŒ–ใ•ใ‚Œใพใ™ใ€‚

็‰นใซSES็พๅ ดใงใฎๆณจ็›ฎใƒใ‚คใƒณใƒˆใฏใ€Œไธ€ๅบฆๆŽฅ็ถšใ™ใ‚Œใฐใ€ไปฅ้™ใฏ่‡ช็„ถ่จ€่ชžใงใ‚ณใƒผใƒ‰็”Ÿๆˆใงใใ‚‹ใ€็‚นใงใ™ใ€‚ๆฏŽๅ›žAPIใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚’่ชฟในใชใŒใ‚‰ใ‚ณใƒผใƒ‰ใ‚’ๆ›ธใไฝœๆฅญใ‹ใ‚‰่งฃๆ”พใ•ใ‚Œใ€ไป•ๆง˜็†่งฃใจๅฎŸ่ฃ…ใฎๅพ€ๅพฉๆ™‚้–“ใ‚’ๅคงๅน…ใซๅ‰Šๆธ›ใงใใพใ™ใ€‚

ไปŠๅ›ž่งฃ่ชฌใ—ใŸไธปใชใƒใ‚คใƒณใƒˆใ‚’ใŠใ•ใ‚‰ใ„ใ—ใพใ™๏ผš

  • antigravity api connect ใงRESTใƒปGraphQLใƒปgRPCใƒปGCPใƒใ‚คใƒ†ใ‚ฃใƒ–APIใซๆŽฅ็ถšๅฏ่ƒฝ
  • OpenAPI specใ‚’่ชญใฟ่พผใ‚€ใ“ใจใงใ€ๅž‹ๅฎš็พฉใ‚„ใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใ‚ณใƒผใƒ‰ใฎ็ฒพๅบฆใŒๅคงๅน…ๅ‘ไธŠ
  • ~/.antigravity/config.yaml ใซๆฐธ็ถšๅŒ–ใ™ใ‚‹ใ“ใจใงใƒใƒผใƒ ๅ…จไฝ“ใงใฎ่จญๅฎšๅ…ฑๆœ‰ใŒๅฎนๆ˜“
  • APIใ‚ญใƒผใฏๅฟ…ใš็’ฐๅขƒๅค‰ๆ•ฐใง็ฎก็†ใ—ใ€ใƒ•ใ‚กใ‚คใƒซใธใฎ็›ดๆ›ธใใ‚’้ฟใ‘ใ‚‹

ๆฌกใฎใ‚นใƒ†ใƒƒใƒ—ใจใ—ใฆใ€Google AntigravityใงGCPใ‚ตใƒผใƒ“ใ‚นใ‚’ๆดป็”จใ™ใ‚‹ๆ–นๆณ•ใ‚‚ใ‚ใ‚ใ›ใฆใ”่ฆงใใ ใ•ใ„ใ€‚SES็พๅ ดใงใฎAIใƒ„ใƒผใƒซๆดป็”จใ‚’ใ•ใ‚‰ใซๆทฑใ‚ใŸใ„ๆ–นใฏSESใ‚จใƒณใ‚ธใƒ‹ใ‚ขใฎใ‚นใ‚ญใƒซใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใƒžใƒƒใƒ—2026ใ‚‚ๅ‚่€ƒใซใฉใ†ใžใ€‚

ใ“ใฎ่จ˜ไบ‹ใฏๅฝนใซ็ซ‹ใกใพใ—ใŸใ‹๏ผŸ

Link1 Link2 Link3

ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚

SESๆกˆไปถใ‚’ใŠๆŽขใ—ใงใ™ใ‹๏ผŸ

SES่จ˜ไบ‹ใ‚’ใ‚‚ใฃใจ่ชญใ‚€ โ†’
๐Ÿ—๏ธ

SES BASE ็ทจ้›†้•ท

SESๆฅญ็•Œๆญด10ๅนดไปฅไธŠใฎใƒกใƒณใƒใƒผใŒๅœจ็ฑใ™ใ‚‹็ทจ้›†ใƒใƒผใƒ ใ€‚SESไผๆฅญใงใฎๅ–ถๆฅญใƒปใ‚จใƒณใ‚ธใƒ‹ใ‚ข็ตŒ้จ“ใ€ใƒ•ใƒชใƒผใƒฉใƒณใ‚น็‹ฌ็ซ‹็ตŒ้จ“ใ‚’ๆŒใคใƒกใƒณใƒใƒผใŒใ€ๆฅญ็•Œใฎใƒชใ‚ขใƒซใชๆƒ…ๅ ฑใ‚’ใŠๅฑŠใ‘ใ—ใพใ™ใ€‚

๐Ÿ“Š ๆฅญ็•Œใƒ‡ใƒผใ‚ฟใซๅŸบใฅใ่จ˜ไบ‹ๅˆถไฝœ ๐Ÿ” IPAใƒป็ตŒๆธˆ็”ฃๆฅญ็œใƒ‡ใƒผใ‚ฟๅ‚็…ง ๐Ÿ’ผ SESๅฎŸๅ‹™็ตŒ้จ“่€…ใŒๅŸท็ญ†ใƒป็›ฃไฟฎ