IT業界向けカードゲーム『横断プログラミングかるた』第2版制作費捻出と販売

IT業界向けカードゲーム『横断プログラミングかるた』第2版制作費捻出と販売が目的。プログラミングの20種類の処理内容が読み札、JavaScript/Python/PHP/C++/C#/Javaの対応する取り札を取り合います。対面同士で遊ぶことも、WEBカメラでセッションし、遠隔地同士でも遊べます。

現在の支援総額

39,500

15%

目標金額は255,500円

支援者数

6

募集終了まで残り

終了

このプロジェクトは、2025/09/15に募集を開始し、 6人の支援により 39,500円の資金を集め、 2025/11/30に募集を終了しました

IT業界向けカードゲーム『横断プログラミングかるた』第2版制作費捻出と販売

現在の支援総額

39,500

15%達成

終了

目標金額255,500

支援者数6

このプロジェクトは、2025/09/15に募集を開始し、 6人の支援により 39,500円の資金を集め、 2025/11/30に募集を終了しました

IT業界向けカードゲーム『横断プログラミングかるた』第2版制作費捻出と販売が目的。プログラミングの20種類の処理内容が読み札、JavaScript/Python/PHP/C++/C#/Javaの対応する取り札を取り合います。対面同士で遊ぶことも、WEBカメラでセッションし、遠隔地同士でも遊べます。

エンタメ領域特化型クラファン

手数料0円から実施可能。 企画からリターン配送まで、すべてお任せのプランもあります!

このプロジェクトを見た人はこちらもチェックしています

IT の付いた活動報告

