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

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

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

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

Q&A

解決済

3回答

2772閲覧

Javaの学習について

talabagani

総合スコア50

Java

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

0グッド

3クリップ

投稿2021/07/08 08:00

編集2021/07/08 08:37

#[目的地]
プログラミングで仕事の効率化をしたいと思っています。
学校の時間割を作るプログラムを作ったり、学校の三者面談のスケジュールを作るプログラムを作ったりしたいと思っています。
将来的には、プログラミングの基礎を教えられるようになりたいと思っています。

#[聞きたいこと事]
学習に行き詰まっており、ちょっとお聞きしたいです。
コードについての質問ではないので、こちらに投稿していいかちょっとわからなかってのですが、
よろしくお願いします。

現在、Javaを独学で学習しています。
2021年5月中旬から独学でJavaを学習しはじめました。
progate、ドットインストールなどで基礎を学習した後、Udemyの教材で学習をしています。
スッキリわかるJava入門 実践編 という本も愛読して8割ほど繰り返し読みました。

現在Udemyで学習している内容はprogate、ドットインストールなどでの既習内容です。
つまづくこともありますが、どうにか楽しく学習ができています。

このあたりの基礎内容は、さらに演習をこなしてどんどん慣れていきたいと思っています。

この後、2、3週間学習を続けると、Java FX やJava データベースやJava ネットワーキングなどの内容に進みます。
もちろん、基礎のないようも引き続き学習予定ですが、新しい内容にも少しづつ進んでいきたいと思っています。
これらの内容はprogate、ドットインストールではカバーされていない内容です。

Udemyは英語の動画で実は私にはちょっとハードルが高いと思っています。
既習内容なら英語の動画でもどうにかなるかもしれませんが、まったく新しい内容を学習するのはちょっときついと思っています。

Java FX などは、ちょっと動画をみて学習をしてみましたが、歯が立ちそうな気がしませんでした。
アマゾンで本を探してみましたが、たくさんはないようでした。
おすすめの本などありませんか?

皆さんはこれらの基礎以降の学習内容をどのように進めました?
おすすめの教材や学習方法はあったら教えてください。
現在は、メンターなどのサービスをお願いして、まずはJava FXの導入部分だけでも教えてもらおうかと考えています。
スクールに行くことも検討はしていて、見学にいったりもしているのですが、なかなかよさそうに思うところに出会っていないので行っていません。

#[環境]
Java version 16.0.1
VS Code
Mac OS Big Surの環境です。
java -version
java version "16.0.1" 2021-04-20
Java(TM) SE Runtime Environment (build 16.0.1+9-24)
Java HotSpot(TM) 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)
MacBook:09_MinutesToYearsandDayCalculator $

パソコン MacBook(Retina, 12-inch,2017), memory 8GB

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

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

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

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

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

dodox86

2021/07/08 08:11

ご自身で書かれているとおり、非推奨な質問であることはそうなのですが、この先、Javaを使って何をしたいかで大きく変わってくると思いますよ。趣味で続けたいとか、仕事に役立てたい、とか。その辺りを追記するとたぶん、話の成り行きが変わります。質問への風当たり(?)をある程度覚悟すると、有意義な(時に辛辣な)回答をいただけると思います。 teratailのトップページで「Java 学習」で検索するとたくさんヒットしますのでそれらも読むと参考になるかもしれません。それらの回答は恐らくプログラミング全般に言えます。
退会済みユーザー

退会済みユーザー

2021/07/08 08:16

何か目的があって、学習されていると思います。 目的から逆算して「何を学ぶべきか」「何を経験すべきか」を調べて、それを重点的に学習した方がいいです。 はっきりとした目的がないなら、身近なスクールに通って、そこで目的を探したり、相談したりするというのもあります。
gentaro

2021/07/08 08:19

アンケートサイトじゃないし、回答が正しいとも間違っているとも客観的に判断できないし、万人に共通する学習方法なんて無いので、明確な非推奨質問。 https://teratail.com/help/avoid-asking それを考慮しなくても、このサイト上でも過去に同様の質問は多数ある(コレ自体どうかと思うけど)し、ググれば体験談なんていくらでも出てくるので、この手の質問する人はいったい質問する前に何を調べたんだ?と思うんだけど、何度も同じような質問を目にするのがうーん…。
m.ts10806

2021/07/08 08:23

