Design

予定を埋める器から実行の記録へ — 月カレンダーUIを設計し直す判断軸

マンスリーカレンダーを未来の予定を埋める器ではなく、過去の実行を記録する地図として設計し直すと、UI の判断軸が変わります。完了・途中・未着手の状態を色とドットで符号化しつつ詰め込みすぎない設計、空セルを失敗ではなく記録として扱う考え方、月全体の読みやすさと 1 日の情報量の両立を、iOS アプリ Calendar ToDo v2.2.0 の設計記録を起点に整理します。

2026年6月23日 09:08·8 min·SoraEndo
SoSoraEndo2026年6月23日 09:088 min2,221

動画で読む

カレンダーの役割を「予定の器」から「実行ログ」へ裏返す

結論から書きます。月カレンダー UI を「未来の予定を埋める器」ではなく「過去の実行を記録する地図」として設計し直すと、何を表示すべきかの判断軸がまるごと入れ替わります。前者は空白を「埋めるべき余白」として扱い、後者は空白を「やらなかった記録」として扱う。同じグリッドでも役割が違えば、最適な情報設計は別物になります。

きっかけは、2026 年 6 月に Zenn で読んだ iOS アプリ Calendar ToDo(v2.2.0 で月カレンダーを導入、App Store ID6756511434)の設計記録でした。作者はこのカレンダーを「予定表ではなく、自分の行動を見返すための実行ログの地図」として設計したと書いています(Calendar ToDo の月カレンダー設計)。予定を入れる場所ではなく、入れた予定にどう動いたかを残す場所。この一文で、私の中のカレンダー観がひっくり返りました。

正直に言うと、私は予定を立てるのは得意なのに、立てた予定の 8 割は実行されないまま月が変わります。Google カレンダーを 5 年使って、ある時から埋まった予定表を見返すのをやめました。理由は単純で、そこには「何を予定したか」しか残っておらず、「実際どう動いたか」が一切無かったからです。実行ログとして設計されたカレンダーは、まさにこの欠落を埋めにいく道具でした。

状態は色とドットで符号化する、ただし詰め込まない

状態の符号化(encode、情報を色や形に対応づけること)は、実行ログ UI の心臓部です。ただし全部を見せると破綻するので、Calendar ToDo は日付セルの下に小さなドットを置き、予定や状態の雰囲気を軽く伝える方式を採っていました。完了・途中・未着手を、文字ではなく点の有無と色で示す。セルを文字で埋めない判断が効いています。

私はかつて、自分のタスク管理で状態をカテゴリ別に 20 色まで増やして破綻させたことがあります。色が 7 色を超えたあたりで、どの色が何だったか自分でも思い出せなくなりました。色は強力な符号化チャネルですが、人間が前注意的(preattentive、意識して見る前に瞬時に区別できること)に処理できる色数は限られます。Apple の Human Interface Guidelines も、色だけに意味を負わせず形やラベルを併用するよう促しています(Apple HIG — Color)。状態は 3〜4 種に絞り、色とドットの位置で区別するのが現実的でした。

これは以前 DESIGN.md に値ではなく役割を書く で書いた話と地続きです。「赤」という値ではなく「未完了という役割」を先に決め、その役割に色を割り当てる。役割ベースで状態を設計しておくと、後から色を変えても意味が崩れません。

状態符号化セルでの見え方
完了塗りつぶしのドット静かに「済んだ」と分かる
途中半分のドット / 別色視線が少し引っかかる
未着手輪郭だけ / ドット無し主張しない
予定多数+3 の省略表示件数は伝えるがセルは崩さない

表にすると当たり前ですが、現場では「全部の予定をセルに出したい」という欲求との戦いになります。詰め込みたい衝動を抑える設計判断こそが、この UI の本体です。

空セルを「失敗」ではなく「記録」として扱う

空セルの意味づけが、予定表と実行ログを分ける最大の境界線です。予定表では空白は「まだ埋めていない余白」ですが、実行ログでは空白は「その日は動かなかった」という立派な 1 つの記録になります。空白を罪悪感の対象ではなく、観察対象として置く。この転換が、カレンダーを見返す心理的なハードルを大きく下げます。

