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

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

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

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

Q&A

解決済

6回答

2566閲覧

javaの実務に近い問題と解答例がある書籍又はサイトを探しています

lahaina

総合スコア8

Java

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

0グッド

0クリップ

投稿2021/10/20 03:17

前提・実現したいこと

javaの初学者かつ独学中です。javaの実務をされている方々にお聞きしたいと思います。

javaの実務に近い問題と解答例がある書籍又はサイト(日本語、又は英語)を探しています。
cracking the coding interview、leetcodeを行っていますが、
いずれもデータ構造とアルゴリズムに近いように思いまして、もう少し実務寄りの問題と解答がある書籍又はサイトをご存知の方がいましたら教えていただけますでしょうか。

justsystemさんの100本ノックはとても良く、この100本ノックのような問題と解答がある書籍又はサイトをイメージしています。
https://github.com/JustSystems/java-100practices[リンク内容](https://github.com/JustSystems/java-100practices)
ご参考まで、100本ノックの問題の一部を以下に転記させていただきます。

問79
以下の要件を満たすクラスを作成するよう、リーダーから指示された。簡単に設計ポリシーを説明した上で、該当クラスを実装せよ。
<要件>
ファイルの取得元のリストと保存先フォルダーを引数として受け取る
取得元にアクセスし、保存先フォルダーに対象ファイルを保存する
取得元としては、URL(http://example.com/folder/file.png の形式)、ローカルファイル(C:\temp\test.txtの形式)、UNC形式のパス(\host\public\file.htmlの形式)の3種類が指定できる。
処理が失敗した場合は、保存先フォルダーのerror.txtに対して、失敗したファイルの取得元パスを出力する。

オープンソースアプリケーションの写経も行っていますが、最初に正解のコードを見てしまうため、定着があまり良くありません。問題についてまず自分で試行錯誤し、その結果をプロの方のコードと照らし合わせるように学習出来たらと思っています。

書籍又はサイトは日本語、又は英語のものを希望します。
お手数ですがアドバイスいただきますと大変助かります。よろしくお願いいたします。

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

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

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

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

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

1T2R3M4

2021/10/20 03:27

100本ノックの宣伝ですか。
dodox86

2021/10/21 03:43

こういう傾向のご質問にありがちなのが、「非推奨気味の質問内容だけど回答がたくさん集まる。でも当の質問者さんにとって意外な非難に驚いてずっと放置。」な流れです。既にいただいているいくつかの回答の傾向を見ると「そういう質問が出る背景として、"実務の開発を経験したい。"」との思惑を読み取ってのものに見えますが、もしそうではないのであればその旨追記、修正するなどしないと、求める回答が得られないかと思いますよ。少なくとも放置は止めましょう。
K_3578

2021/10/25 00:29

質問者本人もteratail自体を見ていないようなのですが、質問だけして放置するというのは非常に印象が良くないです。何かしらの反応を残して貰わないとこちらも質問者が欲しい回答であったのかわかりません。
guest

回答6

0

ベストアンサー

そもそも実務って仕事なので型にはまったものやってる訳じゃないので「実務の勉強」なんてものはしようがないです。

勉強として何かしらアプリケーション作ったとして、その時に凝った実装をしたのが業務で役に立つことは
なくはないですけど、"こういうのは絶対に実務で使うので勉強になる"みたいなのはないです。
強いて言うなら基礎の部分ぐらい。

ただ単にずっと仕事してれば経験である程度の当たりが付けれるようになるぐらいなので、
実務に向けてって事なら普通に公式のドキュメントが読めたりすれば十分でしょう。


少し追記すると、この回答は実務に入った時に困らないように事前に練習したい、というような意味で質問されたのかという推測の上で回答しています。

そういう意味でなら自分で実力を偽らない限りは、普通未経験を採用する際は、企業側も即戦力として
獲得してる訳ではなく、数年後に戦力としてバリバリ働いて貰うために育成込みで雇っている事が殆どです。

Javaを使った開発の現場に入りたいならJavaの勉強、後はこれはどこでもですがGitなどの
バージョン管理システムは扱えるようになっていると評価されやすいと思います。

以上、蛇足気味ですが参考になれば。

投稿2021/10/20 04:54

編集2021/10/21 00:05
K_3578

総合スコア1282

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

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

K_3578

2021/10/21 23:58

本文中でデータ構造とアルゴリズムが実務寄りではないというような書かれ方がされてますが、 他回答、コメント等で言われてるように実務でも当然使われる物です。寧ろ骨組みに当たる場所なので 実務ではこんなことしないのでは?と思われたのかもしれませんが、しっかり勉強しておくと良いでしょう。
lahaina

2021/10/28 03:57

ご回答ありがとうございます。ご指摘の通り、今後働けるようになった場合出来るだけ早くキャッチアップできるように、取り得る準備は今のうち行っておきたいと思い質問しました。私の文章が不鮮明であったかもしれませんが、データ構造とアルゴリズムを軽視する意図はなく、冒頭に記載の通りcracking.. 等を行っています。公式のドキュメントが大事な事を理解しました。また、その他に解答いただいた方についてもこの場でお礼申し上げます。
lahaina

2021/10/28 10:18

同内容を英語圏のサイトにも問い合わせしていたので、返答が遅くなりました。今回のこちらのサイトでの一連の回答群を踏まえると、英語圏サイトの方が使いやすいので、今後は英語圏サイトを使います。
K_3578

2021/10/28 23:53

どちらを利用されようと構いませんが、同様の内容の質問を複数の場所でする行為は「マルチポスト」と呼ばれるマナーとして悪い行為であり、teratailにおいても非推奨とされています。 https://teratail.com/help#posted-otherservice マルチポストをしてしまった以上は上記リンクに書いてある行動を取ってください。 私の回答のコメント欄に書いても他回答者の方は気付かないので、質問文を編集して追記してください。
guest

0

javaの実務に近い問題と解答例がある書籍又はサイト

ないです。
実務は実務。
勉強は勉強。

案件やプロジェクトによって方針ややり方が違うし、それらは外に出ることはないので、実務を知りたければ実務に入るしかありません。

学習は大抵答えがあってそれを求めるのが目的。
実務は答えを自ら作り、それまでのプロセスも自己の責任において完遂するものなので全く毛色が違います。

投稿2021/10/20 03:56

m.ts10806

総合スコア80850

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

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

m.ts10806

2021/10/20 03:58

>その結果をプロの方のコードと照らし合わせるように プロはそれだけで対価を得て食って行けている人たちなので、飯の種となるような実務向けのコードを公に出すようなことはありません。 (やってしまったら解雇ですしその世界でやっていけなくなります)
guest

0

こういう質問サイトで

・javaで
・実務っぽい内容で(←雰囲気から判断する?)
・しかしほぼほぼ丸投げ気味に「どうしたらいい?」とか問うている(←そうじゃないと「問題」の形態にならないので)

ようなのを探してみるとか…

そんなに都合よく条件に合致するようなものが存在するのか? は不明ですが,
こういう場所の質問というのは,(いかにも課題みたいなやつの存在を無視すれば)まがりなりにも実際に生じた問題であるハズなので,
アルゴリズムがどうの~的ないかにも問題として作った問題よりは,ご所望の雰囲気に近い話を見つけることができるかもしれません.

既存回答がコードを示す形でついていれば,それを参考にできる可能性もありますし,
コードという形でなくとも考え方などを述べているかもしれません.

また,なんなら回答行動をしてみてもよいでしょう.
その回答内容がひどい場合,運が良ければ上級者がボコボコにしてくれるでしょうから,結果として他者のやり方とか考え方と「照らし合わせる」に近いような経験が得られるかもしれません.


#ただし,回答やら指摘をする/している他者が「プロ」かどうかは不明.ここが難点であり注意点.

投稿2021/10/21 03:25

編集2021/10/21 03:26
fana

総合スコア11652

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

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

K_3578

2021/10/21 03:30

>「プロ」かどうかは不明 指摘してきた側が頓珍漢な事言ってる事もあるので指摘されたらまずそれが正しいか?を確認した方が いい気はします。
fana

2021/10/21 04:15 編集

> 指摘してきた側 の目的もまた,同様に,スーパーバイオレンスフルボッコしてもらうことにあるのかもしれないので,そこは仕方ないです. そういう場合には,頓珍漢だと言ってみればよいでしょう. それを頓珍漢だと思っていた自分の方こそが頓珍漢だったりすることもあり得るので,そういう場合に適切にボコしてもらえるように, きちんと「あれがこうでああなので」と根拠や理由や自身の考えを添えて,「頓珍漢だ」と言い放つのが良いです.
K_3578

2021/10/21 04:27

実際そうなるかは別として、 そういう建設的な議論になればそれを見た第三者にとっても良い影響になりますからね。
guest

0

回答になるかどうかはわかりませんが、

もしもあなたがソフトウェアのプロを目指しているなら、「Javaの実務」の問題を知りたいというのは方向性が違っています。特に「データ構造とアルゴリズム」ではないものを知りたいというのはよろしくないでしょう。

プロのアメフト選手を目指す高校生が、ランニングや筋トレばかり練習しても意味がないので、実際の試合でのテクニックを知りたい、といっているようなものです。
体力のついていない人がプロのスポーツ選手になれるわけはないのです。

筋肉が裏切らないかどうかは良くわかりませんが、「データ構造とアルゴリズム」はプログラマを裏切りません。

個々のお客様が欲しいといわれるものは、実は発注してい方にも自分自身良くわかっていないことも多いです。そこをヒアリングして、質問して、提案をして外部仕様を確定するときに、内部データやインタフェースを設計するために必要なのは「データ構造とアルゴリズム」などのポケットの多さと深さです。

プログラミング言語は流行してはすたれていくものです。個別のプログラミング言語に関する知識は時代遅れになることはよくあります。新しい「データ構造とアルゴリズム」が現れることもありますが、それでも身についた「データ構造とアルゴリズム」は裏切りません。

タッチダウンを決めるファインプレーの前提は、筋トレや飯トレ、ストレッチ、ランニングで作った肉体と反射神経です。それが嫌なら趣味のスポーツで楽しくやれば良いのです。

プログラミングの世界も同じです。「データ構造とアルゴリズム」、デザインパターンなどの勉強をしたくないなら、趣味のプログラマとしてプログラミングを楽しんで下さい。

投稿2021/10/20 15:55

ppaul

総合スコア24666

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

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

0

サイトや本では存在しないと思われます。

代わりに、OSSの勤怠管理や給与計算などの、概要が想定しやすい業務ソフトを探して、マニュアルや実運用にて仕様を確認して、それをソースで確認するというのはいかがでしょうか?

とりあえず、該当するものがありましたので、挙げておきます。
MosPオープンソース勤怠管理

投稿2021/10/20 14:07

YT0014

総合スコア1708

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

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

0

そもそも前提を履き違えています。
仕事レベル(趣味レベルであってもですが)は『こう書けばいい』ってものではありません。

単に穴埋め問題や数学とかの問題を解くだけ……で金がもらえるのでしょうか。
そもそも企業は良くも悪くも営利目的です。

では私達には就職する以外方法はないのか。いいえ。違います。「実際に作品を作る」です。

たとえば、『あー、日付からフォルダ名を決めて作成して、その中にフォルダをまた作って、○○.txtっていうファイルを生成して…っていう処理を毎日やるけどメンドくせー』と思ったらそれがヒントです。
そう、そういう一括処理程度でもいいので実際に何か作るのです。
もちろん、PHPなりPythonなりでサイトを作るでもいいですし、Unityでゲームを作るとかでもいいです。とにかく作りたいものを作る。(他人の権利を侵害しない限り)
ただし、「○○作りたいからコードくれ」ではなく、「自分で設計し、自分でコーディングし、自分でデバッグまでする」です。まあ、できればテスト(検証)までやった方がいいですが、趣味だとそこまで手が回らないことも多いので。

なので『実際に何か作る』をオススメします。

千本ノックやらなんやらをやるよりも有意義です。
モチベーションもキープしやすいし、自分が意図した通りに動くという楽しさもあるし、
実際に最低限必要な技術(設計やデバッグ等)も身につくので。

ただ、これだけではまだ弱いと思います。
ここまでは趣味の範囲。仕事の場合はチーム開発です。
なのでチーム開発が出来ないと話になりません。

よって、こればかりは実際に就職してからでないと出来ないと思います。
学校とかでサークルとかに加入しているのでしたら、チームとして一つの作品を作るのも手です。
趣味&独学でチーム開発が出来ない人でも、Git/GitHubを利用して疑似的にチーム開発をまねることもできるようです。
参考: 【Github】一人擬似チーム開発の練習 (軽く「git 疑似 チーム開発」でggった結果)


[追記1]
千本ノックやらなんやらのようなものをやるなら、「競技プログラミング」がいいかもです。

有名なのはAtCoderですかね。他にもあるようですが。
過去問で、カテゴリ分けされている方はここですかね。

あるいは、競技プログラミングではないと思いますが、[Paizaスキルチェック]
(https://paiza.jp/challenges/info)ですかね。

ただし、このスキルチェックはネットとかで答えを聞いたり、開示したりするのは規約違反です。
(割とこの規約を無視している人が多い)
なので質問にある条件(模範解答を見たりして…等)はできません。

AtCoderも過去問については開示したりするのはOKらしいですが、試験があってそれから一週間かな? 特定期間はPaizaスキルチェックと同様に、聞く事自体がアウトになるようです。

そういう風に規約によって変わるようですが、一応こういうのもあるということで。

ただ、上記にあるように、「本来は穴埋め等をするものではない」のでお勧めはしませんが。
(それと『競技プログラミングは業務に役に立たない』とも揶揄されているようですが、それは人によるのではないかなと)

投稿2021/10/20 10:11

編集2021/10/21 10:19
BeatStar

総合スコア4958

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

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

dodox86

2021/10/20 10:33

えと、他意無くお聞きしたいのですが、こちらの回答は質問の主題と思われる以下のことについて、 > もう少し実務寄りの問題と解答がある書籍又はサイトをご存知の方がいましたら教えていただけますでしょうか。 どういったことに対して回答をされたものでしょうか。「こういったサイトで勉強しているのですが、これから実務で通用するでしょうか」のような質問であれば噛み合う気はしますが、そういったサイトを勘違いしない程度に自分の勉強のつもりで使う分には決して悪いことはないと思うのですが。それすら否定することに終始した回答のように思いますがそんなことはないですか。質問の背景にあるかもしれない思惑を汲んでの回答であればすみません。
BeatStar

2021/10/20 10:37 編集

@ dodox86さん 確かにそうですね。余計なものを削除しておきます。 質問者さんの意図を、『プロがやっていることをまねたい』的な意味だと解釈していました。 ですが、確かにそういう、「単純に問題を解きたいだけ」の場合もありそうですね。
dodox86

2021/10/20 10:53

回答の内容がすっかり変わってしまったのでコメントしづらいですが。 むしろAtCoderはLeetCodeよりアルゴリズム、数学(的発想)寄りのような、、、
fana

2021/10/21 03:05 編集

> 上記にあるように 上記とは何か…? おそらくは,修正の過程で文章の流れが変わったとか「上記」に相当する箇所自体が無くなったのだろうと想像しますが. あと,現状の文章だと, 冒頭が「~がいいかもです」で始まり,しかしながら,末尾側では「お勧めはしませんが」と終わっており,なんだか謎な感じになっていませんか?
BeatStar

2021/10/21 08:40

@ fanaさん > ... なんだか謎な... すみません(汗) 最初の文章から削除し忘れていたようです。確かに読み返してみると… ですが、やっぱりいくら考えても、質問者さんが望んでいるのは『実務経験を積むための問題集』的なものじゃないかなと思うので、回答そのものをもとに戻しますね。 ( dodox86さんの仰るように、『単にまねたい』くらいのものだとも取れますが… )
fana

2021/10/21 08:50

何かしらの意見(回答)を述べた際に,その内容を読んだ人が,良いとか悪いとかそういう話じゃねーよ,とか色々と反応するでしょうけども,それはそれ.別の話. それ以前にまず,意見そのものが何なのか…? が謎な形だと困る,というだけの話. 文章を修正する際にはそのあたりを気を付けないと.
dodox86

2021/10/21 08:53

> やっぱりいくら考えても、質問者さんが望んでいるのは『実務経験を積むための問題集』的なものじゃないかなと思う 質問者さんがいまだ明確なコメントをしていない以上、回答者さんが当初からそう考えて回答に臨むのであれば、アリだと思います。 私はそうは思わず(<今もそうは思っていませんが)、質問と回答が噛み合ってない感がしたのでコメントしたまでです。
fana

2021/10/21 08:59

修正されたようですが,ここまで長いと,それはそれで > 意見そのものが何なのか…? の把握が困難っすね. 【fana は回答を読もうとした. しかし こくご力が足りない!】 …ってなる. 要約すると,「問題とか言ってないで何か作ってみれば?」になるの…か……な?
dodox86

2021/10/21 09:06

@fanaさん それは当初の回答となるので、そうするとまたこのコメント欄の頭の話から戻ってしまうと思うのです。
BluOxy

2021/10/22 02:53 編集

あくまで個人の感覚になりますが、不必要な文章・要約されていない文章が多くて読む人に伝わりにくい文章になっていると思います。余計なお世話かもしれませんが、ざっくり添削すべきと思う箇所を列挙します。(全部を見るのは大変なので一部だけ) ------ 1. 「普通に考えたらわかるでしょ?」 これは回答ではありません。無くても要点は伝わります。このような一言を書いてはいけない訳ではありませんが、回答内容に対して同じ一言を書かれないよう気を付ける必要性が出てきます。 2. 「単に穴埋め問題を解くだけ、あるいは単に数学とかの問題を解くだけ」 「単に穴埋め問題や数学の問題を解くだけ」と要約できます。 3. 「え? そんなことない? そうでしょうか ~ よって、設計 -> コーディング -> デバッグ は当たり前の技術です。(プログラミングをするなら)」までの約60行 企業が営利目的で活動しているのは言葉の意味からしても自明ですから、「そんなことない」と思う人は「企業」という言葉を知らない人だけです。しかし、普通に考えたら「企業」という言葉を知らない人は存在しません。 つまり、「企業」という言葉を知っている人(個人の感覚ではこの回答の読者全員)にとって上記60行は既に知っている話ですから回答内容に含める必要はないと思います。 ------ 上記を踏まえて BeatStar さんの回答を要約すると下記になると思っています。 > 仕事レベル(趣味レベルであってもですが)は『こう書けばいい』ってものではありません。 > 『実際に何か作る』をオススメします。 要約した内容が質問の回答になっているかはさておき、「何か(目標を立てたりして)プログラムを作るべき」という主張は同意できました。 しかし、同意に至るまで文章を読み解く必要があり、時間がとてもかかりました。 今回は気まぐれで100行ぐらい頑張って読みましたが、あまりに質問から離れた内容は読むのをやめてしまうことがほとんどです。
BeatStar

2021/10/21 10:14

@ BluOxyさん すみません。私の文章がわかりにくくて…(難しい…) 要約していただいてありがとうございます。確かにシンプルに書けばよかったですね… 修正します。
Zuishin

2021/10/21 10:25 編集

質問者の言葉選びも非常に悪いんですよね。 > cracking the coding interview、leetcodeを行っていますが、 > いずれもデータ構造とアルゴリズムに近いように思いまして、もう少し実務寄りの問題と解答がある書籍又はサイトをご存知の方がいましたら教えていただけますでしょうか。 これが質問本文になります。 「実務寄りの」は「データ構造とアルゴリズム」と対比された言葉で、その本来の意味である企業における実務とは特に関係がないと思われます。実務でもデータ構造とアルゴリズムは使うはずですから。 「実践的な」と読み替えるともう少し自然に受け取れますが、その真意は「AtCoder は紹介するな」と言っているように私にはとれました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問