Open9

Notes

enen

コードレビュー手法

手法名 概要 適した場面
ウォークスルー (Walkthrough) 作成者が主体となってコードを説明しながら参加者に紹介する。ディスカッション形式で進行。 小規模コードの共有や初期レビュー
ラウンドロビン (Round-Robin) 参加者が順番にコードの一部(例えば、ファイルやモジュール単位)を読み、レビューを交代しながら進める。 チーム全体で理解を深めたいとき
インスペクション (Inspection) 役割を決め、正式な手順に沿って欠陥を系統的に検出する形式的なレビュー。チェックリストやガイドラインに基づいて詳細に精査する。 高い品質が要求されるとき
パスアラウンド (Pass-Around) 作成者がコードを配布し、各自が非同期でコメントする。レビュー会議は行わない。 メンバーが多忙なときや初期フィードバック
enen

ページング方式

ページング方式とは、仮想記憶管理の方法の一つで、「仮想アドレス空間」と「主記憶(物理メモリ)」を固定長のブロック単位で管理する方式をいう。

  • 仮想アドレス空間の固定長ブロック: ページ
  • 主記憶の固定長ブロック: ページフレーム

この方式では、プログラム(プロセス)は一続きのメモリ空間を要求する必要がなく、メモリ上にバラバラに配置されても動作させることができる。
ページとページフレームの対応関係は「ページテーブル」というデータ構造によって管理される。

ページフォールト

アクセス要求のあったページが主記憶上に存在しなければ、「ページフォールト」が発生し、仮想記憶(通常はスワップ領域)からメモリにページが読み込まれる。このように、必要なページが主記憶に存在しない状態を「ページフォールト」という。

ページイン

仮想記憶から主記憶にページを読み込む動作を「ページイン」という。
ページインは、通常、必要になったタイミングでページを読み込む。

ページアウト

主記憶から仮想記憶にページを退避させる動作を「ページアウト」という。
ページアウトは、主記憶が圧迫されたときに「あまり使われていないページを選んで仮想記憶に退避」する動作であり、どのページを追い出すかは、OSが「ページ置き換えアルゴリズム」(LRU、FIFOなど)に基づいて判断する。

enen

暗号技術の分類と代表的手法

共通鍵暗号方式

暗号技術 概要
AES 現在の標準として広く採用されている暗号方式。128/192/256ビットの鍵長をサポートする。高速かつ安全。
DES かつての標準だが、鍵長が短いため安全性が不足していることから現在は非推奨の方式。
3DES DESを3回実行して安全性を高めた方式であるが、処理速度が遅いなどの理由からAESに置き換えられつつある。
ChaCha20 軽量なストリーム暗号。モバイルデバイスなどでAESの代替として採用されることがある。

公開鍵暗号方式

暗号技術 概要
RSA 暗号化と電子署名の両方に使える。素因数分解の難しさを安全性の根拠としており、広く利用されている。
DSA 主にデジタル署名に使用。離散対数問題の難しさを利用した技術。署名生成が高速で検証がやや遅い。
ECC 楕円曲線上の離散対数問題を安全性の根拠としている。短い鍵長でも高い安全性を提供する暗号方式。
ElGamal 離散対数問題に基づく暗号化方式。DSAの基礎となっている技術。

ハッシュ関数

暗号技術 概要
SHA-1 160ビット出力。衝突が見つかっており、安全性に問題があるため非推奨。
SHA-2 現在の標準として広く使用されており、SHA-256、SHA-384、SHA-512などのバリエーションがある。
SHA-3 SHA-2の後継として開発された最新のハッシュ関数標準で、異なる内部構造を持つ。普及はこれから。
enen

知的財産権

知的財産権
├── 産業財産権
│   ├── 特許権(発明)
│   ├── 実用新案権(考案)
│   ├── 意匠権(デザイン)
│   └── 商標権(ブランド・ロゴ)
├── 著作権法上の権利
│   ├── 著作権(著作物を保護)
│   │   ├── 財産権(複製権、公衆送信権など)
│   │   └── 著作者人格権(氏名表示権、同一性保持権など)
│   └── 著作隣接権(実演家、レコード製作者、放送事業者等の権利)
└── その他の知的財産
    └── 営業秘密(不正競争防止法による保護)
