CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
ブログ一覧

新しい iPhone 4機種をアプリ4本に対応させた3日間 — Claude Code に委ねた線、自分で決めた線

個人開発claude-codeiPhone対応indie-developerワークフロー

5月の頭、iPhone Air の発表があった翌日、私は4本のアプリを手元に並べて静かに腕を組んでいました。

2014年から個人開発を続けてきた壁紙アプリと癒し系アプリ — 累計5,000万ダウンロードを超えるラインナップですが、その全てに同じ修正が必要でした。新しい iPhone Air は 420×912、iPhone 17 Pro は 402×874、16/17 Pro Max は 440×956。3つの新しい解像度が一度に増えた瞬間でした。

各アプリの DefineManager.h には、デバイスの解像度ごとに振り分ける三項演算子が並んでいます。新解像度の追加は、1本あたり29箇所。それが4本。単純計算で116箇所の同じパターンの書き換えです。

「機械的な作業だな」と思いました。だからこそ、Claude Code に何をどこまで委ねるかを最初にきちんと決めようと考えました。今日はその3日間の記録を、判断の輪郭がはっきり見えてきた今だからこそ綴ってみます。

116箇所の三項演算子 — Claude Code が静かに引き受けてくれた線

最初のアプリ、Beautiful HD Wallpapers の DefineManager.h を開いたとき、書き換えが必要な行を1つずつ眺めて、軽く目眩がしました。

#define ITEM_HEIGHT (IS_IPHONE_17PRO ? 480.0f : \
                     IS_IPHONE_16PROMAX ? 520.0f : \
                     IS_IPHONE_15PROMAX ? 510.0f : \
                     IS_IPHONE_15PRO ? 470.0f : 450.0f)

このような三項演算子のチェーンが29個。新しい解像度ごとに、それぞれの定数を「画面比から逆算した適切な値」に書き換える必要があります。手作業でやろうとして、最初の3つを書き終えた段階で、私は無意識に深いため息をついていました。

これは私がやるべき仕事ではない、と直感的に思いました。「画面の比率から逆算した適切な定数を補間する」というルールが決まりさえすれば、あとは作業です。判断はルールに込められていて、適用は機械の領域です。

そこで Claude Code に、デバイスごとの解像度・ステータスバー・セーフエリアの数値表をまず読ませました。次に、既存の値が「画面幅に対して何パーセントなのか」を全箇所で計算させ、新解像度に対して同じ比率を適用するスクリプトを書いてもらいました。

このとき私が気をつけたのは、ルールを与えるだけで、Claude Code に「適切に補間してください」のような曖昧な指示は出さないことでした。「画面幅 × 比率」「ステータスバー高さ × 倍率」のように、計算式そのものを言葉にして渡しました。

結果として、29箇所の書き換えは1回のコミットで終わりました。これを4本のアプリで繰り返し、合計116箇所の対応が初日の午後で完了しました。

それでも私が決めなければいけなかったこと

ここからが、本当の意味で個人開発者の仕事でした。

新しい解像度に対応するということは、画面サイズ定数を増やすだけでは終わりません。壁紙アプリの場合、画像の見え方そのものが変わります。iPhone Air は縦に細長く、Pro Max は横にゆったりしています。同じ壁紙画像でも、機種ごとに「どこを見せるか」が違ってきます。

例えば、富士山と桜が写った壁紙を考えてみてください。Pro Max のような画面では富士山も桜も全体が見えます。iPhone Air のような縦長の画面では、富士山を中心に置くか、桜の枝を中心に置くか、どちらかを選ぶ必要が出てきます。

これは Claude Code には委ねられない判断でした。

私のアプリは2014年からずっと、壁紙の構図に対する判断を最も大切にしてきました。Beautiful HD Wallpapers でも Ukiyo-e Wallpapers でも、「ユーザーがホーム画面を開いたときに、最初に視線が落ちる位置に何があってほしいか」という問いを、画像1枚ずつに対して考え続けてきたつもりです。

iPhone Air のような縦長画面では、視線の落ちる位置が変わります。私は壁紙データベースを開いて、500枚以上の画像を1枚ずつ、新解像度で表示したときのプレビューを確認し、トリミング設定を1点ずつ調整していきました。

この作業は Claude Code には頼みませんでした。頼めないのではなくて、頼むべきではないと感じたからです。「ユーザーの視線がどこに落ちるか」は、開発者の判断であり、アプリの個性そのものです。ここを機械に委ねた瞬間、私のアプリが私のアプリでなくなる気がしました。

委ねる範囲を明確にすると、自分の判断が研ぎ澄まされる

3日間の作業を振り返って気づいたことがあります。Claude Code に何を委ねるかを最初にはっきり決めたことで、自分が決めるべきことが逆にくっきり見えるようになりました。

