By 37Design |

iPhoneからWordPressへ、Jetpack抜きで写真を上げる現実的な手順

結論から書きます。 Jetpackなしでも、iPhoneからWordPressへ写真は問題なく送れます。一番手軽なのはWordPress公式アプリ+Application Password(無料、設定10分)。一番速いのはSnapPress($2.99買い切り、20枚を約45秒)。REST APIをホストがブロックしている場合は、SFTP+Media from FTPプラグインで迂回できます。以下、3年間クライアントサイトで実際に試した6つの方法を、比較表とハマりどころつきで順に説明します。

自分はクライアント向けにセルフホストのWordPressサイトを20個ほど運用しています。そのうちJetpackを入れているサイトはひとつもない。Jetpack自体は人によっては悪くないプラグインです。でも自分の用途には重すぎるし、必要がないのにクライアントサイトをWordPress.comのインフラに繋ぎたくない。

問題は、WordPress公式モバイルアプリがセルフホストサイトでまともに動こうとするとJetpackがほぼ必須になることです。何年もの間、iPhoneから写真をアップロードする手段といえば、Safariを開き、極小画面で管理画面にログインし、アップロードが途中でタイムアウトしないことを祈るしかありませんでした。

たくさん回避策を試しました。賢い方法もあれば、面倒なものも多かった。本記事は、自分が見つけたあらゆる方法を3年間、実際のクライアントサイトと現実のモバイル回線、本物のフラストレーションの中でテストした成果です。6種類のアプローチを並べて比較し、最も使われる方法のステップ・バイ・ステップ手順、そしてホストがREST APIを完全にブロックしている場合の対処までまとめました。

なぜJetpackを避けるのか(現場の理由)

方法の話に入る前に、まずこの問いを片付けておきましょう。Jetpackは「WordPressモバイルアプリってどう使うの?」に対するデフォルトの答えで、多くの人にとっては実際それで充分です。ではなぜ避けるのか?

1つ目はプラグインの重さ。JetpackはWordPressエコシステムで屈指の巨大プラグインです。フルインストールでは多数のモジュールが追加され、それぞれが独自のJavaScript、CSS、データベースクエリを読み込みます。昨年監査したクライアントサイトでは、Jetpackを外しただけで管理画面のロード時間が4.2秒から1.1秒に縮みました。フロントへの影響は限定的だったけど、編集体験はまるで別物になった。

2つ目はWordPress.com経由のデータ転送。Jetpackがサイトを同期するとき、投稿コンテンツ、コメント、ユーザー情報、メディア参照などがWordPress.comのサーバーに送られます。公式に文書化された挙動で秘密ではないけど、知ると驚く人が多い。データレジデンシー要件の厳しいサイト(EUのクライアント、医療関連事業、プライバシーに敏感な顧客基盤を持つビジネス)では、これだけで採用を見送る理由になる。あるクライアントの法務チームは「第三者サーバー経由でデータを送るプラグインは一切禁止」と明言しています。

3つ目はWordPress.comアカウントが必須なこと。Jetpackを使うには、各サイトをWordPress.comアカウントに紐付ける必要があります。クライアントサイトを多数構築する立場だと、自分の個人アカウントを使う(アクセスを失えば一発アウト)、クライアントごとに別アカウントを作る(面倒)、クライアント自身に作ってもらう(説明が大変)のどれかになる。どれもしっくり来ません。

4つ目はシェアドホストでのパフォーマンス。PHPメモリやCPUがカツカツの低価格ホストだと、Jetpackのバックグラウンド同期ジョブが実害を出すことがあります。同期サイクル中にメモリ上限を超えて500エラーが出るのを実際に見ました。ホスト側の答えは決まって「プランをアップグレードしてください」。Jetpackを外せば無料で済む話です。

5つ目は更新疲れ。Jetpackは頻繁に、ときには毎週のように更新されます。そのたびに、頼んでもいないモジュールが追加されたり、設定が変わったり、他プラグインと衝突したりするリスクがある。「コンテンツを公開できればいい」だけのサイトには、メリットなしの保守負担です。

