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

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

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

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

Q&A

解決済

5回答

2126閲覧

どのように、新しいものを作るのか? (Java学習中)

Takahito

総合スコア66

Java

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

0グッド

4クリップ

投稿2015/11/01 17:40

編集2015/11/03 13:17

こんばんは。

今回は、Javaで電卓のような計算機を作ろうと考えていました。

それは、自分なりに「ボタンが必要だろう。」ということで、ボタンを組み合わせたもので作りました。
検索は最小限にし、自分が考えたものについてだけググりました。そこで、たどり着いたのがJButtonなどです。
しかし、どうしてもうまくいかず「Java 電卓」と調べてみると、グリッドレイアウトを使うとよいということやtextFieldを使うとよいということがでてきます。

これらは、どのようにしてわかるようになるのでしょうか?

今は、電卓というわかりやすいものなのでググれば出てきます。しかし、新しいものを考える際には検索しても出てこないことが多いと思います。

そんなことから、今回投稿した理由である
そのような時は、どのように方法を見つけて進めるのでしょうか?
という疑問が湧きました。

初心者的な考えかもしれません。

ただ、僕は本当にモノづくりをしたいと考えているので、そのために必要なことだと考えています。

みなさんの頭の中をちょっと見させてください。

ご教授、宜しくお願いいたします。

これが、その結果作ったコードとそのものです。↓(まだ完成ではありません)

イメージ説明

イメージ説明

イメージ説明

イメージ説明

イメージ説明

