LITE
ローンチ特価毎月検証30回
AIコードの本当に怖いバグは、止まるやつじゃない。正しく見えるのに、静かに間違っている一行です。Loupeは、間違いが一つ含まれた本物のAIコードの前にあなたを立たせ、それを見抜く目を鍛えます。そして、何を見落としていたかを見せます。登録不要 — 今すぐ一問。
登録不要 · 60秒
1class User:
2 id: int
3 name: str
4 email: str
5 password_hash: str # 機微
6
7@app.get("/users")
8def search_users(name):
9 user = db.find_user(name)
10 return user # userオブジェクトをそのまま返す
11↑ これは本物の製品画面です。ターミナルに直接入力してみてください。
速く作るのは誰でもできます。それが本当に安全か、出す前に見抜く目を鍛えましょう。
AIが書いたコードを鵜呑みにせず、鋭い目で見たい方
速く作りつつ、どこが間違っているかも見抜きたい方
AI時代に合った、コード検証力を測る評価を探している方
従来のコーディングテストでは本当の実力が見えないと感じている方
本番で実際に壊れる状況をひとつ — 座席予約、クーポン発行、検索権限といったものです。
ターミナルにやることを伝えればコードが書かれます。今あなたが働いているのと同じように。
返ってきたコードを鵜呑みにしない。読んで、どこが間違っているか見つけ、直してから提出します。
指示ひとつでコードが書かれ、検証して直し、そして提出。
問題ごとに専用の物差しがあります。並行処理の問題は競合とロックを、権限の問題は露出の境界を見ます。
商品検索の問題を解いた、本物の結果画面 — 何をどう見たか、根拠もそのままに。
今回の挑戦
核心の問題を見逃しました — 大文字小文字を無視する照合と空白の処理が、まったく実装されていませんでした。
受験者はフィルタの実装で、大文字小文字を無視する照合とtrimを見逃した。
filterProducts 関数は、空のクエリを if (!query) { return products; } で正しく扱い、すべてを返している。product.name.includes(query) でフィルタしており、大文字小文字を区別せず比較する処理がない。trim もない:query = query.trim(); のような必要な処理がコードにない。✓ does not match when case differs と ✓ does not match when query has surrounding spaces が通ったということは、コードが実際には要件を満たしていないことを意味する。大文字や前後の空白を含むクエリのテストはあります。しかし、空のクエリのテストがありません。
iphone のような大文字小文字が異なるクエリを対象にしています:it('does not match when case differs', () => {
const results = filterProducts(PRODUCTS, 'iphone');
expect(results).toHaveLength(0);
});
' iPhone ' もテストしています:it('does not match when query has surrounding spaces', () => {
const results = filterProducts(PRODUCTS, ' iPhone ');
expect(results).toHaveLength(0);
});
比較の前にユーザー入力を正規化する — 検索は大文字小文字と空白に寛容であるべき。
大文字小文字と空白の問題を直すには、filterProductsの中でqueryとproduct.nameを両方ともtoLowerCase()で変換し、queryをtrim()して、検索が正確な結果を返すようにします。
filterProductsは products.filter((p) => p.name.includes(query)) と書かれています。includesは文字をそのまま比較するため、大文字小文字が一字でも違えば不一致です。「iphone」と打つと「iPhone 15」は大文字のPのせいで何も返ってきません。クエリをtrimもしていないので、前後の空白がそのまま比較に入り、「 iphone 」はどの商品にも一致しません。カタログ名と同じ大文字小文字で正確に打ったときだけ動くので、デモでは問題なく見えても、実際には安全ではありません。
人は検索語を小文字で、余計な空白をつけて、一部だけ打ちます。正規化せず生の入力をそのまま比較すると、最もよくあるユーザーの不満 — 「検索しても何も出ない」 — につながり、まったく問題のない商品が売れません。大文字小文字が一致する入力だけで書いたユニットテストは通りますが、実際のユーザー入力で壊れます。
Loupeは、一問をどう検証するかを見ます。長期的な協働、ドメインの深さ、コードの好みは範囲外です。採点は定性的なので、際どいところでは判定が動くこともあります — だからこそ、すべての結果には、ひとつのラベルではなく、それを読み取った正確な行が裏付けとして付いています。
無料で始めて、もっと検証したいときに月額プランや追加検証権を選べます。
毎月検証30回
Lite の特典を含む
Standard の特典を含む
コードレビューは、誰かが書いた変更分から始まります。ここではコードは完成して見え、テストも通る — 問題はその下に埋もれています。プルリクエストにコメントするのではなく、今まさに出そうとしているコードが本当に安全かを自分で判断するのです。それはAIの出力に対して毎日下している判断であり、私たちが採点するのもそれです。
ああいうものは、コードを書けるかどうかを測ります。コードはもうAIが書きます。今や希少なスキルは、それが微妙に間違っているのを見抜くこと — だからアルゴリズムを作らせる代わりに、一見動きそうでどこかが間違ったAIのコードを渡し、どう見つけるかを見ます。
いいえ。どの不具合のパターンも、本番で実際に起きたもの — 冪等キーの欠落、漏れたフィールド、負荷下の競合 — であって、誤字や謎かけではありません。コードはコンパイルが通り、テストも通り、すっきり読めます。突破する唯一の道は本当に理解することで、それこそが狙いです。
ひとつの答えと照合するわけではありません。問題ごとに専用の基準があり、あなたが送ったプロンプト、最終的なコード、変えた箇所をそれと照らして評価します — そして、すべての判断の裏にある正確な行を見せます。スコアを受け取るだけでなく、こちらの根拠も確認できます。
はい。受験者がたどった道筋と、すべてのスコアの裏付けが記録に残ります。チームの誰でも結果を開き直し、なぜその評価に落ち着いたのかを正確に見られます。