過去質問は何一つ役に立たなかったのでしょうか。 行き詰まってる割には過去の資産からヒントを得ようとする気概が全く見られません。 結局同じような既視感のあるアドバイスにしかなりませんよ。
K_3578

2021/07/08 08:42

先に言われてるようにJavaで何をやりたいかです。Javaは結構なんでも出来るので、 同じJavaを使った物でも全く方向性が違ったりするので、そこを明確にしないと、 「まぁ、好きなように頑張って。」ぐらいのことしか言えません
Zuishin

2021/07/09 02:01 編集

ドットインストールは基礎ではなくチュートリアル、つまり「こんなことができるよ」という体験入門です。入門ですらないし、これを終えても初心者にすらなれないのです。 最近は猫も杓子もプログラミングをしたがり、体験入門を終えて「基礎ができた!」と喜んでいる自称初心者が多いですが、それは間違いです。 基礎というのは、それを積んでおけば応用ができるもののことを言います。 体験入門で武術の型を教えられただけの門外漢が「武術の基礎を学んだ」と喜んでいたら、地道に基礎を積んでいる初心者に笑われるでしょう。 ドットインストールで教えられているのは基礎ではなく応用の一例であり、これを終えただけの人は習ったこと(応用の模倣)しかできないので、だいたい他のパターンを自分で応用することがができず途方にくれます。 動画を見るのを今すぐやめ、できるだけ分厚い入門書を購入してください。
Crimson_Tide

2021/07/10 09:42

良さげなスクールを見つけてそこで学ばれるのが一番かと思います。 独習であれば、Zuishinさんご指摘のように、もっとしっかりした分厚い入門書がよいですが、残念ながら良書を知らないので紹介できません。 しかしながら、スッキリわかるJava入門 実践編 を読むぐらいなら、基礎知識を十分習得されているように思えない現状を鑑みるに、 「スッキリわかるJava入門 第3版 スッキリわかるシリーズ」https://book.impress.co.jp/books/1119101083 入門編というべきこちらを読むべきです。 その上で理解できたか確認のために、下記どちらかで問題を解いてみてはどうでしょう。 しっかり理解していないと、正答できません。 徹底攻略 Java SE 8 Silver問題集[1Z0-808]対応 https://book.impress.co.jp/books/1115101068 徹底攻略Java SE 11 Silver問題集[1Z0-815]対応 https://book.impress.co.jp/books/1118101186
guest

回答3

0

ベストアンサー

こういうタイプの質問、マジで多いので書いておきます。