※ サムネイル画像はWikipediaの「メルセンヌ数」のキャプチャです。皆さんこんにちは! ボドゲ制作サークル「ゆんプロ」の代表のY.T.です!豪華版に付属する書籍の内容紹介も8回目です。そしてこれまでの内容は比較的簡単な内容ばかりでした。今振り返ってみても、少し難しい話だったのは「Pythonの名前マングリング」ぐらいかなと思います。そちらも無料で公開しているので、見落としている方はチェック!https://camp-fire.jp/projects/881547/view/activities/756976#main今回の内容は、簡単そうな皮を被っていた本作が、いきなり牙をむき出したような難題を扱っています。まず、以下の数列を見てください。1,3,7,15この数列の次の値、知っていますか?実はこれ、有名な「メルセンヌ数」と呼ばれる数列で、一般項では「2のn乗-1」という式で表されます。数列の続きは…1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191…となっています。ITエンジニアとしてメルセンヌ数については、その恩恵を把握しておくべきですが、特徴としては「2進数で表記すると、すべての桁が1になる値」という点が挙げられます。要は1を左ビットシフトしていき、1減ずることで得られる数値です。このメルセンヌ数やメルセンヌ数の一般項や仕組みを知っていると、ビット演算を利用したコーディングにおいて有利です。例えば、補数計算などが簡単になります。IPアドレス計算などでは、こういう知識が求められるんですね。話を戻すと、「要は」などと表現していますが、「1を左ビットシフトしていき、1減ずることで得られる数値」というのは「2のn乗-1」をエンジニア目線で解説しただけのことです。この表現で意味が通じる場合、アナタもワタシもエンジニアなのです…笑。さて。メルセンヌ数の定義を実直にプログラミングすると、※ JavaScriptにて実装このように、簡単なコードで実現できます。ITエンジニア向けカードゲームですから、これはこれで良いのですが、もっと式を変形してみましょう。一旦、各数列の階差数列を考えます。階差数列というのは、各数列の差を求めた数列のことです。1,3 … 23,7 … 47,8 … 8階差数列を見れば、「2…4…8」と、2の倍数である(2の等比数列である)ことが分かります。そして階差数列が2の等比数列であるため、要するにという変形ができます。ビットシフトという、エンジニアの領域の知識を用いずとも、数学の知識でプログラミングができていますね。で、さらにこれを変形しましょう。メルセンヌ数は結局、前の数(i-1)と今の数(i)の和から1を減じた結果の総和を求めることと同義です。したがって初期値を1ではなく0から始めることで、1を減ずる必要がなくなりますし、iとi+1を加算していくこととして変形できます。これを最終的に、加算代入演算子とインクリメント演算子に置き換えたのが取り札のコードになっています。ところで、加算代入演算子と、インクリメント演算子ってなんでしょうか?「横断プログラミングかるた」の豪華版では、付属するコードの解説とともに、用語解説もあります。用語集から加算代入演算子とインクリメント演算子の解説を引っ張ってきてみましょう。本作は「プログラミングの初学者も遊べるが、プログラミング中級者~上級者にも参考になるゲーム」として制作しています。私はプログラマーの立場としては、「forやwhileでの定型的なインデックス更新などの処理を除き、インクリメント演算子は使用すべきではない」という立場を取っています。このスタンスを理解できない方にも参考となるように、コードを作成しています。事実、インクリメント演算子およびデクリメント演算子は、言語の処理系によって後置と前置の解釈が変わっています。JavaScriptではループの終了条件で用いる変数に対して、代入演算子と後置インクリメントを同時に使用すると無限ループに陥るこれは代入演算子の解釈順序や前置インクリメントや後置インクリメントの解釈の順序に違いがある点に起因します。※ ここは理解しなくてもいいです / 開始C/C++/PHPなど:前置インクリメントの場合、インクリメントを先に実行し、変数の値を参照します。対して後置インクリメントの場合、式の値を直接取得し評価されたあと、式の最後に遅延してインクリメントが実行されます。ここで重要な点が、代入演算子も計算式の一部であるとして処理する点です。要は、インクリメント演算子の加算や参照のタイミングが保証されています。JavaScript/C#/Java:代入演算を計算する場合、左辺を先に計算したあと、右辺をあとから計算することが規定されています。前置インクリメントの場合、インクリメントを先に実行し、変数の値を参照します。対して後置インクリメントの場合、式の値を直接取得し評価されたあと、式の最後に遅延してインクリメントが実行されます。要は、インクリメント演算子の加算や参照のタイミングは、左辺と右辺で異なることを意味します。※ ここは理解しなくてもいいです / 終わり要は、このようなコードは言語依存となるため、昨今のプログラミングにおいては避けたほうが良いのです。なぜなら各種言語の処理系における解釈の違いによって、代入演算子とインクリメント演算子やデクリメント演算子の同時使用は言語間で異なる挙動を示すからです。…ここまでの内容は難しかったでしょうか? なんとなく理解できたという方も、まったく理解できなかったという方もいるでしょう。正直、ここまで深い内容を、初心者の方含めて、上級者まで理解する必要はありません。しかし重要なのはインクリメント演算子と代入演算子を同時に使用してはならないという点を理解していただくことです。本書では、出力結果を提示することで、この主張を初心者の方でも直感的に理解しやすいように配慮しています。ということで、実際に本書の内容をごらんください。先程までの説明よりは、分かりやすいと思います(何度も推敲して、わかりにくい説明を省きまくりました…苦笑)。正直なことを言うと、この主張を広めるために、メルセンヌ数を出力するコードを加算代入演算子とインクリメント演算子で実装したというのが本音です。結局、エンジニアを説得するには、実例を示すのが一番手っ取り早いので…笑。本作や、今回の内容があなたのプログラミングスキルの一部になったり、仲間内の話のネタにでもなると嬉しいです。それでは、また次の内容でお会いしましょう!次回の内容をチラ見せ…


