capacitor
Capacitorは、ウェブアプリをネイティブアプリのように動作させ、JavaScriptからカメラなどのスマホ機能を使えるようにして、App Storeなどで公開できるようにするSkill。
📜 元の英語説明(参考)
Turn web apps into native mobile apps with Capacitor — access native device APIs from JavaScript. Use when someone asks to "convert my website to a mobile app", "Capacitor", "web to native app", "access camera from JavaScript", "deploy web app to App Store", "hybrid mobile app", or "Ionic Capacitor". Covers native API access, plugin system, web-to-native bridge, and app store deployment.
🇯🇵 日本人クリエイター向け解説
Capacitorは、ウェブアプリをネイティブアプリのように動作させ、JavaScriptからカメラなどのスマホ機能を使えるようにして、App Storeなどで公開できるようにするSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o capacitor.zip https://jpskill.com/download/14719.zip && unzip -o capacitor.zip && rm capacitor.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/14719.zip -OutFile "$d\capacitor.zip"; Expand-Archive "$d\capacitor.zip" -DestinationPath $d -Force; ri "$d\capacitor.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
capacitor.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
capacitorフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Capacitor
概要
Capacitor は、あなたのウェブアプリをネイティブコンテナにラップし、カメラ、ファイルシステム、プッシュ通知、生体認証、位置情報など、ネイティブデバイスの API へのアクセスを提供します。既存の React/Vue/Angular/Svelte アプリは、Swift や Kotlin で書き直すことなく、iOS および Android アプリになります。Ionic チームによって構築されており、Cordova/PhoneGap の現代的な代替手段です。
どのような時に使うか
- ウェブアプリがあり、ネイティブの iOS/Android 版が欲しい場合
- ネイティブデバイスの機能(カメラ、プッシュ通知、生体認証)が必要な場合
- ウェブ + iOS + Android で 1 つのコードベースにしたい場合
- PWA を App Store で配布するためのネイティブアプリに変換する場合
- チームがウェブ技術を知っているが、Swift/Kotlin は知らない場合
手順
セットアップ
npm install @capacitor/core @capacitor/cli
npx cap init "My App" com.mycompany.myapp
# プラットフォームの追加
npm install @capacitor/ios @capacitor/android
npx cap add ios
npx cap add android
ビルドと実行
# まずウェブアプリをビルド
npm run build
# ウェブアセットをネイティブプロジェクトにコピー
npx cap sync
# ネイティブ IDE で開く
npx cap open ios # Xcode を開く
npx cap open android # Android Studio を開く
# または直接実行
npx cap run ios --target "iPhone 15"
npx cap run android
ネイティブプラグイン
# プラグインのインストール
npm install @capacitor/camera @capacitor/filesystem @capacitor/push-notifications
npm install @capacitor/haptics @capacitor/share @capacitor/browser
npx cap sync
// src/native/camera.ts — デバイスのカメラへのアクセス
import { Camera, CameraResultType, CameraSource } from "@capacitor/camera";
async function takePhoto(): Promise<string> {
const photo = await Camera.getPhoto({
quality: 80,
allowEditing: false,
resultType: CameraResultType.Uri,
source: CameraSource.Camera,
});
return photo.webPath!; // <img> で表示するためのファイル URI
}
async function pickFromGallery(): Promise<string[]> {
const photos = await Camera.pickImages({
quality: 80,
limit: 5,
});
return photos.photos.map((p) => p.webPath!);
}
// src/native/notifications.ts — プッシュ通知
import { PushNotifications } from "@capacitor/push-notifications";
async function registerPush() {
const permission = await PushNotifications.requestPermissions();
if (permission.receive === "granted") {
await PushNotifications.register();
}
PushNotifications.addListener("registration", (token) => {
console.log("FCM Token:", token.value);
// トークンをサーバーに送信
});
PushNotifications.addListener("pushNotificationReceived", (notification) => {
console.log("Received:", notification.title, notification.body);
});
}
// src/native/filesystem.ts — ファイルシステムへのアクセス
import { Filesystem, Directory } from "@capacitor/filesystem";
async function saveFile(data: string, filename: string) {
await Filesystem.writeFile({
path: filename,
data: data,
directory: Directory.Documents,
});
}
async function readFile(filename: string): Promise<string> {
const result = await Filesystem.readFile({
path: filename,
directory: Directory.Documents,
});
return result.data as string;
}
プラットフォームの検出
// src/utils/platform.ts — プラットフォームごとの動作の適応
import { Capacitor } from "@capacitor/core";
export const isNative = Capacitor.isNativePlatform();
export const platform = Capacitor.getPlatform(); // 'ios' | 'android' | 'web'
// 利用可能な場合はネイティブ機能を使用し、ウェブにフォールバック
async function share(text: string) {
if (isNative) {
const { Share } = await import("@capacitor/share");
await Share.share({ text });
} else {
navigator.share?.({ text }) ?? navigator.clipboard.writeText(text);
}
}
例
例 1: React アプリをモバイルアプリに変換する
ユーザープロンプト: "React ウェブアプリがあります。iOS と Android で利用できるようにしてください。"
エージェントは Capacitor を追加し、ネイティブプロジェクトを構成し、ネイティブ機能のプラットフォーム検出を追加し、App Store/Play Store への提出を準備します。
例 2: カメラとファイルのアップロードを追加する
ユーザープロンプト: "写真撮影とファイルのアップロードをモバイルウェブアプリに追加してください。"
エージェントは Capacitor のカメラとファイルシステムプラグインをインストールし、ギャラリーへのフォールバックを備えた写真撮影コンポーネントを作成し、ファイルのアップロードを実装します。
ガイドライン
- ウェブビルドのたびに
npx cap sync— アセットをネイティブプロジェクトにコピーします - テストには
npx cap run— 毎回 IDE を開くよりも高速です - プラットフォームの検出 — 条件付きのネイティブ機能には
Capacitor.isNativePlatform()を使用します - プラグインはウェブ互換 — ほとんどのプラグインにはウェブフォールバックがあります
- 開発用のライブリロード —
npx cap run ios --livereload - カスタムネイティブコード — 必要に応じて Swift/Kotlin プラグインを作成します
- App Store へのデプロイ — iOS には Xcode、Android には Android Studio を使用します
capacitor.config.ts— サーバー URL、プラグイン、アプリ情報を構成します- ネイティブ構成での権限 — カメラ、位置情報などは Info.plist/AndroidManifest エントリが必要です
- ゲームには不向き — コンテンツアプリ、ツール、ダッシュボードに最適です。ゲームには Unity/Flutter を使用してください
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Capacitor
Overview
Capacitor wraps your web app in a native container and gives it access to native device APIs — camera, file system, push notifications, biometrics, geolocation, and more. Your existing React/Vue/Angular/Svelte app becomes an iOS and Android app without rewriting in Swift or Kotlin. Built by the Ionic team, it's the modern replacement for Cordova/PhoneGap.
When to Use
- Have a web app and want native iOS/Android versions
- Need native device features (camera, push notifications, biometrics)
- Want one codebase for web + iOS + Android
- Converting a PWA to a native app for App Store distribution
- Team knows web tech but not Swift/Kotlin
Instructions
Setup
npm install @capacitor/core @capacitor/cli
npx cap init "My App" com.mycompany.myapp
# Add platforms
npm install @capacitor/ios @capacitor/android
npx cap add ios
npx cap add android
Build and Run
# Build your web app first
npm run build
# Copy web assets to native projects
npx cap sync
# Open in native IDE
npx cap open ios # Opens Xcode
npx cap open android # Opens Android Studio
# Or run directly
npx cap run ios --target "iPhone 15"
npx cap run android
Native Plugins
# Install plugins
npm install @capacitor/camera @capacitor/filesystem @capacitor/push-notifications
npm install @capacitor/haptics @capacitor/share @capacitor/browser
npx cap sync
// src/native/camera.ts — Access the device camera
import { Camera, CameraResultType, CameraSource } from "@capacitor/camera";
async function takePhoto(): Promise<string> {
const photo = await Camera.getPhoto({
quality: 80,
allowEditing: false,
resultType: CameraResultType.Uri,
source: CameraSource.Camera,
});
return photo.webPath!; // File URI to display in <img>
}
async function pickFromGallery(): Promise<string[]> {
const photos = await Camera.pickImages({
quality: 80,
limit: 5,
});
return photos.photos.map((p) => p.webPath!);
}
// src/native/notifications.ts — Push notifications
import { PushNotifications } from "@capacitor/push-notifications";
async function registerPush() {
const permission = await PushNotifications.requestPermissions();
if (permission.receive === "granted") {
await PushNotifications.register();
}
PushNotifications.addListener("registration", (token) => {
console.log("FCM Token:", token.value);
// Send token to your server
});
PushNotifications.addListener("pushNotificationReceived", (notification) => {
console.log("Received:", notification.title, notification.body);
});
}
// src/native/filesystem.ts — File system access
import { Filesystem, Directory } from "@capacitor/filesystem";
async function saveFile(data: string, filename: string) {
await Filesystem.writeFile({
path: filename,
data: data,
directory: Directory.Documents,
});
}
async function readFile(filename: string): Promise<string> {
const result = await Filesystem.readFile({
path: filename,
directory: Directory.Documents,
});
return result.data as string;
}
Platform Detection
// src/utils/platform.ts — Adapt behavior per platform
import { Capacitor } from "@capacitor/core";
export const isNative = Capacitor.isNativePlatform();
export const platform = Capacitor.getPlatform(); // 'ios' | 'android' | 'web'
// Use native features when available, fallback to web
async function share(text: string) {
if (isNative) {
const { Share } = await import("@capacitor/share");
await Share.share({ text });
} else {
navigator.share?.({ text }) ?? navigator.clipboard.writeText(text);
}
}
Examples
Example 1: Convert a React app to mobile
User prompt: "I have a React web app. Make it available on iOS and Android."
The agent will add Capacitor, configure native projects, add platform detection for native features, and prepare for App Store/Play Store submission.
Example 2: Add camera and file upload
User prompt: "Add photo capture and file upload to my mobile web app."
The agent will install Capacitor camera and filesystem plugins, create a photo capture component with gallery fallback, and implement file upload.
Guidelines
npx cap syncafter every web build — copies assets to native projectsnpx cap runfor testing — faster than opening IDE each time- Platform detection —
Capacitor.isNativePlatform()for conditional native features - Plugins are web-compatible — most plugins have web fallbacks
- Live reload for development —
npx cap run ios --livereload - Custom native code — write Swift/Kotlin plugins when needed
- App Store deployment — Xcode for iOS, Android Studio for Android
capacitor.config.ts— configure server URL, plugins, app info- Permissions in native config — camera, location, etc. need Info.plist/AndroidManifest entries
- Not for gaming — great for content apps, tools, dashboards; use Unity/Flutter for games