fat cat

https://github.com/kohapizza/fatcat

Swift

GitHub

「AR × 猫 × 位置情報」で、憂鬱な場所に癒しを届ける🐈

Koharu SAEKI

Haruka Kita

Konami Shu

推しアイデア

猫に煮干しをあげると、猫が喜び、少しずつ成長していく —— いずれ猫があなたやあのビルを超える日が来るかも?? ARならではの、五感で楽しむ癒し体験をお届けします🐟✨

作った背景

「学校や会社に行かなきゃいけないけど、気分が乗らない…」そんな憂鬱を解決するためのアプリ。 行き先と時間をセットすると、その場所で猫があなたを待っている。 かわいい猫の存在が、今日を乗り越える力になるかも🐾

推し技術

現在地を含めた位置情報を使った部分! 設定した場所・時間に合わせて、AR空間に猫が出現🐈 現在地をリアルタイムで取得し、半径1km以内に入るとBGMとともに猫が登場🎶

プロジェクト詳細

はじめに

「せっかくハッカソンに参加するなら、新しい技術を使ってみたい!自分の手元で使えるものを作りたい!!!全員Macユーザー!!!!!」ということで、Swiftを選びました。ちなみに、メンバーの2/3人がSwift初挑戦でした🦆(Xcodeのインストールから始めました🦆) 事前準備・事前学習は完全にゼロで、2日間で開発を行いました!初技術を使った超短期間での開発と、とってもチャレンジした2日間でした🐈

生成AI

UIのモックアップ作成・データ構造/データフロー設計にClaude・コーディングにGemini・ChatGPT・Claude・Copilotを用いました。

アプリ概要

コンセプト

「学校や会社に行かなきゃいけない。でも、気分が乗らない…」そんな憂鬱な場所に、かわいい猫が待っていてくれたら——。 『fat cat』は、AR × 位置情報 × 猫の力で、憂鬱な場所に行くモチベーションをくれる癒し系アプリです! (ただ、単に憂鬱な場所だけでなく、好きな場所に癒しとして配置するという活用方法もあります!)

機能紹介

image

  • 指定した場所・時間に猫が登場 ... ユーザーが設定した目的地(例:学校や会社)と時刻に、AR空間で猫が現れる。

  • 猫に近づくと「餌をあげる」ボタンが出現 ... 半径1km以内に入ると、アプリがそれを認識し、AR体験が開始。

  • 猫が餌を食べに歩いてくる ... 餌をAR空間に置くと、猫が歩いて近づいてくるアニメーションつき。

  • 猫に煮干しをあげると少しずつ成長!...猫に餌をあげるたびに、AR上で猫が少しずつ大きくなる。

  • かわいい鳴き声やBGM ... 餌をあげたときには猫の喜ぶ声が流れ、指定した場所の近くに来るとBGMが再生される。

  • カメラ機能 ... 猫と一緒にAR写真も撮れる📸

技術スタック

  • 言語: Swift (SwiftUI採用)
  • AR/3DCG表示(ARKit, RealityKit)
  • 位置情報(CoreLocation)
  • データ保存(UserDefaults)

技術チャレンジ & 成長

今回、私たちは短期間で多数の技術を連携させました!!!:

  • ARKitで3Dモデルを表示し、アニメーションで猫が歩いてくる
  • 位置情報で、指定エリアに入ると猫が出現
  • 日時設定と緯度・経度変換によるイベントトリガー
  • 音声・BGMを組み合わせて、空間的な臨場感を演出
  • UserDefaultsでデータを保存、次回以降にも引き継ぎ可能 他にも、、、、
  • 2日間での開発!!!
  • 初めてのSwift!!!!!

技術

ここから先は具体的に特にこだわったアプリ内の技術について紹介していきます!!

データモデル

できるだけ最小の単位に分け、追加/削除のしやすさを意識してモデルを定義しました。

3Dモデルの表示

ARKitを使って、AR空間に3Dモデルを表示しています。 2つのオブジェクトを表示させるにあたって、位置関係の定義を工夫しました。初めは、オブジェクト同士がずれてしまうという課題がありましたが、位置関係を相対的に定義することで対応し、精度高く、オブジェクトを表示させています。

カスタムタブバーの実装

元々用意されているタブバーは以下のようにどのタブにも特に変わりがないものになっています。

今回のFat Catでは、ARカメラ機能とそれ以外とで区別したかったので、オリジナルのタブバーを実装しました。このカスタムタブバーのおかげで、ユーザにアプリ作成者の意図が伝わりやすくなっていると思います。

位置情報を使った体験

ユーザーが設定した「場所」と「時間」に合わせて、AR空間に猫が出現するのがこのアプリの特徴で、これを実現するために、以下のような技術を活用しています:

  • CoreLocationを使った位置情報取得 ... ユーザーの現在地をリアルタイムで取得し、設定された目的地との距離を計算。猫は、ユーザーが半径1km以内に入ったタイミングで出現させられる。

  • 住所検索 → 緯度・経度変換(ジオコーディング)... ユーザーが住所や地名を検索すると、自動で緯度・経度に変換。わかりやすいUIで目的地を指定できるよう設計。

  • UserDefaultsでのローカル保存 ... 指定した「場所」と「日時」、「猫の種類」は端末に保存され、次回起動時にも引き継ぎ可能。オフライン環境でも最低限の動作が可能。

  • 時間条件のチェック ... 位置だけでなく、設定された時間にも達している場合にのみ猫が出現。「その時間、その場所に行く理由」を自然に作り出せる体験へ。

  • エリア到達時のBGM再生 ... 指定エリアに入ると自動でBGMが再生され、ユーザーに猫が近くにいることを知らせる。音と空間が連動することで没入感をアップ。

Koharu SAEKI

@2bb8843b79519cb3