テックアカデミーJavaコース全行程リアルタイム受講レビュー(随時更新)

オンラインスクールのテックアカデミーを受講するか悩んでるけど、実際どうなんだろう。できれば申し込む前に、実際に受けてる人のレビュー読みたいな…。

 

という方へ。実際にTechAcademyのJavaコースを受講した僕が、そのご要望に答えます。

この記事を読み、ぜひ受講の参考にしてください。

 

ちなみに無料で受けれる体験レッスンもあります。

受けるともれなく受講費用が1万円引きになり更にアマゾンギフトカード500円分までもらえる特典付きです。

>>テックアカデミーの無料体験を受けてみる

 

レッスン0 事前準備

テックアカデミーjavaコース

レッスン0:事前準備 目安時間3時間

 

上の画像は実際のテックアカデミーのマイページ、20万を支払ったあとに見られる僕のアカウントでの受講画面です。

高額な有料教材ですので、全てをお見せする事はできませんが、レッスン0は11の項目から成り立っています。

所要時間は3時間と書いてありました。でも1時間ほどで終わりました。

 

テックアカデミーJavaコースレッスン0はおおまかに3つに分かれている

 

授業のスケジュールの確認

僕の場合は8週間コースなので、その日程内での進め方が明記してありました。

これにより、1週間でココまで、2週間でココまで進める・・という風に、ゴールの8週目までのスケジュールをまず最初にイメージできるようになります。

必要時間と目標日数が設定されているので、遅れてしまった場合もぼやーっとせずに「今日までに~~まで進めなきゃ!」という事が分かるので、便利だと感じました。

 

最初に必要なツールのダウンロード

Javaプログラミングを構築する環境を整える為の手順と、オンラインでレッスンを受けるのに必要な各種ツールをダウンロードし、これからの授業を受ける為の準備をします。

数種類のツールのダウンロードのやり方も、全て画像で説明してくれるのでとても分かりやすかったです。サクサク進めることができました。

 

メンタリングについて

テックアカデミーの1番の魅力とも言える、メンターと呼ばれる現役エンジニアさんとオンラインで話せる時間、それがメンタリングです。

現役のエンジニアさんとオンラインで会話し、受講していてプログラミングで分からない事や進め方で不安に感じた事を相談したり、エンジニアの現場での事を教えてもらったりできます。

 

レッスン0では、このメンタリングの受け方や日程などについて、詳しく解説してくれます。 どのようにこれからメンタリングを受けるのか?ということが非常に分かりやすく書かれていました。

正直、オンラインプログラミングスクールってどうなの?途中でつまづいたらどうしよう?という不安があったので、このメンタリングというシステムはとても嬉しいものでした。

 

レッスン0まとめ:テックアカデミーのカリキュラムは分かりやすい

・学習の進め方の説明
・授業を進めていく為のツールのダウンロード
・メンターの日程決め

これがレッスン0の内容でした。まだプログラミングの具体的な部分には入っていませんね。正に準備段階という感じ。

とりあえず、説明文は分かりやすかったです。 そして所要時間3時間と書いてありましたが、1時間ほどでレッスン0を終えることが出来ました。

どうやら少し長めに見積もって書いてあるのだと思います。   最初に受けたオンライン無料体験レッスンの時もですが、用意されている教材も実際に話すメンターの方も、こちらの聞きたい事や不安に思っていることにズバリな解答をくれます。


>>TechAcademyで無料体験を受けてみる

 

これはとても印象が良いものでして、「これなら安心して勉強できるな」と僕に思わせてくれました。 0を受けてみて、続くレッスン1も不安よりも楽しみだ!という気持ちになります。そう思わせてくれる、非常に初心者に優しい教材です。

 

レッスン1 本コースで学ぶこと

テックアカデミー受講レビュー感想     レッスン1:本コースで学ぶこと 目安時間1時間。内容は、

