PARKUDP











デジタル署名とは






デジタル署名は、公開鍵暗号方式の仕組みを利用して、以下の2点を保証する技術です。
- メッセージの改ざん検知
受信者は、送られてきたデータが途中で改ざんされていないことを確認できます。 - 送信者本人の確認(認証)
署名を作成するためには、送信者本人が持つ秘密鍵が必要となるため、署名の存在は送信者が本物であることの証明になります。
この仕組みは電子契約、ソフトウェア配布、メールのセキュリティなど、幅広く利用されています。
データベースとトランザクションログ






データベースは、更新処理を安全に行うために トランザクションログを記録しています。
- 更新前の値
- 更新後の値
これを残すことで、障害が発生した場合でも復旧が可能になります。
復旧方法の流れ
- チェックポイントの状態に戻す
(一定時点の保存済み状態に復元) - トランザクションログを反映
→ 未反映の更新を再実行して復旧
ロールバック処理
トランザクション中にプログラムのバグやアプリ強制終了が起きると、データが不整合になる可能性があります。そのため、ロールバックによって「更新前ジャーナル」を利用し、トランザクション開始直前の状態に戻すことができます。これにより、データベースの整合性が保たれます。
サービスレベル管理(SLM)とSLA






ITサービスの運用では、サービスレベル管理(SLM)が重要です。
- SLA(Service Level Agreement)
サービス提供者と顧客の間で交わす契約。
提供するサービスの品目・品質・水準、違反時のペナルティを明記します。 - SLM(Service Level Management)
SLAを実現するための管理手法。
顧客要件を満たすサービスを継続的に提供する仕組みを作り、改善を進めます。
これにより、安定したITサービスの提供が可能になります。
オートマトンと状態遷移






オートマトンは、形式言語や計算理論で扱うモデルの1つです。
- 状態
ある時点のシステムの状況を表すもの。 - 遷移
入力や時間の経過によって状態が変化すること。 - 受理状態
最終的に到達すべき正しい状態のこと。
これを表現する方法には状態遷移表、状態遷移図があります。
図解:オートマトンの例
以下は、文字列abを受理する単純なオートマトンの状態遷移図です。


- 初期状態
S0から入力aが来るとS1に遷移 S1でbが入力されるとS2(受理状態)に遷移S2に到達すると入力文字列は受理される
また、上を状態遷移表で表すと下記のようになります。
| 現在状態 | 入力 a | 入力 b | 受理状態か |
|---|---|---|---|
| S0 | S1 | – | × |
| S1 | – | S2 | × |
| S2 | – | – | ○ |
流れ図(フローチャート)とは






流れ図(フローチャート)は、アルゴリズムや処理手順を視覚的に表現する図です。
文章だけで書くと分かりづらい処理の流れを、誰が見ても理解しやすくする目的で利用されます。
特に、処理の順序・分岐・繰り返しといった構造を直感的に表せるため、
プログラム設計や業務手順の可視化に広く使われています。
流れ図で使用する主な記号(JIS規格)
流れ図で使う記号は、JIS(日本産業規格)によって標準化されています。
代表的な記号と意味は以下の通りです。
| 記号 | 名称 | 意味 | 使い方の例 |
|---|---|---|---|
| ⭘ | 端子 (Terminal) | 開始・終了を表す | フローチャートのスタート地点や終了地点に配置 |
| ▭ | 処理 (Process) | 計算や処理を表す | 変数の代入、計算処理、業務処理など |
| ⬒ | 判断 (Decision) | 条件分岐を表す(はい/いいえ) | 「A > B?」などの条件判定 |
| ⬚ | データ (Input/Output) | 入出力処理を表す | データの入力、結果の出力など |
フローチャート記号の一覧
flowchart TD
A([端子])
B[/データ/]
C[処理]
D{判断}
subgraph 記号一覧
A --> B --> C --> D
endフローチャート例:最大値を求めるアルゴリズム
「2つの数 A, B を比較して、大きい方を出力する」処理を例に示します。
flowchart TD
Start([開始]) --> Input[/AとBを入力/]
Input --> Decision{A > B?}
Decision -- はい --> OutputA[/Aを出力/]
Decision -- いいえ --> OutputB[/Bを出力/]
OutputA --> End([終了])
OutputB --> End([終了])出力イメージの流れ
- 開始から処理をスタート
AとBを入力- 条件
A > Bを判定 - 「はい」なら
Aを出力 - 「いいえ」なら
Bを出力 - 終了
整列アルゴリズム(ソートアルゴリズム)とは