皆さんこんにちは! ボドゲ制作サークル「ゆんプロ」の代表のY.T.です!豪華版に付属する書籍の内容紹介も7回目です。数字の7。この数字は世界中の多くの人において、非常に縁起の良い数字であると考えられています。もちろん私はエンジニアです。エンジニアたるもの、縁起のいい数字なんていう迷信はもとより、縁起の悪い数字なども一切信じるべきではありません(と主張したところで、理解されないことも多いでしょうし、理解しなくてもOKです)。とはいえ、そうした常識的に信じられている迷信の類は、知っていることに越したことはありません。ボードゲーム作家(以降はボドゲと表記)としては、自分の感覚を信じることは大切ですが、そのためにも自分の感覚と他者の感覚のズレを意識することも大切です。そうした自分の感覚と他者の感覚のズレを把握するために、ボドゲを一緒に遊ぶというのは重要なのです。こうした他者とコミュニケーションを行うことは、ボドゲ制作以外にも、それこそ会社でプログラミングを行い、チームメンバーで開発を行っていく場面でも重要です。ボドゲを通してチームワークの円滑化を行える。チームメンバーとの感覚のズレを把握したり、思考過程の違いを確認したり、課題への取り組みの姿勢を見極めたり。会社における開発の現場には、ボドゲが活躍できる場面が多くあります。プロジェクトへ参加するメンバーの決起集会やミーティングの場。プロジェクトのフェーズが進んでいく各種場面の息抜き。そして打ち上げ。その時に遊ぶボドゲが、プログラミングを題材としている「ガチ向けであること」の利点は、誰しも容易に想像できるでしょう。本当に役に立つかわからないボドゲで遊ぶよりも、プロジェクトが採用するプログラミング言語が使われたボドゲの方が役に立つのは当たり前です。別のプログラミング言語を覚えている人でも、プロジェクトが採用するプログラミング言語をゲームとしていち早く体験することにも繋がります。IT業界の開発部門において、本作は利点が多いのです。…と、前段の話が長くなりました。今回は「チ-任意の整数値の範囲を繰り返す」です。ええ。これを聞いただけで、大抵の皆さんが「ああ、フォーループ(for loop)だな」っと、簡単に予測がつくでしょう。ええ、その通りです。それこそ、前段の長々しい話は、今回の内容が簡単だったからです。そう、単なるかさ増しです。でも、この内容が簡単だと感じるのは、今この文章を読んでいるアナタが中級者・上級者のレベルだからこそです。本作『横断プログラミングかるた』は、初心者~上級者までのコミュニケーション・ツールという側面がコンセプトなので、こうした簡単な内容も扱っています。読み札(仕様)を実現する取り札(各言語のコード)は、簡単なものから難しいものまであります。今回は簡単でも、明日の内容は上級者でも理解できる・できている人がかなり少ない内容を扱います。「高低差で耳がキーンとなる」レベルになるので、今回の内容がいかに簡単なのか体験しておくとよいでしょう。ということで、以降、書籍の内容です。さて、次に公開するのは「リ-条件に合致するあいだ繰り返す」であり、「繰り返しに使用する変数を更新しながら条件が成立しなくなるまで繰り返す。」となっています。まあ、これを聞いて「ああ、ホワイル・ループ(while loop)だな」と予測できる方は大勢いるでしょう。でも、フォー・ループとホワイル・ループで、そんなに難易度に差はあるのでしょうか?ということで、次回に続く!


皆さんこんにちは! ボドゲ制作サークル「ゆんプロ」の代表のY.T.です!豪華版に付属する書籍の内容紹介も6回目です。この作品では、実際に動作するプログラムを作成したうえで、取り札に採用しています。そして同じようなプログラムでも、プログラミング言語によっては出力結果が微妙に違います。プログラミングの参考書でも、出力結果を乗せていないもの多い中、本作の豪華版や、取り札に掲載しているQRコードを読み込んだ先では、出力結果も掲載しています。第三版では、出力結果から対象のコードを取るルール画策しています。ぜひプロジェクトを支援して、このとんでもないゲームの成立を支援してください!Javaで意外と落とし穴なのが、便利なMap.ofを用いた連想配列のインスタンス化を行うと、定義順序が保証されない点です。もちろん、効率的なコードを書くうえで、キーと値がソートされていないとならないこと自体は少ないのも確かです。ソートされていなくとも、定義順序が重要なことはあれど、そこまで頻度が高いわけではありません。この制限はJavaのプログラマーとして研鑽を積んでいけば、引っかかることはありません。されど本作のように、重要な点をQRコードで掲載したコード解説に記載したり、書籍からすぐに要点を得られるのは、プログラマーを目指す大多数の方にとって、大幅なプラスになるでしょう。最後に、本記事の最初に提示された問題の答えです。A:C#、B:PHP、C:C++、D:Python、E:JavaScript、F:Java今回は、プログラミング言語全部を知らなくとも、知識のある方なら答えられるように配慮してみました。コードを良く見れば「PHP_EOL」や「<?php」に「import java.util.Map」のような、プログラミング言語が即判別可能なものが結構多いことに気づくでしょう。JavaとC#はよく似ている言語であるため、Javaと似た別の言語を探せばC#も分かります。JavaScript・Python・PHPがプログラムのエントリポイントが不要な言語であることを知っていれば、残った3つのうち、1つがC++であることも判明します。最後の2つはJavaScriptとPythonです。もう、これは経験値で答えるしかありません。されど全体のうち4/6が「細かい違いにきづける能力」や「総合的な知識量」で判別できるのです。そしてそれを、高速に、ゲームとして楽しんで身につけようというのが、本作のコンセプトというわけです。プログラミング言語を見抜ける能力が必要かどうか疑問を持つ方もいるかも知れません。しかし、プログラムの内容は概ねどの言語でも再現できるものの、不得手はあります。結局その不得手を意識しているかどうかにより、納期や品質が変わってくるのです。そうした「プログラミング言語を選ぶという大前提をおろそかにして、惰性で同じプログラミング言語を使っている」というプロジェクトは五万とあります。本作を通して、ある程度有名なプログラミング言語に慣れておけば、プロジェクトがどのようなプログラミング言語を採択しようとも、チームメイトは未経験からくる引っかかりを軽減できるのです。というわけで、次は「整数値の繰り返し」です。1・2・3・for~~~~!!というのは、芸人HGの持ちネタですね。


