【2026年版】TypeScriptアプリをCapacitorでiOS/Android化する全手順

Androidアプリ

Webフロントエンドの開発でおなじみの TypeScript 。使い慣れたフロントエンドの技術(React、Vue、Viteなど)を使って、そのままiOSやAndroidのネイティブアプリを作れたら最高だと思いませんか?

それを可能にするのが、Ionicチームが開発している Capacitor(キャパシタ) です。

この記事では、TypeScriptで作成したWebアプリをCapacitorを使ってビルドし、スマホアプリとして動かすまでの全手順を、初心者にもわかりやすく徹底解説します!

1. Capacitorとは?なぜ今選ばれるのか?

Capacitor は、Webアプリをネイティブアプリのシェル(WebView)の中に埋め込み、iOS/Androidアプリとして配信できるようにするオープンソースのランタイムです。

Cordovaとの違いとメリット

かつて主流だったCordovaの後継にあたり、現代のWeb開発エコシステムに最適化されています。

  • 使い慣れたツールがそのまま使える: Vite、Webpack、Next.js、Nuxtなど、TypeScriptが動く環境なら何でも対応。
  • ネイティブAPIへの簡単なアクセス: カメラ、位置情報、通知などの機能を、TypeScriptのコードからプラグイン経由で簡単に呼び出せます。
  • パフォーマンスの向上: 現代の高速なブラウザエンジン(WKWebView / WebView)を利用するため、非常にスムーズに動作します。

2. 事前準備(前提条件と必要なツール)

ビルドを始める前に、開発環境に必要なツールが揃っているか確認しましょう。

必要な環境

  1. Node.js(推奨: LTSバージョン)
  2. TypeScriptのWebアプリ(すでにビルド可能な状態のもの。今回はVite + TypeScriptの構成を例にします)
  3. Android Studio(Androidアプリをビルドする場合)
  4. Xcode(iOSアプリをビルドする場合 ※Mac必須)

3. Capacitorをプロジェクトに導入する手順

それでは、既存のTypeScriptプロジェクトにCapacitorを導入していきましょう。

ステップ1:必要なパッケージのインストール

まずはプロジェクトのルートディレクトリで、CapacitorのコアライブラリとCLIをインストールします。

npm install @capacitor/core @capacitor/cli

ステップ2:Capacitorの初期化

インストールが完了したら、以下のコマンドでCapacitorを初期化します。

npx cap init

コマンドを実行すると、対話形式で以下の質問をされます。

  • App name: アプリの表示名(例: MyTSApp
  • App ID: アプリの識別子。逆ドメイン形式(例: com.example.mytsapp
  • Web asset directory: Webアプリをビルドした際に出力されるフォルダ名(重要!)
    • Viteやパッケージ構成によって異なります(例: distbuildout など)。ご自身の環境に合わせて入力してください(Viteの場合は dist)。

初期化が成功すると、プロジェクトのルートに capacitor.config.ts(または .json)が生成されます。

4. Webアプリ側のビルドと設定

Capacitorは、「Web用にビルドされた静的ファイル」を読み込んでアプリ化します。そのため、まずはTypeScriptアプリをWeb用にビルドする必要があります。

ステップ1:TypeScriptアプリのビルド

# Viteや一般的なプロジェクトの場合
npm run build

buildコマンドは一例です。

実行後、設定した「Web asset directory(例: dist)」に index.htmlassets フォルダが出力されていることを確認してください。

⚠️ 注意ポイント:相対パスの設定 アプリケーション内のリソース読み込みが絶対パス(/assets/...)になっていると、スマホアプリ(file:// 形式など)で起動した際に画面が真っ白になることがあります。ベースパスが相対パス(./)になるよう、ビルドツール(vite.config.ts など)の設定を確認しておきましょう。

5. 各プラットフォーム(iOS / Android)の追加

Webのビルド成果物が用意できたら、いよいよネイティブのプロジェクトを生成します。

プラットフォーム用パッケージのインストール

npm install @capacitor/android @capacitor/ios

Androidプロジェクトの追加

npx cap add android

iOSプロジェクトの追加

npx cap add ios

実行すると、プロジェクトルートに android フォルダや ios フォルダが自動生成されます。

6. 同期(Sync)とネイティブでの起動

Webアプリのコードを変更したり、新しいCapacitorプラグインを追加した後は、必ず 「同期(Sync)」 という作業を行います。これは、Webのビルド成果物をネイティブのフォルダにコピーする処理です。

開発の基本サイクル

コードを変更した際は、常に以下の流れでビルドと同期を行います。

# 1. Webアプリをビルド
npm run build

# 2. Capacitorに同期
npx cap sync

ビルドコマンドにCapacitor同期コマンドを組み込んでおくと楽です。

エミュレータや実機での起動

同期が完了したら、Android StudioやXcodeを立ち上げてアプリを起動します。CapacitorのCLIを使えば、コマンド一発で各IDEを開くことができます。

Android Studioを開く

npx cap open android

Xcodeを開く(Macのみ)

npx cap open ios

Xcodeが起動したら、左上のターゲットデバイスを選択し、「Play」ボタンを押してシミュレータを起動します。

7. トラブルシューティング(よくあるエラーと対処法)

TypeScriptアプリをCapacitorでビルドする際によく遭遇するエラーと、その解決策をまとめました。

現象・エラー原因解決策
起動時に画面が真っ白になるWebのビルド先(dist等)のパス不一致、または絶対パス参照エラー。capacitor.config.tswebDir が正しいか確認。ビルド設定を相対パス(./)に変更する。
npx cap sync でエラーが出るプラットフォームが正しく追加されていない、またはNodeのバージョン問題。npx cap add <platform> を再実行。node_modules を削除して再インストールを試す。
TypeScriptの型定義エラーネイティブプラグインの型が読み込まれていない。使用しているCapacitorプラグイン(例: @capacitor/camera)が正しく import されているか確認。

8. まとめ:Web技術でアプリ開発を加速させよう!

TypeScriptで作ったWebアプリをCapacitorでビルドする方法を解説しました。

一見難しそうに見えるスマホアプリ開発も、Capacitorを使えば「Web用にビルドして、npx cap sync で同期するだけ」という非常にシンプルなワークフローに落とし込むことができます。

一度ベースを作ってしまえば、Webサイトを更新する感覚でアプリのアップデート(※仕様による)や機能追加が行えるため、開発効率は抜群です。ぜひこの記事を参考に、あなたのTypeScriptアプリをApp StoreやGoogle Playに届けてみてください!

💡 次のステップ

アプリが動いたら、次は @capacitor/dialog@capacitor/preferences などの公式プラグインを使って、ネイティブならではの機能をTypeScriptから呼び出すことに挑戦してみましょう!

現在Playストアにアプリをリリースするには12人以上のテスターにオプトインしてもらう必要があります。もし身近にテスターを頼める方が居ないのであればココナラでテスターを依頼するのがおすすめです。大体4000円くらいで依頼できます。


コメント

タイトルとURLをコピーしました