・レッスン1~14までどんなカリキュラムがあるかの説明
・カリキュラムをこなすと何ができるようになるかの説明
(webアプリケーションを作れるようになる)
・メンター(相談員)の使い方
・レッスンを受ける上での心構え
  と、これからのレッスンの流れを理解する、というものでした。なので、まだ実際にプログラムのコードを書いたりとかはしません。 このJavaコースのスタートからゴールは以下の手順です。

Lesson 00 事前準備
Lesson 01 本コースで学ぶこと
Lesson 02 HTML/CSS
Lesson 03 Javaプログラミング基礎
Lesson 04 制御構文
Lesson 05 オブジェクト指向プログラミング1
Lesson 06 オブジェクト指向プログラミング2
Lesson 07 データベース(DB)
Lesson 08 JDBC1
Lesson 09 JDBC2
Lesson 10 Webアプリケーションの仕組み
Lesson 11 サーブレット/JSP
Lesson 12 Git/GitHub
Lesson 13 メッセージボードの構築
Lesson 14 日報管理システムの構築

以上をこなす事により、最終的にwebアプリケーションを開発できるまでのスキルが身につくとの事です。

レッスン2 HTML/CSS

テックアカデミー受講レビュー感想

レッスン2:HTM/CSS 目安時間12時間。

ここで初めてカンタンなコードを書きます。Javaを学ぶ前にプログラミングの基礎として、HTMLとCSSを学びました。 本当にざっくりいうと、 ・Webサイトの構造・仕組みを学ぶ という内容でした。

 

僕たちが普段当たり前のように見ているインターネットのサイトはどうやって出来ているか、という事の説明です。 Webページは、

HTML(文章)
CSS(装飾)
JavaScript(効果)
その他リソースファイル

によって構成されている事をかみ砕いて説明されています。 自分の身近に見ていたものの構造が知れて、かなりおもしろかったです。まあ、この内容は無料体験レッスンとかなり被るものがありましたが。

 

レッスン3 Javaプログラミング基礎

レッスン3:Javaプログラミング基礎 目安時間10時間。

Javaソースコードの構成など

 

テックアカデミーJavaコースLesson3の受講内容は、 前回使ったEclipseというJavaプログラミングを走らせる為のツールを使い、実際にJavaプログラミングを実行するという内容でした。

その中でソースコードや「変数」「宣言」「代入」といった記述についての理解を進めていきます。

 

 ・変数とは
ざっくりいうと状況によって変わる数

・宣言とは
「こういった動作をしますよ」と宣言すること

・代入とは
中学の数学でやったものと同じ、xに~を代入して・・というのと同じ意味  

 

変数には種類があり、intは数値型、Stringは文字型の変数である…など用語とその意味の暗記ですね。 intのような基本データ型の種類は

 

サイズ デフォルト値 概要
byte 8ビット 0 8ビット[1バイト]の範囲(-128〜127)の整数
short 16ビット 0 16ビット[2バイト]の範囲(-32,768〜32,767)の整数
int 32ビット 0 32ビット[4バイト]の範囲(-2,147,483,648〜2,147,483,647)の整数(Java8以降で符号なしの値にした場合は0〜4,294,967,295)
long 64ビット 0 64ビット[8バイト]の範囲(-9,223,372,036,854,775,808〜9,223,372,036,854,775,807)の整数(Java8以降で符号なしの値にした場合は0〜18,446,744,073,709,551,615)。longを表すには数字の値の後に「i」もしくは「I」を付ける。小文字の「i」は数字の「1」と間違えやすいため一般的には大文字の「L」を使う
float 32ビット 0.0 floatを表すには数字の値の後に「f」もしくは「F」を付ける
double 64ビット 0.0 浮動小数点数。ソースコード上で小数点数を記述すると、デフォルトでdoubleになる
char 16ビット ¥u0000(空文字) Unicodeが持つ1文字。「’」(シングルクォーテーション)で1文字を囲むことでchar値を指定できる。
boolean 1ビット false true、もしくはfalseを表す真偽値

 

などがあります。 こういったプログラムに使用する基本的な用語というか文字を学習していきました。

個人的に面白かったのは 2ちゃんねるの「ぬるぽ」というネットスラングはNullPointerException(ヌルポインタエクセプション)というエラーコードが元ネタになっている、という説明があったことでした。

 

プログラミングにおける四則計算

たし算・ひき算・かけ算・わり算の表記は、プログラミングの世界だとそれぞれ

たす+
ひく-

ここまでは見慣れたものですが

かける*
わる/

と、かけるはアスタリスク*、割るはスラッシュ/を使います。   これは慣れるまでは意味を二度見三度見してしまいそうですね。 こういったことを学習しました。

このような、どの文字がどんな意味を持つのかという事を学ぶのがLesson3の内容です。基本的に暗記することが多く、プログラミングの構成を知ることができました。 ただ、課題が大変でした。

 

課題:税込み価格の計算プログラムの作成

○○円の商品の税込価格は○○円(消費税は○○円)です。

と表示するプログラムを書きましょう。
ただし、下記の仕様を満たしてください。

  • mainメソッドとtaxメソッドを切り分けてください。
  • taxメソッドでは消費税計算(8%)のみ行います。
  • mainメソッドはtaxメソッドから戻り値の消費税(8%)を受けてください。
  • 消費税に小数が含まれる場合は切り捨てるなどして、整数で表示させてください。
  • 税込の金額 = 金額 + 消費税額 と正しくなるようにしましょう。

 

というものです。正直、かなり手こずりました。メンターさんは基本的に問題の答えは教えてくれません。

あくまでヒントを出し、受講者が自身で解答にたどり着くようにサポートする、というスタイルです。

なので、教材を流し読みして理解していない場合は課題は絶対できません。

 

一度再提出になったものの、何とか合格しました。一度目は浮動小数点の記述ミスをしてしまいました。

プログラミングコードを実際に書くというのがLesson3でした。 大変ですが、いよいよプログラミングを具体的に分かっていけるという手ごたえを感じる事ができました。

 

レッスン4 制御構文

レッスン4:制御構文 目安時間は10時間。

今回も課題で自分でプログラミングのコードを書く難解なカリキュラムでした。

 

Javaプログラミング:関係演算子

条件分岐や繰り返しを行うために必要な関係演算子を一覧にて学びました。

演算子 用例 説明
> a > b aはbより大きい(超える)
< a < b aはbより小さい(未満)
>= a >= b aはbより大きいか等しい(以上)
<= a <= b aはbより小さいか等しい(以下)
== a == b aとbは等しい
!= a != b aはbは等しくない

 

これくらいは暗記しとかないと後々キツそうです。

Javaプログラミング:制御構文

if(イフ)
else if(エルスイフ)
for(フォー)
while(ホワイル)
break(ブレイク)

などの制御構文を学びました。これはブログラムにおいてとても重要で,

 

if は 「もし~~だったら△△」 という動作

else if は 「もし~~じゃなかったら△△」 という動作

for は 「~~を△△回繰り返す」

動作 while は 「条件が~~の間△△が繰り返される」 

動作 break は 「while文で繰り返しが無限ループになっている場合、ループを止める」 動作

 

という風に、プログラムを条件で制御するものです。

※完全に余談ですが、breakはアプリの解析などに使えます。詳しく知りたい人はブレークポイント 設置などで検索してみましょう。

どういう事かというと、プログラミングを学ぶことにより、応用すればゲームアプリの改造も可能となります。

 

テックアカデミーの無料体験を受けてみる
>テックアカデミーに申し込む

 

JavaコースL4課題:FizzBuzz問題

制御構文の何たるかを学んだところで課題です。

 

1から100までの連続した整数を画面に表示していく。ただし、
・もし、その整数が3で割り切れる数なら “Fizz” と表示する。
・もし、その整数が5で割り切れる数なら “Buzz” と表示する。
・上記2つの条件は同時に満たせる。
つまり、もし、その整数が3で割り切れ、なおかつ5で割り切れる数なら “FizzBuzz” と表示する。
・それ以外の数は、その数をそのまま表示する。

 

