こういうのでいいんだよ、こういうので。

https://github.com/Koseeee-27/kouiunodeiindayo-ios

Swift

Figma

「こういうのでいいんだよ」を残すご飯記録アプリ

小林 航世

松下若菜

kae

推しアイデア

「記録するために撮る」のではなく、「撮りたいから撮る」へ。余計な手間の摩擦を無くすことで、「わざわざ撮らないご飯」が自然と残っていくスムーズな体験をつくります。

作った背景

ごちそうは写真に残すのに、カップ麺や卵かけご飯など身近な食は記録に残りません。そんな「わざわざ記録するほどじゃないけれど、残しておきたい日常飯」に着目しました。

推し技術

初モバイルアプリ‼️ 初Swift‼️ Jev‼️(驚き屋の叫び)

プロジェクト詳細

1|概要

image

「こういうのでいいんだよ、こういうので。」は、 いつものご飯を気軽に撮って残せるご飯記録アプリです。

アプリを開くとすぐにカメラ。 1枚撮るだけで、日付とともに自動で保存されます。

ジャンルの仕分けは、写真を上下左右に払うだけ。 今は面倒なら、後回しにしてもかまいません。

余計な手間をなくし、自然と記録が続いていく体験を目指しました。

2|テーマ「インクルーシブ」の解釈

「インクルーシブ」には、包み込む・受け入れるという意味があります。

私たちは、「映えているものだけが、人に伝える価値がある」という価値観にとらわれず、一人ひとりの“好き”や“伝えたい”を受け入れることだと考えました。

豪華な料理やおしゃれなカフェだけではなく、 カップラーメンや卵かけご飯のような、普段なら写真に撮らないご飯もある。

「これ、めっちゃおいしかった」 「こういうので、いいんだよ。」

そんな気持ちは、写真が映えているかどうかには関係ありません。

だからこそ、「映えているか」「特別か」に関係なく、その人が「残したい」と思ったご飯を、そのまま受け入れられる。

それが、私たちが考える「インクルーシブ」です。

3|課題

「いつものご飯」は、記録に残りにくい。

  • そもそも写真を撮らない
  • 撮っても、カメラロールの中で他の写真に埋もれる
  • 食事記録アプリは、写真に加えて入力が必要
  • 入力や分類が面倒で、記録が続かない

せっかく「おいしかった」と思ったご飯も、記録するまでのハードルが高いせいで、残らないまま終わってしまいます。

4|撮って払うだけの体験

記録に必要な操作を、できるだけ減らしました。 撮る → 保存される → AI の候補を見て払う(おまかせ・後回しでも OK)

  • 食べる前:アプリを開く → 1枚撮る。入力はありません
  • 食べたあと:撮った1枚に、AI がジャンルとタグの候補を出します。合っていれば、その向きに払うだけ。「おまかせ」を押せば、自信のある写真は AI が勝手に仕分けます。そのままにしておいても大丈夫です
  • 撮り忘れた日:アルバムからまとめて取り込めます。ご飯らしい写真だけが仕分け待ちに入ります
  • 後日:ホームや一覧で見返して、「これ、おいしかったな」と思い出す。「前に食べたうまいラーメン」のように、言葉でも探せます

5|機能

① 開いたら、すぐ撮れる

アプリを開くと、タイトルのあとすぐにカメラが起動します。食べる前にサッと1枚撮れます。

② 撮るだけで記録

撮った写真はその場で保存され、日付も自動で付きます。文字を打つところはありません。

③ 払うだけで仕分け image

写真を上に払うと「食べ物」、左は「飲み物」、右は「デザート」、下は「なし」。払った瞬間に手元が震えて、仕分けが決まります。AI の候補があるときは、そのジャンルのラベルが赤い点線で囲まれるので、迷わず払えます。

④ 仕分けは後回し OK

撮った直後に仕分けるのは、今撮った1枚だけ。仕分けていない写真は溜めておけて、ホームや一覧の吹き出しから、時間のあるときにまとめて仕分けられます。

⑤ 「う、うまい」でお気に入り

特においしかったご飯には、写真の右上の「う、うまい」を押して、ハンコを押すようにお気に入りにできます。押すとハンコが「ドン」と押し込まれ、手元が震えます。SEも付いてます。ホームと一覧では、その写真に「うまい」のハンコが付きます。

⑥ ホームと一覧で見返す

image image

ホームには、今日の一枚を大きく出します。映えないご飯が、ここでは主役です。一覧では、これまでのご飯を月ごとに並べて眺められます。

⑦ AI が候補を出す・「おまかせ」で勝手に仕分ける

撮った写真に、AI(Jev)がジャンルとタグ(ラーメン・麺類・中華など)の候補を出します。候補はあくまで「候補」で、決めるのは自分です。

仕分けの画面の「おまかせ」を押すと、AI が自信を持てた写真だけが、そのジャンルの方向へ勝手に飛んでいきます。迷った写真は、人のために残しておきます。

⑧ アルバムからまとめて取り込む

撮り忘れた日や、ほかのカメラで撮ったご飯も、アルバムから最大30枚まとめて取り込めます。ご飯らしい写真だけが仕分け待ちに入り、日付は撮った日になります。

⑨ タグで記録を整える

image

記録の詳細では、付いているタグを見て、外したり足したりできます。AI の候補がなくても、一覧から選ぶだけです。