埋まっていないことを責める UI は、見返されなくなります。私が Google カレンダーを見なくなったのも、空いた予定が「サボった証拠」に見えたからでした。逆に、空白を淡々と記録として残す UI なら、「先週は火曜だけ動けた」という事実を冷静に受け取れる。空セルをグレーアウトで叱るのではなく、ニュートラルな余白として扱うだけで、振り返りの道具に変わります。

月全体の可読性と 1 日の情報量を両立させる

月表示の難しさは、1 日あたりの情報を増やすほど月全体が読みにくくなる、という逆相関にあります。Calendar ToDo はこの矛盾に、件数が多い日は +3 のように省略表示することで応えていました。予定が多いことは伝える、でもセルのレイアウトは崩さない。1 日のズームと 1 か月の俯瞰を、同じグリッドで両立させる工夫です。

ここで効くのが、月ビューの役割を「詳細を読む場所」ではなく「パターンを掴む場所」と割り切ることです。どの週に動けて、どの週が空いたか。月ビューが答えるべきはこの粒度の問いで、1 件ごとの詳細は日ビューに譲ればいい。役割の切り分けは、私が ピクセルパーフェクトを「意図の一致」として捉え直す で書いた、「何を一致させ、何を捨てるかを先に決める」判断と同じ筋でした。

手元の iPhone と MacBook で実際に何度かカレンダー UI を試作した範囲でも、セルに 2 件以上のテキストを出した瞬間に月全体が情報の壁になりました。1 セル 1 ドット + 件数バッジ、という制約を先に引くほうが、結果的に読み返される画面になります。

自分の UI に落とすときの判断軸

最後に、自分の UI に落とすときの判断軸を整理します。カレンダーに限らず「記録を見返させたい UI」を作るときは、(1) その器が記録する対象は未来か過去か、(2) 状態を何種類まで符号化するか、(3) 空白に何の意味を与えるか、の 3 つを先に決めると設計がぶれません。

私の運用ルールはこうしました。器の役割を 1 文で言い切る(「これは実行を見返す地図だ」)。状態は 3〜4 種に絞り、色とドット位置で区別する。空白はグレーで叱らず、ニュートラルに残す。そして 1 セルに出す情報は 1 ドット + 件数バッジまでに制約する。制約を先に置くほど、後の実装判断が速くなりました。

この記事は、iOS アプリ Calendar ToDo の設計記録を起点に、私自身の判断軸を加えて書いています。下書きは AI が起こし、運営者である私が公開前に内容を確認・編集して公開しました。

よくある質問

予定表アプリと実行ログ型カレンダーの一番の違いは何ですか?
空白の扱いです。予定表は空白を「埋めるべき余白」とみなしますが、実行ログ型は空白を「その日は動かなかった」という記録として扱います。同じグリッドでも、見返す目的と心理的ハードルが変わります。
状態を色で表すとき、何色まで使ってよいですか?
完了・途中・未着手など 3〜4 種に絞るのが現実的です。前注意的に区別できる色数は限られ、色が増えるほど意味を思い出せなくなります。色だけでなくドットの有無や位置を併用すると安定します。
予定が多い日はどう表示すればいいですか?
全件をセルに出すとレイアウトが崩れます。Calendar ToDo のように `+3` の省略表示で「多い」という事実だけを伝え、詳細は日ビューに譲ると、月全体の可読性を保てます。
この設計はカレンダー以外にも応用できますか?
できます。記録を見返させたい UI 全般に、(1) 記録対象は未来か過去か、(2) 状態を何種類符号化するか、(3) 空白に何の意味を与えるか、という 3 つの判断軸がそのまま使えます。

参考文献

  1. Calendar ToDo の月カレンダー設計(Zenn / okyugog)
  2. Calendar ToDo - App Store
  3. Apple Human Interface Guidelines — Color

Reaction

Share

X (Twitter)