Jetpackが悪い、という話ではありません。Jetpackは意見の強いプラグインで、その意見がすべてのサイトに合うわけではない、ということです。要らないと判断したのなら、モバイルアップロードには別の道筋が要る。

なぜJetpackの話がいつも出てくるのか

WordPressモバイルアプリは内部でWordPress.com APIを使っています。WordPress.comサイトならそのまま動きますが、セルフホストサイトでは、サーバーとWordPress.com APIの間を橋渡しするJetpackが必要になるのです。

Jetpackを入れない場合、アプリはXML-RPCかWordPress REST APIにフォールバックします。XML-RPCはセキュリティ上の理由から多くのホスティング会社が無効化しています。REST APIは動きますが、セルフホスト向けのアプリ実装は昔からムラがあり、ログインに失敗する、メディアが同期されない、アップロードがハングするなど、デバッグに費やした時間を思い出したくもないほどです。

つまりJetpackを使わないなら、まったく別のルートが必要になります。以下に挙げるのは、自分が実運用で実際に使った6つの方法です。

Jetpackなしのアップロード方法を一覧比較

各方法の詳細に入る前に、3年前に欲しかった比較表を載せておきます。スピードは10枚バッチをLTE回線でアップロードした実測値、コストは初期費用のみ(ホスティング料は含みません)。

方法 所要時間(10枚) コスト セットアップ難易度 iPhoneネイティブ?
SnapPress (iOS) 約45秒 $2.99 買い切り 簡単(90秒) はい
WordPress公式アプリ + Application Password 約3分 無料 中(10分) はい
REST API + Siri Shortcuts 約5分(動けば) 無料 難(20〜30分) はい(壊れやすい)
SFTP + Media Syncプラグイン 約10分 無料 / 有料プラグイン 難(30分以上) 一部(FTPアプリ要)
Email-to-Post(Postie等) 1メールあたり約2分 無料 中(15分) はい(メール.app)
クラウド同期(Dropbox + Media from FTP) 非同期(バックグラウンド) 無料 / 有料プラグイン 中(20分) はい(ファイル.app)

適切な選択肢は、何を最適化したいかによって変わります。毎週アップロードしていて時間を大事にするならSnapPressが勝ちます。1〜2回しかやらず1ドルも払いたくないなら、セットアップさえ乗り越えればWordPress公式アプリ+Application Passwordで足ります。それぞれに居場所があります。順に見ていきましょう。

方法1: モバイルブラウザからアップロード

これは力技。Safariを開き、yoursite.com/wp-adminにアクセスし、ログインし、メディアに移動して「新規追加」をタップ、写真を選ぶ。

Jetpack不要、追加アプリも不要。どのWordPressサイトでも動きます。

ただし、めちゃくちゃ時間がかかる。WordPress管理画面はスマホ向けに設計されていません。ボタンは小さく、アップロードの進捗表示はほぼ見えません。15枚アップロード中に画面ロックがかかればSafariが接続を切り、最初からやり直しです。

この方法を3年使いました。一貫してストレスフル。iPhone画面でWordPress管理画面を使うのは、鍵穴越しにデスクトップアプリを操作するような感覚です。やればできる。でも毎回イライラする。

1枚なら問題なし。5枚以上なら別の方法を探したほうがいい。スマホからWordPressへ写真を一括アップロードするなら、この方法は1日を食いつぶします。

方法2: Siri Shortcuts

2023年頃、REST APIを直接叩いてWordPressに写真をアップロードするSiri Shortcutを公開した開発者が何人かいました。アイデアは秀逸で、写真アプリで写真を選んでショートカットを実行すると、サイトの/wp/v2/mediaエンドポイントへPOSTしてくれます。

試してみました。技術的には動く。でも「技術的に動く」と「ちゃんと使える」はまったく別物です。

