抽象クラス

抽象クラスとは、抽象メソッドを1つ以上持つクラスのこと

抽象メソッドとは定義だけで処理を書かないメソッド

抽象クラスは「abstract修飾子」を使って定義する
抽象メソッドにも「abstract修飾子」を使う
子クラスは抽象メソッドをオーバーライドする

 

抽象メソッドは子クラスで必ず実装する必要があり、実装しないとコンパイルエラーになる

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
</head>
<body>
    <form th:action="@{/}" method="post" th:object="${sampleListInput}">
        <div th:each="sampleInput : ${sampleListInput.sampleList}">
            <input type="checkbox" th:field="*{sampleList[__${sampleInputStat.index}__].checkbox}" th:checked="${sampleInput.checkbox}" />
            <!-- You can access other properties of sampleInput as needed -->
            <input type="text" th:field="*{sampleList[__${sampleInputStat.index}__].userName}" th:value="${sampleInput.userName}" />
        </div>
        <input type="submit">
    </form>
</body>

Spring 基礎

Spring Boot DIフレームワークであるSpring Frameworkをベースとしたアプリケーションを開発するためのフレームワーク

 

AOP(Aspect Oriented Programming, アスペクト指向プログラミング)

Spring Tool Suite(STS

オープンソースの開発環境である「Eclipse」や「Visual Studio Code」にインストールする機能拡張プログラムとして提供される専用開発ツール。

 

DI(Dependents Injection, 依存性注入) 「依存性の注入」の「注入」は、「インスタンスの代入」。それぞれのクラスでnewする必要が無くなる。newしなければならない依存性を抑える。

DIコンテナ 実行時、アプリケーション内をスキャンして必要なBeanオブジェクトがまとめて保管される。@Autowiredでフィールドにインスタンスを割り付ける。

↓包含関係

アプリケーション(DIコンテナ(Bean, Controller, Repository, Service, Component, Configuration))

 

Bean Javaで書かれた再利用可能なクラスのこと(JavaBeansとよく耳にする)

@SpringBootApplication アプリケーションのBean

@Controller コントローラーBean

@RestController RestコントローラーBean

これらは具体的な役割が設定されているので自分で@Autowiredはせず、クラスを書いてアノテーションをつければSpringのプログラムによって勝手に利用される。

アノテーション(@) 「注釈」という意味です。Javadocコメントは開発者に対してプログラムがどういうものかを説明するために使いましたが、これと同様に、コンパイラや実行環境に対してプログラムがどういうものかを伝えたいことがあります。Javaではアノテーションをプログラムに記述することにより、コンパイラで出力される警告メッセージを抑制したり、実行環境によってプログラムの動作を変更したりできます。どのアノテーションインスタンスをBeanとしてDIコンテナに登録するという働きは同じ。

 

@Bean 基本のBeanアノテーション。メソッドにつける。

@Component 再利用可能なコンポーネントアノテーション

@Service サービスとしていつでも呼び出せるクラスのアノテーション

@Repository データベースアクセスのためのアノテーション

これらのクラスとメソッドはインスタンスをDIコンテナに保管し自分で@Autowiredによってフィールドなどに割り当てて利用する。

 

Bean関係アノテーションに含まれるもの

@Bean | @Target, @Retention, @Document

@Component | @Target, @Retention, @Doument, @indexed

@Service | @Component, @Target, @Retention, @Documented

 

@Target アノテーションが実装可能である

@Retention アノテーションの保持範囲を示す

@Documented 付加した情報をドキュメントに反映する

@Indexed インデックスを付加する

Serviceの役割

サービスは、ビジネスロジックやアプリケーションの振る舞いを抽象化し
モデルやコントローラーから分離するためのコンポーネントです。
サービスは、データの取得、加工、バリデーション、外部サービスとの連携など、ビジネスロジックの具体的な処理を担当します。
これにより、コントローラーやモデルが煩雑になるのを防ぎ、コードの再利用性や保守性を向上させます。

Repositoryの役割

リポジトリは、データの永続化やデータソースとのやり取りを抽象化するためのコンポーネントです。
リポジトリは、データの取得、保存、更新、削除などの操作を提供し、データベースや外部データソースとの通信を隠蔽します。
これにより、モデルやサービスからデータアクセスの詳細を分離し、データアクセスの切り替えやテスト容易性の向上を実現します。

ServiceとRepositoryの導入は、MVCアーキテクチャパターンをより柔軟にし
ビジネスロジックとデータアクセスの責任を適切に分離する。

 

ネットワーク メモ

LAN 限定したエリアで接続できるプライベートネットワーク。

有線LAN LANケーブルというインターネット接続専用のケーブルを使ってインターネットに接続する。

【有線接続のメリット】

ケーブルを繋ぐだけで手軽にネットワーク構築できる
ケーブルで物理的に接続するため通信が安定しやすい
無線接続よりもセキュリティ面で安心できる

【有線接続のデメリット】

ケーブルが邪魔になったり配線がごちゃごちゃになりやすい
ケーブルが届く範囲でしかパソコンなどの機器を接続できない

無線LAN ケーブルを使わずに無線通信によりインターネットに接続する。無線LAN通信を行うには、親機(一般的にはWi-Fiルーター)と子機(一般的にはパソコンなどに内蔵)が必要

【無線接続のメリット】

電波の届く範囲ならどこからでもインターネットに接続できる
ケーブルの配線が不要でデスク周りなどがスッキリする

【無線接続のデメリット】

家電やBluetoothなど他の電波の干渉を受けやすく、不安定になりやすい
通信内容の傍受(盗聴)の危険性がありセキュリティ強化が必要


企業で社内ネットワーク(LAN)を構築するにあたって、課題となりやすいのが次の4点。

通信速度の問題
セキュリティ問題
構築・運用コスト増
リモートアクセスへの対応

課題①通信速度の問題
快適な通信をおこなうためには、一定の基準以上の通信速度を満たす必要があります。

どのくらいの速度がベストなのかは業務にもよりますが、例えばZoomなどのオンライン会議が多いなら80Mbps程度出ると十分でしょう。

なお通信速度が低下する原因としては、主に以下4つが考えられます。

ネットワークに接続する端末数の増加
ネットワークで通信するデータ量の増加
ネットワーク機材の老朽化
規格の陳腐化

企業に推奨する対策
通信速度が遅いときの有効な対策としては、以下の4つが挙げられます。

スピードテストの実施
社内ネットワークが遅い箇所を特定するために行います。
他の要素はなるべく排除した状態で、「ルーター」「スイッチングハブ」「ハブ」「アクセスポイント」ごとにパソコンを接続して、回線の速度を計測しましょう。

ネットワーク機器のリプレイス
各種機器の最大通信速度を見直し、速度が出ない古いものは入れ替えましょう。

LANケーブルのリプレイス
少なくともカテゴリ5e以上のものを利用するのがおすすめです。
カテゴリが上位のものほど安定した通信が可能になるため、オフィス環境に合ったものを選択しましょう。

無線LANアクセスポイントの見直し
どの通信規格に対応しているかによって、最大通信速度や周波数帯が変わってきます。
まずは無線LANアクセスポイントの周波数帯を変更してみて、通信速度が変わるかどうか確認してみましょう

(参考)LANケーブルのカテゴリごとの伝送帯域と最大通信速度

カテゴリ            5    5e    6    6A    7    7A    8
伝送帯域           100MHz    100MHz    250MHz    500MHz    600MHz    1000MH 2000MHz
最大通信速度    100Mbps    1Gbps    1Gbps    10Gbps    10Gbps    10Gbps    40Gbps

参考)無線LANアクセスポイントの通信規格・最大通信速度・周波数帯

