6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自分の感性に合うアプリがなかったから、自分で作ってApp Storeに公開した話。

Last updated at Posted at 2025-12-22

はじめに

この記事は DENSO アドベントカレンダー 2025の22日目の記事です。

今日はGlassTimerというMacアプリを開発し、App Storeにリリースしたお話です。
https://apps.apple.com/jp/app/glasstimer/id6754670509?mt=12

CleanShot 2025-12-09 at 19.32.06.png

開発背景

時間というのは本来、1秒2秒3秒・・と「積み上がっていく」ものですが、
納期までの残り時間や会議の残り時間など、
「積み上がる」というよりむしろ「減っていく」ものとして認識する方が、仕事上は使いやすかったりします。

なので、砂時計のように時間が「減っていく」ことが可視化されるアプリが欲しいと考えました。

image.png


でも、もうカウントダウンタイマーアプリなんか世の中に沢山ありますよね?

CleanShot 2025-12-23 at 00.06.16.png



ええ。ありますとも。。。あるけど、、、



CleanShot 2025-12-23 at 00.11.56.gif



自分が欲しいのは、

  • 時間が減っていく感じが可視化されていて、
  • PCの画面上に常時表示されていて、(且つ、さりげなく)
  • シンプルで美しいデザインで
  • セットした時間になったら画面いっぱいに思いっきり知らせて欲しい

といったわがまま仕様。こんなもんは探しても無いので、自分で作ることにしました。
そして、ユーザは自分なので自分が圧倒的に欲しいと思える仕様で研ぎ澄ましました。

いきなり完成品披露

こうなって
CleanShot 2025-12-22 at 23.59.28.gif

こう!
CleanShot 2025-12-23 at 00.02.37.gif

どうやって作ったの?

開発は Claude Code を使用し、XcodeBuildMCP を連携しながら進めました。
基本的には「こうしたい」と日本語で伝えるだけ。
Claude Codeがコードを書き、XcodeBuildMCPが自動でビルド・テストまで走らせてくれる感じです。

具体的なやりとりの例

  1. Mac用の線形プログレスバーのカウントダウンタイマーアプリを作って
    • ベースとなるプロジェクトファイル(SwiftUIのコード)が出てくる
  2. マウススクロールで設定時間を増減させたいんだけど
    • .onScrollWheel のハンドラを追加し、スクロールで時間増減機能追加
    • CleanShot 2025-12-23 at 00.57.09.gif
    • (動画じゃ分かりづらいですが触ってみるとめちゃくちゃ気持ち良いです。)
  3. App Store申請できる設定を入れて
    • Hardened RuntimeやdSYMなどをXCConfigに自動追記
      • Hardened Runtime
        • macOSアプリのセキュリティ機能。App Store申請に必要
      • dSYM
        • クラッシュレポート解析用のシンボルファイル。App Store提出時に必要

製作時間

約2時間

工夫したところ

サイズの微調整、色味、フォントなど。
自分の感性に沿わないところを妥協せずに細かく何度でも指摘すること。
「これくらいでいいや」ってなるくらいなら、最初から自分で作ってないので。

Let's App Store申請!!

必要なもの

  • Apple Developerへの登録(年99ドル)

準備物 (作成方法は後述)

  • App Store掲載用画像
  • Privacy Policy, 問い合わせ先サイト

作業する上であると良いもの

  • 生成AI搭載のブラウザ (Dia, Atlasなど)

申請手順

1. App Store Connect 申請フォーム入力

以下のような記事を参考にし自力で申請フォームを埋めるか、

もしくはDiaやAtlasを使用し、AIと対話しながら入力フォームを埋めていきます。
CleanShot 2025-12-23 at 01.42.23.png

自分は後者のAtlasを使用し入力フォームを埋めていきました。
※AIが間違ったことを言ってないかファクトチェックは実施してください。

基本は文章入力ですが、以下の2点は別途作成が必要です。

  • App Store掲載用画像
  • Privacy Policy, 問い合わせ先サイト

2. App Store掲載用 画像作成

App Storeに掲載されるTop画像を作っていきます。CleanShot 2025-12-23 at 02.09.02.png

