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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

7回答

2260閲覧

プログラミングの効率の良い勉強の仕方

Java_Test2019

総合スコア27

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/04/25 02:21

前提・実現したいこと

プログラミングの効率の良い勉強の仕方

発生している問題・エラーメッセージ

非効率な勉強の仕方をしているのかもしれないという疑問による私の悩み

該当のソースコード

試したこと

効率よく学習を進めるなら手を動かして学習すると良いときくので、よくある入門サイトのような教科書系?のものではなく、Progateなどのような実際に課題に沿って(図解もありますし)学習サイトで勉強していました。
しかしクレジットカードを持っていないので有料部分は使えず、他の学習サイトも今後学ぶレベルの部分が有料でした。そこで有料部分のチャプターのタイトルだけは見えるので、そのタイトルを検索して出てくる入門サイトを目で読んで勉強しています。

しかし、こちら初心者でやはり、学習サイトのように図解がなかったり解説には多くの知らない単語があったりしてその度にその単語を検索してと、素人目線ながら非効率だと思っております。
また、サンプルプログラムの点でも非効率だと思える所があります。
Progateの有料部分でオーバーロードという項目があったのでオーバーロードの項目がある入門サイトを検索してきて調べたりもしていました。しかし、これまで扱ってこなかったprivateという修飾子?などが載っていて一つ一つ調べる形になってしまいます。

このようにたとえ1日ずっと勉強していても、その中で手を動かしてコードを書くなんていう作業は稀な形になってしまっています。
効率よく改善する方法などありましたらご教授お願い致します。

補足情報(FW/ツールのバージョンなど)

先日勉強の仕方やProgate以外の学習サイトについてあれこれ調べていたところ、ここをおすすめしているサイトを見て、学習サイトではないけれどもQ&Aサイト、例えば知恵袋のような質問回答のサイトだと知り、さっそく登録して今回初めて利用させて頂いております。
ですのでこの度の質問でおかしな点、例えば勉強の仕方を聞く所ではなく、質問はエラーを探して欲しいというルールに限るなどであればご指摘ください。

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

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

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

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

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

guest

回答7

0

ベストアンサー

身もふたもないことを言ってしまえば、無料で済ませようとすれば非効率になるのは至極当然です。
まずは効率よく一通りやりきりたいというのであればお金を払いましょう。

また、プログラミングをしていると調べるという作業は必須です。
資料に沿ってプログラムを書いて動かすのは簡単です。
わからなくても動いたら楽しいですよね。

でもプログラミングってどこかしらでエラーは出ますし、
日に日に新しい技術だって出てきます。
エラーの解決も新しい技術を知るのも調べる力がないと手が止まってしまいます。
今のうちにその調べる力を身につけるのも学習の一つだと思います。

「コードを書いていない=手が止まっている」ではありません
コードを書いていなくてもプログラミングに必要な知識を蓄えているので、
そこでやる気が腐らないように気をつけてください。

投稿2019/04/25 03:06

編集2019/04/25 03:07
dice142

総合スコア5158

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

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

Java_Test2019

2019/04/25 04:13

回答有難う御座います。 皆さん本当に有難う御座います。そして済みません。質問の趣旨がおかしかったです。効率の良い方法を聞いていたのは確かですが。王道なんてないですよね。 そして「「手を動かしていない=学ばない」ではない。むしろ目で追って調べるのが大事」これが安心しました。逆にこれが不安で質問していました。 プログラミングを勉強していていつも手を動かさなければ意味がないと聞かされていたのですが錯覚だったようです。勿論基本を覚えたら書くことは大事ですが。
dice142

2019/04/25 04:22

> プログラミングを勉強していていつも手を動かさなければ意味がないと聞かされていたのですが錯覚だったようです 手を動かさなければ意味がないのは本当です。 ただ、それだけでは足りないのです。 やりたいことを企画して設計して処理の手順を整理してコードを書いてわからなければ調べてと、 プログラムを書く以外にもプログラミングの勉強はたくさんあります。 あくまでもプログラムを書くのは「手段の一つ」で、プログラムを書く目的は「(何か)を作る」ことです。 頑張ってくださいね。
guest