規格名    最大通信速度    周波数帯
Wi-Fi 6E IEEE 802.11ax    9.6Gbps    2.4GHz/5GHz/6GHz
Wi-Fi 6                           2.4GHz/5GHz
Wi-Fi 5    IEEE 802.11ac    6.9Gbps    5GHz
Wi-Fi 4    IEEE 802.11n    600Mbps    2.4GHz/5GHz

なお無線LANは、他の機器が発する電波や障害物などに弱いという特徴があるため、無線LANアクセスポイントの設置場所を見直すだけでも通信速度が変わる可能性があります。

また対応している通信規格が上位になるほど、通信速度が速くなり障害物にも強くなる可能性が高いため、必要であれば無線LANアクセスポイントのリプレイスも検討してみてください。

課題②セキュリティ問題

企業に推奨する対策
企業でのセキュリティ対策としては以下があげられます。

OSやソフトウェアなどを最新の状態に保つこと
古いバージョンを使用していると、既知の脆弱性を抱えたままの状態になってしまいます。
最新の状態に保つことで攻撃を受けるリスクを減らせるため、定期的に更新するフローを確立させましょう。

UTM(統合脅威管理機器)を導入すること
UTMは多様なセキュリティ機能を統合した、企業のネットワークをウイルスやハッキングなどの脅威から効率的かつ包括的に守るセキュリティ機器です。