条件が正に学んできた制御構文ですね。これをプログラミングで記述すると

public class FizzBuzz {
public static void main(String[] args) {
for(int i = 1; i <= 100; i++) {
if(i % 15 == 0){
System.out.println(“FizzBuzz”);
}else if(i % 3 == 0){
System.out.println(“Fizz”);
}else if(i % 5 == 0){
System.out.println(“Buzz”);
}else{
System.out.println(i);
}
}
}
}

 

と、なります。 上記のコードを提出して、課題は合格でした。   今回のカリキュラムで、~~の場合は△△、◆◆の場合は〇〇、という風に条件を指定しての数字を導くことができるようになりました。

 

レッスン5 オブジェクト指向プログラミング1

レッスン5:オブジェクト指向プログラミング1 目安時間は10時間。

いよいよオブジェクト思考です。Javaを学んだ人の100人中100人が最初に「難しい」と感じる、難関オブジェクト指向へ取り組みます。

 

Javaオブジェクト指向プログラミング

そもそもオブジェクト指向ってなに?

 

 

object(オブジェクト)は日本語にすると「物、物体」という意味です。オブジェクト指向を採用したプログラミング言語では、ひとつひとつのデータをオブジェクトとして扱います。Javaも同じで、「参照型変数」と呼んでいたものは全てオブジェクトです。

 

復習: 

参照型変数=プログラムが処理を進めていく上で、あとで使うデータをいったん別の所に置いておくこと

String型=文字列型の変数 例:あいうえお、などの「文字」

基本データ型=型の値を保持する変数 int型=数字型の変数 例:1,2,3などの「数字」  

専門用語がたくさん出てきますね…。大変ですが、ここは頑張って覚えていかねばならぬようです。つまりは オブジェクト = 物  だと思っておけば、良いでしょう。 他にも専門用語が出てきます。

 

パッケージ = パソコンでいうフォルダーのようなもの。機能やカテゴリに応じてパッケージを作成する

クラス = 設計図

インスタンス化 = 実体化 

実際のコードで見てみましょう

 

class <> {
    //フィールド
    <> <>;

    //メソッド
    <><><>(){

    }
}
package test;

public class Employee {
    // フィールド
    public String employeeName;     // 社員名
    public String divisionName;     // 部署名

    // 自己紹介メソッド
    public void introduce() {
        System.out.println("私の名前は" + employeeName + "です。");
        System.out.println("所属部署は" + divisionName + "です。");

    }
}

 

※戻り値の値がない時は void ある時は int  や String などが入ります。

 

まとめ

 

1 クラス(設計図)を作る
2 フィールド(データ)やメソッド(機能)を定義する
3 別のクラス(例:メインメソッドを持つクラス)で※インスタンス化する
4 フィールドに初期値を設定する
5 メソッドを実行する ※クラスをアクセス可能にして、クラスを利用できる状態にすること newという記述がそれにあたる

 

これがオブジェクト指向の流れです。カタカナが多くて覚えるのが大変ですが、覚えないことには仕方がないので「英語おぼえてる俺カッコイイ!」くらいの気持ちでやれば楽しいかと思います。

いよいよJavaの難しい箇所へ入ってきましたが、オブジェクト指向を覚えればJavaを理解した、と言える第一歩なのでここは何度も復習しておくべきところだと思いました。それほど大切です。

 

レッスン6 オブジェクト指向プログラミング2

レッスン6:オブジェクト指向プログラミング2 目安時間は10時間。

読む部分と書いてあるコードをなぞって書くのはスイスイとできましたが、課題で丸2日かかりました。メンターさんのサポートがなければ死んでいましたね。。

 

今回はLesson6は5で学んだオブジェクト指向の続きです。2つのLessonにまたがって学ぶということは、それだけオブジェクト指向は重要で難関であるという事でしょう。

 

テックアカデミーJavaオブジェクト指向プログラミング

