今回作ったのはこちらになります。(長時間使用していないとスリープモードになるので、軌道まで少し待つ必要があります。)
改善点などは山ほど残っていますが、別のアプリに取り掛かりたい事もありとりあえずこの辺で終了かなと。
ソースコードはこちらにあります。
https://github.com/isikoro1/gambleGame-streamlit
仕様
こちらはスロット風の確率ゲームで、あたり確率50%のスロットマシンをプレイして、所持金を増やす遊びができます。
ボタンを押して掛け金を決め、スロットを回し、成功判定がでれば2倍の報酬をもらえます。
遊び心として、倍プッシュ機能(前回BETした金額の倍を掛ける)も実装しています。
作ったきっかけ:マーチンゲール法の検証
元々、ギャンブルの必勝法と言われる マーチンゲール法 を手軽に体験できるアプリケーションを作ってみたくて人生ではじめてプログラミングで開発したものを、GUIにアレンジしました。
元々のアプリケーションのソース↓
https://github.com/isikoro1/gambleGame
マーチンゲール法とは、ギャンブルや投資で用いられる資金管理法の一つで、負けた場合に賭け金を2倍にしていくことで、一度勝てばそれまでの負けを全て取り戻し、さらに最初の賭け金分の利益を得ることを目指す手法です。
別名「倍賭け法」とも呼ばれます。
私自身はギャンブルは一切やりませんが、必勝法と言われている掛け方があるのになぜギャンブルには「勝者」と「敗者」が存在するのかには興味がありました。
このアプリケーションを使う事で、マーチンゲール法による資金管理で資金が着実に増えていく楽しさと、
たった10数回の連敗でそれらが一瞬にして崩壊する、ギャンブルと指数関数の恐ろしさを体験する事ができると思います。
このアプリはギャンブルを奨励する物ではなく、むしろギャンブルで資産を増やそうなんて事がいかにバカバカしい物かを体感できるツールとなっております。
ぜひ、皆様もこのアプリで「倍プッシュ」してみてください。
仕様した技術
- Python (言語)
- Streamlit(デプロイ用)
- Git (Ver管理)
- ChatGPT4o 有料プラン (ソース管理、リファクタリング)
ChatGPTにコード書いて貰った結論:とりあえず動く物は作れるし、それなりに勉強になるが、それで完結するのは非常に危険
本来ならば、この機能つけるためにあれこれ調べて苦労して実装してく工程が省かれ、一瞬でコード書いてくれます。しかも去年より格段に性能上がってる?
そういった試行錯誤も学習に必要な過程だとは思っているので、それらを省くことによるデメリットはあるなと感じつつ、ChatGPTがこちらの要件を汲んで機能を付けてくれるので、自分だけではなかなか手が出なかった機能なども臆せず注文することができます。
(そしてそのコードを見て、こんな書き方や関数があるんだといった知識にはなります。)
初学者が陥りがちな、本や構文の知識だけ詰め込んで一切開発しないために体験に落とし込めないといった学習法よりは身になる所があると思いました。
コードはChatGPTに書いてもらったとしても、ターミナル操作やGitコマンドは自身で行う必要はあるし、繰り返すだけでも基本的なコマンド操作は次第に一人でできるようになってきます。
また、エラーが出た場合、ChatGPTでは特定できずに穴にハマる事態も多く、そういったエラーを根本的に解決するためにどうするか?などの思考力も必然的に身についてきました。
ですが、実際に同じコードや機能を1から自分で書けるかとか、コードの詳細について説明できるようになったかというと、全てに関しては難しいと思いました。
時短でコードが作れても、そういう部分は、「なぜこのコードが必要なのか」「なぜこの技術を使うべきなのか」という所もChatGPTに聞いてみて、疑問点は1つ1つなくしていくしかないですし、生成AIに依存しない為にも、AIを使わずに1からコードを書く、検索で自分で探し出す訓練なども並行して行うべきだと感じました。
私は開発現場未経験ですが、実際に開発現場でもジュニアエンジニアがAIに依存して自らコードを書いたり技術の説明ができない事態というのも増えているようです。
私自身は過去に生産工場などで働いた事があり、使用している機械の構造なんて説明はできないですが、自分が製造している対象の工程や仕組みを説明出来ないってのは、確かにどうなんだろうと思います。
投資の為ならAIを使え、脳死の為ならAIを使うな
書いてて思いついた自作の教訓を今、ここに残して以後これをAIを用いる時に胸に刻もうと思います。
語呂感の為にあえて不適切な表現を使ってしまっていますが、
「技術は投資の為に使うからポジティブに働くのであり、単なる思考停止や楽をするためならネガティブに働く」のではないでしょうか。
人によっては、物事を二極化しがちであり、「AIはダメ、使い物にならん!」「AIサイコー!全部AIがやってくれ!」に陥る人がいると思いますが、物事はそんなにシンプルではないと思います。
今からITエンジニアとして学習し、転職を目指すとして、AIを毛嫌いして使わなかった所で、AIも駆使している人よりも相対的に不利になってく部分は当然ありますし、
AIに依存しまくりでポートフォリオや作成物などを作っても、自分の力が身についてないなら意味がないでしょう。
ギャンブルに必勝法はありません
作成したギャンブルシミュレーターについて話を戻します。
起動とともに、所持金1000Gが渡されます。
先述したマーチンゲール法を用いて、例えば掛け金1Gからスタートして敗北の度に掛け金を倍にしてくとすると
(1G × 2) ^ 10 = 1024G
と、10連敗すれば所持金が尽き、掛けが出来なくなるので損益が確定します。
では、10連敗する確率はというと、
(1/2)^ 10 = 1/1024 = 0.09765625%
なので、約1000回に1回しかそんな不運は訪れません。
そして、10連敗の間に1回でも勝ちが挟まれば、今までの負けは取り戻すことができます。
反対に、最初の勝負で勝つことができれば、1G増やすことができます。
つまるところ、約0.1%で全財産1000Gを失うリスクを掛ける代わりに、1Gをリターンとして受け取る 投資 をしている事になります。
これを1000回繰り返せば、1000Gが当然手に入りますが、約1000分の1のロシアンルーレットを1000回行っているのと一緒ですから、それなりのリスクがあるとも言えます。
もちろん、この元手の資金を倍の2000Gにすれば11連敗までセーフとなりますし、1Gと言わず掛け金のスタートを増やせばセーフラインの連敗数は少なくなります。
これを見て、あなたはギャンブルをしたくなりましたか?
っていうか、そこまでローリスクローリターンのギャンブルをするくらいなら、普通に働いたり、自己投資するほうが、よっぽど良い気がします。
しかも、ここでシミュレートしたギャンブルは勝率50%かつ、運営者のマージンなどは一切含まれていません。
現実のギャンブルではいかに個人が大勝ちしたとしても、必ず運営が儲かるようなシステムとなっていますし(でなければそもそも経営する意味がありません)
期待値はもっと下がります。
投資する行為自体は悪い事ではないが、他にもっと良くて賢いお金の使い方は沢山ある
誰かがささやく、「うまい儲け話があるよ」なんてのも存在しませんし、
結論としては、ギャンブル依存症にはならないように皆さん気を付けましょう。