![イメージ説明

追記:
皆さんの回答がどれもすばらしく自分にとって貴重なコメントばかりなので、ベストアンサーを選ぶという行為はすごく申し訳ない気持ちにもなります。
ただ、それで誰にも付けないという方が申し訳ないので1つ選ばせていただきます。
本当にありがとうございました。

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

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

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

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

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

guest

回答5

0

新しいものを考える際には検索しても出てこないことが多いと思います。

たぶんまだ経験不足なんだと思います
よく「車輪の再発明はダメだ」みたいなことを言われますが、経験の浅いうちはどんどん再発明すべきです
そして先人が洗練させてきたものを見つけた時に自分で書いたものと比較すると理解がすごく進む気がします

いろいろ試行錯誤を経験していくと、
「あの機能はあれとこれをこう組み合わせればできそうだ」
みたいな閃きが..

機能を漠然と考えず、やろうとしていることを「細かく分解」して、どう分解すれば今自分ができる(わかる)パターンに当てはめることができるかの試行錯誤すればなんとなくできるようになると思います

あと一番大事なこと
「できないからといって投げ出さない」

形はどうあれ完成させないと「できるパターン」が増えません

投稿2015/11/01 21:23

dojikko

総合スコア3939

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

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

Takahito

2015/11/02 17:00

再発明ですね。 たしかに、自分なりに考えて出したアウトプットは動くには動く形にはなるものの無駄の多いものを作っていることを思いしらされます。 その試行錯誤を繰り返して、自分の実力というものが醸成されていくのでしょうか。 「できないからといって投げ出さない」 これは、胸に刻んでおきます。 いつも、投げ出したい気持ちになります。。。 dojikkoさん、ありがとうございます。
dojikko

2015/11/02 19:31

> その試行錯誤を繰り返して、自分の実力というものが醸成されていくのでしょうか。 どれだけボキャブラリが増えてググる精度が上がったとしても、出てきたコードが自分の書いているコードに適用できるかできないかは、結局それまでに自分がどれだけ手を動かしたかによるんじゃないかと思います 「どれだけググっても自転車に乗れるようにはならない」みたいな
Takahito

2015/11/03 13:10

ありがとうございます。 とにかく手を動かすことですね。
guest

0

ベストアンサー

ひとことで言ってしまうと、** 基礎と応用 **です。

「Java 電卓」についてググって、それを参考にアプリを作ってみるのは基礎練習です。
電卓以外にもたくさんの練習をこなしていきます。

そこから、Javaの基本部分とAPIについての知識を学んで、ある程度自由に使いこなせるようになった上で、それらを組み合わせて本格的なアプリを作っていることになります。これが応用です。

全部を細かく覚えなくても、忘れたかまだ調べていないことがあってもかまいません。その時は、この機能の仕様はここに書いてある、というのを知っていれば良いのです。
もちろん知っていればそれに越したことはありません。

Java+Swingで作るものなら、Java自体をある程度自由に使いこなせることと、JButtonを含むSwing全般について特徴やクセを知っておくことですね。
コンポーネントを並べるにはレイアウトマネージャーが必要で、レイアウトマネージャーにはどういう種類があって、こういう風に並べたいときはどのレイアウトマネージャーを使うか、イベントハンドリングはどうする、時間のかかる処理は非同期処理が必要だからSwingの場合は~を使う...などなど。

そして、実際に自分で使って実験してみることです。

これらの知識を総動員して、ググっても(細かいレベルの)方法が見つからないようなアプリを作っていきます。

Swingについては、下記サイトが各クラスについてのサンプルが整理されていて便利です。

Java Swing Tips - てんぷらメモ
http://ateraimemo.com/Swing.html

投稿2015/11/02 01:26

argius

総合スコア9388

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

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

Takahito

2015/11/02 16:49

argiusさんありがとうございます。 基礎と応用ですね。 基礎をインプットしつつアウトプットをしながら、おそらく基礎を身につけていくのだと思います。 その基礎を身につけるための材料は、何か上から課題を投げつけられるわけでもない現在はどのように選択していくのが良いかなどはどのようにお考えでしょうか。 正直なところ、参考書を進めつつやっていますが何が「基礎」で何が「応用」かの判別もできないというのが今の状況です。
argius

2015/11/03 04:04

> 何が「基礎」で何が「応用」か 特に実用的でないアプリを教科書通りに作るのは「基礎」です。回答に書いたのとかぶりますが、Swingの基本的な機能とそれを使って何ができるのかを、電卓を例にしてを学ぶのが基礎です。 お手本があるものを使って学ぶのが基礎です。 参考書を使って学んでいるのも基礎です。 上手なたとえでは無いかも知れませんが、学問で言えば、基礎理論を学んで自分で新しい理論を構築するのは応用です。スポーツで言えば、基本の型を学んで、それを発展させて新しい技を生み出すのが応用です。 このように、一般的な意味合いで「基礎」と「応用」という言葉を使っています。 基礎で学んだことを、教科書を見ないで作れるようになれば、その分野の基礎はある程度終わったといって良いと思います。この場合、書いていることを完全におぼえている必要は無くて、違ったやり方でも結果的に同じものが出来ればOKです。途中でいきづまったら、また教科書に戻って、どの理解が足りなかったかを確認して、を繰り返します。試験勉強みたいなものですね。 題材をどのように選択していけば良いか、というのは難しい問題ですね。 私は体系立てたカリキュラムで学んだわけではないので、これがおすすめ、のようなものは思いつきません。 題材は、入門サイトを探してピックアップするとかですかね。
Takahito

2015/11/03 13:08

argiusさんの「基礎」と「応用」すごく納得しました。ありがとうございます。 今は、「基礎」を叩き込む段階なのでひたすらやり続けるしかありませんね。 本当にありがとうございます。
argius

2015/11/03 13:22

上手く説明できているかあまり自信はありませんが、参考にしていただけたのなら幸いです。 がんばってください。
guest

0

こんばんは。

しかし、新しいものを考える際には検索しても出てこないことが多いと思います。

私の場合はそうでもないです。ググって出てくることがほとんどですね。
自分にとって新しいものでも、多くの場合は既に世の中にありますし、それを解説してくれている親切な人も多いので、キーワードさえうまいこと選べれば出てくることが非常に多いです。
また、googleは本当に優秀な検索エンジンです。googleが無かったころは検索結果を10ページ以上みることも多かったですが、googleでは最初の1~2ページで用が足りることがかなり多くて驚きですよ。

キーワードを適当に入れて出てきたサイトの内からそれっぽいものを2~3軽くみている内に更によさ気なキーワードを思いついて検索すること2~3回程度でドンピシャなサイトにたどり着くことがほとんどです。
ネットの世界には本当に親切な方がたくさんいらっしゃいますよ。ありがたいことです。

投稿2015/11/01 18:42

Chironian

総合スコア23272

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

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

Takahito

2015/11/02 17:03

Chironianさんありがとうございます! キーワードをうまく選ぶというところがポイントになりそうですね。 そのキーワードを選択する際に、Chironianさんが意識していることって何かありますでしょうか? また、もし教えていただけるのなら最初からそれができたのかどうかなどもお聞きしたいです。最初からでなかったら、それができるようになったきっかけなども今の自分にはすごく気になる点です。 Teratailでは、親切な方がたくさんいるというのはいつもすごく感じています。
Chironian

2015/11/03 01:50

> そのキーワードを選択する際に、Chironianさんが意識していることって何かありますでしょうか? 既にTakahitoさんもされているように、検索したい分野の専門用語(Java)を含めることと、知りたいことそのものについてなるべく一般的な単語(電卓)を入れることくらいです。 どちらかと言うと検索に結構時間を割いてます。良い方法が見つかればそれを使って、見つからなければオリジナルな手法を見つけて、開発してます。 昔、大学の研究室の教官から言われたことがあります。「研究開発って英語ではResearch and Development。つまり、まず探せ!次に開発」って。 世の中には本当に色々な考え方に基づいた解法があります。自分一人では絶対思いつけないような衝撃的な解も少なく無いです。それらを知らないって本当に勿体無いです。 そして、探しても探しても見つからない時に初めて独自の開発ができますし。 ゲームや勉強をしている時なら「検索は最小限しばり」することも必要になりますが、本気で何か開発したいのなら「しばり」とかやめて全力でぶつかることをお勧めします。
Takahito

2015/11/03 13:13

「Research and Development」。自分にとって、すごく貴重な気づきの機会なような気がします。研究開発とResearch and Developmentだと全然、語感が違いますね。 ありがとうございます。
guest

0

そのような時は、どのように方法を見つけて進めるのでしょうか?

要するに、どのように実現するか?
を探すという点では、Googleを漁る事で、いろいろな案が見えてくるかと思います。
まずはそれでいいのではないでしょうかね。

そして、(特に学習中で)大切なのは、どのような方法で実現したとしても、最後まであきらめずに、きちんと動くようになるのであれば、それでOKです。
(職業となると実現方法ははじめにしっかりと定義しないといけませんが・・・)

もちろん、実現に及ばない案もあるかもしれません。
まあ、その時は、一端あきらめて、別の方法を試してみるとか。それを知るのも、勉強です。

ちなみに、私は職業プログラマーとして20年間プログラミングに関わっていますが、
たとえば、これまでに一緒に仕事したプログラマーに同じ「電卓」課題を出したとすると、
おそらく、10人いたら、10通りのプログラムを書くでしょう。プロでもそんな感じです。

そのくらい、プログラムには回答が無い物ですので、
Googleで検索すると、さまざまな解決方法もでてくるわけです。

なので、正解は1つではありませんので、

これで、できる!カモ?!

と思ったやり方や、検索で見つけた方法で、まずは、とことん突っ込むのがよいかと!
そして、そのような学習を継続的におこなっていけば、自然に、どのように実現したら良いか、自己解決できる日がきっと訪れます。

はじめから、最適な「方法」を見つけられる人は、おそらく、いないかと。

投稿2015/11/02 19:18

ItoTomonori

総合スコア1283

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

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

Takahito

2015/11/03 13:14

ありがとうございます。 何かすごくポジティブになれるような文体で読んでいるだけで勇気がもらえるような印象を受けました。 継続した学習ですね。
guest

0

知識のない状態で見つけるのは無理です。
なので、基本を勉強します。

Javaを知らないのであれば、Javaの入門書や入門サイトを一通り読んだり、
UIが必要であれば、「Java UI」の検索で引っかかるサイトをいくつか読んだ上で、
必要な知識を洗い出し、Javaを学習した時と同じように、基本を学習します。

それがたとえ、ファイアープロジェクトであっても同様の対応です。


言葉の配慮が足りてなかったです。すみません。
UIの部分は、質問でいうところの「JButton」に置き換えても同じです。
「Java JButton」で検索すると、こういったページが見つかると思います。
で、これの基本を学習しようとしたら、「どういうグループなのか?何が基本か?」って考える。
で、トップページを見てみる。これが「基本かな?」と思ったら、これ全部学習する。
ちょっと基本の枠を超えていると感じたら更にもっと探す。
このあたり、自身で十分と感じるまで、手当たり次第に学習をします。

投稿2015/11/01 23:07

編集2015/11/02 22:59
TetsujiMiwa

総合スコア1124

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

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

Takahito

2015/11/02 16:57

ありがとうございます!! 実際に少し「Java UI」で検索してみて、新たにすごく自分にとって必要な学ぶべき要素を見つけた気がします。 当たり前と言われれば当たり前な気がする検索ワードですが、今までは自分が本当にわからないことがわかっている場合のみしか使用することができていなかったので、そのような探し方を考えてみます。 実際、検索ワードが今でも思い浮かばないのですが、それはコンピュータのことを知らないからなんですかね。このプログラミング学習という中で、具体的なものから抽象的な言葉を見つけ出すのが苦手です。
Takahito

2015/11/03 13:10

ありがとうございます。 そういうことですね。詳しくありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問