iOSアプリ「うちのデグー」を、ヒーローズ・リーグ2026に応募しました。

キャッチコピーは、小さな毎日を、家族みんなで残す。 です。

この記事では、前半で一般の方向けに「家族で世話の抜け漏れを減らすアプリ」としての使い方を、後半で技術者向けにCloudKit・Widget・AppIntentの構成を紹介します。作品ページと紹介動画へのリンクは記事の最後にあります。

応募概要

  • 応募先:ヒーローズ・リーグ2026
  • 作品名:うちのデグー
  • キャッチコピー:小さな毎日を、家族みんなで残す。
  • プラットフォーム:iOS(App Storeで公開中)

紹介動画

動画が表示されない場合は、YouTubeで見るからご覧ください。

なぜ作ったのか

我が家には「こげ」というデグーがいます。

デグーのお世話は、餌、水、掃除、部屋んぽと、毎日の細かな作業の積み重ねです。家族で暮らしていると、これを誰か一人が全部やるわけではありません。朝は自分、夜は家族、ということが普通にあります。

そこで起きるのが、「もう餌あげた?」という確認の問題です。

あげたかどうか分からないので、念のためもう一度あげる。逆に、誰かがあげただろうと思って、誰もあげていない。水の交換も、掃除も同じです。一つひとつは小さなことでも、毎日のことなので抜けや重複が起きやすい。

必要なのは日記ではなく、家族全員が「今日は誰が何をしたか」を同じ画面で見られることでした。それがこのアプリの出発点です。

どんなアプリか

ワンタップでお世話を記録

ホーム画面の「ワンタップ記録」で、餌やり・給水・掃除・部屋んぽなどをすぐに記録できます。お世話の直後に、手を止めずに残せることを一番大事にしました。

体重・日記・リマインダー

体重を記録してグラフで振り返れます。写真付きの日記や、お世話のリマインダーも管理できます。

体重は、記録を振り返るための用途として使っていただくものです。体重の目安や変化の見方については、デグーの体重の目安・月齢別の体重表の記事にまとめています。

家族で共有

招待コードで家族が参加でき、お世話の記録を家族で共有できます。誰が記録したかも表示されるので、「今日は誰が餌をあげたか」がひと目で分かります。

複数のデグーに対応

デグーは複数で飼うことも多い動物です。複数のデグーを登録して、それぞれの記録を管理できます。

ウィジェットから記録

ホーム画面のウィジェットから、アプリを開かずに記録できます。

部屋んぽタイマーなど

部屋んぽ(ケージの外で遊ばせる時間)のタイマーなど、お世話の場面で使う機能も入れています。

ここから技術の話

技術構成

役割使っているもの
言語・UISwift / SwiftUI
端末内のデータSwiftData
家族共有CloudKit(公開データベース)
変更の通知CKQuerySubscription
ウィジェットWidgetKit / App Group
ウィジェット・ショートカットからの操作AppIntents
部屋んぽタイマーのLive ActivityActivityKit
グラフSwift Charts
アプリ内課金/機能解放StoreKit 2
PDFレポート生成ImageRenderer

独自サーバーを持たずに、家族で共有する

家族共有を実現するために、このアプリは独自のサーバーを持っていません。CloudKitを使った家族共有です。

家族はそれぞれ自分のiPhoneを使い、別々のApple IDを持っています。この別Apple ID間で記録を共有するために、CloudKitの公開データベースを使い、家族ごとの記録をまとめる構成にしました。

6文字の招待コード

家族の参加は、6文字の招待コードで行います。最初の一人が家族を作ると招待コードが発行され、ほかの家族はそのコードを入力して参加します。

アカウント登録やメールアドレスの交換をしなくても、コードを伝えるだけで家族に加われる。家族向けのアプリでは、この「最初の一歩」の軽さが大事だと考えました。

同期の衝突は last-write-wins

複数の端末から同じ記録を編集すると、どちらの変更を残すかを決める必要があります。このアプリでは、最後に書き込まれた変更を採用するlast-write-winsの方針にしています。

お世話の記録は、同じ項目を家族が同時に編集し合うような性質のデータではありません。複雑な結合ロジックを持つより、シンプルで予測しやすい規則の方が、家族向けのアプリには合っていると判断しました。

削除は tombstone で伝える

同期で見落としやすいのが削除です。ある端末で記録を消しても、ほかの端末からは「消えた」のか「まだ届いていない」のかが区別できません。区別できないと、消したはずの記録が別の端末から戻ってきてしまいます。

そこで、削除した記録はすぐには消さず、「削除済み」という印(tombstone)を残して同期します。ほかの端末はこの印を受け取って、自分の手元からも記録を消します。

CKQuerySubscription で記録の追加を知らせる

家族の誰かが記録すると、ほかの家族の端末にも反映される必要があります。CloudKitのCKQuerySubscriptionを利用して家族の記録追加などを通知し、その通知をきっかけに最新データを取得します。

通知はあくまで「新しい記録がある」ことを知らせるきっかけで、データそのものは通知を受けた端末がCloudKitから取得します。

Widget・AppIntent・ActivityKit で日常操作を短くする

毎日何度も行う記録だからこそ、アプリを開くまでの手間も削りたいと考えました。

  • WidgetKit:ホーム画面のウィジェットに記録の状況を表示します
  • AppIntents:ウィジェットのボタンから、アプリを開かずに記録できます
  • App Group:アプリ本体とウィジェットでデータを共有します
  • ActivityKit:部屋んぽタイマーをLive Activityとして表示します

技術構成図について

ProtoPediaの作品ページには、CloudKitを使った家族共有の技術構成図を掲載しています。これは実際のアプリ画面ではなく、技術構成を説明するための図です。端末・CloudKit・ウィジェットの関係を図で確認したい方は、ProtoPediaの作品ページをご覧ください。

ヒーローズ・リーグで見てほしいところ

  1. 単なるペット日記ではなく、家族で役割を共有するための設計 記録を残すこと自体より、「今日は誰が何をしたか」を家族で共有して、お世話の抜けや重複を減らすことを目的にしています。
  2. 独自サーバーを持たず、CloudKitで共有を実現していること CloudKitの公開データベースと6文字の招待コードで、別Apple ID間の家族共有を実現しました。last-write-wins と tombstone による削除伝播で、同期の扱いをシンプルに保っています。
  3. Widget / AppIntent / ActivityKit まで含めて、日常の操作を短くしていること 毎日何度も行う記録だからこそ、アプリを開かずに済む導線まで作り込みました。

作品ページ・紹介動画・ダウンロード

ProtoPediaでは、作品の詳細と技術構成図を確認できます。 ProtoPedia「うちのデグー」

YouTubeでは、紹介動画を見られます。 紹介動画を見る(YouTube)

App Storeから、iPhoneで利用できます。 App Storeで「うちのデグー」を見る

アプリの機能は「うちのデグー」アプリページに、家族でお世話を記録するコツはこちらの記事にまとめています。YutarouLabsのほかのアプリはアプリ一覧からご覧いただけます。