0

プログラミングを学ぶなら、まずはその言語の基本文法を憶えて、リファレンスの調べ方を学びます。実際に手を動かすのはその先です。

英語の読み書きの学習で言えば、
・アルファベットを全部暗記する
(プログラミングで言えば if とか + とかの意味は暗記)
・名詞とは何か、動詞とは何か、等を理解する。憶えきれない部分は、分からない時に文法をどう調べればいいかだけ理解する
・英和辞書の調べ方を理解する
これらをやらずに、いきなり英文を読もうとすると、非常に非効率です。

投稿2019/04/25 02:36

otn

総合スコア84538

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

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

Java_Test2019

2019/04/25 02:55

皆さん通ってきた道なのですね。オーバーロードを知りたくてサンプルプログラムを書いて覚えようとする、その前にコード内の一つ一つを理解してるか見る、privateとはなんだろう→修飾子→修飾子とはなんだろう→メンバにどうのこうの→メンバとは~、理解できたら逆戻り、つまりメンバの解説を理解したら修飾子の解説へ、privateとは、→コードの把握を継続、またわからない用語や形式({}→メソッド→メソッドとは等)が出てきたらそのつど調べてコード全部把握できたらようやく1回手書き→次の項目へ という感じで皆さん勉強してこられてベテランに・・・という理解で宜しいでしょうか?一概には言えないと思いますが一般的には。
azuapricot

2019/04/25 03:16

通りすがり失礼します 誰しもそうじゃないでしょうか。 理解しないで適当にいきたありばったりでコーディングしてる人はコピペ人間にしか慣れません。 ちゃんとなんだろう、と疑問を思って調べながら少しずつでも先に進めているのであればそれは十分効率的かと思いますよ。数ヶ月もたてばちょっとずつ自分なりにコーディングできるようになってきます。 何回も何回も privateってなんだっけ? (数時間後)あれ?privateってなんだっけ? (数時間後)あーまたprivateってでてきた、なんだっけ? ってなっているようでは覚え方が宜しくないので非効率ですがね~
otn

2019/04/25 03:33

> という感じで皆さん勉強してこられてベテランに・・・という理解で宜しいでしょうか? それでは駄目だと書いたつもりですか、伝わってないようですね。 英語の比喩は理解できませんか?
Q71

2019/04/25 04:49

nomura2018さん 手を動かす前に、基本の知識が必要です。オーバーロードを知るためにサンプルを動かすのではなく、言葉の意味を知ってください=英和辞書引け。知識なくして知恵は産まれず、知恵無くして知識は活きません。まず、知識を蓄えてください。
guest

0

初学者が躓くポイントは決まっていて
・公式サイトが読めない
・開発環境が作れない
の 2 点です。

一般的には、上記ができるようになるため書籍で体系的な学習をします。
書籍であれば入手できるのではないですか?
公式サイトが読める程度になれば、書籍は卒業です。

で、次に躓くのが
・なんかアプリを一人で作ってみる
です。

これは、初学者向けに経験者がよく言う学習方法ですが間違っています。
初学者はまず間違いなくアプリを作れません。

アプリの作成には
・(企画)
・設計
・実装
・テスト
・リリース
の手順を踏みますが、実装の学習中に設計なんてできるわけないからです。

公式のドキュメントが読めるようになったら、軽く設計を学んでみると良いです。
簡単なアプリの設計は、フローチャートがかけるレベルの理解で作成できるので、学習もその程度で良いかと。

頑張ってください。

投稿2019/04/25 03:48

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

m.ts10806

2019/04/25 03:52 編集

>初学者が躓くポイント エラー読めない(読まない) もかなり多いと思います(teratailの質問の多くがそれですし)
退会済みユーザー

