🍇

Java SEを網羅的にカバーした技術記事シリーズ

2023/11/05に公開

自己紹介

皆さん、こんにちは、Udemy講師の斉藤賢哉です。私はこれまで、25年以上に渡って企業システムの開発に携わってきました。特にアーキテクトとして、ミッションクリティカルなシステムの技術設計や、Javaフレームワーク開発などの豊富な経験を有しています。様々なセミナーでの登壇や雑誌への技術記事寄稿の実績があり、また以下のような書籍も執筆しています。

いずれもJava EEJakarta EE)を中心にした企業システム開発のための書籍です。中でも 「アプリケーションアーキテクチャ設計パターン」は、(Javaに限定されない)比較的普遍的なテーマを扱っており、内容的にはまだまだ陳腐化していないため、興味のある方は是非手に取っていただけると幸いです(中級者向け)。

Udemy講座のご紹介

この一連の記事の内容は、私が講師を務めるUdemy講座『Java Basic編』および『Java Advanced編』と同じ範囲をカバーしています。

  • Java Basic編』はこちらのリンクから購入できます。
  • Java Advanced編』はこちらのリンクから購入できます。

これらのコースは、セールス対象外のためタイミングを気にすることなく購入可能です。

また私の方では、定価の約30%OFFで購入できるクーポンを定期的に発行しています。クーポンはZenn内の他記事で発行していますので、興味のある方は、ぜひ私の他の記事をチェックしてみてください。

Java SEを網羅的にカバーした技術記事シリーズについて

今般、Java SEの膨大なテクノロジー領域を、広くそして深くカバーした一連の技術記事をZennに投稿しました。
これらの一連の記事は、私が講師を担当するUdemy講座『Java Basic編』と『Java Advanced編』と同じ範囲をカバーしています。
シリーズ全体の構成と範囲、各記事へのリンク先は以下のとおりです。

