小学生でもわかる AI図鑑
速報
  1. ホーム
  2. 小学生でもわかるConvex
  3. 第4話

Convex 第4話

【小学生でもわかる】Convexの4つの命令の使い分け!同時16本の注文で、在庫1個が守られる形と売れすぎる形

AI に書いてもらったアプリが、手元では問題なく動いている。けれど、最後の1個の在庫に2人が同時に注文したらどうなるのかは、一度も試したことがない。そんな人に向けた回です。Convex の4つの命令を1つずつ書いて動かし、在庫1個の商品に16本の注文を同時に流します。

  • 4つの命令は無料(Free)で使える。手元だけの置き場では、プランの量は減らない。クラウドの置き場で同じ実験をすると、関数の呼び出し(Free は月100万回。チーム単位の合計)が減る
Xで記事を読む シェア
4つの命令のカバー

どんな話?

読む・書く・外に出る・窓口の4つの命令を1つずつ書いて動かし、在庫1個に16本の注文を同時に流しました。読んで、確かめて、書く所までを1つの書く命令にまとめた形は、10回とも売上1件。外に出る命令で読んでから別の書く命令で減らす、分けた形は、7回とも売れすぎでした。やり直しは console.log の行数で見え、同じ1件に何百本も書くと一部ははっきり断られます。結果は「同時16本の記録」に書きとめます。

この記事でわかること

  • 命令は4つ(読む query・書く mutation・外に出る action・窓口 HTTP action)。読むことと書くことを同じひとかたまりでできるのは、書く命令だけ
  • 在庫1個に同時16本。1つの書く命令にまとめた形(shop:buy)は、10回とも成功1本・品切れ15本・エラー0で、売上は1件
  • 分けた形(shop:buyViaAction)は、7回とも売れすぎ。売上は14〜16件で、在庫はマイナス13〜15
  • やり直しを示す印はどこにも付かず、console.log の行数で見えた(16本で27〜31行)
  • 同じ1件に同時に50〜1000本書くと、一部は OptimisticConcurrencyControlFailure で断られた。6回とも、最後の値は成功した本数とぴったり同じ
  • 合わない引数は ArgumentValidationError で、命令の中身に入る前に断られる。外から呼ばせない命令は internalQuery・internalMutation で内向きにする

やることチェックリスト

0/6

記事を読みながら、できたものにチェックを付けていけます。チェックはこの端末に残ります。

くわしい手順と画面の図は、Xの記事にあります。

こんな人に

  • AI に書いてもらったアプリが、手元では問題なく動いている人
  • 最後の1個の在庫に2人が同時に注文したらどうなるのかを、一度も試したことがない人
  • 「読んでから書く」処理を、どの命令に入れればよいか知りたい人

この話のTIPS

  • 注意「Convex なら売れすぎない」ではありません。守られるのは、読んで、確かめて、書く所までを、1つの書く命令の中にまとめたとき。分けたら、守られません。外に出る命令から書きたいときは、確かめる所ごと1つの内向きの書く命令に入れ、それを1回だけ呼ぶ。公式がすすめているのも、この形です。
  • コツ公式の目安は、「読む命令か書く命令で済むなら、外に出る命令を使わない」。外に出る命令は、やり直されず、表とのつじつまも自分で考えることになるからです。
すべてのTIPS