ウォールペーパーアプリは、個人開発者にとって作りやすいジャンルのひとつです。機能がシンプルで、コンテンツが主役になれる。App Storeに長く残り続けるアプリの特徴を多く持っています。
私自身、壁紙や癒し系のアプリを個人開発で長く運用してきました。その延長でRorkを触り、新しい壁紙アプリを0から作ってリリースするまでを一通り記録したのが本稿です。順調だった部分も、詰まった部分も含めて正直に書きます。とりわけ「iOSでは壁紙をアプリから直接設定できない」という制約は、企画の前に知っておくと設計が変わる話なので、後半で丁寧に扱います。
企画段階——「普通のウォールペーパーアプリ」を作らないために考えたこと
最初にやったのは、App Storeにある既存のウォールペーパーアプリを30本以上インストールして実際に使うことです。その中で感じたのは、「大量の画像を詰め込んだだけ」のアプリが多いということでした。
私が作りたかったのは、セレクトされた少数の画像を、ダウンロードのUXも含めて丁寧に作ったアプリです。100枚の画像より、10枚でも「この選択眼が好き」と思ってもらえるものが目標でした。
この方向性を最初に決めておいたことで、Rorkへの指示がブレなくなりました。作りたい体験が言葉になっていると、生成AIに対しても「何を出してほしいか」がそのまま伝わります。
RorkでのUI構築——うまくいったこと・苦戦したこと
うまくいった部分:
ウォールペーパーアプリのメイン画面は、グリッドレイアウトで画像が並ぶ構成です。これはRorkが最も得意とする部類のUIで、「画像をグリッドで表示するギャラリー画面、タップすると全画面プレビューが開く仕様で作って」と伝えると、かなり完成度の高い初期バージョンが出てきました。
詳細表示画面から壁紙を保存する「ダウンロードボタン」の配置も、自然言語で数回調整するだけで理想に近い位置になりました。
苦戦した部分:
画像の読み込み時のスケルトンアニメーション(読み込み中に表示されるグレーの枠)の調整が難しかったです。「もう少しフェードインをゆっくりに」という指示が通りにくく、最終的にはRorkが生成したコードを直接編集して対応しました。生成AIは全体の骨組みを一気に組むのは得意ですが、こうした感覚的な微調整は、出てきたコードに人が手を入れたほうが速い場面もあります。
iOSでは壁紙を「アプリから直接設定」できない——ここが設計の分かれ目
ここが、壁紙アプリを作る前に一番知っておきたい点です。iOSには、アプリからホーム画面やロック画面の壁紙をプログラムで設定する公開APIがありません。設定を試みる非公開APIは存在しますが、それをApp Storeに提出するとリジェクトされます。「◯◯を壁紙に設定」ボタンで完結するアプリを作りたくても、その体験は公式には作れないのです。
現実的な設計は一択です。まず画像を写真(カメラロール)に保存し、そのあと「写真アプリ、または設定アプリから壁紙に設定してください」と利用者に案内します。Rorkが生成するのはReact Native(Expo)ベースのアプリなので、保存には expo-media-library を使います。
import * as MediaLibrary from 'expo-media-library';
import * as FileSystem from 'expo-file-system';
// 壁紙をカメラロールに保存する。iOSでは「壁紙に直接設定」はできないため、
// ここでの役割は「フル解像度の画像を確実に写真へ渡す」ことに絞る
async function saveWallpaper(remoteUrl) {
const { status } = await MediaLibrary.requestPermissionsAsync();
if (status !== 'granted') {
// 権限が拒否されている場合は、設定アプリへの導線を出す
return { ok: false, reason: 'permission-denied' };
}
const target = FileSystem.cacheDirectory + 'wallpaper.jpg';
const { uri } = await FileSystem.downloadAsync(remoteUrl, target);
await MediaLibrary.saveToLibraryAsync(uri);
return { ok: true };
}この制約を逆手に取ると、保存直後の一言が体験の質を決めます。私は保存が成功したら「写真アプリを開く」ボタンと、3ステップ(写真を開く→共有→壁紙に設定)の短い案内を出すようにしました。制約そのものは変えられないので、案内の丁寧さで差をつけるという考え方です。「ホーム画面/ロック画面/両方から選べます」といった説明も、アプリ側の画面ではなくこの案内文の中で伝えます。
Rork内のプレビューだけではこの保存と権限まわりの挙動は確認しきれないので、Rork Companionで実機確認をしながら繰り返し調整しました。写真ライブラリへのアクセス許可ダイアログは、実機でしか本当の見え方が分からない部分です。
画像素材の準備——ここに一番時間がかかった
技術的な実装より、コンテンツの準備に一番時間がかかりました。壁紙として使用する画像は、著作権のクリアなものを使う必要があります。私は自分で撮影・制作した画像と、CC0ライセンスの素材を組み合わせました。
解像度はiPhoneの最大表示を想定して用意します。近年の大型モデルは概ね1290×2796px前後なので、余裕を持たせて長辺3000px程度で書き出し、そこから配信用に最適化するのが扱いやすいです。ファイルサイズは体感速度に直結するので、WebPへの変換をおすすめします。
# 元画像をWebPへ変換する。品質82前後が、画質と容量のバランス点になりやすい
cwebp -q 82 wallpaper_3000.png -o wallpaper_3000.webp
# フォルダ内をまとめて変換したいとき
for f in originals/*.png; do
cwebp -q 82 "$f" -o "webp/$(basename "${f%.png}").webp"
done同じ画像でも、JPEGより2〜3割ほど小さくなることが多く、グリッドのスクロールがなめらかになります。ただし壁紙として「保存」する瞬間だけは、劣化を避けたいので元の高品質な画像を渡すようにし、一覧のサムネイルだけWebPにする、という二段構えにしました。
App Review時に「画像の著作権はどこに帰属するか」を確認されることがあるので、この準備段階で出典と権利のメモを残しておくことをおすすめします。差し戻しの一次対応が驚くほど楽になります。
収益の組み立て方——UXを壊さない広告の置き場所
壁紙アプリは無料で配布し、広告で運用するモデルが多いジャンルです。私も個人開発では広告収益を軸に長く運用してきました。ここで大事なのは、作品としての見え方を広告で壊さないことです。
私が落ち着いた置き場所は、次の考え方です。
| 広告の種類 | 置く場所 | 意図 |
|---|---|---|
| インタースティシャル | 保存アクションの直後 | 操作の区切りで自然に挟む。表示は数回に1回へ頻度制限 |
| リワード | 限定パックの解放 | 見たい人だけが見る。強制しない |
| バナー | 原則置かない | 壁紙の一覧やプレビューの上に常設しない |
いちばん避けたいのは、全画面プレビューの上にバナーを重ねることです。壁紙は「その画像を大きく気持ちよく見せる」のが価値の中心なので、そこに広告を乗せると体験そのものが目減りします。インタースティシャルも毎回出すと離脱に直結するため、保存3回に1回程度から始めて、実データを見ながら頻度を詰めていきました。焦って表示回数を増やすより、長く使ってもらってセッションの総量で稼ぐほうが、この種のアプリでは結果的に収益が安定します。
App Store審査——通過するまでの道のり
最初の申請は、スクリーンショットの仕様が要件を満たしていないという理由で差し戻されました。Rorkで作ったアプリのスクリーンショットをそのまま使っていたのですが、App StoreにはiPhoneの機種別に異なる解像度のスクリーンショットが必要です。
Figmaで各デバイスサイズのスクリーンショットを作り直し、再申請したところ承認されました。審査を通過するまでに要した時間は最初の申請から約6日間。差し戻しから再申請までの調整を含めると合計10日程度でした。これはアプリの内容によって大きく異なりますが、差し戻しは想定内として準備しておいた方が気持ちの上でも楽です。
なお、壁紙アプリで審査時に見られやすいのは、権利まわりと「実質的な機能があるか」の2点です。画像を並べて保存するだけでは薄いと判断されることもあるため、お気に入り保存やカテゴリ分けなど、最低限の「アプリらしさ」を1つ2つ入れておくと安定します。
リリース後の運用で分かったこと
リリース後1ヶ月の数字を振り返ると、ダウンロード数が一番伸びたのはリリース直後ではなく、3週間後にApp Store内検索での順位が上がってきたタイミングでした。
キーワード設定(App Store Connect内の「キーワード」欄)が重要で、「壁紙」「wallpaper」だけでなく、「スマホ 背景」「iPhone 壁紙 おしゃれ」といった複合キーワードを入れておくことで、幅広い検索クエリで表示されるようになりました。100文字の枠は空白で区切らずカンマで詰めると、より多くの語を登録できます。
Rorkで作ったアプリをApp Storeで継続的に運用するうえで一番コストがかかるのは、開発よりも「コンテンツの更新」です。週次または月次で新しい壁紙を追加するサイクルを最初から設計しておくと、長期的な運用が格段に楽になります。私は追加する画像のストックを常に1ヶ月分先回りで用意しておき、更新が滞らないようにしています。
これからRorkで同じことをやる方へ
Rorkでウォールペーパーアプリを作ることは、個人開発の入門として非常に適していると感じました。機能がシンプルなのでRorkの得意な範囲に収まりやすく、コンテンツ(画像)の質でアプリの個性を出せるので、エンジニアリング以外の強みを活かしやすいジャンルです。
最初から完璧な100枚入りアプリを目指すより、厳選した10〜20枚で「この選択が好き」と言ってもらえるアプリを目標にする。そこにiOSの制約を理解した保存導線と、体験を壊さない広告設計を足す。この順番が、長続きする個人開発の入口だと考えています。まずは1枚、自分が本当に良いと思える壁紙から始めてみてください。お読みいただきありがとうございました。