SQLを学びながら犯罪を解決!?新感覚ゲーム『SQL Noir』の魅力とは!
引用元:https://news.ycombinator.com/item?id=43041827
めっちゃ楽しい!いくつか思いついたアイデアもあるよ:
>”submit”ボックスは最初のケースで名前か容疑者IDのどっちが必要か分かりにくいかも。
それと、出力に”メモにコピー”ボタンがあったら便利だと思う。
関数やこのダイアレクトについてのドキュメントもあったらいいな。小さいプロジェクトを通じて学べるのがすごく価値あると思う!
>”submit”ボックスは最初のケースで名前か容疑者IDのどっちが必要か分かりにくいかも。
これは一般的に実装されてると思うけど、’Objectives’セクションに何を提出するかは書いてあるよ。ユーザーとしては、容疑者の名前を求めてるんだと思ったよ、だって探偵ゲームなんだから。
めっちゃ楽しいね!一つだけ、SQLiteデータベースを自分でダウンロードできる機能があると嬉しいかな。自分の好きなアプリでクエリを実行して、サイトはブリーフィングやメモ、提出用に使いたい。
それと、SQLを学ぶためのツールとしてはもっとガイドを期待してたかも。具体的な例がないと、SQL知らない人はちょっと迷っちゃうと思う。
あまり選択肢がない分野に良い追加になったね:SQL Island(https://sql-island.informatik.uni-kl.de)やSQL Murder Mystery(https://mystery.knightlab.com)も思い出す。SQL Noirのメカニズムは後者に近い感じで、独立したアドベンチャーって感じだね。自分はSQLabっていうゲームエンジンを作ってて、自由に基盤を選んで演習を組み合わせて、構造的な独立した冒険を作れるよ:
https://github.com/laowantong/sqlab。データベースのダンプをダウンロードすれば、どの管理者インターフェースでも遊べるから、教師や研究者向けの原則もここで説明してるよ:
https://arxiv.org/abs/2410.16120。
素晴らしいプロジェクトだね!本当に賛成!ここで紹介されてる他の素晴らしいプロジェクトにも触れておくよ。自分はSQL Game Consoleを作ってて、SQL Game Editorも付いてるから、学生がブラウザで自分のSQL脱出ゲームを作れるよ:
https://eskuel.de。教室で試すのが楽しかった!今はドイツ語だけの提供だけど、例のゲームも見てみてね:
https://eskuel.de/zoo/。
https://sqlbolt.com
https://regexone.com
https://pgexercises.com
これ本当に好き!スタイルがユニークで素晴らしいし、SQLを学ぶためのとても楽しい方法が始まってる気がする。
一つのワークスペースにまとめて、タブの行き来をしないといけないのは困るな。前のSQLクエリや結果を保存できたらいいと思うし、メモにコピーしてたから、複雑になると重要だと思う。これからの展開が楽しみ!
いいメモだね!サイドバイサイドで二つのタブを同時に見る機能を実装したから、これが助けになることを願ってる。他のユーザーが提案したようにクエリをメモに保存できるけど、エディター内でコメントアウトすることもできるからね。
アップデートが素晴らしい!サイドバイサイドとグラフビューが最高。シェアしてくれてありがとう!
「前のSQLクエリや結果を保存できるといいな。結果をメモにコピーしてたんだけど、複雑になると重要だと思う。」
まるで現場でメモを取りながら”ただの事実を”何度も言ってる自分を想像したよ。
その考え方、いいね!
アイデアは良いけど、UIが没入感に欠けてるな。
もっと没入感を高めるためには、オートコンプリートやクエリと一緒にスキーマを表示できるといいと思う。
また、テーブルとカラム名を簡単にコピーできるボタンや、実行したクエリの下に追加できる機能も欲しい。
全部に同意。オートコンプリートは隠れた機能か、デフォルトで無効にすべきだと思う。没入感を損なうし、思い出さなきゃいけないから。
提案ありがとう!以下の機能を実装したよ:
サイドバイサイドビューで、2つのタブを同時に開けるようにした。
テーブル名をコピーできるボタンも追加した。
いい仕事だね!有益なフィードバックができて嬉しいよ。頑張ってね、楽しい学習ツールだね!
コードのブロックをコマンド-/でコメントアウトできる機能も超便利だと思う!
すごくいいアイデアだね!ケースを解決するのが楽しかったよ。ジュニアプログラマー向けに漫画版もあったらいいかも。
エディタの挙動が変なときがある。
一度以下の手順を試してみて。
1. 数行書いた後、それぞれを”–”でコメントアウトしようとすると、奇妙な動きが見られるよ。
その通り。今そのバグを修正したと思うよ。
大学の時、こういうSQLの練習用ミニゲームをやったな。すっごくハマった記憶がある。みんなにも紹介したい!
これ面白いね!二つの無料のミステリーを試してみたけど楽しかった。ただ、一つ言いたいのは、SQLエディタでコメント機能があったらいいなと思った。古いクエリをコメントアウトしておけば、同じクエリをまた実行する時に便利だと思う。良い内容だね! クエリの行に’–’を使ってコメントアウトできるはずだよ。もしできなかったら、それはバグだと思う。過去のクエリや発見を保存するためにNotesタブも使えるよ。 やあ!まずは素晴らしい作品だと思う。僕の大好きなゲーム、Chronicles of Crimeを思い出したよ。SQLでいろいろ探ろうとしたらどうなるか考えた。コメントについては’–’を使ってコメントアウトできるけど、二行以上なると一行にまとまっちゃうんだ。マルチラインコメントの’/’と’/’も使えるけど、もう少し苦労するね。 ありがとう!いい提案だと思う。僕もそのことを完全に忘れてた。単一行コメントについては、確かにバグだね、直すつもりだよ。 最初の行はうまくいくけど、二行目になるとマージしちゃうみたいだ。 うん、これはバグだった。今修正したよ。 名誉ある言及だね。実際これがSQL Noirを作るインスピレーションになった。 すごく可愛いけど、タブの’Brief’、’Workspace’、’Schema’を並べて表示できるようにしてほしい。SQLは知ってるから遊びたかったけど、UXがちょっとフラストレーションだった。 これに同意!スキーマを覚えるのが移行時の大きな壁になってるよ。ランダムに探る時こそ、スキーマが見やすいと助かる。 僕もそう思う。複数のクエリを同じウィンドウで実行できるといいな。例: SELECT そうそう!デスクトップで二つのタブを並べて見れる“サイドバイサイド”ビューを実装したよ。 ブラウザの開発ツールを参考にしたらいいかも。大きい表示と小さいREPLを下に並べて、サイズ変更できる感じ。メニューも縦のスペースを取ってるし、グラフ表示もまだまだ完成度が低いと思う。グラフのパス処理が難しいし、最初のやつは左から右へ直線でつながってるだけ。これももう少し時間が必要かも。見栄えが悪いよりは何もない方がマシかな。 実装したばかりで、デスクトップで見たらすごくいい感じだよ。コンパクトでホントいい。 いい感じだね!新しいケースが楽しみ!ケース#004では、職業と告白で犯人は分かったけど、57番はランボルギーニに関して全然ヒントにならなかった。バグ?それとも見落としたのかな? ケース#4について: これ面白い!素晴らしい仕事だね!最初の課題をクリアしたよ。SQL Server Management Studioに慣れてるから、複数のクエリを同時に実行しようとしたけどできなかった。コメントをダブルダッシュで入れようとしたら、ほとんどのクエリがダッシュに置き換わった。iOSのモバイル版が影響してるかも。 指摘ありがとう!単一行コメントを修正したよ。今はうまく動作するはず。 素晴らしい、ありがとう!次の課題に挑戦してみるね。 本当に素敵だ。みんなのためにこのアプリを作るために時間をかけてくれて嬉しいよ。 すごく面白そうだね!自分でもやってみるよ。それから、データ探索で一行SQLを使ってみたんだけど、コメントの扱いがうまくいかないみたい。もっと良くならないかな? >select * from crime_scene, suspects 楽しいね!これ作ってくれてありがとう!でも、自白を送信する機能が動かなかったのは困った。名前を聞くのが自然じゃない? めっちゃ楽しい!もっと複雑な捜査が待ち遠しい! 楽しかった!一つ質問なんだけど、選択したクエリだけを実行する方法ってないの? 素晴らしい仕事だね。チームの非技術者を育成するのに最適だよ。もっと楽しく学べることが増えたらいいのに。 これ最高!SQLの練習用の演習を探してたんだ。探偵ゲームは大好きだからちょうどよかった! すごく楽しい!6歳、8歳、10歳、12歳の子供たちと一緒に遊ぶ予定だよ。作ってくれてありがとう! 聞いてくれて嬉しいよ。お金のことは言いたくないけど、みんなが無料で学べることに価値があると思う。だから、支援したい人のために『Buy Me a Coffee』リンクを追加したよ。無理はしないでね! 全部解いたよ。ちょっとした指摘だけど、犯人はみんな自分の罪を認めるから、ほとんどの事件は告白テーブルを’%私はした%‘や’%殺す%‘みたいな文字列で検索すれば早く解けるよ。 ハハ、それはチートコードだね!次の事件の答えを見えないように隠すか、特定の文字列を含む行をもっと追加しないといけないかも。 それって逆の方法じゃない?もう最後のページから始めるんじゃなくて、普通のやり方で解決しようとしてるってこと? ハハ、このデザインすごく魅力的!いい仕事してるね。教育にはこういう創造性がもっと必要だと思うな。AIがそこそこ情報を再現するより、もっとクリエイティブなアプローチがいいよ。 これは素晴らしい!何人かの同僚にも送ったよ。 楽しいね!いい仕事だし、SQLに慣れていない人たちにもオススメできるよ。 Safariのロックダウンモードで使ってるよ。 これめっちゃ楽しい!ありがとう、すぐにシェアするね。 いいアイデアだね! すごくいいね、作ってくれてありがとう。 テーブル名が、crime_scene、witnesses、interviews、suspectsで、一つだけおかしいのがあるよね。テーブル名は複数形でまとめたほうがいいって言われるけど、一般的じゃないし、スタイルの問題かな?例えばタブとスペースみたいにさ。でも、これ遊ぶのは楽しいよね。現代の警察がこれを使えたら、ヒントをつなげるのに助かるのに。もっとコメントを表示(1)
select * from crime_scene;
select * from suspects;
cs.,
s.
FROM crime_scene cs
FULL JOIN
suspects s ON cs.id = s.id;
両テーブル間に関連はないけど、両方を表示できるよ。個別のカラムも指定できる。
select *
from phone_records
where
caller_id= 11 or recipient_id = 11
結果のヘッダーが messed up してる、Firefoxでは余分な’id’列がある。もっとコメントを表示(2)
これはクロスジョインだよ。データベースではほとんど使っちゃダメ!各テーブルの組み合わせが全て出るから、CPUも疲れるし。INNER JOINSを使って関連するテーブルを探すのがオススメだよ。SQL Noirのサイトには具体的な手順もあるから、参考にしてみて。
そうだね、逆に考えてるのかも!