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

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

ただいまの
回答率

89.99%

プログラミングをやる上で、あったら必要な数学知識

解決済

回答 7

投稿

  • 評価
  • クリップ 6
  • VIEW 13K+

reotantan

score 253

もちろん数学の理解があれば、プログラミングに活かせるのは分かるのですが、
この数学の知識があればさらに高度なプログラミングを組めるという分野はありますか?
配列やベクトル、線形代数を今勉強しようとしているのですが、ゲームを作りたいと思っているので
数学の知識がプログラミングの幅を広げる助けになったらいいなと考えています。
みなさまの考えを教えてください。
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2016/03/08 12:41

    こちらの質問が他のユーザから「問題・課題が含まれていない質問」という指摘を受けました
    teratailでは、漠然とした興味から票を募るような質問や、意見の主張をすることを目的とした投稿は推奨していません。
    「編集」ボタンから編集を行い、質問の意図や解決したい課題を明確に記述していただくと回答が得られやすくなります。

回答 7

+5

ぶっちゃけ、数学よりも、フローチャートを書く能力と人と話せるコミュニケーション能力の方が必要です。あと、地味に体力勝負な所がありますので、体力も必要です。
病気がちでは仕事になりませんし、徹夜できなければ納期に間に合わない!という事も多くあります。

プログラマというのは、正直な話、「勉強のプロ」であって「記憶のプロ」である必要はないと個人的に思っています。必要な知識は必要な時に調べて理解できればそれで良いと思います。

ですので、例えばもし物理演算が必要な時に、それを理解して活用できる能力があればよいと思います。どんな難しい分野にもエキスパートはいます。難しい時にはそういう人たちをうまく利用して、知識を必要な時にわけて頂けばよいのです。

もしゲームプログラマとして活躍したいのであれば、まずゲームをもっと理解すべきです。
ゲームは総合格闘技のような物で、凄まじい量の知識が必要です。
自分の力だけで、まずゲームを作りましょう。いろんなジャンルを作りましょう。

RPG、アクション、パズルゲーム、シューティングゲーム、FPSでは全然必要な事が違います。
2D、3Dでももちろん違います。
スプライト?3次元モデル?ボーンの処理は?
キーボード、マウス、ゲームパッド、入力処理はどうする?
セーブデータの管理は?チート防止にはどうしたらいい?
音声や音楽、ムービーの挿入は?

ゲームのプログラミングというのは本当に多岐にわたりますが、これらを全て理解して、記憶する必要はないんです。ここで活きてくるのは「調べる能力」と「調べた内容を使える能力」です。
いろんな事にチャレンジして苦労する事が、後に繋がりますよ。

ちなみに今一番オススメなのはUNITYというクロスプラットフォーム環境です。
マリオからFPSまで、何でも作れます。一度調べてみることをオススメします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/27 10:06

    まだまだ道を険しそうですね;;
    分かりやすい解説ありがとうございました。

    キャンセル

checkベストアンサー

+2

プログラミングにとって数学が何かといえば、
(食)生活における自炊能力にたとえられるかもしれません。

今の時代は自炊できなくても、外食や弁当を食べれば飢えません。
同様に数学ができなくても、ライブラリを使えばアプリは作れます。


ただ外食ばかりだと、高く付いたり栄養が偏ることはあります。
同様に数学ができないと「ライブラリがないからできない」
となって、作れるジャンルが偏りがちになります。

数学やアルゴリズムの知識があると、
ライブラリを使うだけでなく自作できます。
つまりライブラリの自炊(自作)能力が付きます。




ご質問にもある線形代数は、数学の中でも
とくにプログラミングと深い関係にあるジャンルです。

計算機数学、離散数学、グラフ理論、組み合わせ問題などと
呼ばれている分野と密接な関係にあります。

もちろん、統計をやるなら統計・確率、物理シミュレーションなら物理と微積分など、
必要な数学の分野は変わってきますが、線形代数は応用範囲が広いのでおすすめです。


線形代数のようにベクトル(もしくはグラフ)を行列で表現するのは、
アルゴリズムのひとつの定石になっています。実際よく出てきます。

具体的には画像処理でも出てきますし、機械学習でも出てきます。
これは初歩的な例ですが、アフィン変換とか、最短経路問題とか。
その延長線上でゲームにも、画像とかAIとか部分的ですが関係してきます。

しかしなぜ、それらが線形代数(ベクトルや行列)なのか?
話を分かりやすくするため、数学的な厳密な話ではなくイメージで説明します。




コンピュータ自体は1と0の機械語しか分かりません。

それを高水準化したプログラミング言語、たとえばC言語とかも、
せいぜいfor文やif文と変数を使ってガチャガチャ計算するだけです。

