初心者です。JavaScript本格入門という本を図書館で借りてきて呼んでいるのですが、if、forまでは理解できたのですがオブジェクト指向になった瞬間にわからなくなりました。
みなさんはどうやってわからない所がわかるようになったのですか?
また、書籍で勉強する勉強法は正しいのでしょうか..?
他の勉強法の方がいいのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/20 02:46
2019/11/20 02:48
2019/11/20 02:54
2019/11/20 03:05
2019/11/20 04:07
2019/11/20 05:46
退会済みユーザー
2019/11/21 05:06
2019/11/21 06:50 編集
2019/11/30 15:28
回答13件
0
JavaScript本格入門という本を図書館で借りてきて呼んでいるのですが
読むだけではほぼ身につきません。実際にコードを書きましょう。
投稿2019/11/20 02:16
総合スコア145975
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
はじめに
この回答は質問者が期待する直接的な回答からずれていると感じられるかもしれません。
が、私はteratailで長く回答をしていて、勉強に対する姿勢が無視できないレベルで大きいと考えています。
例えば、同じ知識レベルで同じ本を読んだとしても、他人と質問者さん(@tino1さん)では「理解するまでの時間」に差が出る可能性があります。
「問題の捉え方」や「学習へのアプローチ」など、さまざまな要素で学習効率に違いが出ます。
反発があることを承知で書きますが、私の経験上、質問内容が曖昧で、質問範囲を絞りきれてない場合は、高確率で「できない人」です(詳細は後述参照)。
この質問は、そういう質問です。
書籍とWeb
比較要素 | 書籍 | Web |
---|---|---|
長所 | 体系的知識をまとめて得られる | 膨大な情報の海から検索できる |
短所 | 情報鮮度が落ちやすい | 誤情報や古い情報もある。正誤判定できる基礎知識が求められる |
書籍で基礎をおさえて、Webで知識を広げる学習法は、どの分野でも使えます。
「できる人」と「できない人」
比較要素 | できる人 | できない人 |
---|---|---|
怠惰 | 長期的に楽をする為、基礎勉強を怠らない | 短期的に結果を得る為、簡単に作れる方法を探し回る |
短気 | 遅いプログラムにイライラする。機械化可能な手作業にイライラする。 | 目的のプログラムを作れない経過にイライラする |
傲慢 | 完璧なプログラムを求め、僅かなミスも許さない | 動けばよい。完成度は気にしない。 |
確かなもの | コードを書いて確認した事実、Web標準仕様などの一次情報を確かなものと考える | 自分は初心者なので、コードを書いても正しい理解には繋がらない。上級者に質問するのが確実である。 |
トラブルシューティング | 分割統治法で小さな要素単位で問題点を捉え、各個撃破する。分割できる知識がない場合は、自分に理解可能な単位になるまで基礎に立ち返って、勉強をやり直す | ネットで全く同じケースがないか調べる。他人に聞く。 |
「分割統治法」は過去ログも参照。
それから、Jonathan Bluks氏の記事が優良なので、参考までに。
- 10 Signs You Will Suck at Programming - Noteworthy - The Journal Blog
- [翻訳]あなたがプログラミングに向いていない10のサイン - Qiita
質問時の姿勢
「できない人」の質問は、
- 自分の状況を分析せずに、すぐに他人に尋ねます
- 質問はするものの、何が分からないのか分からないので、何の情報を出していいのか分かりません
- 中途半端に理解しているので、「本人が理解したと思っている知識」が間違っていることが往々にしてあります
回答者は、質問者の出した数少ない「あいまい」で「不正確」(出した情報に誤認から来る偽情報が紛れています)な情報から、
- 「初心者が陥るであろう状況」を想像します
- 「質問者の知識に間違いがある」と仮定して、質問者が思い込んでいる「間違った知識」を想像します
- 「掲示された情報に間違いがある」と仮定して、「正しい情報」を想像します
- 「掲示されていない情報」を想像します
というような想像ありきの、あてずっぽうで寄せられた数多くの回答の中から、たまたま質問者の状況にマッチした回答がくる事で、解決に至ります。
ただし、解決しても何が問題だったのかは質問者は理解できず、曖昧模糊とした知識からなんとなく理解した気になって、次の課題にのぞみます。
そして、次の課題で「全く同じ原因からくる問題」にあたりますが、理解できてないので解決できず、同じ問題にも関わらず、再び他人に質問します。
端的にいえば、基礎勉強が足りてないのが要因であり、以下のような状況なのでしょう。
- コピペ可能なコードで楽をしている
- 勉強はしていても、「結果優先で本文の大半を飛ばし読み」している
- 勉強はしていても、「分からない部分を飛ばし読み」している
- 「分からない部分」は想像で補完している
本当に理解する気があるなら、自分でも理解可能と判断できる平易な書籍からやり直すべきなのですが、基礎からコツコツと学習することが時間の無駄で、「今ならもっと簡単に勉強できるはず」という幻想を追い求めて、かえって遠回りをしている印象です。
当然ですが、「できる人」はこのような質問をしません。
- 確実に確かめた「間違いのない事実」を質問文に書きます
- 読む人が「事実」と「意見」を区別できるように書きます
- 「具体的」な情報を書きます
- 「理解している範囲」と「理解してない範囲」を区別し、要所を抑える事で、質問範囲を小さくします
過去ログ
- JavaScript - 今Javascriptの勉強を始める場合、教科書はどのECMAScriptに対応しているべきか|teratail
- JavaScript - JavaScriptの入門を解説しているサイトはどこが良いでしょうか?|teratail
Re: tino1 さん
投稿2019/11/30 15:05
編集2019/12/01 04:57総合スコア18189
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
前の質問についた回答をきちんと取り込まずに退化した状態で質問してる状態では身に付くものも身に付かないと思います。
既に勉強法についての回答ももらっています。それを差し置いてまた新たな質問を立てても同じか、さらに厳しい答えが返ってくるだけです。
前の質問についた回答で理解できないことがあればその場で聞き、もっと詳しく知りたいならその場で聞き、詰めていくようにしてください。
ひとつの問題に対して解決方法はひとつではないので回答が複数つくわけです。
ベストアンサーに選んだ回答だけが全てではありません。
すべての回答を吟味し、自身の血肉にしていってください。
一発で全てスッキリ解決とかなかなかないですよ。熟練者でも試行錯誤の連続で問題解決をしていっています。
初心者であれば尚更試行錯誤の回数はその倍以上は必要です。
投稿2019/11/20 02:52
編集2019/11/20 02:56総合スコア80875
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
「JavaScript本格入門」は良書だと思いますが、プログラミングがはじめての人にとっては、ちょっと難しかったかもしれません。
もう少し易しめの本を選び直すか、Progate で学習することをおすすめします。
Progate > Javascript
https://prog-8.com/languages/es6
また分からないところは、「javascript オブジェクト指向」のようなキーワードで Google 検索すれば、解説サイトが出てくるので参考にしてみてください。
それでも理解できなければ、teratial で質問すると良いと思います。
投稿2019/11/20 03:54
総合スコア6500
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
オブジェクト指向になった瞬間にわからなくなりました。
有効な学び方は人により違います。
オブジェクト指向といった概念を学ぶために、書籍を読むのは非常に有効ですが、抽象思考の苦手な人には難しいというか無理な気がします。
概念を学ぶために、多くの人に有効と思えるのは、わかっている人と対面で対話を通じて学ぶことです。
それが難しい場合は、いろいろな学び方を試してみて、自分に合った学び方を探すことでしょうか。
また、理解したことが正しいかを確認して理解にフィードバックするには、簡単なプログラムを書いて実行してみて、期待通りの結果になったかを一歩ずつ確認することが大事です。
基本の理解が不十分なのにもかかわらず、そこそこ複雑なプログラムを書こうとして躓いて、このサイトで質問している人多数。
投稿2019/11/20 04:55
総合スコア85893
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
みなさんはどうやってわからない所がわかるようになったのですか?
自分の場合は職場で教えていただける方がいます。
ただ、一から十まで手取り足取り教えてもらっている訳ではないです。基本は家に帰って黙々と勉強しどうしても分からない箇所だけslackを通して教えてもらってます。疑問に思ったことはテラテイルをうまく活用していくことが効果的です!
あと、質問する際は「質問スキル」がとても重要となります。
もし、周りに教えていただける方がいない場合は独学を続けるかメンターさんを雇う方法が有効だと思う。
また、書籍で勉強する勉強法は正しいのでしょうか..?
書籍で勉強するのは基礎部分だけにしておくべきです。いつまでも基礎部分ばかりやってると先に進めません。
あとは実際に手を動かして「何か成果物を作る」ことです。
何を作れば良いのかわからない場合はネット上にいっぱい転がってますが、個人的におすすめなのは「キータ」です。
自分は「ストップウォッチ」「スロットマシーン」「文字が1秒ごとに表示されるカウントタイマー」作成にチャレンジしてます。
他の勉強法の方がいいのでしょうか。
この勉強方法で良いと思いますが
分からないことがあれば教えてくれる環境を自分から率先して作る必要性があります。一番よろしくないのは分からなかったことをそのまま放置することです。そうなってしまうといつまで経っても上達しません。
投稿2019/11/21 04:53
編集2019/12/01 06:37総合スコア128
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
本で学ぶのはありだと思いますが、JavaScriptは時代によって全然違うのでネットでの勉強もおすすめします。
それにある程度学んだら、やはり実際になにか作ってみるべきです。
オブジェクト指向はあとまわしにして、まずはちゃんと動くものを作れる程度の、関数や変数などの習得を優先したほうがいいと思います。
最初は侍チュートリアル、Progate(有料)などのわかりやすいサービスで学び、
それから公式、もしくはそれに準じる情報量の資料を読むことをおすすめします。
(おすすめは「現代のJavaScriptチュートリアル」、「js STUDIO」など)
金銭的に余裕があれば、MENTAで個別に質問できる先生を見つけるのが一番だと思います。
(安ければ月1000円の方も居ます。)
Progateはわかりやすいといいましたが、わたしはそれでも苦戦しました。
やはり初めてのプログラミング言語なので理解できない部分はかなり多いとおもいます。
最初は気にせず、ある程度のとこまで勉強したら、なにか作品をつくってみるのをオススメします。
(ToDoリストなど)
素のJavaScriptだと難解なので、最初はjQueryなどのわかりやすいライブラリを使用してもいいと思います。
投稿2019/11/20 02:39
編集2019/11/20 02:47総合スコア975
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/20 02:47
2019/11/20 02:53
2019/11/20 03:04
2019/11/20 03:09
2019/11/20 03:09
2019/11/20 03:18
2019/11/20 03:32
2019/11/20 04:01
2019/11/20 04:17
2019/11/20 04:19
2019/11/20 04:23
2019/11/20 04:25
2019/11/20 11:02 編集
0
書籍での勉強はお勧めできません。図書館の本なら尚更です。
言語は今や世界中で開発が行なわれています。
そのような中で書籍が最新の情報に合わせられるわけがありません。
JSにはMDNというMozila社のドキュメントのようなものがあります。
(Mozila社 = FireFoxの開発元)
そちらを読んで学習された方が良いかとは思います。
ちなみに本を借りて読んで失敗した例が私です。
投稿2019/11/20 02:18
編集2019/11/20 02:20総合スコア10429
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/20 02:18
2019/11/20 02:40
2019/11/20 02:42 編集
2019/11/20 02:45
2019/11/20 02:46 編集
0
必要なものでないと覚えられないと思います。
逆に言うと今、必要でないものはまず覚えられないと思います。
実際にソースコードを書く。
↓
何か同じことばっかり書いてるなあ、まとめてみよう、となる。
↓
他の人どういうふうにまとめてるんだろう、と調べる。
↓
これスッキリしてるなー、オブジェクト指向って言うんだ。
↓
オブジェクト指向について調べて使ってみよう。
自分はこんな感じでした。
※「同じことばっかり書いてるなあ」は一例で、「メンテ性悪いなあ」「もっとキレイに書きたいなあ」などもあります。
投稿2019/11/21 06:32
編集2019/11/21 06:35総合スコア559
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
※ 一部、私の愚痴入ります。
私個人の意見として、JavaScriptでのオブジェクト指向を学ぶこと は おすすめできません。
私が知っているJavaScriptは古かったようです...
もし、入門書でわかりにくい部分があったら、実際に使ってみることです。
そう...ですね、プロの選手の技術を口だけで学ぶようなものです。
相手はプロなので、すでに分かっています。
なので「がーっといって、がーっと帰ってくる」みたいな抽象的な表現しかもらえないこともしばしば。
自分でコツを掴むとわかりやすいですよね。
(私は体育苦手だから詳しくはわからないけど...)
それと一緒で、実際に体験してみること。
[追記1]
maisumakunさんからご指摘を頂いたので追記。
「OOPをやろうとしてJavaScriptを始めた」のではなく、...
あ、確かにそうですね。修正しておきます。
そして、ES6以上ではクラスベースとしての見た目も整ってきて、...
マジですか... なるほど。修正しておきました。
投稿2019/11/20 02:32
編集2019/11/20 02:46総合スコア4962
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/20 02:37
0
「JavaScript サンプル」で検索すると良し悪しはありますが
サンプルコードにヒットします。
それをベースに勉強するのもありかなと思います。
わからないところは、QAサイトに質問する。
投稿2019/11/26 13:55
総合スコア338
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
オブジェクト指向になった瞬間にわからなくなりました。
私も最初は「抽象化」について理解できずにいました。
オブジェクトは「抽象化の概念」で、実際の値を持たせて扱うことが具象化(新しいオブジェクトを作る/インスタンスを生成)と覚えています。
抽象化はこんなふうに考える。
1)「数値が1つあり、最初の値は0で、ある操作で1つずつ加算していく」を抽象化すると「カウンタ」。
2)「数値が2つあり、それぞれ、X座標、Y座標を表すもの」を抽象化すると「点」。
3)「数値が4つあり、2つずつに分けて2つの点(始点と終点)を表すもの」を抽象化すると「線」。
4)「数値が2つあり、それぞれ、X方向の大きさ、Y方向の大きさを表し、計算できるもの」を抽象化すると「2次元ベクトル」。
上記の「カウンタ」で教わった例をモダンな class ブロックで書いてみました。
オブジェクト(抽象化の概念)には、こんな特徴があります
- 変数宣言や関数定義を簡素にしてくれる。
- 操作(関数の動作)が保証され、それに伴う値も正確。
- 何が起こっているのかわかりやすい(リンク先コメントも参照)。
投稿2019/11/24 03:38
総合スコア5434
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。