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

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

ただいまの
回答率

91.06%

  • プログラミング言語

    615questions

    プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

プログラミングの勉強について

解決済

回答 5

投稿

  • 評価
  • クリップ 2
  • VIEW 279

gonp

score 2

勉強についてお伺いさせて頂きます。
わたしは今、Swift,Javascript(node.jsやReact)などを勉強しています。
ほぼひとりで、udemyやネットの情報などで勉強しております。

勉強してきて、まだ自分が理想とするものは作れていませんし、
プログラミングを一から自分で構想したり(アルゴリズムを組んだり)などもできません。
いわゆるコピペだったり、解説をみてもあー!、とわかるとこがあったりわからないとこがあったりです。
まだ勉強して3か月ほどです。
最初はとても楽しくて楽しくて(書いてること自体が)、でも最近ではこれは自分が理想とするとこへ行けるのか・・・?などと考えたりします。

そこで、みなさんにどのような過程で習得していったのか、勉強法とは・・・などを教えて頂ければと思います。

宜しくお願い致します

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • KojiDoi

    2017/12/12 00:44

    あなたにとっての「理想とするもの」は何でしょうか?

    キャンセル

回答 5

checkベストアンサー

+4

Fラン文系大学出身で在学中よりプログラミングを独学で勉強し、プログラマーとして働いています。
自分がスタートした当時はプログラミングの学習サイトと言えばドットインストールくらいしかなかったので、学習サイトはあまり見ていませんでした。
とりあえず作りたいものをイメージして、分解、分解した際にどのような技術が必要そうかを調査し、少しづつ出来ることを増やしていきました。
その時々で、一冊の本を頼りにしてみたりとにかく工夫をした記憶があります。

しかし、振り返ると大変非効率かつ無駄なことを多くしたなと思います。
以上を踏まえて、もし自分がプログラミングの勉強をやり直せるとしたら、以下のことを行います。

  • プログラミングと並行して、英語を勉強する
  • アルゴリズムを頭に徹底的に叩き込む
  • 公式ドキュメントを読む癖をつける(誰かがわかりやすくまとめた記事を読むのではなく一次情報を読む)
  • 検索は英語で行う

あまり参考にならないかもしれませんが、お役に立てれば幸いです

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/12/12 20:13

    回答ありがとうございます!とても嬉しいです。
    具体的な方法を教えてくださりありがとうございます!
    そうなんです!やっていて、とても非効率なんじゃないんか・・・?と度々思ってしまい、やる気をなくす時もあるんです。
    分解する考え方、
    英語の重要性は身にしみて感じております。。
    ぜひそれらを実践していきたいと思います!
    ありがとうございます!!

    キャンセル

+4

プログラミングを一から自分で構想したり(アルゴリズムを組んだり)などもできません

サンプルコードを読めたり、部分的に書けるようになっても、
プログラム全体設計するのが、最初は難しいだろうと思います。

そこで、フローチャートのような図解を使うのが良いと思います。
(オブジェクト指向で組むようになれば、フローチャートよりUMLを使う)
慣れれば無くても別に問題ない場合も多いですが、最初のうちは有効です。

フローチャートの書き方(富山大 工学部)
フローチャート(流れ図)とは

そして、分けると分かりやすいので、
設計時に、三段階に分けた方が分かりやすいです。

  1. 自然言語(日本語)で仕様を記述する
  2. フローチャートなどに作図する
  3. プログラミング言語で実装する

もう一点、プログラム設計のコツは、再帰的に分解することです。
プログラムで表現するには、アルゴリズムデータ構造
(究極的には二進数)で、表現できる形にまで分解する必要があります。

たとえば、将棋のプログラムを例にとってみます。
将棋のゲームソフトなら、とうぜん勝利条件の「詰み」を判定する必要がありますね。

もちろん、この詰みの判定は、言語の標準ライブラリにはありませんから、
処理やモジュールを自作する必要があります。

いきなり詰みを直接表現しようとしても、何をやっていいか分からなくなります。
そこで、詰みを別の概念で分解していきます。

  1. 詰みというのは、王手から逃げられない状態
  2. 王手というのは、次に王様を取ろうとする、一手前の状態
  3. 駒を取れるのは、敵の駒のマス目に自分の駒が進んだ場合
  4. 盤上の駒は、二次元配列上の値で区別する

つまり、「▲7六歩」を「ban[7][6] = sen_hu」みたいに表現します。
手を表現できたら、ルールに沿った合法手や、王手を判定する。
そして、王手の対応手を生成して、逃げられないことを判定すれば、
プログラムで詰みが表現できるわけです。

麻雀の上がり判定とかでも考え方は同じですし、
RPGとかSLGとかでも、さらに業務アプリでも、
再帰的に分解する手法は通用するわけです。