今回のレッスンではオブジェクト指向の

 

  • カプセル化
  • 継承
  • 多態性(ポリモーフィズム)

 

について学んでいきます。カプセル化と継承はなんとなく意味が分かりますが、多態性(たたいせい)は聞きなれない言葉ですよね。順に見ていきましょう。

カプセル化 アクセスを制御すること のようです。 例えば、会社で経理部しかアクセスできないデータに営業部がアクセスできてしまったら良くないですよね。

そういった時に経理部以外からのアクセスを防ぐのも、カプセル化の機能のひとつです。   ここで「アクセス修飾子」というものも習いました。

 

public class test{ //クラスに対する修飾子

    private String field1; //フィールドに対する修飾子
    protected int field2; //フィールドに対する修飾子

    public void method(){ //メソッドに対する修飾子
        //何か処理を実装する
    }
}

 

このJavaコースを習っていくと何度も出てくる public class ~~ などですね。

パブリックは公なという意味なので、アクセス制御としての意味合いは無く、どこからでもアクセス可能

 

public(パブリック)
protected(プロテクティッド)
private(プライベート)

 

よく本などにこの位の英語、パッと読めるようにしておけと書いてありますが、クソ喰らえです。英語よりカタカナの方が断然読みやすい。なのでぼくはカタカナで読み仮名をふります。

さて話を戻して、下にいくほどセキュリティが強いようです。僕的にプロテクトがRPGの魔法にありそうで強そうなイメージですが、プライベートの方がその上をいくみたい。

 

つまりJavaプログラミングにおいて、データ保持のフィールド部分はprivateにしておき、外部からのアクセスできないようにするのが作法 という説明がされていました。

ここまでは概念を学ぶだけで、カリキュラムを読み進めるのみです。次からはまたコードを書いていきます。

 

じゃあこのプライベートのフィールドのデータを変更するにはどうするか?というと、 セッターとゲッター という仕組みを使います。   要はこの部分からだけは、プライベートに外部からアクセスできるようになるようです。

セッターゲッターはこの後のLessonでも何回も出てくる、とても重要な仕組みなので必ず覚えておかなければなりません。

 

継承 これまでのプログラムを使いまわしたい時に使う

ざっくり言うとこういう事です。本当にざっくりですが。また、他の特徴として

 

  • メソッドやフィールドは継承される
  • コンストラクタは継承されない
  • privateなフィールドとメソッドは継承されない

 

というものがあげられます。

 

多態性(ポリモーフィズム) ある処理を命令したらクラスが違っても同じように振る舞ってくれる仕組みのこと

書いたプログラムを別のところでも機能させられるってことかと思います。

このポリモーフィズムを実現する具体的な仕組みが    オーバーライド(override) と オーバーロード(overload) です。

オーバーライドとは、親クラスにあるメソッドを子クラスでも再定義できる仕組み。  オーバーロードとは、丸山くがね原作の大人気ライトノベル同じ名前のメソッドを定義できる仕組み。

 

課題の提出

以下の条件で課題がありました。正直、超苦戦しました。この課題を合格するのに丸2日かかりました。。

 

課題:プロ野球チームの勝ち負け数を管理する

以下の表は2017年のプロ野球セントラル・リーグの勝敗表です。(NPB公式サイトより抜粋)   勝ち負け数を管理するためのクラスを作成して、インスタンスを6チーム分生成した後に各チームの勝ち負け数を表示するプログラムを作成してください。
課題に取り組む上で、下記の仕様を満たすようにしましょう。

  • BaseBallTeam という名前のクラスを作ってください。(メインメソッドは不要)
  • 以下のフィールドを BaseBallTeam に持たせてください。なお、カプセル化を使うようにしましょう。
    • name (String型)
    • win (int型)
    • lose (int型)
    • draw (int型)
  • それぞれのゲッターとセッターを用意します。
  • 勝率は「勝ち数/(勝ち数+負け数)」の計算で求まります。この計算結果を小数値(double)で戻す getRate メソッドを BaseBallTeam に作ってください。
  • もうひとつ、 report というメソッドを BaseBallTeam に作ります。○○ の2017年の成績は △△勝 □□敗 ☆☆分、勝率は 0.▽▽▽▽▽▽です。と表示するメソッドです。(下記の実行例では、読みやすくなるよう適当にスペースを入れています。)
  • メインメソッドの入っているクラスを用意します。(クラス名は自由)
  • メインメソッドの中で BaseBallTeam のインスタンスを6個生成し、それぞれのチームの名前、勝ち数、負け数、引き分け数を格納します。
  • report メソッドを呼び出して、勝敗情報を表示してください。