権利名 保護対象 対応する法律
特許権 発明(高度な技術的アイデア) 特許法
実用新案権 考案(構造や形状の工夫) 実用新案法
意匠権 デザイン(物品の形状・模様) 意匠法
商標権 商品・サービスの標識(ロゴ等) 商標法
著作権(財産権) 著作物(文芸・音楽・プログラム等) 著作権法
著作者人格権 著作物と著作者の人格的利益 著作権法
著作隣接権 実演・録音・放送・有線放送 著作権法
営業秘密 非公開の有用な技術・営業情報 不正競争防止法
enen

システム開発の見積方法

手法 概要 主なメリット 主なデメリット
類推法 (Analogous Estimating) 過去の類似プロジェクトの実績値(工数・コスト・期間など)を基に、規模や難易度の差を調整して見積もる。 ・短時間で概算が可能
・実績を活用できるため説得力がある
・類似度の判断が主観的になりやすい
・実績データが豊富でないと精度が低下
ボトムアップ法 (Bottom-Up Estimating) 画面・モジュール・タスクなど最小単位まで分解し、それぞれの工数を積み上げて全体を算出。 ・詳細に根拠を示せるため精度が高い
・リスク要因を個別に把握しやすい
・分解・集計に時間がかかる
・要件変更に弱く、再見積のコストが高い
トップダウン法 (Top-Down Estimating) プロジェクト全体を上位レベルの機能やフェーズで捉え、経験則や係数を用いて大枠の見積を算出。 ・初期段階でも迅速に概算提示が可能
・意思決定のスピードを確保
・細部が粗く、抜け漏れリスクがある
・後工程で乖離が発覚しやすい
ファンクションポイント法 (Function Point, FP) 入出力・ファイル・照会などの機能数と複雑度を評価し、補正係数を掛けて規模(人月)を算出。言語非依存。 ・仕様変更に比較的強い
・言語・技術に依存せず比較可能
・計数ルールが複雑
・学習コストと算定工数が大きい
プログラムステップ法 (Lines of Code, LOC) 予想されるソースコード行数を基に人月を換算。言語別生産性(LOC/人月)を参照。 ・単純で計算しやすい
・過去LOCデータと比較しやすい
・早期段階でLOCを予測しづらい
・言語や開発スタイルによる差が大きい
WBSベース法 WBS(Work Breakdown Structure)でタスクを階層分解し、各タスクへ見積値を割当てて合計する。 ・責任分担が明確になり管理しやすい
・進捗追跡と連動しやすい
・詳細設計が固まっていないと分解が困難
・粒度のバラツキで精度に影響
三点法 (Three-Point / PERT) 楽観値(O), 悲観値(P), 最可能値(M)を設定し、期待値 = (O + 4M + P) / 6 で算出。 ・不確実性を数値化できる
・統計的にリスクを織り込む
・3値を適切に決める難易度が高い
・計算結果の説明が煩雑になる
プランニングポーカー アジャイルで用いられる相対見積。ストーリーに対しチームでカードを同時公開し合意形成。 ・チーム全員で知識共有できる
・バイアス/アンカリングを抑制
・経験の浅いチームではばらつき大
・大規模案件には不向き
COCOMO (Constructive Cost Model) プロダクト規模(LOC)と15〜17のコスト乗数・スケール因子を用いた回帰式で工数・期間を算出。基本/中間/詳細版がある。 ・学術研究に基づく客観モデル
・複数レベルで適用可
・パラメータ調整に実績データが必須
・最新技術やアジャイルへの適合が課題
enen

メモリの分類

メモリ
├─ RAM(読み書き可能、揮発性)
│   ├─ DRAM(Dynamic RAM)
│   └─ SRAM(Static RAM)
└─ ROM(基本的に読み出し専用、不揮発性)
     ├─ マスクROM
     └─ PROM(Programmable ROM)
          ├─ EPROM(Erasable PROM)
          └─ EEPROM(Electrically Erasable PROM)
               └─ フラッシュメモリ

RAM(読み書き可能、揮発性)

