jpskill.com
🛠️ 開発・MCP コミュニティ

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本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
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
🪟 Windows (PowerShell)
$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. 1. 下の青いボタンを押して capacitor.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → capacitor フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

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 sync after every web build — copies assets to native projects
  • npx cap run for testing — faster than opening IDE each time
  • Platform detectionCapacitor.isNativePlatform() for conditional native features
  • Plugins are web-compatible — most plugins have web fallbacks
  • Live reload for developmentnpx 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