⑩ 言葉で探す

一覧の上の欄に「前に食べたうまいラーメン」のように普段の言葉で書くと、合う記録に絞り込めます。読み取った条件は「ラーメン」「うまい」「今月より前」のように表示されます。

6|世界観のこだわり

image

名前は、『孤独のグルメ』の「こういうのでいいんだよ、こういうので」から取りました。

豪華な料理だけが「いいご飯」ではない。カップ麺でも、卵かけご飯でも、 自分がおいしいと思えば、それでいい。

この世界観を、見た目の飾りではなく、触ったときの体験で出すことにこだわりました。

  • マンガのコマ:写真を墨の線のコマ枠で囲み、いつものご飯を一コマのように見せる
  • ハンコ:お気に入りは「う、うまい」「うまい」のハンコ。デザイナーが作りました
  • 払ったときの手応え:仕分けが決まる瞬間に手元が震える

7|足さなかったもの

レシピ、カロリー、メモの機能は入れていません。

入力の手間がある限り記録は続かない、と考えたからです。健康管理やカロリー計算を目的にせず、写真を残した先の楽しみ方はユーザーに任せます。

  • 友達に見せたい
  • 昨日何を食べたか思い出したい
  • 自分だけの記録として残したい

「こういうのでいいんだよ」です。

8|技術構成

  • アプリ:Swift / SwiftUI
  • 保存:記録は SwiftData、写真は端末内のファイルに保存。サーバーに写真は置きません
  • 画像認識:Apple の Vision を端末の中で動かし、写真から「写っているものの名前」(例:ramen 0.62)だけを取り出します
  • 中継サーバー:Cloudflare Workers(TypeScript)。アプリからの問い合わせを受けて、代わりに AI を呼びます。AI を使うための鍵をアプリに入れずに済み、届いた単語も保存しません
  • AI:Jev(TypeSafe AI)を Vercel AI Gateway 経由で呼び、ジャンル・タグ・検索の条件を、決まった選択肢から確率つきで選ばせます
  • 下タブ:iOS 標準ではなく自作。ホームと一覧を、指についてくる横スワイプで切り替えられます。見た目は Liquid Glass
  • 仕分け:4方向のスワイプを自作し、決まった瞬間に振動を返します

写真を外に出さない AI

個人のご飯の写真を預からないために、写真そのものは iPhone から出しません。外に送るのは、Vision が取り出した名前の英単語と、検索の言葉だけです。

Jev を選んだ理由

Jev は、文章を作る AI ではなく、決まった選択肢から 1 つ選んで確率を返す AI です。速くて、変な文章を返しません。この確率を「AI に任せていいか」の判断に使い、確率の高い写真だけを「おまかせ」で仕分けます。

つながらなくても止まらない

撮る・保存・仕分け・見返すは、通信なしで動きます。AI が混み合って失敗したときは、少し待って問い合わせ直します。それでもだめなら候補が出ないだけで、記録はそのまま続けられます。

image

9|苦労した点と判断

Cloudflare の決済が通らない

Jev は最初、Cloudflare の Workers AI から呼ぶ予定でした。ところが、使うための前払いのカード決済が、何度試しても通らず、ここで詰まりました。最終的に、同じ Jev を扱っている Vercel AI Gateway に呼び先を切り替えました。アプリと AI のあいだに中継サーバーを挟んでいたので、アプリには手を入れずに切り替えられました。

ポスターとアプリは、考えることが違う

デザイナーが普段作っているのは、ポスターのような一枚の絵です。アプリの画面は、指で触る・押す・払うものなので、ボタンの大きさや、画面から画面への流れまで考える必要があります。スマホのアプリの画面を考えるのは初めてで、難しかったところです。

デザイナーとエンジニアの連携

デザイナーが作った見た目を、実際のアプリの画面に落とし込むのも大変でした。思い描いた見た目と、アプリで組める形が合わないこともあり、細かい UI の調整を何度もやりとりしました。

10|チームの進め方

エンジニア2人とデザイナー1人のチームです。

  • 使ったツール:Notion(決めたことの記録)・Discord(連絡)・Figma(デザイン)・GitHub(開発)・Claude Code(AI との開発)

イメージを先に見せてから相談する

image

image

デザイナーとは、先に Claude の Artifact で画面のイメージを作って共有し、それを見ながら UI を相談しました。言葉だけでは伝わりにくい「こんな雰囲気」を、実際の画面の形にしてから話すことで、話が早く進みました。そのイメージを元に、ロゴやハンコ、画面のデザインをデザイナーに作ってもらいました。

image

AI と開発する

開発は実質2人。1つの Issue を1つのブランチ、1つの AI とのやりとりで進め、ルールはリポジトリの AGENTS.md に書いて、誰が AI に頼んでも同じ進め方になるようにしました。

11|挑戦と成長、これから

App Store でのリリースは今回のハッカソンの期間には間に合わなかったので、後日公開します!

「今日は記録しなきゃ」ではなく、「これ、撮っとこ。」と思ってもらえる。 そして後から見返したときに、「あー、これおいしかったな。」と思い出せる。

何気ないご飯が、ちょっとだけ特別な記録になる。

それが「こういうのでいいんだよ、こういうので。」の目指す体験です。

image

小林 航世

@11f7f0df70a0c745