退会済みユーザー

2019/04/25 03:53

それは多分エーゴが読めないだと思うw
退会済みユーザー

退会済みユーザー

2019/04/25 03:54 編集

開発環境(デバッグ環境まで含む)が構築できたら、かなりエラー系の疑問も軽減されるはずなんだよねぇ。
m.ts10806

2019/04/25 03:55

あぁ、なるほど。デバッグまで開発環境に含めるとそうなりますね。
Java_Test2019

2019/04/25 04:32

開発環境の用意ではなく構築、例えばエクリプスみたいなものを独自で作れるとエラーも調べなくてもわかる、しかしそこまでいかなくとも英文を翻訳サイトで調べれば基本エラー内容は、いやどうエラーなのかはともかく文が読めるという事ですね。
Java_Test2019

2019/04/25 04:38

回答有難う御座います。 つまり覚えるために手を動かせ!は基本文法を理解してからって事なんですね。ifとかwhileやクラス、メソッド、戻り値等よくある入門サイトにある基礎中の基礎を全部理解した!ってだけじゃまだ基本文法を理解したなんて言えないって事ですねえ・・・。入門サイトに載ってるのは分厚い入門書の最初の部分だけですものね。そして入門書を全部理解してはじめて基本文法レベル脱出!ですか。そしてそれまでは読む事が大事。よくいうとにかく手を動かせ!っていうのはそのあとなのですね。もちろん一つ一つの項目にあるサンプルプログラムくらいは書いたほうが良いと思いますけど。「とにかく」手を動かせは文法完全網羅レベルの人が・・・という話で。
m.ts10806

2019/04/25 04:38

おおよそ理解されてないようなのでついでに突っ込んでおきますと、 Eclipseにはそもそも構文チェックがついてるのでわざわざ作る必要はないです(あのチェックもデバッグの一環) それに内部の仕組みまで詳しいわけではないですが、あれも非同期でバックグラウンド実行した結果、 プログラムが返すエラーを拾って表示しているだけだと思うんですよね。 別にEclipseがエラーを作って返しているわけではないです。出力されたエラーをもとに「適切な調査ができるかどうか」の話です。 「デバッグとは」知りたいのでしたらそこから調べてください。他のコメントもそうですが、結構ずれてます。
退会済みユーザー

退会済みユーザー

2019/04/25 04:56

すでにツッコミが入ってますが、おおよそ間違って理解しようとしています。 会話が成立していないのは体系的な知識が無いためです。 こういった非効率を避けるために、体系的な学習をしたほうが良いよ。ってのが回答主旨です。
Java_Test2019

2019/04/25 07:07

返信ありがとうございます。ちょっとまだわかりかねておるのですが体系的な学習、体系という事は骨組みという事ですよね、つまりは文法、つまり用語という事でしょうか?
退会済みユーザー

退会済みユーザー

2019/04/25 07:52

私自身が大切にするのは用語やその言語の持つコンセプトとかです。 この辺が理解できると学習効率は上がると思います。 *学習効率が上がると言うより、他者との会話(記述内容の理解を含む)が正確になると言ったほうが良いかもしれないですが。 文法とか関数の使い方は、最近は IDE やエディタが賢く提案してくれるので、使うときに調べられれば問題にはなりません。 ちなみにほぼ同じタイトルで私も質問してますw 「C# の最短学習方法を教えてください」 https://teratail.com/questions/147026 参考まで。
m.ts10806

2019/04/25 07:54

文法と用語はイコールにはならないので、まずはそこから。
guest

0

teratailの基本的な使い方はヘルプを読んでもらうとして。
(特に「質問するときのヒント」「推奨していない質問」は必読です)


王道は、ないです。

学習サイトのように図解がなかったり解説には多くの知らない単語があったりしてその度にその単語を検索してと、素人目線ながら非効率だと思っております。