皆さんこんにちは! ボドゲ制作サークル「ゆんプロ」の代表のY.T.です!豪華版に付属する書籍の内容紹介も5回目です。前回はOOPにおけるカプセル化の一連の内容だったので、一気に21p~29pまで公開しちゃいました。同じようなコード、だけど微妙に違うのって、結構混乱しやすいので、ゲームとしては楽しいんです。でも、解説書籍としては微妙。変化がないのでwてことで一気に掲載して、その「苦痛だけど載せなきゃいけないジレンマ」をやり過ごしました。ボドゲーマーたるもの、メリハリは常に意識しています。てことで、ようやく【プログラミング】かるたらしい読み札と取り札である「へ-配列変数の定義」です。読み札は、配列変数に0~3までの整数値を定義し、カンマ区切りでダンプする。となっています。めちゃくちゃ簡単ですね!でも、実際問題、以下のコードが「JavaScript・Python・PHP・C++・C#・Java」のうち、それぞれどの言語かを瞬時に判断して、相手より先に答えられるでしょうか?実際に試してみましょう!A:arr = [0, 1, 2, 3]print(arr)B:int[] arr = { 0, 1, 2, 3 };Console.Write(JsonSerializer.Serialize(arr));C:$arr = [0, 1, 2, 3];echo json_encode($arr);D:std::vector arr = {0, 1, 2, 3};std::cout << std::format("{}", arr);E:const arr = [0, 1, 2, 3];console.log(arr);F:int[] arr = {0, 1, 2, 3};System.out.print(Arrays.toString(arr));↓ スクロールして答えを確認↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓答え:A:Python、B:C#、C:PHP、D:C++、E:JavaScript、F:Javaじっくり見る時間さえあれば正確に見極められますが、友達や同僚と競いつつ、相手より先に、正確に見抜く力が必要なシビアなゲームになっています。プロ版では、初心者救済要素――「読み札と取り札で対応するイロハのラベル」や「言語名のラベル」――もありません。これで神経衰弱をやるルールもあるので、難易度は…流石にプレイ時間180分表記なだけありますよね。…完全に狂ってやがる。また、このゲームでは「読み札」≒「仕様書」みたいなもんです。それに見合ったコードとしての取り札を取らねばなりません。今回の読み札には「カンマ区切りでダンプ」という指定がされているので、コードの出力結果も重要です。取り札の出力結果は、取り札に掲載のQRコードを読み取るか、豪華版の書籍に掲載されています。といこうとで、実際に書籍の内容をご覧ください。ご覧のように、本作は初心者の方も遊べる配慮はしていますが、コードの解説は別に初心者向けではありません。専門用語の解説は書籍内に掲載していますが、結局は「現役のプログラマーに役立つ情報を乗せる」という執筆方針で作成しています。初心者の方が、本書をスラスラ読めるようになった暁には、脱初心者と胸を張って言えるレベルになっていることでしょう。ということで、次回は「ト-連想配列の定義」です。とくにJavaでは、手抜きコーディング時によく陥りがちなアレの話が載っています。


皆さんこんにちは! ボドゲ制作サークル「ゆんプロ」の代表のY.T.です!豪華版に付属する書籍の内容紹介も4回目です。今回は一気に、ロ/ハ/ニ/ホの部分まで公開します。ロ - プライベート変数の定義ハ - パブリック変数の定義ニ - プライベートメソッドの定義ホ - パブリックメソッドの定義ちょうどOOPにおけるカプセル化周りの内容ですね。同じような内容が続くので、一気に扱ってしまいましょう。めちゃめちゃ基本的な内容のため、解説も簡素で、必要十分な量のみを記述しています。むしろ、これぐらいの方が、初心者にも上級者にも適切だと思います。ということで、続きは明日以降に公開します!


新しいアイデアや挑戦を、アプリで見つけるcampfireにアプリが登場しました!
App Storeからダウンロード Google Playで手に入れよう
スマートフォンでQRコードを読み取って、アプリをダウンロード!