ハコヅミを作る #68:ほかの人の料理を、自分の料理にコピーする(5日前の案を、作る前に読み直す)

#60 で、「人のレシピを、コピーしてよいか」を考えました。共有の機能が、まだなかったころです。そのときは、作らずに、案として Notion に書いておきました。

5日たって、共有ができました。ほかの人の料理を見て、「これ、作ってみたい」と思える状態です。案を、作ることにしました。

  • 案を、そのまま作らない
  • 守れないものが、2つある
  • しおりでは、足りない
  • 写すもの、写さないもの
  • 「コピーした」の印は、編集しても外れない
  • 食材は、自分の消耗品になる
  • 日本語の並び順で、テストが落ちる
  • 同じテストを、2回直す
  • 共有で、残るのはランキングだけ

案を、そのまま作らない

5日前の案の中心は、わたしが出したものでした。

他の人からコピーした料理は共有不可とする必要はありそう(真似しながら新規に作れば回避できてしまうが)

作る前に、もう一度、Claude Code に聞きました。

他の人のレシピを自分用にコピーして、かつ、コピーした料理はその人が共有できないようにすれば、問題ないのでは?と思うが、どうだろう?

返事の最初は、「大筋は、その考えでよい」でした。ただし、続きがありました。

「コピーした料理は共有できない」だけでは、守りきれないところが2つある。

5日前の案は、自分でも分かっているつもりでした。分かっているつもりのものほど、読み直さずに作ってしまいます。案は、書いた日の自分が、その日に分かっていたことの控えです。作る日には、もう一度、問い直します。


守れないものが、2つある

「コピーした料理は、共有できない」で止められるのは、人のレシピが、ボタン1つで、別の人の名前で広がることです。いちばん避けたいのは、これなので、効き目は大きい。

でも、それだけでは、守れないものがありました。

1つ目:写真

写真は、撮った人のものです。料理の写真に、人が写っていることもあります。

コピーで写真まで写すと、もとの人が共有をやめても、退会しても、その写真が、相手の手元に残ります。コピーした料理を「共有できない」ようにしても、写真が残ることは、止められません。

写真は、写さないことにしました。ギアを「欲しい」に入れる機能と、同じ線です。

2つ目:もとのレシピが、そもそも写しだったとき

共有した人が、料理の本や、レシピのサイトの文を、そのまま写して登録していたとします。規約では、それを共有にしてはいけない、と書いてあります。でも、守らない人は、いるかもしれません。

その料理をコピーすると、本の文が、コピーした人の手元にも残ります。コピーを「共有できない」にしても、これは防げません。コピーした人は、悪くないのに、です。

ここは、仕組みでは守れません。もとの共有を、通報で見つけて止める。規約に、写したレシピを共有にしない、と書いておく。どちらも、もうあるものです。この2つで受けると、割り切りました。

全部を仕組みで守れないときは、「どこまでを仕組みで守り、どこからを約束と通報で受けるか」を、はっきりさせておきます。はっきりしていれば、通報が来たときに、迷いません。


しおりでは、足りない

コピーではなく、「しおり(お気に入り)」にする手も、ありました。料理そのものは写さず、もとの料理への印だけを持ちます。

しおりなら、写真の問題も、写しの問題も、起きません。もとの人が共有をやめれば、しおりの先は、見えなくなります。何も、残りません。

それでも、コピーにしました。

ハコヅミの料理は、キャンプで「作る料理」として選ぶと、その食材が、持ち物チェックに入ります。カレーを選べば、じゃがいもとカレールーが、積み込むものの一覧に並びます。

そのためには、料理と食材が、自分のものになっている必要があります。しおりの先にある、ほかの人の料理では、自分の持ち物チェックに入れられません。

ハコヅミで、ほかの人の料理を「作ってみたい」と思う理由は、キャンプで作るためです。読むだけなら、しおりで足ります。作るためには、コピーが要ります。


写すもの、写さないもの

料理の詳細の画面に、ボタンを1つ足しました。

ほかの人の料理の詳細の画面の、下のほう。レシピの手順の下に「自分の料理にコピーする」のボタンと、写すもの・写さないものの説明

ほかの人の料理の詳細(架空のデータ)

写す 写さない
名前・カテゴリ・レシピ・参考の URL 写真(撮った人のもの)
食材の名前 おすすめ度・おすすめ理由(もとの人の感想)
だれの料理から写したか

参考の URL は、写すことにしました。もとの人が、「このサイトを見て作った」と書いた URL です。写すと、レシピの出どころが、コピーした人の手元にも残ります。出どころが分かるほうが、作る人にとっても、もとのサイトにとっても、よいと考えました。

だれから写したかは、ギアのときと同じ理由で、残しません。もとの人が退会したあとも、名前だけが残る、ということが起きないように。

「自分の料理にコピーする」を押したあと。ボタンの上に「自分の料理にコピーしました(コピーした料理を開く)」の知らせ。説明の下に「同じ名前の料理が、もう登録されています。」

コピーしたあと

コピーしたあと、「同じ名前の料理が、もう登録されています」と出ているのは、今コピーした料理のことです。画面を読み直すので、そうなります。気になるなら、コピーした直後は出さない、という直し方もありましたが、このままにしました。まちがいでは、ないからです。


「コピーした」の印は、編集しても外れない

コピーした料理には、「コピーした」の印を付けます。印の付いた料理は、共有の設定に関係なく、ほかの人には見えません。料理の編集の画面にも、共有のスイッチは出ず、代わりに、理由が出ます。