基本的に「調べて出てきた情報のなかに見覚えのない・知らない情報がでてきたらそれを更に調べる」というのは日常的に行われる行為です。
というか、それしかないです。
私も今でもよくやっています。

ただし、「100%概念や歴史・経緯まで全てを把握」する必要はありません。
例えばPHPはC言語で作られたプログラミング言語ですが、わざわざC言語の元ソース(オープンソースなので誰でも観れます)を確認しないとプログラムが組めない、ということはありません。
PHPマニュアルという公式のマニュアルサイトがあり、ほとんどがそこで事足ります。
私もC言語の元ソースを読み込んだことはほとんどありません。PHPマニュアルで用事は済むからです。

それはどの言語にも言えることです。
用語については「分かった気になる」くらいで良い場面も多いです。

「確かこんなのあったよな」「マニュアル・リファレンスにあったよな」程度の記憶でもじゅうぶんやっていけます。
というか、マニュアル・リファレンスの内容を全て暗記している人って、そうそういません。
辞書と同じように、必要な時に必要なだけ調べる、そして、最小構成のコード(ミニマムコード)で実行して確かめる、ができればそれだけで理解度や成長度は上がります。
そしてエラーメッセージがでたときの対処法や手順を把握、確立しておくことですね。

どの言語でも「デバッグ能力」が高い人はそのまま「問題解決能力」の高さにつながります。
プログラミングの本質は「問題解決」なので。

もし、具体的な目標や、作りたいものなどがしっかりあるのでしたら、お金払って学習サイトで学ぶ必要はないと思います。
現に私はPHPを主業務として扱っていますが、スクールに通ったことはありません。大学は文系学部でしたが、社会人になってから出会いました。

必要な時に必要な技術を必要なだけ身に着ける、というところが開始だと思います。もちろん体系的に学ぶために一通り網羅した書籍を購入する必要はあると思います。
(※じゃあオススメ書籍はなんじゃい、って聞きたいのでしたら過去質問を探ってみると良いです。結構この手の質問あがってます)

ひとまず、自身が何を目標・目的としているかからをまとめてみて、それに合ったやり方を模索していってはどうでしょうか。

投稿2019/04/25 02:35

編集2019/04/25 02:38
m.ts10806

総合スコア80850

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

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

Java_Test2019

2019/04/25 02:49

回答有難う御座います。 となると、コード手書きで覚えようというのは全部把握が前提という事でしょうか? 例えばサンプルプログラムのコードの一つ一つを全部把握、全部だけれどそれぞれの把握度は載せて頂いた解説サイト程度で可、というのが前提ということでしょうか。 オーバーロードのサンプルプログラムを覚えようとしてprivate→調べて修飾子→修飾子を調べてメンバに~→メンバとは~、という感じでそれぞれ深い所まで。 た、大変ですけど皆さんそこからやっているという理解で宜しいですか?
m.ts10806

2019/04/25 03:03 編集

勘違いしてはいけないのはコードは自ら書くものであって覚えるものではないということです。 学校のお勉強とは違うので、資格試験はひとまず置いておいて、何かの目的や問題解決のためにコードは書かれるものだからです。 同じ結果を出すコードがすべて同じように組まれているかというとそうではありません。 簡単に書くことも難しく書くこともできます。要件を満たすことが第一です。 例えサンプルコードであっても動かすのは自身の手によって動かされます。どこかで拾ったコードでも同じです。 そのコードがなにをしようとしているか、なんの目的で組まれたもの、書かれたものかは誰でもない自身が把握しておく必要があります。 プログラムは思ったように動くのではなく書いたように動くので、「なんとなくうまくいってる」というのがあってはいけません(システムが少し大きくなれば自身の手に負えないコードになります) ですので回答に書いたように「最小構成のコードを」自身の手で書き、自身の手に負える(責任がもてる)よのから確実にしていきます。 例に出されたアクセス修飾子については「情報へのアクセス権限」として、どのようなものがあるか、それぞれどのような権限や効果があるか、のみ調べておき、それぞれの適切な使用方法や効果についてミニマムコードを書いて(あえてエラーとなるように書いてみるのも有用)、理解していくという感じですね。
m.ts10806

