Java Basic 学習フロー

プログラム言語のJavaを学習しようかな?と思った時
「どの様に学習を進めていけば良いか?」の答えになれば良いと思います。

あくまでもサンプルなので、自分なりに解釈してもらえれば幸いです。

学習フロー(Step to learn)

イントロダクション(Introduction)

例えば、プログラムをはじめる。。。
例えば、ギターをはじめる。。。

などなど、何かをはじめて続けるためには(一朝一夕にはできないので)目的とか動機が必要になります。
その動機付けの次にある「進め方のサンプル」になればと思い、こんな記事を書きました。

Javaは何ができる?

プログラミング言語のJavaは大体のことは大体できます。この文章だと「具体的に何?」という疑問の答えになりませんね(笑)

Javaでできること

はっきり言って、ウェブアプリ〜PC上で動くアプリケーションまで、作ることができます。
そして、ネットワーク処理も得意なので、世界中と通信するような業務アプリケーションも作れます。
当然、GoogleMapやアマゾンなどのアプリケーションとの連携や、自社オリジナルのアプリケーションとの連携も可能です。
具体的には、有名どころのゲーム「Minecraft」はLWJGLというJavaフレームワークで作成されています。
早い話が、Javaでできているんですね。

0. はじめる前のJava

導入編

はじめの一歩は「ハローワールド」です。「作る→動かす→確認」を1番小さなレベルで行います。

1. はじめの一歩〜ハローワールド〜
まずは、Javaを動かすための環境を用意する必要があります。基本的にはコマンドでの実行もできるのですが、まともなアプリケーションを作成しようとしたらIDEを使用することになるので、そちらをインストールしてしまいます。詳細に関しては、下のリンク先を参照ください。
開発ツール(IDE)のインストール方法

Windows版Eclipseのインストール方法

とりあえず、動かしたら次は、何かしらの処理を行います。パソコンは元々計算機なので四則計算をやって見ます。

2. 四則計算をやる

そして、計算などのを行なっているとどうしても出てくるのがデータ型です。これは、クラスも型入ります。

3. データ型の扱い

そして、ここまできたらよく使うデータ型も見て見ます。Boolean型はTureとFalseしかないためデータのサイズも小さくうまく使えばとても便利なデータ型です。
4. Booleanなどのデータ型

Booleanが理解できたら今度はお待ちかね「for文」などのループ処理を実装して見ます。
5. For文の書き方

そして「ループ処理」といえば「while文」も忘れてはいけません。
6. while文の書き方

ループ処理ができたら何か処理をして何かを作って見たいのが人情、ゲームっぽく、入力を扱おうと標準入力(コンソールからの入力)を実装しようとすると必要になるのが「try〜catch文」です。
7. try〜catch文の書き方

オブジェクト指向

さらに、アプリケーションを作成しようとすると必要になるのが「クラスに対する理解」なのでクラスについてさわりの部分ですが、理解します。

オブジェクト指向の概念1〜OracleDocのチュートリアル1〜

オブジェクト指向の概念2〜クラスとは〜

余談ですが。。。
「クラス」を使うようにする=オブジェクト指向でアプリケーションを作る、のは「大きなもの」を作る時に役に立ちます。例えば凝ったケームなど。。。

例えばRPGを作ろうとして設計までやった時の記事です。
Java オブジェクト指向 〜テキストRPGキャラクター作成(戦士)〜

当然小さいもの(アプリ)は簡単に、拡張、変更、修正できる。ように、オブジェクト指向に作ります。
Java オブジェクト指向 〜体系化の方法〜

オブジェクト指向の意味

そして、「いつまでも再利用できるように作るにはどうしたら良いか?」の答えになる考え方が「オブジェクト指向」になります。

その第一歩が「クラスの理解」というわけです。
8. クラスとは

ここで「クラス」というものがおぼろげに見えてきたので、Javaを起動するためにはJRE, JDKが必要になるのですが、この中にすでに作られている(提供されている)クラスがたくさんあります。これらをまとめてJava APIと呼びこれを使用してJava言語は動いています。

このAPIにある代表的なものがListインターフェースクラスです。
9. List インターフェースクラス

Listインターフェースクラスの他にもたくさんのインターフェースクラスがありますが、「インターフェースクラスの概念」を理解しておくと後々役に立ちます、「ポリモーフィズム」というものです。
10. インターフェースクラス

ここまできたら、何か作ってみようと思います。そしてサンプルに作成しようとしたのが「ミニゲーム」です。
11. ミニゲーム作成1

いかんせん、話などを考えていなかったので中途半端になりだらだらと作業が止まっている状態ではありますが、ここからは違うアプローチで行こうと思います。

Java Mid Basic

今までにやったことを復習するのも兼ねて、コンソールゲームを作成します。
第一弾は以下のような感じです。

Java Mid Basic 学習フロー

Javaテキスト(参照書)を解釈

Java はじめて 1 〜メインメソッド〜()

ちょっと、ズレるような気もしますが、設計などしてみるとより「オブジェクト指向」がわかったくると思います。
### オブジェクト指向=考え方です。
1. [設計を始める〜1.アプリイメージ〜](https://zenryokuservice.com/wp/2018/10/25/%e8%a8%ad%e8%a8%88%e3%82%92%e5%a7%8b%e3%82%81%e3%82%8b/)
1. [設計を始める〜2.機能イメージ〜](https://zenryokuservice.com/wp/2018/10/25/%e8%a8%ad%e8%a8%88%e3%82%92%e5%a7%8b%e3%82%81%e3%82%8b%e3%80%9c2-%e6%a9%9f%e8%83%bd%e3%82%a4%e3%83%a1%e3%83%bc%e3%82%b8%e3%80%9c/)
1. [設計を始める〜3.機能概要〜](https://zenryokuservice.com/wp/2018/10/26/%e8%a8%ad%e8%a8%88%e3%82%92%e5%a7%8b%e3%82%81%e3%82%8b%e3%80%9c3-%e6%a9%9f%e8%83%bd%e6%a6%82%e8%a6%81%e3%80%9c/)
1. [Java はじめて16 〜クラス設計から実装〜](https://zenryokuservice.com/wp/2019/09/19/java-%e3%81%af%e3%81%98%e3%82%81%e3%81%a616-%e3%80%9c%e3%82%af%e3%83%a9%e3%82%b9%e8%a8%ad%e8%a8%88%e3%81%8b%e3%82%89%e5%ae%9f%e8%a3%85%e3%80%9c/)

ちなみにGLUONを使用して作成したゲームはこんな感じです。
こんな感じです。余計な音が入っています。

## テキストRPG(戦闘シーンのみ)
1. Java テキストRPG(戦闘シーンのみ)を再作成する~LWJGLを参考に作り直す~
以前作成したテキストRPGを再度作成することにしました。アイディアがわいてきたからです。
2. Java テキストRPG(戦闘シーンのみ)を再作成する2~設計からやり直す~
以前の失敗=設計なしで作成する、を反省し設計をちゃんとやることにしました。新たに気が付くこともあり設計はしたほうが良いと思います。
成果物は以下のものです。Ver0.5なので今後はストーリーを表示できるように改修を加えます。

まだまだ続きます。。。

でわでわ。。。