整列アルゴリズムとは、データを特定の順番(昇順や降順)に並べるためのアルゴリズムで、ソートアルゴリズムとも呼ばれます。
代表的なものに「バブルソート」「選択ソート」「挿入ソート」「クイックソート」があります。
バブルソート(Bubble Sort)
仕組み
- 隣り合う要素を比較して、順序が逆なら入れ替える
- 1回のパスで「最大(または最小)」が末尾に移動する
- 何度も繰り返して配列を整列させる
Pythonコード
def bubble_sort(arr):
a = arr[:]
n = len(a)
for i in range(n-1):
swapped = False
for j in range(n-1-i):
if a[j] > a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
swapped = True
if not swapped: # 途中で整列済みなら終了
break
return a選択ソート(Selection Sort)
仕組み
- 未整列部分から最小(または最大)を探す
- それを先頭と交換する
- これを繰り返して整列する
Pythonコード
def selection_sort(arr):
a = arr[:]
n = len(a)
for i in range(n-1):
min_idx = i
for j in range(i+1, n):
if a[j] < a[min_idx]:
min_idx = j
a[i], a[min_idx] = a[min_idx], a[i]
return a挿入ソート(Insertion Sort)
仕組み
- 配列の左側を「整列済み」と仮定
- 未整列部分から1つ取り出して、整列済み部分の正しい位置に挿入
- 小さい配列や「ほぼ整列済み」のデータに強い
Pythonコード
def insertion_sort(arr):
a = arr[:]
for i in range(1, len(a)):
key = a[i]
j = i - 1
while j >= 0 and a[j] > key:
a[j+1] = a[j]
j -= 1
a[j+1] = key
return aクイックソート(Quick Sort)
仕組み
- ピボット(基準値)を1つ選ぶ。
- ピボットより小さいものと大きいものに分割。
- それぞれを再帰的にソートする。
- 平均は O(n log n) と高速だが、最悪の場合 O(n²) になる。
Pythonコード
def quick_sort(arr):
a = arr[:]
def partition(lo, hi):
pivot = a[hi]
i = lo - 1
for j in range(lo, hi):
if a[j] <= pivot:
i += 1
a[i], a[j] = a[j], a[i]
a[i+1], a[hi] = a[hi], a[i+1]
return i + 1
def _qs(lo, hi):
if lo < hi:
p = partition(lo, hi)
_qs(lo, p-1)
_qs(p+1, hi)
_qs(0, len(a)-1)
return aソート4種のまとめ
| アルゴリズム | 考え方の一言 | 平均計算量 | 最悪計算量 | 追加メモリ | 安定性* | 特徴 / 使いどころ |
|---|---|---|---|---|---|---|
| バブルソート | 隣同士を比べて入れ替え | O(n²) | O(n²) | O(1) | ◎ | 実装が超シンプル。ほぼ整列済みなら早期終了が効く。学習用としてベスト。 |
| 選択ソート | 一番小さいのを選んで先頭へ | O(n²) | O(n²) | O(1) | × | 交換回数が最大でも n−1で少ない。書き込みコストを抑えたい場面向け。遅い・安定でない。 |
| 挿入ソート | 左の整列済みに差し込む | O(n²) | O(n²) | O(1) | ◎ | 小規模/ほぼ整列に強い。多くの高速ソートが小サイズで切替る定番。 |
| クイックソート | 基準値で分割して再帰 | O(n log n) | O(n²) | O(log n)** | × | 平均でとても速く、実用の定番。基準値の選び方や小区間は挿入に切替など工夫が鍵。 |
* 安定性=同じキーの相対順が保たれるか(◎=安定、×=非安定)
** 追加メモリは主に再帰のスタック分
まとめ
- デジタル署名:改ざん検知と送信者本人の証明に使われ、電子契約やソフト配布に必須。
- データベースとログ管理:トランザクションログとロールバックで障害時にも整合性を保つ。
- サービスレベル管理(SLM/SLA):提供品質を契約と仕組みで維持し、安定したITサービスを実現。
- オートマトン:状態遷移表や図で処理の流れをモデル化する理論。
- フローチャート:JIS規格の記号を用いて処理手順を分かりやすく図示。
- ソートアルゴリズム:バブル/選択/挿入/クイックの4種類が代表例で、特徴や計算量が異なる。


コメント