コピーした料理の編集の画面。レシピの手順の欄の下に「ほかの人の料理からコピーしたので、共有できません(編集しても、共有できないままです)。」

コピーした料理の編集の画面

迷ったのは、編集したら、どうするかです。

コピーしたあと、自分なりに手順を足したり、材料を変えたりすることは、ありそうです。半分くらい書き換えたら、もう自分の料理ではないか。そう考えることも、できます。

でも、「どこまで変えたら、自分のものか」を、アプリが決めることはできません。1文字でも変えたら外れる、なら、印は意味をなくします。

編集しても、印は外れないことにしました。出どころは、人のレシピのままだからです。外す手段も、作っていません。

すっかり自分の料理にしたい人は、新しく登録し直せば、ふつうの料理になります。これは、5日前に「打ち直せば、すり抜けられる。それでよい」と書いたのと、同じ考えです。止めたいのは、「ボタン1つで広がること」です。手で打ち直すのは、本から書き写すのと、同じ手間がかかります。

確かめていないこと

ここまでは、Claude Code と考えた整理です。法律の専門家には、確かめていません。

5日前の記事には、「作る前に確かめる前提です」と書いていました。結局、確かめないまま、作りました。

言い訳をすると、今は、本番で共有をオンにしている人が、まだいません。コピーのボタンが押される場面は、まだ、ありません。一般に公開する前には、規約の文と一緒に、一度、見てもらいたいところです。


食材は、自分の消耗品になる

ハコヅミでは、料理の食材は、消耗品として持っています。「カレールー」は、消耗品の1つで、料理は、それを指しているだけです。

コピーした料理の食材は、ほかの人の消耗品を指すわけには、いきません。自分の消耗品を、名前で作って、付けます。

  • 同じ名前の消耗品が、自分にもうあれば、それを使う(増やさない)
  • なければ、新しく作る(種類は「毎回用意する」、カテゴリは「食材」)

これは、料理の画面の「新しい食材」の欄と、まったく同じ決まりです。その処理を、そのまま使いました。

1つ、気をつけたのは、上限です。フリーの会員は、消耗品を 200 件まで登録できます。食材を作ると、その数を超えてしまうときは、コピーを丸ごとやめます。料理だけできて、食材が欠けている、という半端な状態にしないためです。これも、「新しい食材」の欄と同じ扱いです。


日本語の並び順で、テストが落ちる

テストを書いて流したら、1つ落ちました。

- "name": "カレールー",
+ "name": "じゃがいも",
- "name": "じゃがいも",
+ "name": "カレールー",

コピーした料理の食材を、データベースから「名前の順」で取り出して、テストに書いた順と比べていました。テストには、「カレールー、じゃがいも」の順で書いていました。データベースは、「じゃがいも、カレールー」の順で返してきました。

カタカナとひらがな、どちらが先か。データベースの並べ方と、わたしが思っていた並べ方が、違ったのです。JavaScript の並べ方とも、違うことがあります。

直し方は、「並び順を比べない」です。両方を同じやり方で並べ直してから、比べます。確かめたいのは、「この2つの食材が付いていること」で、「この順で並んでいること」では、ありません。

テストが確かめていることと、確かめたいことが、ずれていると、テストは、関係のないところで落ちます。落ちたときに、「アプリがまちがっている」のか、「テストが、確かめなくてよいことまで確かめている」のかを、まず見ます。


同じテストを、2回直す

もう1つ、前からあるテストが落ちました。

料理の詳細のページに、送信のフォームは、ない。

「ほかの人のものは、見るだけ」を確かめるテストです。コピーのボタンを足したので、フォームが1つできて、正しく落ちました。

ギアの詳細でも、まったく同じことがありました。そのときと同じ形に、直しています。

  • フォームは、1つだけ
  • その送り先は、コピー
  • 中に、入力欄は、ない

同じ直しが2回続いたら、それは、もう「形」です。ギア・キャンプ・料理の詳細のページは、どれも「見るだけ」を確かめるテストを持っています。次に、キャンプの詳細に何かのボタンを足すときも、同じテストが落ちて、同じ形に直すはずです。


共有で、残るのはランキングだけ

これで、共有の機能は、ほぼそろいました。

日付 できたもの
10月13日 ギアの共有、通報と共有の停止、キャンプと料理の共有、アイコン
10月14日 ほかの人のギアを「欲しい」に入れる、SNS のリンク
10月15日 ほかの人の料理を、自分の料理にコピーする

10月12日に、「テスタの意見を待たずに、前倒しで作る」と決めてから、4日です。残っているのは、よく見られている共有を並べる、ランキングだけになりました。ランキングは、見る人がいて、はじめて意味があります。テスタが来てから、考えます。


おわりに

  • 案は、書いた日の控え。作る日には、もう一度、問い直す
  • 仕組みで守れるところと、約束と通報で受けるところを、はっきり分ける
  • 「読むため」ならしおり、「使うため」ならコピー。何のために写すのかで、形が決まる
  • 出どころ(参考の URL)は、写す。だれから写したか(人の名前)は、写さない
  • 「どこまで変えたら自分のものか」は、アプリには決められない。決められないものは、外れない印にする
  • 半端な状態を作るくらいなら、丸ごとやめる
  • テストは、確かめたいことだけを確かめる。並び順を確かめたいのでなければ、並び順を比べない
  • 同じ直しが2回続いたら、それは形。次も、同じ形で直す
  • 確かめると書いたことを、確かめずに作ったなら、そう書いておく

テスタを募集しています。キャンプに行く方、よければ、触ってみてください。

← トップページに戻る