すると、人間のようにパッと見(無変換)で図形や手順を扱えないので、
コンピュータで処理させるには、何らかの翻訳が必要になります。


この翻訳がベクトルやグラフと行列を変換することに相当します。
行列にすると数字の列になり、プログラミング言語で扱いやすいのです。

図形 → ベクトル → 行列 → 変数(配列) → コンピュータ
みたいな感じでコンピュータに分かるよう翻訳(変換)します。

この変換の約束事を線形代数で学ぶ、というわけなのです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/27 10:05

    なるほど、線形代数の勉強にさっそくとりかかります。
    とても参考になりました、ありがとうございます

    キャンセル

+1

... ゲームを作りたい ...

高校数学の区分でいうなら、
 ●集合と論理  
 ●個数の処理
 ●確率
 ●平面上のベクトル
 ●空間のベクトル
の理解をしていると、プログラミングの助けになると思います。

ゲームのシナリオや難しさなどを考えるときに 集合、組み合わせ、確率 といった知識は不可欠です。
画面をつくっていくときに 2D, 3D のベクトルを理解していることは大きな助けになります。
(描画ライブラリーをつかうときでも、これを理解していないと ライブラリー自体を適切に使えない場合もあるかもしれません)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/27 10:07

    数学大切ですね、これから勉強がんばります。
    ありがとうございました。

    キャンセル

0

プログラミングはあくまで手作業をコンピュータに代わりにやらせるものなので、
「代わりにやらせる内容」の分野の知識が必要になります。
数学はどちらかと言うと、プログラミングよりも
「代わりにやらせる内容」の分野の知識になります。

「高度なプログラミング」が何を思い描いているのかわかりませんが、
「「代わりにやらせる内容」がより専門的である」ということなら
その分野の知識を深めるのがいいと思います。

(処理効率やカッコイイ実装方法などを求めるなら
プログラミング言語自体やアルゴリズムや実装パターンの勉強をするのがいいと思います)

行列やらベクトルやら線形代数やらは画像処理などで生きます。
統計処理をしたいなら統計学ぶ必要がありますし、
物理シミュレーションしたいなら該当する分野の物理(と数学)を学ぶ必要があるでしょう。

漠然とゲームと言われればジャンルによります。
ことアクションゲームであれば力学を学んでおくといいと思います。

あとC言語でゲームを作るのは無理とは言いませんが、面倒くさいので、
いずれもっと形になるものを作りたいならC#などに移ることになると思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/27 10:02

    c言語をある程度勉強し終わったら、c++に行こうと思っていました。
    解答者様が考えるなかではc#とc++ならどちらを先に勉強した方がいいですか?

    キャンセル

  • 2015/08/27 11:17

    Unityで使えるC#ですかね

    キャンセル

0

ゲームを作るのであるならば必ずしも数学は必要ではありません。
ゲームエンジンが現在ブロレベルの物が実質無償で提供されています。
UnrealEngine4

線形代数を活かせる分野であれば機械学習がオススメです。
数学を避けてきた社会人プログラマが機械学習の勉強を始める際の最短経路



投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/27 10:03

    なるほど、いいサイトを教えてもらってありがたいです。

    キャンセル

0

一口にゲームと言っても色々なタイプのものがありますね。そして、同じゲームでも、開発のアプローチの仕方によって必要な道具は変わって来ます。

数学とは、量、構造、空間、そして変化を研究する学問で、式や記号、グラフは、それらを理解し記録し他人へ伝える為の一種の 言語 です。いわゆる道具です。

ですから、ゲームに限らず、自分の作ったアルゴリズムの正当性を検証したり、他人のアイデアから学んだりする場合には、どんな分野であれ数学の知識やセンスがあれば多少なりとも役立ちます。

しかし、ゲームの場合には、シナリオの構成力やキャラクターのデザイン力など、全く異なる分野の能力も非常に重要です。

つまり一番重要なのは、今本当に必要な道具・能力を、焦らず着実に、
バランス良く身に着けて行くことだと思います。

ですから、先ず実際のゲーム作りの中で時々立ち止まり、気になった事や分からない事をちょっと深堀りしてみる。そして、勉強の材料がある程度溜まったところで体系的に学び直してみる。というやり方が現実的かなと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

ゲームのプログラミングということだと、ゲームのジャンルにもよりますね。
ですが、数学は大切だと思いますがどちらかというと物理について知っていると良いかと思います。
数学知識だと確率統計は様々なところで役に立ちますね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/27 10:07

    物理ですか、これから取り組んでいきます。
    ありがとうございました

    キャンセル

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

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