実行結果

広島東洋カープ の2017年の成績は 88勝 51敗 4分、勝率は 0.6330935251798561です。
阪神タイガース の2017年の成績は 78勝 61敗 4分、勝率は 0.5611510791366906です。
横浜DeNAベイスターズ の2017年の成績は 73勝 65敗 5分、勝率は 0.5289855072463768です。
読売ジャイアンツ の2017年の成績は 72勝 68敗 3分、勝率は 0.5142857142857142です。
中日ドラゴンズ の2017年の成績は 59勝 79敗 5分、勝率は 0.427536231884058です。
東京ヤクルトスワローズ の2017年の成績は 45勝 96敗 2分、勝率は 0.3191489361702128です。

 

ちょっとくじけそうでしたけど、何とか合格。あまり複雑な課題の正解コードを載せてしまっていいか分からないので、今回からは載せないことにします。

 

まとめ

以上のことをテックアカデミーJavaコースLesson6では習いました。オブジェクト指向は確かに難しいという印象です。

この課題で、与えられた数字を元に条件指定で答えを導き出せるようになりました。 ただかなり難しく、1度では理解できませんでした。

繰り返しカリキュラムを読むとちょっとずつ理解を深められます。ぼくは1度目はちんぷんかんでした。 Lesson6は特にメンターさんのサポートがあって、本当に良かったです。

レッスン7 データベース(DB)

テックアカデミーJavaレビュー

 

レッスン7:データベース(DB) 目安時間は10時間。

今回はDB(データベース)について。 テックアカデミーJavaコースLesson7は、「考える」というより「憶える」ということが多かったです。 それではデータベースとは何か?見ていきたいと思います。

 

テックアカデミーJavaデータベース

テックアカデミー受講レビュー

 

パソコンを使っていると、「コマンドプロンプト」と呼ばれる上のような黒い画面を一度は見たことがあるのではないでしょうか。

今回のテックアカデミーJavaコース、データベースのカリキュラムはこの黒い画面を操作していきます。18項目まであり、一見とても長そうに見えます。

しかし、その半分はデータベースの操作に使用する「MySQL」というソフトウェアのインストールの説明です。なので特に語ることはなく…自分のPCにMySQLを説明通りに淡々とインストールしました。

 

データベースソフトウェアの操作 テックアカデミーJavaレビュー

MySQLのインストールが無事終わったら、次は操作方法です。 基本的に、英語で命令を出して実行していきデータベースを構築していく…という事の繰り返しとなります。

テックアカデミーJavaコースのカリキュラムでは、本だなのデータベースを作成しました。

上の黄色の部分がカラムと呼ばれる縦の項目、(1、2、3…)などの数字が入ります。水色の部分がレコードと呼ばれる横の部分。(本の名前、値段、発売日…)などの文字が入ります。

 

概念的に、このマスの中にデータを入力していき、必要な時にJavaから呼び出せるよう設定する、という事を学習しました。MySQLへの命令も、

英語 日本語
Create 作成・保存
Read 取得
Update 更新
Delete 削除

このような命令を打ち込んでいきます。例えば

mysql> CREATE DATABASE bookstore default character set utf8;

この命令で、bookstoreというデータベースを作成します。 このデータベースに

  • id(ID)
  • title(本のタイトル)
  • price(本の価格)
  • created_at(登録された日時

というデータを入力するなら

CREATE TABLE bookstore.books (
    id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    title VARCHAR(100),
    price INT,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

という命令を入力します。すると、

+------------+--------------+------+-----+-------------------+----------------+
| Field      | Type         | Null | Key | Default           | Extra          |
+------------+--------------+------+-----+-------------------+----------------+
| id         | int(11)      | NO   | PRI | NULL              | auto_increment |
| title      | varchar(100) | YES  |     | NULL              |                |
| price      | int(11)      | YES  |     | NULL              |                |
| created_at | timestamp    | NO   |     | CURRENT_TIMESTAMP |                |
+------------+--------------+------+-----+-------------------+----------------+

このようなデータベースが作成されます。

 

まとめ

今回のJavaコースレッスン7で、データベースの扱い方を学び、理解することが出来ました。作成したプログラミングをデータベースから呼び出すということが、今回のレッスンで出来るようになりました。

 

レッスン8 JDBC1

テックアカデミー受講レビュー

 

レッスン8:JDBC 目安時間は10時間。

JDBCとは Java DataBase Connectivity の略です。プログラミング言語とデータベースを接続する為のドライバを指します。 レッスン8では、このJDBCの基本的な使い方の説明を学びました。

ドライバのインストール、データベースのセットアップ、そしてJavaとDBの接続方法を説明文に沿って実行していきます。 実行するにはその為のソースコードが必要で、

package dbSample;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DbConnectSample01 {

    public static void main(String[] args) {
        // データベース接続と結果取得のための変数
        Connection con = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            // 1. ドライバのクラスをJava上で読み込む
            Class.forName("com.mysql.jdbc.Driver");

            // 2. DBと接続する
            con = DriverManager.getConnection(
                "jdbc:mysql://localhost/world?useSSL=false",
                "root",
                "password"
            );// "password"の部分は,ご自身でrootユーザーに設定したものを記載してください。

            // 3. DBとやりとりする窓口(Statementオブジェクト)の作成
            stmt = con.createStatement();

            // 4, 5. Select文の実行と結果を格納/代入
            rs = stmt.executeQuery("select * from country limit 50");

            // 6. 結果を表示する
            while (rs.next()) {
                System.out.println(rs.getString("Name"));
            }

        } catch (SQLException e) {
            // DBとの処理で何らかのエラーがあった場合の例外
            e.printStackTrace();

        } catch (ClassNotFoundException e) {
            // JDBCドライバを読み込めないエラーがあった場合の例外
            e.printStackTrace();

        } finally {
            // 7. 接続を閉じる
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

上記のようなクラスを作成する必要がありました。接続する上での基本のお作法として

  1. 閉じる(コネクション、statement、resultsetの3つについて)
  2. 閉じる順番に注意。例外発生時でも閉じるようにしておく
  3. 更新系のSQL実行時は値を確定させ

という事が決まっているようです。ざっくり言うと、

JavaとDBを接続したらその後、接続を閉じる。その時の流れには決まりがあってその通りにするんだよ、という事かと思います。

レッスン8を学習すると、Javaアプリケーションとデータベースの連携について理解が深まりました。

 

レッスン9 JDBC2

テックアカデミーレビュー

レッスン9:JDBC2 目安時間は10時間。

レッスン9は、データベース連携機能のコードの書き方についてです。 DTOやDAOという話からスタートし、フレームワークと呼ばれるものの一種であるHibernate(ハイバネート)を導入して使ってみるところまでの話となります。

ざっくり言うとレッスン8より、よりオブジェクト指向らしいコードを書きましょう、という内容でした。 「データベースの各カラムに対応した変数をもつクラス」と「データベースへ接続する部分やSQL文を実行する部分を担うクラス」を作成。

 

前者は DTO (Data Transfer Object) 、後者は DAO (Data Access Object) といいます。 このDTOとDAOを楽にやりとりする方法として、 O/Rマッピング (Object / Relational Mapping) と呼ばれる種類のフレームワークを利用する方法があります。 それがHibernateです。

このO/Rマッピングのフレームワークのインストールと、DB(データベース)からデータを取得する、という流れを学びました。

レッスン9は理解するのが大変でした。 繰り返しになりますが、レッスン8の内容をよりオブジェクト指向的にする、その為の環境構築を学んだという感じです。

 

レッスン10 Webアプリケーションの仕組み

テックアカデミー受講レビュー

レッスン10 Webアプリケーションの仕組み 目安時間2時間

レッスン10は、インターネットとは、一体なんですか?という最も根本の部分の学習です。このレッスンは読み込むだけなので、目安時間もいつもより短いものでした。

すごくぶっちゃけて言うと、パソコンとパソコンの情報を繋ぐシステムがインターネットです、という事の詳細の説明です。

 

あまりに端的な書き方をしてしまったので、もっと具体的に言うと

webページを表示するアプリケーション(webブラウザ)で「このページが見たい」という指示を出す(見たいページをクリックする)と、見たいという命令がデータ元のパソコンに「リクエスト」され リクエストされたパソコンは見たいと言われたページを見せる「レスポンス」を返します。

これがインターネットで情報を見るという一連の流れとなります。   何気なく毎日使っているインターネットは、こういった仕組みと流れの上で成り立っている事を初めて知りました。

 

むしろ、ネットを当たり前に使い過ぎていて「どういった流れでページが表示されるか?」など考えたこともなかったです。 このインターネットの仕組みへの理解がプログラミングでアプリケーションを開発する上で、とても大事になってくる事なのでキチンと覚えておかねばなりません。

 

●この章で個人的に大切だと思ったこと

・インターネットとは?
→世界中のPCに入っている情報を別のPCから見る手段、ネットワークのこと
・webアプリケーションはMVC(モデル・ビュー・コントローラ)から成り立っている

REST(REpresentational State Transfer)
→アプリケーションの設計方法(アーキテクチャ)の1つで、リソース(操作の対象)をURLを使って表し、それに対してHTTPメソッド(主にGET、POST)を使って操作を行うこと。
RESTを構成する7つのアクション

リソースの操作は7つのアクションで構成されている。

リソース名 概要 HTTPメソッド
index 登録済みのリソースを一覧表示する画面 GET
show リソースの詳細な情報を表示する画面 GET
new 新しいリソースの入力画面(フォーム) GET
create 新規登録処理(INSERT) POST
edit 既存のリソースの編集画面(フォーム) GET
update 変更処理(UPDATE) POST
destroy 削除処理(DELETE) POST

この7つのアクションをそれぞれ、Javaのサーブレットとして作っていく。

Java Webアプリケーションの基本的な処理の流れ

 

  1. リクエストの送信:クライアント(ブラウザ)が、リクエストを送信。リクエストは、一旦Webサーバが受け取り、動的なWebコンテンツ(Servlet/JSP)へのリクエストだった場合にアプリケーション・サーバへリクエストを転送する。
  2. ルーティング:リクエストのURLを解析し、コントローラへのルーティングを行う。あるリクエストに対して、どのコントローラのどのアクション(メソッド)で処理を行うのか決定。
  3. データの取得(操作):コントローラは、モデルを介してデータベースからデータの取得や作成や更新などの操作を行う。
  4. ビューの描画:コントローラはモデルから取得したデータをビューに渡し、ビューはデータを埋め込んだ結果をHTML形式などで出力。
  5. レスポンスの返信:コントローラはビューから受け取った結果をレスポンスとしてWebサーバへ転送し、Webサーバからクライアント(ブラウザ)へレスポンスを返す。
  • まとめ Webアプリケーションの基本的な構造で、これからWebアプリケーションを作っていく上で、特に、

    • リクエストとレスポンス
    • HTTPリクエストのメソッド
    • REST
    • MVC(モデル、ビュー、コントローラ)
    • ルーティング

     

    が、webアプリケーションの構築でとても重要になってくることになるようです。レッスン10はこれからwebアプリケーションを作るための、予備知識の学習といった側面が強い章でした。

    スポンサーリンク