セットアップは慣れていても15〜20分。WordPressのApplication Passwordを発行し、REST APIのベースURLを調べ、両方をショートカット設定に貼り付ける必要があります。パーマリンクが標準でない、REST APIアクセスを書き換えるセキュリティプラグインが入っているなどの場合、401エラーの原因究明にもう1時間が消えます。

設定後もショートカットは写真を1枚ずつループでアップロードします。進捗表示はぐるぐるスピナーだけ。1枚でも失敗すると(モバイル回線では実際よく失敗します)ショートカット全体が停止。リトライもなし。どれが送れたか自分で確認して、残りを再実行する必要があります。

最悪なのはSiri Shortcutsが壊れること。AppleはiOSのバージョンごとにShortcutsランタイムを変更し、コミュニティ製ショートカットはほぼメンテナンスされていません。自分が使っていたものはiOS 18.2以降で動かなくなり、誰も直していません。

こういう作業を楽しめるタイプならどうぞ。日常運用にはおすすめしません。

方法3: WordPress公式アプリ + Application Password

多くの人が存在に気付いていない経路です。WordPressモバイルアプリは実はJetpackなしのセルフホストもサポートしていますが、認証はApplication Passwordで行う必要があります。フローはJetpackオンボーディング画面の下に隠れていて、知っていないと辿り着けません。

無料、公式、設定さえできればメディアアップロードは安定して動きます。専用ツールよりは遅いものの、仕事はこなしてくれる。次のセクションで手順を順を追って解説します。

ステップ・バイ・ステップ: Application Passwordの設定

Application PasswordはWordPress 5.6(2020年12月)から導入されました。本来のログインパスワードを露出させずに、REST API認証用にスマホ側へ渡せるスコープ付き資格情報です。設定方法とWordPress公式アプリの接続手順を以下にまとめます。

ステップ1: Application Passwordが有効か確認

デスクトップでWordPress管理画面にログインします。ユーザー > プロフィールに進み、ページ最下部までスクロール。Application Passwordsセクションが表示されているはずです。

[スクリーンショット: ユーザープロフィール画面の下部に表示されたApplication Passwordsセクション]

セクションが見当たらない場合、ホストやセキュリティプラグイン、またはwp-config.phpのカスタム設定で無効化されている可能性があります。WP_APPLICATION_PASSWORDS_AVAILABLEfalseになっていないか、WordfenceやiThemes SecurityにApplication Passwordsを無効にする設定がないかを確認し、有効化してから進んでください。

ステップ2: 新しいApplication Passwordを発行

新しいアプリケーションパスワード名欄にiPhone WordPress Appのような名前を入力します。これは後で失効するときの目印で、用途は識別だけです。新しいアプリケーションパスワードを追加をクリック。

[スクリーンショット: 黄色のハイライトボックス内に表示された24文字のApplication Password]

WordPressが4文字×6グループの24文字パスワードを表示します。今すぐコピーしてください。画面を閉じると二度と表示できません。失くした場合は失効させて再発行する必要があります。

ステップ3: WordPressモバイルアプリをインストール

App Storeを開き、公式のWordPressアプリ(販売元:Automattic)をインストールしてから起動します。

ステップ4: WordPress.comではなくセルフホストを選ぶ

ようこそ画面で、目立つ「WordPress.comで続行」ではなく既存のサイトアドレスを入力をタップしてください。ここが多くのチュートリアルが飛ばす重要ポイントです。

[スクリーンショット: 画面下部の「既存のサイトアドレスを入力」がハイライトされたWordPressアプリの初期画面]

ステップ5: サイトURLと認証情報を入力

https://を含むサイトURL全体を入力。アプリがセルフホストと検出して認証を求めてきます。

ユーザー名は通常のWordPressユーザー名。パスワード欄にはステップ2でコピーした24文字のApplication Passwordを貼り付けます。本来のWordPressパスワードは入力しないでください。アプリが拒否してJetpackへ誘導しようとします。