Udemyコース 分類 チャプター チャプター概要
Java Basic編 1 Javaの概要 1.1 Javaの概要 Javaを学ぶべき理由や、今日に至るまでの歴史、プログラミング言語としての特性などについて
1.2 Javaの開発環境 Javaプログラムの開発や実行に必要なツール類や環境、それらをセットアップする方法などについて
1.3 Javaのエディションとバージョン Javaの3つのエディションや、Javaがバージョンアップのたびにどのような機能を追加してきたのかについて
2 Hello World 2.1 Javaプログラムの基本と"Hello, World!" テキストエディタを用いて最も基本的なJavaプログラム("Hello, World!")を作成し、動作させる方法
2.2 Eclipseによる基本的な開発 Eclipse(Pleiades)を用いて、簡単なJavaプログラムを作成し動作させる方法
3 変数とリテラル 3.1 変数とデータ型 Javaプログラミングの最も基本的な概念である変数と、変数に格納する値の種類を表すデータ型について
3.2 リテラル リテラルすなわち様々なデータの「表記方法」について
3.3 変数と型に関する様々な言語仕様 プリミティブ型変数と文字列型変数に関連する様々な言語仕様をさらに深掘り
4 演算子 4.1 演算子 変数やリテラルに対して様々な処理を行うための演算子について
5 配列と参照型 5.1 配列 データをまとめて管理する仕組みである配列について
5.2 参照型変数とnull値 参照型変数の考え方や、初期値であるnull値について
6 制御構文 6.1 制御構文の概要 構造化プログラミングの特徴である制御構文の概要について
6.2 条件分岐 制御構文の一つである条件分岐の実装方法について
6.3 繰り返し 制御構造の一つである繰り返しすなわちループの実装方法について
7 クラスの基本 7.1 クラスの基本 Javaプログラムの基本的な粒度であるクラスについて、その概念や作成方法、命名規約などについて
7.2 クラスの主要なメンバー クラスの主要なメンバーであるフィールド、メソッド、コンストラクタについて
7.3 オーバーロードと様々なメソッド呼び出し メソッドとコンストラクタの仕様についてさらに深掘り
8 スタティックとfinal 8.1 スタティックなメンバー クラスそのものが直接保持するメンバーであるスタティックメンバーについて
8.2 finalと定数 final修飾子の意味と、定数という「値の再代入が禁止された変数」の用法について
9 パッケージとインポート 9.1 パッケージとインポート クラス名を分類するための仕組みであるパッケージと、異なるパッケージからクラスをインポートする方法について
10 クラスの様々な仕組み 10.1 カプセル化とアクセス修飾子 アクセス修飾子とそれによって実現される「カプセル化」の概念について
10.2 クラス間の関係 クラスとクラスの間に「関連」や「依存」があるケースについて
11 継承と委譲 11.1 継承と多態性 オブジェクト指向言語の主要な特徴である継承と、多態性(継承によってクラスの振る舞いが変わること)について
11.2 委譲 継承と同じように実装を再利用するための設計パターンである委譲について
12 インタフェース 12.1 インタフェースと多態性 実装と外部仕様を分離するための機能であるインタフェースと、インタフェースによる多態性について
13 Objectクラスの特徴 13.1 Objectクラスとオブジェクトの様々な特性 クラスの階層構造において最上位の位置するObjectクラスの様々な特性について
14 開発とデバッグ 14.1 Eclipseによる開発支援機能とデバッグ Eclipseによる開発支援機能の操作方法や、デバッグするための方法について
15 列挙型 15.1 列挙型 「静的な値」の組み合わせを管理するための特殊な型である列挙型について
16 文字列 16.1 文字列を表すクラスの特徴とAPI Stringクラスを中心に、文字列を表すクラスの特徴とそのAPIについて
16.2 正規表現とAPI 正規表現の基本的な仕様と、Javaで正規表現を使った検索・置換を行うためのAPIについて
17 数値 17.1 ラッパークラスの特徴とAPI プリミティブ型をオブジェクトとして扱うためのラッパークラスの特徴やAPIについて
17.2 数値関連クラスとそのAPI ラッパークラス以外の数値関連クラスの特徴やそのAPIについて
18 コレクション 18.1 コレクションフレームワーク 複数のデータを一括して処理するための仕組みであるコレクションフレームワークについて
18.2 コレクションの様々な機能 ソートや同期化など、コレクションフレームワークが提供する様々な機能について
19 例外 19.1 例外の基本 Java言語においてエラーを表す概念である例外と、例外をハンドリングするための仕組みについて
19.2 例外の様々な機能とアサーション ユーザー定義例外や例外チェーンなど例外のその他の機能や、プログラムの動作を検証するためのアサーションの仕組みについて
20 日付 20.1 古典的な日時クラスとAPI 未だに現役で利用されている古典的な日時クラスの特徴とAPIについて
20.2 Date and Time API 古典的な日時APIの課題を解消するために導入されたDate and Time APIついて
21 その他の機能 21.1 入れ子クラス クラス内で宣言されるクラスである、入れ子クラスの仕様について
21.2 Optionalクラスとnull値の取り扱い null安全の考え方や、null安全を担保するためのOptionalという機能について
21.3 java.langとjava.utilパッケージのその他の主要なクラス java.langパッケージとjava.utilパッケージに所属する、その他の利用頻度の高いクラスとそのAPIについて
21.4 Java標準のその他のツール javaコマンド、jarコマンド、javadocコマンドなど、Java標準の各種ツールについて
Java Advanced編 1 『Java Basic編』の総復習と本コースの開発環境 (割愛) (割愛)
2 Javaモジュールシステム 2.1 Javaモジュールシステム ライブラリの考え方や、モジュールを管理するための「モジュールシステム」と呼ばれる仕組みについて
3 スレッド 3.1 スレッドの仕組みと操作 非同期・並列処理の考え方や、Javaに言語仕様として備わっているスレッドの仕組みと操作方法について
3.2 並行処理ユーティリティとExecutorフレームワーク マルチスレッドを効率化するため並行処理ユーティリティと、その中でも最も代表的なExecutorフレームワークについて
3.3 並行処理ユーティリティのその他の機能 並行処理ユーティリティのExecutorフレームワーク以外の機能ついて
4 ラムダ式とストリームAPI 4.1 ラムダ式と関数型インタフェース Javaにおける関数の概念や、それを実装するためのラムダ式について
4.2 ストリームAPI データに対してパイプライン処理を行うためのストリームAPIについて
5 ファイル操作とI/O 5.1 ファイル操作 ファイルの操作(コピー・移動等)と、ファイルへの入出力を行うためのクラスの特徴やAPIについて
5.2 java.ioパッケージのその他の主要なクラス ファイル以外のリソースを扱うための、java.ioパッケージのその他の主要なクラスの特徴やAPIについて
6 ネットワーク 6.1 TCPとUDPによるネットワーク通信 TCP/IPの概念や、Java NIOと呼ばれるAPIによってTCP/IPベースのネットワーク通信を行う方法について
6.2 HTTPによるアプリケーション連携 HTTPの基本的な仕様やHTTPクライアントの構築方法について
7 総称型 7.1 総称型 型をパラメータ化することでクラスの汎用性を高める仕組みである総称型について
8 リフレクションとアノテーション 8.1 クラスローダーの仕組みとClassクラス クラスをメモリにロードする仕組みであるクラスローダーや、クラスのメタ情報を管理するClassクラスについて
8.2 リフレクションの仕組みとAPI クラスのメタ情報を扱うことにより様々な処理を可能にするリフレクションという機能について
8.3 アノテーションの仕組みとAPI クラスやメソッドなどに「注釈」として付与するアノテーションについて
9 最新の機能 9.1 レコードクラス プレーンでイミュータブルなクラスを簡潔に記述するためにJava 16で登場したレコードクラスについて