ChatGPTでもなんでも良いですが、美しい画像が作りたかったので、
今回はMidjourneyを使用し背景画像を生成しました。

CleanShot 2025-12-23 at 02.00.19.png

そしてCanva等を使用し、背景画像と良い感じのフォント・アプリの画像を重ねて完成
CleanShot 2025-12-23 at 02.02.19.png

作成した画像
image.png

image.png

image.png

3. Privacy Policy, 問い合わせ先サイト作成

App Storeの申請にはPrivacy Policyが明記されたサイトと、
問い合わせ先が記述されたサイトが必須です。
2つのサイトを作る必要はなく、1つのサイトで両方の内容を明記します。

今回は、STUDIOを使ってこれらのサイトを作成しました。

STUDIOの無料テンプレートを編集し必要な情報を入力するだけで、
App Store審査に通るPrivacy Policy, 問い合わせページが無料で簡単に作成できます。

今回は謎に英語で作ってしまいましたが、以下を参考ください。
 参考HP: GlassTimer Privacy Policy & Contact HP

完成したら、HPのURLを以下の2箇所に登録します。
CleanShot 2025-12-23 at 02.26.11.png

CleanShot 2025-12-23 at 02.28.53.png

4. アプリをApp Store Connectにアップロード

XCodeで対象のアプリをアップロードします。

  • Product / Archive / App Store Connect / Distribute
    CleanShot 2025-12-23 at 02.45.49.png

これで準備完了!!

いざ、審査に提出!!

まぁ、すんなり通ることは無いわけで…
CleanShot 2025-12-23 at 02.53.33.png

今回の却下理由一覧

1. 商標ガイドライン違反(Guideline 5.2.5)

Guideline 5.2.5 - Legal

Your app uses Mac in the app name and subtitle in a manner 
that is not consistent with Apple's trademark guidelines.

Indicating Mac compatibility in the app name is not necessary 
for the Mac App Store.
  • エラー内容
    • 最初に命名していたHiTimer for Mac の「Mac」は使用NG
  • 対応
    • GlassTimer に改名。App Store Connectの名称を変更し、PRODUCT_DISPLAY_NAME も合わせて更新。

2. 表示アプリ名と内部アプリ名の乖離

Guideline 2.3.8 - Performance

We noticed that your app name to be displayed on the App Store does not sufficiently match the name of the app displayed when installed on macOS.

App Store Name: GlassTimer
Name in Help: HiTimer
Name in MacOS Status Bar: HiTimer
Name in About/Quit: HiTimer
  • エラー内容
    • App Store上はGlassTimerなのに、インストール後やメニューではHiTimerのまま。
  • 対応
    • ソース内のハードコードされた"HiTimer"を削除し、WindowGroupでInfo.plistから動的取得するように変更。
      Shared.xcconfigINFOPLIST_KEY_CFBundleNameINFOPLIST_KEY_CFBundleDisplayNameを明示し、project.pbxproj内の上書き設定を削除してXCConfigを一元管理。

特にこの2の修正だけで3回ほどリジェクトをくらいました。

  • Claude Codeが「修正しました」と言って修正 → リジェクト
    • → 「まだ治せてませんでした。次こそ治しました」→ リジェクト
      • → 「次こそ…

という形で。

審査通過! App Storeにて公開!!

何はともあれ、最終的に審査を通過。
(このCongratulations!がめちゃくちゃ嬉しい)
CleanShot 2025-12-23 at 03.21.00.png

無事にApp Storeに公開されました。
実験的に、海外では有償・日本では無償という料金体系にしているので、
日本の方は無償で使用できます。

興味がある方は、ご利用ください。

CleanShot 2025-12-09 at 19.32.06.png

おわりに

生成AIを使うことで拘りを詰め込んだアプリが簡単に作成でき、App Store登録も簡単に行うことができました。
是非、皆さんも自分の拘りを解き放って開発をしてみましょう!

次回予告

自分の拘りが詰まったToDo、リマインダ、ハイパーリンク登録アプリを作り始めました。
CleanShot 2025-12-23 at 03.32.27.gif
またApp Store公開したら記事にします。

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?