[スクリーンショット: ユーザー名欄とApplication Passwordを貼り付けたパスワード欄が表示されたログイン画面]

ステップ6: アップロード機能を確認

ログイン後、+ボタンをタップしてメディアをアップロードを選択。まずは1枚だけ選んで接続を確認します。成功したら設定完了。写真は他のアップロードとまったく同じようにメディアライブラリへ追加されます。

[スクリーンショット: 写真1枚を選択しアップロード進捗60%のメディアアップロード画面]

401エラーで失敗するなら、Application Passwordが間違っているか、ホストがREST API認証をブロックしています(次のセクション参照)。413エラーならファイルがサーバーのupload_max_filesizeを超えています。アップロード前にリサイズするか、ホストに上限引き上げを依頼してください。

初回は約10分、2台目以降は30秒で済みます。WordPress写真アップロードアプリのおすすめを比較しているなら、Application Passwordを使った公式アプリは無料で超えるべきベースラインです。

ホストがREST APIをブロックしていたら

低価格ホストの中にはREST APIアクセスをデフォルトで制限しているものがあります。Bluehost、HostGator、一部のSiteGround構成で実際にトラブルを経験しました。症状は決まって、Application Passwordが正しいのにWordPressモバイルアプリでログインしようとして401や403が返ってくる。診断と回避の手順を紹介します。

ステップ1: REST APIを直接テスト

デスクトップブラウザでhttps://yoursite.com/wp-json/にアクセス。利用可能なエンドポイント一覧のJSONレスポンスが表示されればOK。404ならパーマリンクが壊れているので、設定 > パーマリンクで保存し直します。403やセキュリティチャレンジ画面なら、ホストかセキュリティプラグインがブロックしています。

ステップ2: セキュリティプラグインを確認

Wordfence、iThemes Security、All In One WP Security、Sucuriなどには、REST APIを無効化または制限するオプションがあります。プラグイン設定で「Disable REST API」「Restrict REST API to logged-in users」などを探し、有効になっていれば一時的にオフにしてテストします。

ステップ3: .htaccessでREST APIをホワイトリスト

一部のホストはmod_securityルールで認証ヘッダー付きREST APIリクエストをブロックします。WordPressのブロックの上に以下を追加すれば、/wp-json/を救える場合があります。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^wp-json/(.*)$ /index.php?rest_route=/$1 [QSA,L]
</IfModule>

これはREST APIをクエリパラメータ形式に強制し、ホスト側の制限を迂回することがあります。根本解決ではなく回避策ですが、HostGator上の2サイトで実際に効きました。

ステップ4: ホストサポートに連絡

上記でも解決しない場合、ブロックはサーバーやファイアウォールレベルでかかっており、ホストにドメインのホワイトリスト登録を依頼する必要があります。サポートチケットには「Please whitelist authenticated REST API requests to /wp-json/ for my domain. I am using WordPress Application Passwords for mobile uploads.」と添えてください。多くのホストは24時間以内に対応してくれます。「プランアップグレードを」と返してくる場合は、ホスト乗り換えを検討するサインです。

ステップ5: SFTPにフォールバック

REST APIがどうしても使えない場合は、SFTPで画像をアップロードし、Add From ServerMedia from FTPのようなプラグインでメディアライブラリに登録する手があります。TransmitやWorking CopyのようなiOS用SFTPクライアントで/wp-content/uploads/に置き、プラグインのインポート機能を実行。エレガントではないものの、REST API制限を全て迂回できます。これはREST APIのレート制限が厳しいホストでスマホからWordPressへ画像を大量アップロードするときにも使うやり方です。

方法4: Email-to-Post(Postieなど)

PostieはWordPress用の無料プラグインで、専用メールボックスにメールを送ると投稿(と添付画像)として公開してくれます。IMAPでアクセスできる受信箱を設定し、プラグインをインストールすれば、そのアドレス宛のメールが投稿になり、添付写真がメディアライブラリに登録されます。