種類 特徴 主な用途・備考
DRAM 定期的なリフレッシュが必要。構造が単純で高密度・安価。 主記憶装置(メインメモリ)に広く使用。
SRAM リフレッシュ不要で高速。構造が複雑で高価・大きい。 キャッシュメモリなどに使用。

ROM(基本的に読み出し専用、不揮発性)

種類 特徴 主な用途・備考
マスクROM 製造時に内容を焼き込み。書き換え不可。大量生産向き。 組み込み機器などの完成品ファームウェア。
PROM 一度だけ書き込み可能。書き換え不可。 製品のファームウェアなどの固定用途。
EPROM 紫外線によるデータ消去後に再書き込み可能。 古いタイプの書き換え可能ROM。
EEPROM 電気的に消去・書き換え可能。書き換えはバイト単位。 BIOSや設定保存に使用。
フラッシュメモリ EEPROMの一種。ブロック単位で高速に消去・書き込み可能。 SSD、USBメモリ、SDカードなどに使用。
enen

サイバーキルチェーン

フェーズ 説明
1. 偵察(Reconnaissance) 標的組織の情報収集。攻撃対象のネットワーク、社員、技術情報などを調査。
2. 武器化(Weaponization) マルウェアやエクスプロイトを準備。例:文書ファイルにマルウェアを埋め込む。
3. 配信(Delivery) メール添付やウェブ経由でマルウェアを標的に送信。
4. 攻撃の実行(Exploitation) 脆弱性を突いてマルウェアを実行させ、攻撃者の制御下に置く。
5. インストール(Installation) マルウェアを恒常的に動作させるためにシステムにインストール。
6. C2(Command and Control) 攻撃者との通信により遠隔操作やデータ送信などを実行。
7. 目的の達成(Actions on Objectives) 情報窃取、システム破壊など、攻撃の最終目的を実行。
enen

OSI基本参照モデル

層番号 層の名称 主な役割 プロトコル変換を行う機器(代表例)
7 アプリケーション層 ユーザーとネットワーク間のインターフェース提供 ゲートウェイ、プロキシサーバ
6 プレゼンテーション層 データの表現形式や暗号化・圧縮の処理 ゲートウェイ
5 セッション層 通信のセッション(接続)の確立、維持、終了 ゲートウェイ
4 トランスポート層 データ転送の信頼性確保(エラー検出、再送制御など) ゲートウェイ、ファイアウォール
3 ネットワーク層 論理アドレス(IP)によるルーティング ルーター、L3スイッチ
2 データリンク層 MACアドレスによる通信、誤り検出、フレームの伝送制御 ブリッジ、L2スイッチ
1 物理層 電気信号や光信号などの物理的な伝送 リピーター、ハブ
enen

モジュール結合度

モジュール結合度とは、あるモジュールが他のモジュールにどの程度依存しているかを示す指標のことで、結合度は弱い方が望ましい。

モジュール結合度を弱い(望ましい)順に並べた表を以下に示す。

# 結合の種類 説明 特徴・影響
1 データ結合 モジュール間で、引数として単純なデータ項目(数値、文字列など、処理に必要な最小限のデータ)のみをやり取りする モジュールの独立性が高く、影響範囲が限定されるため、最も望ましい状態といえる
2 スタンプ結合 モジュール間で、データ構造(構造体、オブジェクトなど)の一部ではなく全体を引数としてやり取りする。必要なのは一部のデータでも、構造体ごと渡す 不要なデータまで渡す可能性があり、構造変更の影響を受けやすい
3 制御結合 あるモジュールが別のモジュールの動作を制御するための情報(フラグ、処理分岐の指示など)を引数として渡す 呼び出し側が呼び出される側のロジックをある程度知っている必要がある
4 外部結合 複数のモジュールが、特定の外部宣言されたデータ項目や定数(外部ライブラリの変数など)を共通して参照する 外部仕様の変更が複数のモジュールに影響する可能性がある
5 共通結合 複数のモジュールが共通のグローバル変数などを参照・更新する 多くのモジュールが影響を受けやすく、副作用の特定が困難になる
6 内容結合 一方のモジュールが他方のモジュールの内部データやコードを直接参照・変更する 一方の変更が他方に予期せぬ影響を与えやすく避けるべきとされている