質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

1回答

5148閲覧

Unityを使ってオンライン対戦ポーカーを作成する計画へのアドバイスを頂きたいです

ShinjiAsai

総合スコア51

1グッド

1クリップ

投稿2018/09/16 09:03

前提・実現したいこと

個人で、Unityを使ってオンライン対戦のテキサスホールデムポーカーのアプリを作りたいと考えています。またオンライン麻雀サイトの天鳳のような形で、ランキングやレートシステムを導入したいと考えています。天鳳の公式サイトへ

発生している問題

オンライン対戦のテキサスホールデムポーカーのアプリを作りたいのですが、その作成の道筋が明確になっていません。

サーバー構築やオンラインの通信技術については全く分かりません。なので自分の立てた計画に対してアドバイスをいただきたいです。

計画について

イメージ説明

アドバイスしていただきたい内容

・計画の抜けや、もっとこうした方がいいというアドバイス
・サーバー構築についての期間・おすすめの書籍
・オンライン通信技術に関しての期間・おすすめの書籍
・テスト環境に関しての期間・おすすめの書籍

補足情報

私はプログラミング歴1年ほどです。はじめはUnityとC#をTechAcademyのUnityコースで3か月間学びました。

その後、Unityについては書籍をひよこ本、Unityの教科書を読了しました。またWeb上に落ちているUnityの2Dサンプルゲーム10個ほど作成しています。(2DUFOgameやシューティングゲームなど)

またC#については、書籍をC#超入門、独習C#を読了。デスクトップアプリなどのサンプルを10個ほど作成しています。簡単な税の計算ソフトや、描画アプリなどです。

使用しているのはWindowsです。はてしなく大変だというのは理解したうえで取り組んでいるつもりです。でもどうしても作りたいです。ぼくの夢なんです。よろしくお願いいたします。

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

自分のやりたいことを実現するために努力するのはとてもよいことです、頑張ってください。

本気で作成したいとのことで、長くなりますがご容赦ください。
おそらく、学生かフリーターの方だとお見受けしますので、アドバイスについてですが、まず、厳しいことをいいます。

見積もりその他が甘すぎる

そもそも、1週間というのはどのくらいの作業量を想定していますか?
たとえば1日2時間の作業で1週間であれば楽に達成できるでしょう。
逆に、1日12時間以上の作業で1週間であったら「個人で作成する」という前提であるなら作業以外の日常生活に必要な時間を考えると非現実的ですよね。

プロジェクトを計画するにあたって、まず第一に必要なのが「どれくらい時間がかかるか」という部分ですが、基本的に「1人日」や「1人月」という考え方をします。
普通に会社で朝から提示まで働いた場合8時間なので、1人日=1人で1日にできる作業量=8時間です。
また、平均して一か月に作業する日数は一週間に5日(週休二日)として大体20日なので、1人月=1人で1か月にできる作業量=8×20日=160時間です。

そして、その時間を割り振る際にはメンバー(今回は貴方だけですが)のスキルから考えてどのくらいかかるかを計算しなければなりませんが、「これから勉強を始める」レベルでその先を決めるのは無意味です。
たとえば「サーバー側のプログラム」について3日と見積もっていますが、100%不可能だと思います。

また、計画にプログラミング部分を入れていますが、「ランキングやレート」の実装をしたいのに「DBの構成」について記述がないですね。
スコアやユーザ情報、ログイン情報などが必要なプログラムになると思いますが、それを保存するためにはDBは必須です。

「個人的」に天鳳と同じような機能の充実したアプリを作成するのであれば、短く見積もってもチームでの作業で年単位になると思われます(これから勉強するならなおさら)。

どうするべきか

はっきり言います。その計画、白紙に戻しましょう。
先を見据えることはとても良いことですが、良い目標ばかり先に立ててしまっても百害あって一利なしです。
通常の業務においてすら、リスケジューリングの繰り返し、納期が迫るとデスマーチ。。。ということは往々にしてあることで、個人でその繰り返しをしてしまうと、モチベーションを保つことが難しいからです。
たとえば、学習の完了までに倍かかったとして、完了時に自分のスキルが上がったからこそ見えてくる問題点も出てくるでしょう。そうした場合に「じゃあこれあと何年もかかるかも。。。半年のつもりだったのにどうしよう」となったとき、夢だったとしても、あくまで個人の趣味の範囲なので「あきらめる」という選択肢が出てきてしまいます。
それじゃ、せっかくの目標がもったいないですよね。

白紙に戻してどうするの?

要件定義(やりたいことの書き出し)をしましょう。
というのも、「実現したいこと」に記述されているあいまいな部分ではなく、「具体的に」です。
「ユーザー登録」→「ログイン」→「モード選択」→「各モード」
といった画面はもちろん、画面ごとにどんなパーツが必要で、動かすにはどんなデータ(細かい定義でなく、ユーザー名を表示させたいとか、スコア・レートを表示させたいとか)が必要なのか。
どんな機能を追加していきたいのか。
この部分は、DBやプログラムの知識がなくてもできるものです。
この「要件定義」については、プログラミングに限らず、夢(やりたいこと)を実現するために自分の現状と何が必要なのかをまとめる点で重要な資料にもなります。

要件定義ができたら?

今回のように「最後まで」一気に計画を立てるのではなく、「phpの学習(1人月)」、「C#の学習(1人月)」、「オンラインポーカープログラムの仕様作成(未着手)」、「DB構成(未着手)」。。。といったように進捗度毎にカテゴリを分別し、カテゴリを始める際に計画を立てる方が良いでしょう。
ロードマップ(工程表)に対してマイルストーン(区切り)を設定して、近い目標に向けて作業を行う方がモチベーションを保ちやすく、また工程の管理もしやすくなります。
また、実際の作業としては「要件定義」→「基本設計」→「詳細設計」→「製造」→「テスト」→「本番」と進めていきましょう。
設計がきちんとしてないと製造時に痛い目を見ます。

最後に

これがベストだ!というやり方はなかなかありませんが、目標を近いところ近いところに設定して少しずつレベルアップさせるのが挫折しないコツです。
まずは自分の作りたいものを要件定義時に絵でもいいので書いてるのもいいでしょう。
最終目的が可視化されるというのもモチベーションを上げる要素になりますよ!

投稿2018/09/16 09:53

yukihisa

総合スコア672

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ShinjiAsai

2018/09/16 11:25 編集

yukihisaさん、こんなに魂のこもった回答をありがとうございます。静かな物言いの中にも、熱い気持ちを感じます。。私は特にIT関係の会社に勤めていたわけではないので、こういった視点をいただけると助かります。 ぐぐぐ…チームでの作業で年単位ですか…。いやー、それが現実なんですね…。ですが、ポーカーを作りたくてプログラムの勉強を始めたんで、やり遂げたいと思います。 具体的な計画の立て方を提案していただけたのが、本当にありがたいです。要件定義…ですか、なるほど。ざっくりとしたイメージしかなかったんで、現時点でイメージできる範囲で具体的に作ってみます。絵にしてみようと思います。 あとはDB構成ですね。すっぽり抜けていました。一日に3-4時間は時間をとれるので、計画をしっかり練って取り組んでいきます。ありがとうございました。
yukihisa

2018/09/16 12:20

ただのポーカーであればそこまで時間はかからないと思いますが、「対戦」というものを考えるとCPUの存在が不可欠と言ってもいいので、「年単位」と考えました。 ランクによる思考ルーチンとか、だいぶめんどくさくなるはず。。。 とはいえ、その辺りは要件定義でどこまでこだわるかなどで変わってくるので、貴方次第ではありますが、良いものができるよう祈っております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問