長所はメールクライアントさえあればどの端末でも動くこと。iPhone標準のメール.appでも問題なし。専用アプリやApplication Passwordの設定もいりません。短所は遅いこと、メールプロバイダ側で添付が1〜2枚に制限されがちなこと、HEICの扱いが当てにならないこと。下書き投稿に写真を放り込んで後でまとめて編集したいだけなら使えますが、バッチアップロードには向きません。

方法5: クラウド同期(Dropbox + Media from FTP)

iPhoneの写真アプリをDropboxやiCloud Driveに自動アップロード設定。サーバー側でそのフォルダをファイルシステム経由(rclone等)でマウントし、Media from FTPプラグインでスケジュール実行してメディアライブラリへ取り込みます。

これは設計上、非同期です。日中に撮った写真を、夜間のcronが拾ってくれる。一度設定すればハンズオフで運用できるので、写真コンテンツを大量に出すサイト(不動産、フードブログ、イベント取材)に向きます。ただしセットアップが大変で、サーバー側のファイルシステムアクセスが必要。アップロード時にalt属性やキャプションを付ける機能も諦めることになります。

適したワークフローもありますが、ほとんどのケースではオーバースペックです。

方法6: SnapPress(自分が実際に使っているもの)

正直に言っておきます。SnapPressは、他の方法に苛立ちすぎて自分でアプリを書いた結果生まれたものです。

仕組みはシンプル。WordPressサイトに小さなプラグイン(SnapPress Connect)を入れる。QRコードが生成される。iPhoneのSnapPressアプリでスキャンする。完了。サイトが接続されます。

あとは写真を最大20枚まで選んでアップロードをタップするだけ。WordPress REST API経由でメディアライブラリへ直送されます。Jetpackなし、WordPress.comアカウントなし、XML-RPCなし。HTTPSとApplication Passwordだけ。

一番時間を節約できているのはShare Extension。写真アプリで写真を選び、共有ボタンからSnapPressを選ぶと、アプリ自体を開かなくてもアップロードが完了します。週に何度もクライアントサイトに写真を上げる立場としては、1バッチ10分の作業が60秒以下になりました。

SnapPressはHEIC変換も自動で処理します。iPhoneはデフォルトでHEIC形式で写真を保存しますが、ほとんどのホストでWordPressはHEICを受け付けません。アップロードしようとして「対応していないファイル形式です」と弾かれた経験があるなら、この自動変換だけで$2.99の元は取れるはず。iPhoneのHEIC写真をWordPressで扱う側の苦労を、端末側でまるごと畳んでくれます。

セットアップは約90秒

  1. WordPressプラグインディレクトリからSnapPress Connectをインストール。
  2. ダッシュボードでツール > SnapPress Connectへ。
  3. 「ワンタップでQRコードを生成」をクリック。
  4. SnapPressアプリでQRコードをスキャン。

本当にこれだけ。プラグインがApplication Passwordを自動発行し、サイトURLと認証情報をQRコードに埋め込み、アプリがすべてiPhoneのKeychainに保存します。スマホのキーボードでパスワードを打つ必要は一切ありません。

できないこと

SnapPressはメディアライブラリへのアップロード専用です。投稿やページの作成はできません。スマホでサイト全体を管理したいなら、上記のApplication Password方式によるWordPress公式アプリのほうが向いています。SnapPressが解決するのは1つの問題だけ。Jetpackなしで、スマホからWordPressへ写真を最速で送ること。

価格は$2.99の買い切り。サブスクリプションなし。

本当の問題

WordPressのモバイル運用の答えは、長いあいだ「Jetpackを入れて」でした。WordPress.comのユーザーには十分。でもセルフホストでセキュリティ要件、パフォーマンス予算、あるいは単に「プラグインを増やしたくない」という事情を抱えている残りの人たちにとって、その答えがしっくり来たことは一度もない、と自分は思います。