セキュリティスイッチによりネットワークを分割すること
ネットワーク分割により、万が一感染した場合の被害を最小限に抑えられます。
また外部や内部の感染PCによる攻撃を検知してブロックする機能もあります。

課題③構築・運用コスト増

外部の運用管理サービスやツールを導入する
ネットワーク運用作業を外部に任せることにより、運用の効率化にともなうコスト削減が期待できます。

SDN(Software Defined Networking)を導入する
ソフトウェアでネットワークを管理する技術を指します。
社内のルータースイッチングハブなどの操作や設定をまとめて行えるため、運用コストが削減可能です。

SD-WAN(Software defined-Wide Area Network)を導入する
SDN(ソフトウェアを介してネットワーク機器を一括制御する技術)をWANに適用したものです。
これにより1つのLANだけでなくWANにも範囲を広げ、複数拠点間のネットワーク機器の操作や設定をまとめて行えます。

課題④リモートアクセスへの対応

企業に推奨する対策
リモートアクセスでの不正アクセスや情報漏えい防止への対応としては、以下の4つが挙げられます。

VPNを利用する
インターネット上に仮想の専用線を設定し、特定の人のみが利用できる専用ネットワーク。

ユーザー認証を利用する
ユーザーが特定のアクションを実行する際に、正当な利用者であることを確認する機能。

データの暗号化を行う
元となるデジタルデータを違う文字列のデータに変換し、解読できない状態にすること。

ログ監視を行う
サーバーやネットワーク機器、アプリケーション、パソコンなどのデバイスの動作履歴(ログ)を監視・記録すること。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
WAN LANとLAN同士を繋ぐ(離れた拠点同士を繋ぐ)大きなネットワーク。

LANは限定的なエリアのネットワークであった一方で、WANは遠く離れた場所と繋がっているネットワークであり、広い範囲で接続できる点が最大の特徴。WANを世界規模で実現しているのが「インターネット」で、LAN同士が繋がりWANという大きなネットワークが構築されることで、世界中の人たちと自在にコミュニケーションが可能となっている。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
①ネットワーク範囲の違い
LANはオフィスなどの建物内で構築された狭い範囲のネットワークで、WANは点在するLANが集合した遠く離れた拠点を結ぶ広範囲のネットワークです。

簡潔にまとめると、オフィス内の限定されたネットワークが「LAN」であって、異なる拠点のネットワークは「WAN」で接続できるということです。

②構築・管理・運用の違い
構築・管理・運用に関して、LANは企業側が行う一方で、WANはプロバイダー側が行います。

例えばオフィスでネットを使うにはプロバイダーの契約が必要であるように、WANを利用するには、WANサービスを契約して各拠点のネットワークに繋ぐ必要があります。

なお、狭い範囲に限られるLANと、広範囲でアクセスできるWANの2つが組み合わさることによって実現するのがインターネット通信です。

