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

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

ただいまの
回答率

89.98%

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

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 1,264

ShinjiAsai

score 14

 前提・実現したいこと

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

 発生している問題

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

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

 計画について

イメージ説明

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

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

 補足情報

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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+6

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

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

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

そもそも、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 20:25 編集

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

    キャンセル

  • 2018/09/16 21:20

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

    キャンセル

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

  • ただいまの回答率 89.98%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる