「アプリを作りたいんですが、PWA じゃダメですか?」——Rork の使い方を調べているときに一度は浮かぶ、この質問。実はこれ、答え方によってアプリ全体の設計方針が変わる重要な問いです。
Webで作るか、ストアに出すネイティブアプリにするか。どちらにも「向いているケース」があります。ここでは私がいくつかのアプリを開発してきた経験から、実際に判断の分かれ目になる3つのポイントを整理します。
個人開発でアプリを世に出してきたなかで、私自身も最初に小さな Web アプリとして公開し、あとからネイティブに作り直した経験が何度かあります。ユーザーが定着し始めた頃に「通知でそっと呼び戻したい」「ホーム画面のアイコンから開いてほしい」と感じ、そのたびに Web では届かない壁にぶつかりました。先に判断軸を持っていれば避けられた回り道です。だからこそ、最初の設計時点でこの問いに向き合う価値があると考えています。
結論:この3つに当てはまるならネイティブアプリが必要です
細かい説明の前に、判断軸を先にお伝えします。
- ユーザーにプッシュ通知を送りたい
- カメラ・マイク・GPS などのハードウェア機能を本格的に使いたい
- App Store または Google Play に公開してストア経由でダウンロードさせたい
このうち1つでも当てはまるなら、ネイティブアプリを選ぶべきです。Rork が作るのは React Native / Expo ベースのネイティブアプリなので、上記の要件を自然に満たすことができます。逆に、どれも当てはまらないなら PWA のほうが手数は少なくて済みます。
PWA とネイティブアプリ、何が違うのか
PWA(Progressive Web App)はブラウザ上で動く Web アプリケーションで、ホーム画面に追加できる機能を持たせることで「アプリっぽく見せる」技術です。一方、React Native(Rork が使う技術)は iOS・Android の OS レイヤーに直接アクセスできるネイティブアプリを生成します。
文章で書くと似ているように聞こえますが、実際の機能差は大きいです。ボタンをタップしたとき、PWA では HTML 要素を操作しているのに対し、React Native では本物のネイティブ部品が反応します。この「Web の内側で動くか、OS の上で動くか」という境界線の上に、通知やセンサー、バックグラウンド処理といった機能が乗っています。
アクセスできる機能の違い(主要なもの):
- プッシュ通知: PWA は iOS Safari ではサポートが限定的。Android Chrome では一部可能だが、バックグラウンド通知の信頼性が低い
- カメラ: PWA でもカメラは使えるが、動画処理・リアルタイム解析はネイティブが明確に速い
- Bluetooth / NFC: ネイティブのみ対応(PWA では原則不可)
- App Store / Google Play への掲載: ネイティブアプリのみ
- ホーム画面のウィジェット: ネイティブのみ(WidgetKit / Android App Widgets)
- バックグラウンド処理: ネイティブが信頼性・柔軟性ともに高い
- 描画性能の上限: 情報中心のアプリなら PWA でも十分。ただし 60fps のアニメーションや重い演算が絡むとネイティブの天井が高い
プッシュ通知の実装で見える差
特に「プッシュ通知」は、PWA とネイティブの差が最も出る機能です。Rork で作ったアプリなら、Expo の通知モジュールを使って以下のように実装できます。
// Rork で生成された React Native アプリでのプッシュ通知登録
import * as Notifications from 'expo-notifications';
import { Platform } from 'react-native';
// アプリが前面にいるときの通知の見せ方を設定
Notifications.setNotificationHandler({
handleNotification: async () => ({
shouldShowAlert: true,
shouldPlaySound: true,
shouldSetBadge: false,
}),
});
async function registerForPushNotifications() {
// パーミッションをリクエスト
const { status } = await Notifications.requestPermissionsAsync();
if (status !== 'granted') {
console.log('通知の許可が得られませんでした');
return null;
}
// デバイストークンを取得(バックエンドに送って保存する)
const token = await Notifications.getExpoPushTokenAsync({
projectId: 'your-expo-project-id',
});
// Android の場合はチャンネル設定が必要
if (Platform.OS === 'android') {
await Notifications.setNotificationChannelAsync('default', {
name: 'default',
importance: Notifications.AndroidImportance.MAX,
});
}
return token.data;
}
// → 取得したトークンをサーバーに送信して通知を送れるようになるこのコードは Rork に「プッシュ通知の登録処理を実装して」と伝えるだけで、ほぼ同じ内容を生成してくれます。iOS・Android 両対応でバックグラウンドにいても通知が届く実装です。アプリが閉じている状態でも届く点が、後述するリテンション(継続利用)の設計で効いてきます。
PWA でこれと同等の体験を作ろうとすると、iOS Safari の制約(ユーザーがホーム画面に追加していないと通知が届かないなど)に悩むことになります。ユーザーへの通知がビジネス上重要なアプリなら、最初からネイティブを選んだほうがトラブルが少ないです。通知の詳細な作り込みはExpo のローカル通知実装も参考になります。
PWA で十分なケースも正直に伝えます
ネイティブアプリが有利な場面を書いてきましたが、PWA が向いているケースも確かにあります。
PWA が向いているケース:
- 情報提供が主で、通知・カメラ・ハードウェア機能が不要
- ストアの審査プロセスを経ずにすぐ公開・更新したい
- Web 開発の経験があり、React や Vue でサッと作れる
- インストールの摩擦をなくしてアクセスしやすさを優先したい
- 社内ツールや限定ユーザー向けで、ストア掲載が不要
「タスク管理ツールをチームで使いたいだけ」「情報共有サイトにオフライン機能を付けたい」といった用途なら、わざわざネイティブアプリを作る必要はないかもしれません。Rork の強みが活きにくい場面で無理にネイティブ化するのは、かえって過剰になります。
Rork がネイティブ採用の判断を変えた点
以前は「PWA を選ぶ最大の理由」が、ネイティブの複雑さを避けることでした。Swift や Kotlin、Xcode の証明書まわり、Android Studio のビルド設定——個人開発者にとっては、ここが大きな参入障壁だったのです。Rork はこの計算を静かに変えます。
- プッシュ通知: やりたいことを言葉で伝えると、Expo の設定・許可リクエスト・トークン管理までまとめて生成してくれます
- カメラ・GPS: 機能を頼むだけで、許可フローとプラットフォーム差をならした実装が返ってきます
- App Store への申請: Rork Max のクラウドビルドと2クリック公開が、Xcode や Fastlane の手作業の大半を肩代わりします
- ダークモード・ハプティクス・OS 標準の作法: 部品を生成する段階で織り込まれるため、最初からネイティブらしい手触りになります
「ネイティブは難しいから」という理由は、自分で全部書いていた時代の話です。実装を Rork が引き受けるなら、PWA とネイティブの手間の差は縮まります。そうなると残るのは機能差だけで、少し踏み込んだアプリほど判断はネイティブへ傾きます。これは私自身が手を動かしながら実感している変化です。
Rork でネイティブを選ぶメリット
Rork の良さは「ネイティブアプリを作る手間」を大幅に下げてくれる点にあります。以前なら Swift や Kotlin の知識が必要だったところを、自然言語のプロンプトで指示できます。
- プッシュ通知の設定
- カメラ・GPS の権限処理
- App Store / Google Play への申請フロー
- ダークモード対応、ハプティクス(振動)、ウィジェット
これらをコードを書かずに実装できるのが Rork の強みです。PWA では実現が難しい機能を、同じ「ノーコード的な操作感」で作れるのは大きな差だと感じています。
Rork でのアプリ開発の全体像についてはRork で30分で最初のアプリを作るも参考になります。そもそも Rork がどんなツールかを知りたい方はRork とは何かから読むと流れがつかめます。
判断に迷ったときの3つの質問
最後に、「ネイティブにすべきか」を確かめる簡単な問いかけをまとめます。
-
6ヶ月後に「プッシュ通知があったら良かった」と思う可能性はあるか? → あるなら最初からネイティブにした方が作り直しの手間が省けます
-
カメラや位置情報をアプリの核として使うか? → 補助的に使うだけなら PWA でも動作しますが、品質を求めるならネイティブです
-
App Store に掲載することで信頼感や発見可能性を高めたいか? → ストアに出ることでレビューが集まりやすく、検索からの流入も生まれます
この3つのうち1つでも「はい」なら、Rork でネイティブアプリを作るほうが後悔しないと思います。
まずは Rork の無料プランで小さなアプリを1つ作ってみてください。プロトタイプを動かしながら「やっぱりこの機能が必要だった」と気づく経験が、次のアプリ開発の判断精度を上げてくれます。私の場合も、その最初のつまずきが一番の学びになりました。