③構成する機器の違い
はじめに、LANを構築する機器としては主に以下の4つです。

LANケーブル:パソコンなどの機器同士を有線接続するケーブル
ハブ:複数のケーブルを接続し、中継や分岐を行う機器
ルーター:異なるネットワーク間を相互に接続する機器
アクセスポイント:ルーターに接続し、ルーターとデバイスを接続する機器

一方でWANは、大きく分けると以下の2つの機器から構成されます。

DTE(Data Terminal Equipment)
データ通信するユーザーのPCやルーターなどを指す。データ端末装置とも呼ばれる。

DCE(Data Circuit-Terminating Equipment)
DTEやWANから送られてきた信号を、送信先に合わせて変換して送信する装置で、モデム(アナログ回線の信号をデジタル信号に変換する装置)などの機器を指す。データ回線終端装置とも呼ばれる。

IPアドレスの種類の違い

IPアドレスの総数には限りがあることから、枯渇を防ぐためLANとWANでは以下のように種類分けされています。

WAN:グローバルIPアドレスといい、外部と区別できるアドレス
LAN:プライベートIPアドレスといい、特定のLAN内だけで使えるアドレス

「プライベートIPアドレス」は、ルーターがそれぞれのPCを識別するために割り当てるもので、外部からは見えないため比較的自由に設定できます。

プライベートIPアドレスはそのLAN内に限定して割り当てられる番号なので、他のLANで使用しているIPアドレスと重複しても問題ありません。

一方「グローバルIPアドレス」は、自宅に住所が割り当てられるのと同じように、インターネットにおいて通信先を識別するために割り当てられるものです。

住所が重複しないのと同じように、グローバルIPアドレスは重複することはありません。

なおグローバルIPアドレスは、基本的にプロバイダと契約してインターネットを使い始めた時点でルーターに割り当てられます。

LAN/WANと「インターネット」の違い
・LANは狭い範囲のネットワーク
・WANはLANとLANを繋ぐ大きなネットワーク
・インターネットは誰でも自由にアクセスできる開かれたネットワーク
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

VPN 拠点間に仮想的な専用ネットワークを構築する技術やサービス。インターネット上に仮想の専用線を設定し、特定の人のみが利用できる専用ネットワークのことです。
簡単にいうと、VPN接続をすればデバイスとインターネットの間に安全なトンネルを確立できるため、不正アクセスなどのセキュリティ脅威から守ることができます。WANの一種で、LANとLANの間を仮想的なプライベートネットワークで繋ぐ技術です。VPNを利用すれば、通信の「暗号化」などによりセキュリティを強化できるため、個人情報や機密情報といったデータのやりとりを行う際に利用されています。

企業向けのWANサービスとして一般的なのは、以下の3つ

1.IP-VPN
通信事業者の閉鎖型ネットワークで構築するVPN。セキュリティや通信品質の点で、より専用線に近い環境で利用できる。

2.インターネットVPN
インターネット回線を用いるVPN。比較的安価に構築できるが、自社でセキュリティの確保などが必要。

3.広域イーサネット
通信事業者の閉域ネットワークを利用して仮想のネットワークを構築するVPN。通信品質やLAN同士の繋げやすさが強み。

 

 

 

ネットワーク応用

OSI(Open System Interconnection)基本参照モデル プロトロルの単機能化・交換の容易さを目的としてコンピューターネットワークに求められる通信機能を7階層の構造に分割し定義したもの

アプリケーション層 ソフトウェアが提供する具体的な機能についての仕様や通信手順やデータ形式などを規定。

プレゼンテーション層 文字コードや圧縮の種類などを規定。

セッション層 データの送受信管理。通信の確立、維持、終了するまでの手順を規定。

トランスポート層 通信の品質を保証。

ネットワーク層 エンドーツーエンドのやり取りを規定。

データリンク層 同じネットワークに接続された隣接ノード間での通信を規定。

物理層 システムの物理的、電気的な性質を規定。

 

それぞれの階層をN層、N層に存在する通信機器などの実体をエンティティ