※ 今回はJavaですが発想自体は他の言語(PHP, Perl, C言語, C++, C# ...) でも同じです

まず、プログラミングは「こう書けばいい」……ではないです。

プログラムは魔法でもなんでもなく、人間が現実世界でやっていることを逐一指示されながら処理しているだけの代物である』です。

元々は軍事利用でした。

弾道計算や暗号解読とかです。

一応、人間が手作業で暗号解読とかをやることは可能ですが、非効率であり、現実的じゃないです。

暗号方式や時代によっては、たかだか『Hello』の5文字ですら、
1カ月やそこらかかります。
(厳密にはそこまでかからなくても、労力のわりには……)

そこで「んー、じゃあ機械に任せればよくね?」ってことでコンピュータの登場です。

ですがこのコンピュータは 0と1からなる機械語(machine language) しか認識できません。

イメージ的には、

10111101010111010101010101101110000110110101000...

のようなものです。

人間にはきついので、アセンブラとかの言語が出来ました。

ですが問題があったため、C言語とかのような構造化プログラミングができました。

ですがまだ問題があったのでC++やJavaと言ったオブジェクト指向が出来ました。

ですがまだ問題があったので……

というような感じです。

(厳密には違いますが、大雑把な流れはこんな感じ。後はご自分で調べてください)

言い換えると、「私達人間がやっている手順を独自の書き方で書き下し、機械に命令する事」です。

たとえば、テーブルの上にリンゴが一つあるとしましょうか。

Aさんにとって来てもらいます。

さて、どのように命令しますか?

「Aさん、そこのリンゴ、取って来てくれない?」とかその辺でしょう。
(言い回しは変えてもいいけど)

ですがコンピュータにこういう命令をしても認識できません。

コンピュータには、

(下記はあくまでイメージ)

1. 速度◇、10cm前進しろ 2. 右腕を90°、速度◇で挙げろ 3. 右腕を35°、速度◇で下げろ 4. 右腕の人差し指第一関節を速度◇、35°下ろせ 5. 右腕の人差し指第二関節を速度◇、34°下ろせ 6. 右腕の中指第一関節を速度◇、32°下ろせ ...

というような感じで逐一指示しないといけません。

ですが、ここにロジック違反があるとします。

たとえば 出発地点からテーブルまでの距離が8cmしかなかったとします。
普通にぶつかりますね。

速度によってはテーブル自体を倒してしまいます。

このロジック違反を修正したりするのがデバッグ。

つまり、プログラミングっていうのは、

『人間が手作業でやっている処理を細かく指示し、(ロジック等の)違反があれば修正したりすること』です。

よって、プログラミングは「書いて終わり」ではなく、デバッグやテスト(検証)まで含みます

では入門書等( ProgateとかUdemyとかも含む ) にあることは無駄なのでしょうか。

いいえ、違います。

料理をするときに、すぐに料理に取り掛かりますか?

道具(包丁, 鍋, フライパン等) や材料(ジャガイモ, 牛肉, ニンジン等)がそろっているか調べますよね。

そのうえ、包丁の使い方がわかっていないと簡単に自分の指を切ってしまいます。
(いわゆる「猫の手」っていうやつにしないと……)

そういう『道具の使い方』や『材料がそろっているかの調べ』が基礎に相当します。

では、基礎だけできればいいのか。

いいえ、違います。

プログラミングというのは『機械に命令する事』でした。
(上記を参照)

ではどうすればいいか。

そう、『実際に何かを作る』です。

ただし、「○○作りたいんで、ソースコードください」じゃなくて、

自分で設計し、自分でコーディングし、自分でデバッグまでする』です。
(できればテストまでできればいいが、趣味でやっていると手が回らないことが多い……)

これは当たり前のレベルです。

「俺はDIYが趣味なんだ」と言う人が、

「椅子を作りたいんだけど、設計図書いて」とか、
「椅子を作ったんだけど、高さが合わないから誰か調整して?」とか言いませんよね。

それは「本当にDIYが趣味なの?」と思いますよね。

なので、自分で設計からデバッグまではできるようにすること

設計フェーズではできればちゃんとした仕様書(設計図のようなもの)やテスト仕様書・定義書等が作れれば望ましいですが、
個人で特に趣味でやっている人だとそこまでは出来ない事が多いです。
(情報があまりにも少ない上に、そもそも書き方が会社とかによって違うらしいので……)

ですが、「どういう処理が必要か」とかの情報をまとめる事ぐらいはできますよね。

なので設計フェーズでは少なくとも情報をまとめる程度ぐらいはやりましょう。

そしてコーディングし、デバッグまでする。

これが基本です。

以下は私の場合の実装方法です。

Step1. 情報をまとめる

課題や競技プログラミングなんかであれば「問題文」、
実務では「仕様書や定義書」、
自分用のソフト等であれば「情報をまとめる」ですね。

これらを読んで、情報をまとめる。

何が求められているのか、条件(範囲とか)はなんなのかとか。

Step2. 『現実世界でならどうするか』を考える

プログラミングは「現実世界での手順のシミュレーション」なので。

Step2.1. 『ユーザ目線』で考える

課題とかではあまり意識しませんが、それ以外(実務や自分用)では意識します。

たとえばAm*zonのようなECサイトを作るなら、

メインページを開く → 検索窓に『Java 入門 本』とかを入れて検索する → 該当する商品の一覧が表示される → 商品の画像をクリックすると → 詳細情報がかかれたページが表示される → 詳細ページの『買い物かごへ』的なボタンを押すと → 買い物かごにセットされる → 『レジへ』のボタンを押すと → レジページが表示される → レジページの『決済へ』ボタンを押すと ...

のような感じになりますよね。
(微妙に言い回しとかが違っていたりするけど)

この時点で『メインページ』『一覧ページ』『詳細ページ』『レジページ』『決済ページ』がそれぞれ必要であることがわかりますね。

他にも『ボタン』とかも必要だし。

Am*zonのような、購入者だけじゃなくて販売者も関わる場合は、販売者目線も同じように考える。

Step2.2. 『プログラム目線』で考える

次はStep2.1 で考えたものを『裏方』として考えてみる。

一括処理程度のプログラムなら『手作業でやるならどうするか』とかです。

Am*zonとかのようなECサイトなら『裏方作業』と考えてみるとかです。

Step3. 必要なものをリストアップ

たとえば『詳細ページ』とかのやつもそうだし、『データを保存する事』とかもですね。

データ保存はWeb系の場合はMySQL等のようなDB(データベース)を使いますね。

それぞれをリストアップ。

Step4. 必要なものを調べる

入門書とかにあるもの( for文とか )なら入門書とかで調べ、

クラスやメソッド、言語によっては関数とかのようなものは『公式ドキュメント』や『公式リファレンス』なんかで調べる。

(C言語の場合は公式リファレンスなんてのは見たことない気が…… 私が知らないだけか?)

Step5. 実装する

今までのものを実装する。

Step6. デバッグする

これも当たり前。

Step7. テスト(検証)する

これは実務では当たり前だと思いますが、趣味&個人でやっているならそこまで手が回らない事もあるので……


教材については『わかりません』ですね。

私は適当に『Java 入門』とかで検索してヒットしたサイトを使っていますから。

後はその都度調べていけばいいだけなので。


[その他の身に着けるべき技術等]

後は

■ 検索力
■ 考える力
■ 質問方法を工夫すること
■ 『データ構造とアルゴリズム』をやる
■ 『デザインパターン』をやる
■ 『計算量』を意識する
■ オブジェクト指向について学ぶ
■ 『基本情報技術者試験』に出るような内容の理解
■ 数学的思考を身に着ける

でしょうか。

検索力…… これはGoogleとかで検索したり公式リファレンス等を使って調べたりする技術です。

プロでも調べながらやっています。

考える力…… 当たり前ですね。

質問方法を工夫すること…… 回答者は質問者と同じ環境にある…わけじゃないです。
なので質問方法を工夫しましょう。

『データ構造とアルゴリズム』や『デザインパターン』は先人たちの知恵です。

丸暗記は必要なく、単にアルゴリズム(ロジック)を理解するだけです。
(あと発想法も)

計算量……私はそこまで上手くありませんが、場合によっては相当やばいことになります。

実例: 軽い気持ちでLinkedListを使ったら休出する羽目になった話

競技プログラミングなんかではほぼ必須のようです。

基本情報技術者試験…… 上記のいくつかを含んではいますが、この界隈での一般教養に相当します。

(厳密には違うだろうけど、趣味でも意外と使うものがぎっしりと詰まっているので)

数学的思考…… これも必須ですね。

っていうか、プログラミングが出来る人ってこの思考が本能レベル(?)で出来ていることが多いです。

参考: 【数学塾直伝】数学的思考力とはなにか。それは7つの力の複合体である。

まあ、頑張ってください。(^_^)


[追記1]

競技プログラミングをやるのなら
いわゆる蟻本が良いようですよ。

(私はまだちゃんと読んでいませんが、一応挑戦する予定…)

後は調べながらですね。

あ、競技プログラミングで使われるbit全探索についてはここがいいかな?

(私は数学が苦手だったので。まぁ、今も苦手ですが...)


[追記2]

あ、そうそう、一番重要なこと忘れていました。
エラーメッセージはちゃんと読みましょう

エラーメッセージは怒声でも罵声でも罵倒でもハラスメントでもなく、
コンパイラやインタプリタ等からのメッセージです。

メッセージを読まない人は『相手の話を聞かずに逆ギレしている人』です。

そんな人がコミュニケーションなんて取れませんよね。

例えばC言語やJavaのような型が厳格な言語(静的型付け)
で『変数a未定義』とあれば、

『変数が宣言されていないことが原因』なのだから、
『変数を宣言すれば良い』ということです。

『変数a重複定義』なら『重複しているため、コンパイラがどっちを呼べばいいかわからない』のが
原因なので、
『区別できるように、それぞれ違う変数名にする』とか。

またエラーメッセージには『行数』とかも提示されています。

エラーメッセージとは厳密には違いますが、
『例外』メッセージも同様。

エラーメッセージはちゃんと読むようにしましょう。


[追記3]

コードを読むコツは『一行レベルで、この行がなにをしているかを考えながら読む』です。

例えば(ソースコードのバックアップを取っておいて)
コメントにするとかです。

そして、その処理を現実世界でやってみる。
脳内でもいいです。

とにかく試してみる。

変数とかがあれば、『データの状態』も考えながらやる。

i=0のとき〜、i=1のとき〜、i=2のとき〜
とかみたいに。

具体的な値を入れて考えてみるとかです。

投稿2021/07/08 10:30

編集2021/07/15 08:51
BeatStar

総合スコア4962

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

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

talabagani

2021/07/09 09:02

ご回答いただきありがとうございました。教えていただいた手順で自分のプログラミングを書いていこうと思います。 そのうち、自分が書きたいと目標に考えているプログラミングが書けるといいなと思います。今は、基礎の部分の習熟もまだなのでその部分を地道に取り組みたいと思います。ありがとうございました。
BeatStar

2021/07/09 09:59

基礎部分は大事ですが、『完璧にしなくてもいい』です。 少なくとも概念を理解し、『調べれば使える』程度でいいです。 後は本文に書いてあるように『実際に作る』ことで、 「ああ、for文はこういう風に使うんだな」とわかってきますから。 少なくとも概念や書き方は理解すれば良いですよ。
m.ts10806

2021/07/09 20:52

確かに多いですね。 https://teratail.com/search?q=Java%E3%81%AE%E5%AD%A6%E7%BF%92%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6 [Javaの学習について] の検索結果: 1209件 https://www.google.com/search?q=Java%E3%81%AE%E5%AD%A6%E7%BF%92%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6 約 6,620,000 件 「今直面している問題は自分が世界ではじめてだ」という思い込みを捨てることも大事です。 よく「ググれ」って言われるのは「その道は誰かが通ってるはず」ということなんですけどね。
m.ts10806

2021/07/09 20:55 編集

「自分が過去に得たアドバイスが何かヒントにならないか」というのも大事でしょう。 回答者はそれなりに経験してきていて次に何につまずくか知っているので、1問1答だけにとどまらない回答をしている人も多い。
guest

0

すごくためになる内容をBeatStarさんが回答していますので質問に対して全部個人の見解で答えます。

コードについての質問ではないので、こちらに投稿していいかちょっとわからなかってのですが、

よろしくお願いします。

分からなかったのになんで質問したんでしょうか。分からないなら運営に問い合わせるという方法もあったはずです。ヘルプを見ていれば非推奨内容だと分かったはずです。

既習内容なら英語の動画でもどうにかなるかもしれませんが、まったく新しい内容を学習するのはちょっときついと思っています。

プログラミングを生業としたいなら英語ある程度読めないと公式ドキュメント等も読めませんよ?
Javaなんかは歴史も結構あるし、爆発的に流行った事もあるのでそこそこ日本語訳なんかもありますが、
それでも殆どは英語で書いてあります。エラー文読むだけならGoogle翻訳でも掛ければ良いでしょうけど、
ドキュメントとなると中々時間掛かります。

Java FX などは、ちょっと動画をみて学習をしてみましたが、歯が立ちそうな気がしませんでした。

まぁJavaFX自体が基本的に下火になってますから。GUIアプリを開発したいのが目的なら
別言語の方が良いかと。(あまり詳しくないがC#、Python辺りか?)

おすすめの本などありませんか?

書籍は人によって向き不向きがあるのでこの本を読めば間違いない、みたいな物はないです。
買うにしても1年前程度の本にしましょう。あまりに古い本は既に削除された技術などが
書かれていて役に立たないことがあります。

皆さんはこれらの基礎以降の学習内容をどのように進めました?

これに関しては実務やってたらその内大体出来るようになった。が私の回答です。
後は公式ドキュメントが読めるように学生時代の英語の教科書引っ張り出して勉強もしました。

自分はある程度英語が読めるか読めないかで問題解決にかなり差が出ると思ってます。
なので英語勉強してください。

投稿2021/07/09 01:08

編集2021/07/12 06:38
K_3578

総合スコア1282

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

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

K_3578

2021/07/09 08:11 編集

後、どうでも良いんですけど質問者さんは質問文に誤字脱字衍字が多い気がします。 >聞きたいこと事 とか。 >こちらに投稿していいかちょっとわからなかってのですが、 とか。 私が神経質で気になるだけかもしれませんが、 ミスをするのは当然なのでその後見直して極力質問文は整備して欲しいです。 特に長文だと。
talabagani

2021/07/09 08:58

ご回答いただき、ありがとうございました。実務やってたらその内大体出来るようになったということ、わたしの場合、プログラミングの習得はそう容易くないことをよく理解しました。 せっかくはじめたので辞める気はないのですが、地道にこつこつとやっていこうと思います。
K_3578

2021/07/12 00:11

トップアスリートみたいに生まれた時点での才能は必要ないと思いますが、 常に努力は必要です。仕事でやっていると常に自分のメインで使っている言語での開発が出来るとは 限りませんし、なんなら下っ端の内は開発すらやらせて貰えないことが多いです。 いわゆる保守って奴ですね。 開発だったとしても全くやったことのない言語での開発になったりすることもあります。 そういう時に言語を選ばずに活用できるのが英語力です。 慣れてない言語であればいつも以上に一層ドキュメントとにらめっこしながら書いていく事になるので。 後、他の方のコメントを見ましたがSQLを学ぶのは私もとても良いことだと思います。 基本的に現代のアプリケーションというのは殆どがデータベースを使う物ですので、SQLが 読み書き出来るようになると確実に役に立ちますね。 こういう不断の努力が出来なくて辞めていった友人、知人が私も沢山居ます。 努力することを苦と思わないなら天職だと思いますよ。頑張ってください。
K_3578

2021/07/12 06:57

Scoreはどうでも良いんですけど、低評価された方はこの回答が 「間違っている回答」、「質問の回答になっていない回答」、「スパムや攻撃的な表現を用いた投稿」と 判断されたという事ですよね?ならばどこが良くなかったか指摘してください。 低評価機能は回答、質問をよりよい物にするための機能だと思っています。
guest

0

こういったご質問はある技術的テーマに沿った質問というより相談に近いもので非推奨とされていますが、teratailと言うサービスの初めの頃の質問回答を覗いてみるとわりとおおらかで、そういった内容でも比較的活発にやり取りされていたように見えます。利用が増えてくるに連れてそういった内容、特に思い付きから発したような質問などに対応していては単なる「プログラミング何でも相談室」と化し、止めどもなくなってしまうので自然、そういったガイドラインが整備されてきたのかな、と個人的には想像しています。そうであるとこの回答行為自体も非推奨なのですが、これまでの一連のご質問を読んで思うところもありましたので個人的意見として回答させていたきます。この文を書いている内にも他回答をいただいていますが、そちらの方を読んで比べても分かるように、この回答はただの「意見」です。

今年の5月から学習を始めて行き詰っているとのことですが、そもそもそんなに焦らなくても良いのではないでしょうか。仕事で直近の結果を求められてる訳でもなし、今のところ「楽しく学習」できているということなので、何よりだと思います。それに加えて自分で思う目標、目的があるのであれば、動機としてはとりあえず充分でしょう。

ただ思うに、これからの学習の道程、

この後、2、3週間学習を続けると、Java FX やJava データベースやJava ネットワーキングなどの内容に進みます。
もちろん、基礎のないようも引き続き学習予定ですが、新しい内容にも少しづつ進んでいきたいと思っています。

こちらについては少々疑問です。そう簡単には身に付き、自分で手応えを感じるほどになかなかならないです。たぶん。「興味があるのでどうしてもやりたい!」と言われるのであればそれはそれで「有り」です。

個人的に思う「仕事でも役に立つ(はず)」事柄の優先度としては

  1. Javaデータベースプログラミング。と言うよりデータベースシステムをSQLの手入力でいじくりまわしてから。その後JDBCを使ってのプログラミング。
  2. ちょっと下がってJava ネットワークプログラミング。TCP/IPなど軽くでもネットワークの勉強してからの方が吸収が良いと思います。Javaで簡単なHTTPサーバーやHTTPクライアントを作ると良いです。
  3. 更にグググーっと下がって「JavaFX」。

です。JavaFXはスタンドアロンでのGUIプログラミングの候補ですが、Windows や macOS、Linuxなどで共通に動く(クロスプラットフォームと言います)プログラムを作るにはひとつの選択肢となるものの、実務で使われることははっきり言って皆無とは言わないまでもほぼ無いです。自ら提案するのであれば有りかも、という程度でしょうか。また、初心の方が理解するには他でGUIプログラミングをやっていないとポイントを掴むことが難しいかと思います。

teratailでも「JavaFX」で検索するとJavaFXの世間での扱いが少し見えてくるので読んでみるとよいです。例えば、
JavaFXのおすすめの本を教えてください - teratail#336498
(※手前味噌の回答があり恐縮ですが)

学習の進め方ですが、基本的な文法を修めたらいったん立ち止まり、余りジャンルを広げることなく、簡単なプログラミングなら手持ちの知識で大体できるようにした方が良いと思います。例えば「FizzBuzz」と呼ばれるプログラミングがありますが、そういったレベルであればそう悩まずコードを書けるように。(FizzBuzzについては別途調べてみてください)

教育目的の競技プログラミングのサイトで、簡単な問題をたくさん解いてみるのも達成感を得られて良いかもしれません。例えば会津大学の AIZU ONLINE JUDGE とか。今、ホットなAtCoder もあります。やってみて、「競技プログラミングは私には合わない、、、」と思ったなら止めればよいです。

まぁ、何と言っても「学校の時間割を作るプログラムを作ったり、学校の三者面談のスケジュールを作るプログラムを作ったり」と言う目標が既にあるのですから、今から少しずつでも始めれば良いのです。GUIのイケてる画面はもしかしたら今はまだ無理かもしれませんが、「時間割を作る」と言うことだけで考えると文字列ベースのSystem.out.printなどでできることもたくさんあります。データベースシステムを使わなくてもファイルである程度までいけるはずです。そんな風に簡単な条件にしても、意外とそこで「どうしたらいいの?」と、手が止まるものです。手より前に頭が止まるかもしれません。そこで工夫して進めることでまた手応えを感じることができるようになるはずなのです。(時間割、スケジュールを組むということ自体が難しいテーマだと思います。それはそれで挑戦のし甲斐があるというものです)

参考書のようなものの回答をなぞって学習を進めると、それが終わったときに自分では理解したように思えますが、そこから離れて少し違う課題に取り組むと頭も手も止まるものです。そうすると絶望(<大げさ)するので、基礎を正しく学んだらそれを応用した問題に少しでも多く主体的に取り組む、つまり愚直でも良いから自分でコードを書こうとする姿勢が大事なのだと思います。

投稿2021/07/09 02:49

編集2021/07/09 02:56
dodox86

総合スコア9254

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

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

dodox86

2021/07/09 03:52

JavaFXの優先度を思いっきり低評価しましたが、やりたいことを否定するつもりは毛頭無く、「JavaでクライアントサイドGUI極める!」くらいの意気込みで学ぶことは悪いことではないと思います。JavaFXでFizzBuzzやソートの途中経過を定周期タイマーで表示変えてやってみるとか、ゲームとか、それこそ時間割表のフロントエンドにするとか、ネタはいくらでもあるかと。
talabagani

2021/07/09 08:56

とても丁寧なお返事、ありがとうございました。 みなさんからのお返事を読んでいて、プログラミングの習得の難しさを改めて実感しました。 運転免許の取得のようにスクールにいけばどうにかなるわけでもなさそうだし、さりとて独学がいいわけでもない。 Dodo86さんがおっしゃるように焦る必要なないし、焦ったところでどうにかなるものでもないので、今は基礎の学習と習熟を丁寧にやっていこうと思います。 FizzBuzzレベルの問題でも私には十分に難しく取り組みがいがあります。 競技ブログラミングというジュアンルガあることを初めて知りました。atCoderも初めて知りました。 atCoderの過去問、私にも取り組めそうなものもあって、ぜひやってみようと思います。解説動画があるものもあるんですね。atCoderのYoutubeチャンネル、早速登録しました。 AIZU ONLINE JUDGEは難しくてそもそも私には問題を理解できないみたいでした。Javadでは例えばこんな問題がありました。 (https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP2_6_D&lang=ja) 私は工学部に進んだので、高校までの数学はわかるのですが、それでは足りないんですね。 紹介してくださり、ありがとうございました。 基礎の習熟を十分にはかりながら、しばらくしたらSQLを学習しようと思います。SQLは少しだけ学習をしたことがあるので、雰囲気というか方向性はつかんでいます。progate で基礎だけでもしっかり学習しなおうそうと思います。 HTTPサーバーやHTTPクライアントはちょっと今はイメージすら湧かないのですが、そのうち取り組みたいとおもいます。 JavaFXの学習は今回は、置いておこうと思います。 こらからの学習のイメージがおかげさまで少し、湧いてきました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問