「Oracle認定Javaプログラマ」との対応関係について

『Java Basic編』と『Java Advanced編』は認定資格である「Oracle認定Javaプログラマ」(Silver、Gold)の範囲ともリンクしていますので、資格取得のための教材としても有用です。
ただしこのコースの目的は資格取得ではなく、あくまでも実践的なJavaスキルの習得にあるため、「Oracle認定Javaプログラマ」の範囲と完全一致しているわけではありません。「Oracle認定Javaプログラマ」には含まれていなくても現場実践の観点では必要と思われるものは範囲に取り込み、逆に「Oracle認定Javaプログラマ」の範囲の中でも一部の(現場での活用が限定的な)機能については、敢えて触れていません。
image.png
また本コースは「スキルの積み上げやすさ」と「現場におけるスキル活用」の観点で構成されているため、テーマの登場順序や組み方にも差異があります。例えば「Oracle認定Javaプログラマ」では、現場での利用頻度が高い「列挙型」は「Silver」の出題範囲に入っていませんが、本コースでは『Basic編』に登場します。
なお本コースと「Oracle認定Javaプログラマ」における主要な出題範囲との対応関係は、以下の表に掲載のとおりです。

資格種別 出題範囲 対応するコース 対応するチャプター
Silver Javaテクノロジと開発環境についての理解 Basic編 1.2 Javaの開発環境
1.3 Javaのエディションとバージョン
簡単なJavaプログラムの作成 Basic編 2.1 Javaプログラムの基本と"Hello, World!"
9.1 パッケージとインポート
Javaの基本データ型と文字列の操作 Basic編 3.1 変数とデータ型
3.2 リテラル
3.3 変数と型に関する様々な言語仕様
6.1 制御構文
16.1 文字列を表すクラスの特徴とAPI
演算子と制御構造 Basic編 4.1 演算子
6.1 制御構文の概要
6.2 条件分岐
6.3 繰り返し
配列の操作 Basic編 5.1 配列
クラスの宣言とインスタンスの使用 Basic編 7.1 クラスの基本
13.1 Objectクラスとオブジェクトの様々な特性
メソッドの作成と使用 Basic編 7.2 クラスの主要なメンバー
7.3 オーバーロードと様々なメソッド呼び出し
8.1 スタティックなメンバー
カプセル化の適用 Basic編 10.1 カプセル化とアクセス修飾子
継承による実装の再利用 Basic編 11.1 継承と多態性
インタフェースによる抽象化 Basic編 12.1 インタフェースと多態性
Advanced編 4.1 ラムダ式と関数型インタフェース
例外処理 Basic編 19.1 例外の基本
19.2 例外の様々な機能とアサーション
モジュール・システム Advanced編 2.1 Javaモジュールシステム
Gold Javaの基礎 Basic編 8.2 finalと定数
15.1 列挙型
21.1 入れ子クラス
例外処理とアサーション Basic編 19.1 例外の基本
19.2 例外の様々な機能とアサーション
Javaのインタフェース Basic編 12.1 インタフェースと多態性
汎用とコレクション Basic編 17.1 ラッパークラスの特徴とAPI
18.1 コレクションフレームワーク
18.2 コレクションの様々な機能
Advanced編 7.1 総称型
関数型インタフェースとラムダ式 Advanced編 4.1 ラムダ式と関数型インタフェース
JavaストリームAPI Advanced編 4.3 ストリームAPI
組込み関数型インタフェース Advanced編 4.2 ストリームAPI
ストリームに対するラムダ演算 Advanced編 4.2 ストリームAPI
モジュール型アプリケーションに移行する Advanced編 2.1 Javaモジュールシステム
並列処理 Advanced編 3.1 スレッドの仕組みと操作
3.2 並行処理ユーティリティとExecutorフレームワーク
3.3 並行処理ユーティリティのその他の機能
並列ストリーム Advanced編 4.2 ストリームAPI
I/O(基本およびNIO2) Advanced編 5.1 ファイル操作
5.2 java.ioパッケージのその他の主要なクラス
JDBCによるデータベース・アプリケーション Practical編(予定)
ローカライズ Advanced編 21.3 java.langとjava.utilパッケージのその他の主要なクラス
アノテーション Advanced編 8.3 アノテーションの仕組みとAPI

Discussion