これまで個人開発を12年続けてきて、私はずっと「全部自分で考える」ことが当たり前でした。コードを書くのも、画像を選ぶのも、レイアウトを決めるのも、リリースの判断をするのも、すべて自分です。だから何を悩み、何を判断しているのかが、自分でも曖昧になることがありました。

Claude Code と並走するようになってから、私は1日の作業を始める前に「これはルール化できるか」「これは私の判断が必要か」と無意識に問うようになりました。ルール化できるものは Claude Code に手渡せます。ルール化できないものは、私が引き受けるしかありません。

iPhone Air 対応の作業中、Crashlytics に新しいクラッシュが上がってきました。CGContextSetRGBStrokeColornil の context で呼ばれたという内容です。スタックトレースを見ると、私が3年前に書いた画像合成のコードでした。

「これは Claude Code に修正案を出してもらおうか」と一瞬考えて、すぐに「いや、ここは私が読まなければいけない」と思い直しました。3年前の私が何を考えてこのコードを書いたのかは、私にしかわかりません。表面のバグだけ直しても、また同じ落とし穴に他の人が落ちる可能性があります。

このような判断ができるようになったのは、ここ最近の話です。Claude Code を使い始めて1年半が経って、ようやく「委ねる線」と「決める線」の輪郭が、自分の中で見えはじめた気がしています。

宮大工の祖父が言っていた「手を動かすことは信心」と、AI 時代の働き方

私の祖父は両方とも宮大工でした。子どもの頃、祖父の作業場で木屑の匂いに包まれながら、祖父が黙々と木材を削るのを眺めていた記憶があります。

祖父はあまり多くを語る人ではありませんでしたが、一度だけ「手を動かすことは、ひとつの信心なんだよ」と言ったことを覚えています。何のことか、子どもの私にはよくわからないまま、その言葉だけが胸に残りました。

大人になってアプリ開発を始めてから、何度かその言葉を思い出しました。コードを書くこと、画像を1枚ずつ調整すること、ユーザーレビューに1件ずつ返信すること — そういう「手を動かす作業」の一つひとつが、アプリへの誠実さの表れだと、自分なりに信じてきました。

AI が登場して、しばらくは「祖父が言っていた信心は、もう成立しないのかもしれない」と思った時期がありました。手を動かさなくても物が作れる時代に、手を動かすことの意味は何なのか、と。

でも、iPhone Air 対応の3日間を振り返ってみて、少し違う見え方になりました。

私が手を動かしたのは、500枚の壁紙のトリミング設定を確認した時間でした。1枚あたり10秒、500枚で1時間半。Claude Code がコードの定数を書き換えてくれている横で、私はただ画像を眺めて、視線の落ちる位置を1枚ずつ確認していました。

これは祖父の言う「手を動かす信心」に近いのかもしれない、と思いました。機械にできることが増えたぶん、自分が手を動かす場所が、より本質に近づいた気がしたのです。

Claude Code に何を委ねるかを決めることは、結局のところ「自分は何を作りたいのか」を問い直すことでもあります。アプリの個性を形作るのは、機械化できない判断の積み重ねです。それを引き受け続けることが、AI 時代の個人開発者の「信心」なのかもしれません。

3日後、4本のアプリを App Store Connect に出した夜に

5月8日の夜、4本のアプリを App Store Connect に申請しました。

iPhone Air・17 Pro・17 Pro Max の新解像度に対応した版です。新しいスクリーンショットも各機種ぶん撮り直し、Liftoff/InMobi/Unity Ads の AdMob メディエーション設定も追加し、Firebase Apple SDK の SPM 移行検証も終えました。3日間で、これだけのことが進みました。

審査を待つ間、私はもう一度4本のアプリを iPhone Air のシミュレーターで開いて、最初のホーム画面に並ぶアイコンと、設定したばかりの壁紙を眺めていました。

「Claude Code が一緒に走ってくれなかったら、この作業は1週間半はかかっていただろう」と思いました。同時に、「Claude Code に画像のトリミングまで委ねていたら、このアプリは今の佇まいではなかっただろう」とも思いました。

委ねる線と、決める線。

その境界は、最初から決まっているものではなくて、作業をしながら自分の中で少しずつ輪郭がはっきりしていくものなのだと感じます。AI に委ねることが下手だと、私は何でも自分でやろうとしてしまいます。AI に委ねすぎると、アプリの個性がぼやけてしまいます。

3日間で見えてきたこの感覚を、次のアプリの更新でも大切にしようと思います。Claude Code はとても優秀な相棒です。ただし、相棒にも引いてもらう線と、自分で引く線がある — その当たり前のことを、もう一度学び直した3日間でした。

もし同じように個人でアプリを作っている方がいたら、次の機種対応のタイミングで「これはルール化できるか、それとも自分の判断が必要か」を1つひとつの作業に問うてみてください。きっと、自分が何を大切にしてきたかが、思っていたよりはっきり見えてくるはずです。

お読みいただきありがとうございました。