N層に属するエンティティ同士が相互に通信を行うための取り決めをプロトコル、通信規約という意味。

上位の層は下位の層を利用しながら通信を行います、下位の層が上位の層に通信窓口を提供する機能をサービス

プロトコルスイート(プロトコルスタックある通信方式を実現するために低い階層から順にプロトコルを積み重ねて全体として機能するようにした組み合わせのこと。
最も代表的なのが TCP/IPプロトコルスイート
アプリケーション層
HTTP, SMTP, FTP, DHCP, DNS, SNMP, POP3, Telnet

トランスポート層 TCP, UDP

インターネット層 IP, ICMP,IPsec

ネットワークインターフェース層 イーサネット

MACアドレスイーサネットFDDIに使用される物理アドレスである。データリンク層において同じネットワークに接続する隣接ノード間の通信で相手を識別するために使用される。MACアドレスの長さは6バイトで先頭24ビットはOUI(ベンダーID)で後半24ビットは固有製造番号であり一意に定まりIEEEが管理する。

IPアドレスネットワーク層プロトコルであるIPで利用されるノードを特定するためのアドレス。

ポート番号トランスポート層においてノード内のアプリケーションを識別するための番号。指定できる範囲はTCPUDPごとに0~65535。このうち0~1023はよく利用されるアプリケーションのポート番号でウェルノウンポートという。

パケット交換方式 TCP/IPでデータをパケットという単位で区切りヘッダを付加して送信する。

ポート番号を用いてトランスポート層で通信するためのTCPヘッダを付加する。

IPアドレスを用いてネットワーク層で通信するためのIPヘッダを付加する。

MACアドレスを用いてデータリンク層で通信するためのMACヘッダを付加する。

TCPヘッダが付加されたパケットをTCPセグメント

IPヘッダが付加されたパケットをIPパケット

MACヘッダが付加されたパケットをMACフレーム又はイーサネットフレーム

 

リピータ 物理層で機能するネットワーク上を流れる電流の増幅装置又は整流装置。現在では複数のノードを接続できるマルチポートリピータ(ハブ)が使用されるのが一般的。

ブリッジ データリンク層で機能するネットワーク上を流れているフレームのMACアドレスを認識して通信を中継する装置。接続されている各ノードのMACアドレスを記憶して接続されているノードをコリジョンドメイン(セグメント)という単位に分割することでMACアドレスにより判明したフレームの宛先にあるセグメントにのみフレームを送信する。
MACアドレステーブル 学習したMACアドレスとポートの対応を記録しておく表。

スイッチングハブ(レイヤ2スイッチ) データリンク層で機能するフレームの蓄積機能、速度変換機能、交換機能を持つ装置。ブリッジと同じ働きをするがポート数が多いのとハードウェア主体で処理するので処理速度が速い。
ブロードキャストフレーム イーサネットなどのLANで同じネットワークに接続する端末に一斉配信するフレーム。宛先MACアドレスにすべてのビットが1であるアドレスを指定する。
ブロードキャストストーム ブロードキャストフレームが永続的に転送されながら増殖してネットワークダウンを招く現象。一般的な原因は、LANスイッチ同士を漫然と接続してループを形成してしまうこと。

スパニングツリープロトコル(STP) ループを構成している一部のポートを通常時には論理的に切断することで、ネットワーク全体をループを持たないツリー構造にする。

ルータ ネットワーク層で機能する宛先IPアドレスからパケットの送信先を決めて通信を制御する装置。パケットをどのルータに送れば宛先のネットワークへの通信が速く行えるか判断することを経路制御(ルーティング)。ルータはそのための経路表(ルーティングテーブル)を持っている。

ブロードキャストドメイン ルータで分けられたネットワークの単位。

ブロードバンド 広い帯域を利用する通信回線の総称。光ファイバーADSLなど。

ブロードバンドルータ 通信事業者のブロードバンド回線を通じてインターネットに接続する家庭向けルータ。

デフォルトゲートウェイ 他ネットワークと通信する時の窓口となる一番近いルータ。

スタティックルーティング 手作業で経路表を作成する。

ダイナミックルーティング ルーティングプロトコルを利用することでルータ同士が経路に関する情報の交換を行い自律的に経路表を作成する。利用する代表的なルーティングプロトコルはRIP、OSPF。

RIP ディスタンスベクタ型(距離ベクトル型)のルーティングプロトコル。経路情報を一定時間間隔で交換して宛先ネットワークに到達するまでに経由するルーターの数(ホップ数)が最小になる経路を選択する。最大ホップ数は15。

OSPF リンクステート型のルーティングプロトコル。最もコストの小さい経路を選択する。コスト算出式「コスト=100Mbps/経路の通信帯域(bps)」。

 

VRRP 同じLANに接続された複数のルータを仮想的に1台のルータとして見えるようにして冗長構成を実現するプロトコル。 通常時にはマスタールータが仮想IPアドレスを保持するが マスタールータに障害が発生するとバックアップルータが継承する。

レイヤ3スイッチ ネットワーク層で機能するルータと同じ働きをするが専用ハードウェアによって転送処理を行うことで高速に処理ができ大容量のファイルを扱うファイルサーバへのアクセスに適する装置。

ゲートウェイ 通信プロトコルデータ形式が異なるネットワーク間を中継する機能や機器。

レイヤ4スイッチ トランスポート層で機能するTCPUDPポート番号も経路制御判断の情報として使用できるネットワーク中継装置。

レイヤ7スイッチ アプリケーション層までの情報を使って通信制御を行う装置。

SDN ネットワーク機器の転送判断を中央サーバーからソフトウェアでプログラミングする。

OpenFlow ネットワーク機器が持つ転送機能と経路制御機能を論理的に分離してコントローラというソフトウェアによってデータ転送機能を持つネットワーク機器を集中的に制御、管理するプロトコルVLAN スイッチの特徴的な機能で物理的な接続形態に依存せずノードを任意に論理的なグループに分ける仕組み。

ポートVLAN(スタティックVLAN) スイッチのポートごとにVLANを割り当てる方式でポートとVLANの対応が固定される。

タグVLAN VLAN IDを含むタグ情報をMACフレームに埋め込み、フレーム単位でVLANを区別する。IEEE 802.1Qで標準化。

メディアアクセス制御 複数のデータを1つのケーブルを通して送受する場合に起きるデータの衝突(コリジョン)を回避するための制御。

CSMA/CD イーサネットで使用されていたメディアアクセス制御で衝突検知方式。
トークンパッシング方式 ネットワーク上をフリートークンという送信権のためのパケットが巡回してフリートークンを獲得したノードのみが送信を行うので衝突を回避する方式。

TDMA方式 ネットワークを利用できる時間をタイムスロットという単位で区切り、割り当てられた時間は各ノードが独占する方式。

ARP 通信相手のIPアドレスからMACアドレスを取得するためのプロトコル

RARP MACアドレスからIPアドレスを取得するためのプロトコル。電源オフ時に自身に割り当てられているIPアドレスを保持できない機器が使用する。

PPP 2点間をポイントツーポイントで接続するためのデータリンクプロトコル。WANを介して2つのノードをダイヤルアップ接続する時に使用される。ネットワーク層ネゴシエーションを行うNCPと、リンクネゴシエーションを行うLCPから構成されていてリンク制御やエラー処理機能を持つ。

 

 

 

 

 

 

UML

UML(Unified Modeling Language)統一モデリング言語

要するに、わかりやすく表現するために統一されたルールで記述しよう

 

 

オブジェクト指向

あらゆるモノ・コトをオブジェクトとして捉える

 

カプセル化 利用制限することが影響範囲を少なく

・継承 機能を引き継ぐ

ポリモーフィズム 振舞を曖昧にすること詳細な中身を知らずとも動く

 

・クラス

オブジェクトの設計図

 

インスタンス

クラスをもとに生成されたオブジェクトの実体