2019/04/25 03:39

必要な出費は惜しまないことも大事です。その「出費」には実際のお金だけではなく時間も含まれます。
Java_Test2019

2019/04/25 07:00

ですね。ただ支払い方法的に難しいものが多いです。
m.ts10806

2019/04/25 07:04

そこは知らないですが必要なものであれば揃えるべきかと。 厳しいこと言うと、二言目には言い訳が出る人はたいてい何やってもできるようにはなりません。
guest

0

できるだけ親切に説明していそうな教科書(書籍です)を何冊か入手して、辛抱して読んで理解してください。手を動かしたいのであれば、読みながらサンプルコードを書き写して実行してみてもいいし、気になることがあったらコードを適当に書き換えて動作を検証してみるとか、いろいろやってください。

独学で、一番お金がかからなくて効率のいいやり方はこれです。基礎を体系的に勉強したければ、入門書が一番いいのです。

ただし、一人で入門書を読んでいくのは、やればできますが、やる気と努力が要ります。これで挫折するという人が、お金を払ってメンター(skypeとかで教えてくれる教師みたいなもの)をつけたり、オンラインスクールで勉強したりする訳です。

オンライン学習はお金を落としてくれないユーザにまで親切に教えてくれるようにはできていません。支払えないなら、期待しない方が良いでしょう。

インターネット検索は、ある程度見通しのついている人間が部分的にわからないことを調べるにはいいのですが、右も左もわかっていない人間が勉強するには不向きです。むしろ、初心者向けの記事ほど(大きい市場なので)いろいろなところ(企業も個人も)が金銭的利益のためにいい加減な記事を書き散らしていて、鬼門になっています。ゴミサイトばっかり見ても勉強になりません。


本の買い方について。

まず、買う本を決めます。これは新しいもの(過去2年くらい、自分が使う言語等のバージョンと一致している必要がある)の方が良いのと、ネットのレビュー(amazon,書評サイトや個人のブログなど)が高評価で自分の学習目的に合っていそうなものを選びます。初心者なら親切に解説してある本がいいので、そういうところをウリにしている本を探しましょう。

そのまま通販で注文しても良いですが、もし自由に通販を使えない身分なら、近所の本屋さんに行ってみましょう。棚に並んでいないことの方が多いですが、その場合はカウンターで言えば取り寄せできます(取り寄せたい本を特定できるだけの情報をメモって持っていくこと。それか、出版社のページでもスマホ画面に出して店員さんに見せる)。

投稿2019/04/26 16:59

編集2019/04/27 01:07
hayataka2049

総合スコア30933

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

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

0

しかしクレジットカードを持っていないので有料部分は使えず

Progate の有料プランでは、デビットカード・プリペイドカードも使えるようです。

Progate>よくある質問
https://prog-8.com/plans/for_users

また、無料で利用できるプログラミング学習サイトとして、ドットインストールもおすすめです。

投稿2019/04/25 02:43

nskydiving

総合スコア6500

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

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

Java_Test2019

2019/04/25 02:58

回答有難う御座います。 プリペイドも持ってないのですよね・・・; 他サイトの紹介有難う御座います。 今後学ぶレベルはやはりどこも有料部分で・・・
nskydiving

2019/04/25 03:58 編集

プリペイドカードなら年齢制限もなくコンビニで買えますよ。
Java_Test2019

2019/04/25 04:07

そうなのですか!?知りませんでした!有難う御座います!
guest

0

自分のR&Dプロジェクトを作成しながら、「Udemy」みたいなサービスを使えばいいと思います。

投稿2019/04/25 02:27

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Java_Test2019

2019/04/25 02:38

回答有難うございます。Udemy拝見させて頂きました。 つまり通信教育が効率良し、ご推奨なされているという事でしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問