最後にまとめると、プログラムの設計には、図解と再帰的分割が有効だと思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+4

第二の人生へよおこそ

ピースを組み合わせて、結果が変わってそれが楽しいと感じるならばかなりの才能を秘めています。
このまま知識欲の赴くままに色々作ってみてください。

でも最近ではこれは自分が理想とするとこへ行けるのか・・・?などと考えたりします。

スポーツや音楽等は物心ついた頃から始める方が圧倒的有利ですが、
プログラミングスキルは何処までいっても論理パズルです。
貴方が何歳であったとしても今まで培ってきた論理的思考能力はそのまま使えるので、
一概に先に始めた人の方が有利とは限りません。

どのような過程で習得していったのか、勉強法とは・・・

最初から最後まで通しで作ることです。
RPGツクールのような誰でも簡単にRPGが作れるソフトを使ってもエターナる人はとても多いです。
つまり、最後まで作り切るということは終盤になるにつれ凄いパワーが必要になります。

プログラミングスキルを使ってシステムを作る事はなおさらで、とても困難です。
なんか作りたいと思い立って実際に完成させられる人は、
適当なプログラマを100人集めてきて1人程度の割合でしか居ないでしょう。

まずはどんなしょぼい小さなものでも良いので、最後まで作って完成させる事を目指してください。
私もLivedoorブログ等で小学生でも簡単にブログが持てるこの世の中、自分のブログをPHPとフレームワークを操ってどうにかこうにか作り上げました。
この経験を元に企業に就職、仕事になると完成させないと話にならないので死ぬ気でこなしている内に大抵なんでも出来るようになりました。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/12/12 20:09

    回答ありがとうございます。とても嬉しいです。
    おそらくベテランの方でしょうか。回答になんだかとても勇気をもらいました。励ましもいただいてありがとうございます。
    とりあえず、最後まで完成させる・・・それが大事ですね!ぜひ作って見たいと思います!
    そのためにはガッツとか体力、情熱も重要ですね。
    ありがとうございます!

    キャンセル

+2

参考になるかどうかわかりませんけど、私の経験を言えば、ゲームを作りながら基礎を学びましたね。ゲームといっても、坊主めくりとか神経衰弱とか、素朴なものですが。

とにかく最初はシンプルなものでいいので完成させてみる。できたら家族とか友人に見せて遊んでもらってみる。特にゲームというのは、単純なものでも、インターフェースの作り方とかイベントの取り扱い方とかグラフィックスの操作方法とかいろいろ学ばないとできませんから、初級者には良い題材かと思います。また、比較的容易にモニターユーザの確保が見込めるという点でも有利です。

人に使ってもらうと、おそらく思いもよらなかった操作法を試されて、使いにくいとか訳が分からないとか文句を言われることも出てくると思います。また、プログラムを作りこんでいくといろいろ欲が出てきて、特殊ルールを実装してみようとか表示に凝ってみようとか考え始めるものです。で、プログラムを拡張して再度モニターを頼むわけですが、理解不能だの、前のが良かっただの、散々に言われたりします。
こうした経験がみんな大いに勉強のタネになると思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/12/12 20:07

    回答ありがとうございます!大変嬉しいです。

    とにかく最初はシンプルなものでいいので完成させてみる。
    また、プログラムを作りこんでいくといろいろ欲が出てきて、特殊ルールを実装してみようとか表示に凝ってみようとか考え始めるものです。

    上記の回答、特になるほどなあと感じました。
    とりあえず、一つ作って見たいと思います!まずは、そこからですね。
    ありがとうございます!!

    キャンセル

+1

3か月ならまだまだ初心者。
というか、気分はいつでも初心者で。
常に学んでいくという気持ちが大切だと思います。
世の中はどんどん進んでいきますから。

「自分が理想とするとこへ行けるのか・・・?」と思っていらっしゃるのであれば、
やりたいことがあるわけですから、その理想に少しでも近づくための勉強を、
毎日、少しでもやっていけばいいと思います。

わからないことも沢山出ると思いますが、
そこであきらめずに、1つ戻って勉強をやり直すとか、
ちょっと別のジャンルを勉強していくとか。

どんな勉強方法がいいかは、個人差があると思いますので、
他の人の回答にお任せします。
あとは「志」を大切にすればいいのではないでしょうか。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/12/12 20:11

    回答ありがとうございます!とても嬉しいです。
    学び続けるのですね。惰性なども感じてしまっていたのです最近。。
    一歩一歩、頑張っていきます!
    志・・・とても重要ですね。
    ありがとうございます!!

    キャンセル

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

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

関連した質問

同じタグがついた質問を見る

  • プログラミング言語

    615questions

    プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。