REST APIはWordPress 4.7からコアに、Application Passwordは5.6から入っています。Jetpackなしのモバイルアップロードに必要なパーツは何年も前から揃っていた。それを組み立てるアプリやショートカットが追いついていなかっただけ。

選択肢は6つ。セットアップ忍耐度とアップロード頻度に合わせて選んでください。何を選んでも、写真を1枚WordPressに載せるためだけにJetpackを入れる必要はありません。

もし自分と同じ立場(セルフホスト、Jetpackなし、スマホからの写真アップロードが頻繁)なら、SnapPressを試してみてください。自分のために作ったツールですが、同じものを必要としていた人が他にもたくさんいたようです。価格をどう決めたか、なぜ買い切り+サブスクの両方を残したかは、SnapPress v2.0のフリーミアム移行ノート9言語ローカライズの裏側に書きました。

よくある質問

Jetpackなしで写真をWordPressにアップロードするには有料プラグインが必要ですか?

いいえ。Application PasswordはWordPress 5.6以降に標準搭載されており、認証の仕組みは無料で組み込まれています。WordPress公式モバイルアプリ、Siri Shortcut、SnapPressのようなサードパーティアプリも、有料プラグインを購入しなくても利用できます。本ガイドで唯一の有料オプションはSnapPressそのもので、最速のワークフローを求める場合の買い切り$2.99のみです。

REST API経由でアップロードした写真はメディアライブラリに通常通り表示されますか?

はい。/wp/v2/mediaエンドポイントに投稿されたものは、デスクトップからのアップロードと同じ通常の添付ファイルとしてメディアライブラリに登録されます。WordPressがthumbnail、medium、largeなどの標準レスポンシブサイズを自動生成し、投稿に添付したり、アイキャッチ画像に設定したり、管理画面からalt属性を編集することもできます。別の保存場所に置かれることはありません。

ホストがREST APIやXML-RPCをブロックしていたらどうしますか?

Bluehost、HostGator、SiteGroundなど一部のシェアドホストは、セキュリティやパフォーマンス上の理由でREST APIアクセスを制限しています。401や403が返る場合は、まずセキュリティプラグインや.htaccess/wp-json/をホワイトリストに加えてみてください。サーバーレベルでブロックされている場合は、サポートに連絡して認証付きREST APIアクセスを許可してもらうか、SFTPベースのアップロードとmedia syncプラグインで代替するのが現実的です。

Application Password経由のアップロードはJetpackと同じくらい安全ですか?

Application Passwordはモバイルアップロードにおいてはむしろより安全といえます。スコープが限定され、いつでも失効でき、本来のWordPressパスワードを端末に渡さずに済むからです。アプリごとに専用のパスワードを発行でき、ユーザープロフィール画面からメインのログインに影響を与えずに失効できます。Jetpackは通信をWordPress.comサーバー経由でルーティングするため、第三者が経路に加わります。Application Passwordなら、スマホとサーバーの間を直接接続します。

iPhoneのHEIC写真を変換せずにそのままアップロードできますか?

ツール次第です。WordPressモバイルアプリやブラウザベースのアップロードはほとんどの場合HEICを拒否します。サーバーのImageMagickやGDにHEICサポートがコンパイル済みなら別ですが、これは稀です。SnapPressは端末側でHEICを自動的にJPEGへ変換してからアップロードするため、メディアライブラリには標準的なJPEGとして保存されます。REST APIを直接使う場合は手動で変換しないとアップロードに失敗します。

Jetpackなしで一度に何枚までアップロードできますか?

WordPress自体に明確な上限はありませんが、実用上の制限はサーバーのPHP設定(upload_max_filesizepost_max_sizemax_execution_time)と利用するツール側にあります。ブラウザ管理画面はモバイルだと1〜2枚が限界。SnapPressは最大20枚を並列で処理できます。SFTP+media syncプラグインなら数百枚も扱えますがデスクトップが必要です。Email-to-postは通常1メールあたり1〜2枚までに制限されます。