忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【基礎理論】精度の証!指数表記と「有効桁数」の数え方|情報処理問題1000本ノック

科学計算や情報の基礎理論において、数値のどこまでが「信頼できる測定値」なのかを示すのが有効桁数です。特に指数表記における扱いは、計算誤差を防ぐための必須知識です。

1. 問題:指数表記における有効桁数の判定

【 問題 】 数値 5.40 × 103 を有効桁数を考慮して記述した場合、この数値の有効桁数は何桁でしょうか?

ア、1桁   イ、2桁   ウ、3桁   エ、4桁

2. 正解:数値表現に関する正解

正解: ウ、3桁

3. 解説:仮数部が「精度」を決める

指数表記(a × 10n 形式)において、有効桁数は「仮数部 a」に現れる数字の個数によって決まります。

【図解:有効桁数の数え方ルール】

■ 指数表記の仮数部に注目
・5.40 × 103 の場合、仮数部は 「5.40」 です。
・この 「5」「4」「0」 の3つが、測定によって得られた意味のある数字です。

■ 末尾の「0」の重要性
・単に 5400 と書くと、有効桁数が2桁(54まで)なのか3桁(540まで)なのか判別できません。
・5.40 × 103 と書くことで、「小数第2位の0まで正確に測った」という意思表示になり、有効桁数は3桁となります。
[ 桁数決定のポイント ]
先頭の0は数えない:0.0012 → 1.2 × 10-3(2桁)
途中の0、末尾の0は数える:1.002(4桁)、5.0 × 102(2桁)
指数部は関係ない:10n の部分は小数点の位置を示すだけで、精度には影響しません。

1. 理解のコツ: 指数表記は「誤差の範囲を明確にするためのマナー」です。5.4 × 103 なら 5350 ~ 5450 の範囲、5.40 × 103 なら 5395 ~ 5405 の範囲を指していることになり、後者の方がより「精密」であることを表しています。
2. 試験対策の視点: 「乗算・除算の計算結果は、有効桁数が最も少ないものに合わせる」というルールがよく出題されます。まずは、指数表記から「この数値は何桁の精度があるのか」を正しく見抜くことが第一歩です。


4. まとめ

「指数表記の有効桁数は、仮数部の数字をそのまま数える」。これが有効桁数の鉄則です。末尾の「0」を省略せず書くことで、計算の正確さを相手に正しく伝えることができるようになります。


PR

【情報セキュリティ】逆転の発想で復号する!「フェイステル構造」|情報処理問題1000本ノック

AESのSPN構造と並び、共通鍵暗号の設計における二大構造の一つが「フェイステル構造」です。かつての標準暗号DESにも採用された、この巧妙な仕組みを攻略しましょう。

1. 問題:ブロックを分割する暗号構造

【 問題 】 ブロック暗号の設計において、入力データを左右二つに分割し、一方のデータから生成した値ともう一方のデータのXOR(排他的論理和)をとる処理を、左右入れ替えながら繰り返す構造を何と呼ぶでしょうか?

ア、SPN構造   イ、フェイステル構造   ウ、ストリーム構造   エ、公開鍵構造

2. 正解:暗号アルゴリズムに関する正解

正解: イ、フェイステル構造(Feistel構造)

3. 解説:同じ回路で「暗号化」も「復号」も

フェイステル構造は、計算の過程でデータを左右に分け、片方ずつ加工していくのが特徴です。その最大のメリットは「実装の効率性」にあります。

【図解:フェイステル構造の仕組み】

■ 基本的な動き
1. 入力ブロックを左(L)と右(R)に半分ずつ分ける。
2. 右側(R)とラウンド鍵を関数に入れ、その結果と左側(L)のXORをとる。
3. 新しい左側として「元のR」、新しい右側として「2の結果」を使い、左右を入れ替えて次のラウンドへ。

■ 最大の特徴:可逆性
・この構造は、内部で使われる関数がどんなに複雑(あるいは不可逆)であっても、「逆順に処理するだけで必ず元に戻せる」という数学的性質を持っています。
・そのため、暗号化と復号で全く同じ回路やプログラムを使い回すことができます。
[ 代表的な採用アルゴリズム ]
DES (Data Encryption Standard):世界で最も有名なフェイステル構造の暗号です。
Camellia (カメリア):日本で開発された、非常に強固で高速なフェイステル構造の暗号です。

1. 理解のコツ: データを半分ずつ交互に「鍵をかける」イメージです。全部一度に加工するSPN構造(AES)に対し、半分ずつ慎重に処理していくのがフェイステル

【情報セキュリティ】鉄壁の防御を支える数学!AESの「SPN構造」|情報処理問題1000本ノック

無線LANやWeb通信など、現代のあらゆる場所で使われている共通鍵暗号方式「AES」。その強固な安全性を支える内部アルゴリズムの仕組みを攻略しましょう。

1. 問題:AESのアルゴリズム構造

【 問題 】 共通鍵暗号方式のAESにおいて、データをバイト単位で置き換える「置換(Substitution)」と、位置を入れ替える「変換(Permutation)」、さらにラウンド鍵とのXOR(排他的論理和)演算を繰り返すことで暗号化を行う構造を何と呼ぶでしょうか?

ア、Feistel構造   イ、SPN構造   ウ、ハッシュ構造   エ、公開鍵構造

2. 正解:暗号アルゴリズムに関する正解

正解: イ、SPN構造(Substitution-Permutation Network)

3. 解説:撹乱と拡散のネットワーク

SPN構造は、データを細かくかき混ぜることで、平文と暗号文の統計的な関係を徹底的に隠蔽する設計になっています。

【図解:AES(SPN構造)の4つの処理】

1. SubBytes(置換)
・Sボックスと呼ばれる変換表を使い、バイト単位で値を別の値に置き換えます。

2. ShiftRows(行のシフト)
・データを並べた行列の各行を、一定の規則で不規則に横方向にスライドさせます。

3. MixColumns(列の混同)
・ビット演算(行列演算)を用いて、列内のデータを複雑に混ぜ合わせます。

4. AddRoundKey(鍵加算)
・そのラウンド専用の「ラウンド鍵」とデータの間でXOR(排他的論理和)をとります。
[ Feistel構造との比較 ]
Feistel(フェイステル)構造:データを左右半分に分け、片方を加工してもう片方と混ぜる方式。旧標準のDESなどで採用されていました。
SPN構造:一度にデータ全体を処理するため、少ないラウンド数で高い安全性を確保でき、並列処理もしやすいのが特徴です。

1. 理解のコツ: 料理に例えると、材料を全く別の形に切り(置換)、ボウルの中で激しくかき混ぜ(シフト・混同)、最後にスパイス(鍵)を加える、という工程を何度も繰り返して、元の形が一切分からない「暗号」という料理を完成させるイメージです。
2. 試験対策の視点: 「AES」=「SPN構造」、「DES」=「Feistel構造」という対応関係は頻出です。また、SPN構造の利点として「全ビットを一度に拡散できるため効率が良い」点も押さえておきましょう。


4. まとめ

「置換、シフト、ビット演算、XORの繰り返し」。これがSPN構造です。この数学的に洗練された構造によって、AESは非常に高速かつ解読困難な暗号として世界中で信頼されています。


【知識】リズムと透明性でつくる!「スクラム」の重要用語|情報処理問題1000本ノック

スクラムは、変化の激しい現代の開発において、短期間で成果を積み上げ、改善を繰り返すための強力なフレームワークです。各用語の意味を正確に理解し、開発の流れを攻略しましょう。

■ スクラムを構成する主要な要素

開発の単位、管理リスト、そして情報共有のためのイベントを整理します。

スプリント (Sprint)

アジャイル開発における反復(イテレーション)の単位です。通常「1〜4週間」の固定期間で実施され、その期間内で設計・開発・テストを行い、動くソフトウェア(インクリメント)を完成させます。

バックログ (Backlog)

顧客にとってビジネス価値がある開発機能の一覧です。主に以下の2段階で管理されます。

  • プロダクトバックログ:製品全体の「やりたいこと(フィーチャー/ストーリー)」を優先順位付けしたリスト。
  • スプリントバックログ:そのスプリント内で完了させるために、プロダクトバックログから抜き出し、具体的なタスクに分解した作業一覧。

タイムボックス (Timebox)

スプリントの期間を厳守する考え方です。スプリント期間中に対応するバックログの内容は、原則として変更されません。 これにより、チームは目の前の作業に集中し、確実に成果物を出し切ることができます。

デイリースクラム(スクラムミーティング)

毎日決まった時間に短時間(15分程度)で行う進捗確認です。以下の3点を中心に共有します。

  1. 昨日(前回)は何をしたか?
  2. 今日(次回まで)は何をするか?
  3. 現在、直面している障害や困りごとはあるか?

試験対策の重要ポイント:3つの役割

スクラムには重要な3つのロールがあります。
プロダクトオーナー:製品価値の最大化とバックログの優先順位決定に責任を持つ。
スクラムマスター:スクラムの理解を助け、チーム内の障害を取り除く支援者。
開発者(開発チーム):実際に作業を行い、スプリント終了時にインクリメントを生み出す人々。

※プロダクトバックログは「夢や希望が詰まった大きなリスト」、スプリントバックログは「今週、確実に終わらせる戦術リスト」というイメージで使い分けを理解しましょう。


【情報セキュリティ】組織の壁を守り抜く!「境界型防衛」|情報処理問題1000本ノック

かつての企業ネットワークは、オフィスの「内側」と「外側」を明確に分けることで安全を保ってきました。城壁を作って守るような、この伝統的な防御モデルを攻略しましょう。

1. 問題:境界をベースとした防御モデル

【 問題 】 組織のネットワークを「信頼できる内部領域」と「信頼できない外部領域」に分け、その境界線にファイアウォールなどを設置して外部からの攻撃を防ぐという、従来のセキュリティの考え方を何と呼ぶでしょうか?

ア、境界型防衛(境界防御)   イ、ゼロトラスト   ウ、サンドボックス   エ、デマンドサイドプラットフォーム

2. 正解:ネットワークセキュリティに関する正解

正解: ア、境界型防衛(境界防御)

3. 解説:社内は「善」、社外は「悪」という前提

境界型防衛は、信頼の有無を「場所(ネットワークの位置)」で判断する手法です。社内ネットワークを安全な聖域とみなします。

【図解:境界型防衛のイメージ】

■ 城壁としての対策
・境界線にファイアウォール(FW)や侵入防止システム(IPS)を設置。
・外部からの不正アクセスやウイルスを水際でブロックします。

■ メリット
・守るべき範囲が明確で、運用がシンプル。

■ 課題と限界
・一度内部へ侵入されると、攻撃者が自由に動き回る(ラテラルムーブメント)のを防ぎにくい。
・テレワークやクラウド利用が増え、「内側」と「外側」の区別が難しくなっている。
[ 次世代の考え方 ]
ゼロトラスト (Zero Trust):境界型防衛とは対照的に、「内側も外側も全て信用しない」ことを前提としたモデル。アクセスごとに認証・認可を行い、リソース単位で防御を固めます。

1. 理解のコツ: 「お城の堀と城壁」を想像してください。門(ゲートウェイ)を通った人は身内として安心、外の人は敵として警戒、という非常に分かりやすい構造です。
2. 試験対策の視点: 「信頼できる領域」と「信頼できない領域」という対比があれば、この境界型防衛を指します。最近は「なぜこれだけでは不十分なのか(理由:クラウド化、働き方の変化など)」という文脈で出題されることが多いです。


4. まとめ

「組織の内外を切り分け、その境界で守りを固める」。これが境界型防衛です。近年の高度な攻撃や働き方の多様化により限界も指摘されていますが、依然としてセキュリティの多層防御を構成する重要な要素の一つです。


【ネットワーク】波を細かく切り分ける!「標本化(サンプリング)」|情報処理問題1000本ノック

音や光などの連続的なアナログ信号を、コンピュータが扱えるデジタルデータに変換するプロセスのうち、最も基礎となる「時間的な切り出し」の工程を攻略しましょう。

1. 問題:アナログ信号の読み取り工程

【 問題 】 アナログ信号をデジタル信号に変換する過程において、連続するアナログ信号の値を、一定の時間間隔ごとに計測して読み取る操作を何と呼ぶでしょうか?

ア、標本化(サンプリング)   イ、量子化   ウ、A/D変換   エ、D/A変換

2. 正解:信号処理に関する正解

正解: ア、標本化(サンプリング / Sampling)

3. 解説:波を「点」の集まりにする

アナログ信号(波形)をデジタル化する「PCM方式」の最初のステップです。時間を細かく区切り、その瞬間の電圧などを抽出する作業です。

【図解:A/D変換の3ステップ】

1. 標本化(サンプリング) ★今回の正解
・横軸(時間軸)の処理。一定間隔で波の「高さ」を測ります。

2. 量子化
・縦軸(数値)の処理。測った高さを、最も近い段階的な整数値に当てはめます。

3. 符号化
・得られた数値を「0」と「1」の2進数(デジタルデータ)に変換します。
[ 関連用語の整理 ]
サンプリング周波数:1秒間に何回標本化を行うか。単位はHz(ヘルツ)。
A/D変換 (Analog to Digital):標本化・量子化・符号化を含めた変換プロセス全体の総称。
D/A変換 (Digital to Analog):デジタルデータを再びアナログの波形に戻すこと。

1. 理解のコツ: パラパラ漫画や映画のフィルムをイメージしてください。連続した動きを1秒間に何枚もの静止画として切り出す作業が「標本化」にあたります。枚数が多いほど(サンプリング周波数が高いほど)、元の滑らかな動きを再現できます。
2. 試験対策の視点: 「一定の時間間隔」という言葉があれば標本化、「段階的な値に近似」という言葉があれば量子化、と区別して覚えましょう。また、標本化定理(サンプリング定理)などの応用問題への入り口となる重要用語です。


4. まとめ

「連続的な波形を、時間ごとに計測して切り出す」。これが標本化(サンプリング)です。デジタル通信やマルチメディア処理における不可欠な基礎技術であることを押さえておきましょう。

【情報セキュリティ】鍵の受け渡し問題を解決!「公開鍵暗号方式」|情報処理問題1000本ノック

ネットワークを介して安全にデータを送るためには、暗号化が欠かせません。数ある暗号方式の中でも、一対の異なる鍵を使う「公開鍵暗号方式」の代表格をマスターしましょう。

1. 問題:暗号方式の分類

【 問題 】 次のうち、公開鍵暗号方式に分類されるアルゴリズムはどれでしょうか?

ア、DES   イ、AES   ウ、RC4   エ、RSA

2. 正解:暗号アルゴリズムに関する正解

正解: エ、RSA

3. 解説:ペアの鍵が織りなす高度な仕組み

公開鍵暗号方式は、データの暗号化と復号に「対(ペア)となる異なる鍵」を使用するのが最大の特徴です。

【図解:公開鍵暗号の仕組みとRSA】

■ RSAとは
・開発者3人の頭文字をとった名称です。非常に大きな数の「素因数分解」が困難であることを安全性の根拠にしています。

■ 2つの鍵の役割
公開鍵:誰にでも渡して良い鍵。受信者が送信者に渡し、データの「暗号化」に使われます。
秘密鍵:受信者本人だけが持つ鍵。暗号化されたデータの「復号」に使われます。

■ メリット
・共通鍵暗号のように「鍵をどうやって安全に相手に届けるか」という悩みが解消されます。
[ 選択肢(共通鍵暗号)の整理 ]
DES (Data Encryption Standard):かつての標準。現在は安全性が低下し、推奨されません。
AES (Advanced Encryption Standard):現在の世界標準。非常に高速で強固です。
RC4:かつて無線LAN(WEP)などで使われたストリーム暗号方式です。

1. 理解のコツ: 公開鍵は「開いた状態の南京錠」を配り歩くようなものです。誰でも箱に荷物を入れて鍵をかける(暗号化)ことはできますが、それを開けられるのは鍵(秘密鍵)を持っている自分だけ、と考えるとイメージしやすくなります。
2. 試験対策の視点: 「公開鍵=RSA、楕円曲線暗号」とセットで覚えましょう。また、公開鍵暗号は計算処理が重いため、実際の通信では「共通鍵を安全に送るため」だけに公開鍵を使い、その後のデータ本体は共通鍵で送る「ハイブリッド暗号方式」が一般的です。


4. まとめ

「素因数分解の難しさを利用した、ペアの鍵による暗号方式」。これがRSA(公開鍵暗号方式)です。デジタル署名などにも応用される、セキュリティの最重要トピックであることを押さえておきましょう。


【情報セキュリティ】データの繋ぎ方で強固にする!「ブロック暗号のモード」|情報処理問題1000本ノック

AESなどのブロック暗号は、一度に処理できるデータ長(ブロック)が決まっています。長いメッセージを暗号化する際、どのようにブロックを繋いで処理していくかという「アルゴリズムの運用形態」を攻略しましょう。

■ 代表的な5つのブロック暗号モード

同じ鍵を使っても、モードによって暗号文の性質や安全性が大きく変わります。

モード特徴とセキュリティ上の性質
ECB
(Electronic Codebook)
各ブロックを独立して暗号化する最も単純な方式。
【弱点】 同じ平文ブロックからは同じ暗号文が出るため、パターンを推測されやすく現在は推奨されません。
CBC
(Cipher Block Chaining)
前のブロックの暗号文と、次の平文をXOR(排他的論理和)してから暗号化する。現在の主流の一つ。
・最初のブロックにはIV(初期化ベクトル)を使用します。
CFB
(Cipher Feedback)
前の暗号文ブロックを暗号アルゴリズムへの入力に戻す方式。
・ブロック暗号をストリーム暗号(逐次処理)のように利用できます。
OFB
(Output Feedback)
暗号アルゴリズムの出力を、次の入力にフィードバックする方式。
・伝送路でビットエラーが発生しても、そのエラーが後続に波及しない特徴があります。
CTR
(Counter)
ブロックごとにカウントアップする数値を暗号化し、平文とXORをとる方式。
【利点】 各ブロックを独立して計算できるため、並列処理が可能で非常に高速です。

エンジニアが押さえるべき重要ポイント

  • IV(初期化ベクトル)の役割:同じ鍵・同じ平文でも、毎回異なる暗号文を生成するために不可欠な「使い捨ての乱数」です(ECB以外で使用)。
  • パディング:データの末尾がブロック長に足りない場合、特定のルールでデータを埋める作業が必要です(CTRなど一部モードでは不要)。
  • 認証付き暗号 (AEAD):最近では暗号化と同時に改ざん検知も行うGCM(CTRモードの発展形)が広く普及しています。

※ECBは「そのまま並べるだけ」、CBCは「前の結果を次に繋ぐ数珠つなぎ」、CTRは「番号を振って並列処理」というイメージで整理すると、それぞれの特性(特に速度と安全性)の違いが見えてきます。


【知識:ネットワーク】波を数字に変える!「パルス符号変調(PCM)」|情報処理問題1000本ノック

私たちが普段使っている電話や音楽ストリーミングは、アナログ信号(音の波)をデジタル信号(0と1)に変換することで実現されています。その中核技術であるPCMの3ステップを攻略しましょう。

■ PCM(Pulse Code Modulation)の変換プロセス

アナログ波形をデジタル化する際には、以下の順序で処理が行われます。

1. 標本化(サンプリング / Sampling)

連続的なアナログ波形を、一定の時間間隔ごとに区切って、その時点の値を計測します。
※どれだけ細かく区切るかを「サンプリング周波数」と呼びます。

2. 量子化(Quantization)

標本化で得られた連続的な値を、あらかじめ決めた段階的な整数値(近似値)に当てはめます。
※この段階を細かくするほど、元の波形に近い「高音質」になりますが、データ量も増えます。

3. 符号化(コーディング / Coding)

量子化された数値を、「0」と「1」のバイナリ(2進数)データに変換します。これにより、コンピュータでの処理や通信路での伝送が可能になります。

■ 効率的な変調方式:デルタ変調

通常のPCMは各時点の値をそのまま送りますが、データ量を節約するための応用方式が存在します。

【デルタ変調(Delta Modulation)の特徴】

■ 仕組み
・値をそのまま送るのではなく、「一つ前の値と比較して、大きければ1、小さければ0」という「差分(変化)」のみを記録・伝送する方式です。

■ メリット
・各サンプルを1ビットで表現できるため、構成がシンプルになり、データ量を大幅に抑えることができます。

試験対策の重要ポイント:標本化定理

元の波形を正しく復元するためには、「再現したい最高周波数の2倍以上の速さ」でサンプリングする必要があります。例えば、人間の耳に聞こえる上限の20kHzを再現するために、CDは44.1kHzでサンプリングされています。

※PCMは「映画のフィルム(一瞬を切り取って繋げる)」、デルタ変調は「階段を1段上がるか下がるかだけを指示する」イメージで捉えると、仕組みの違いが理解しやすくなります。

【システム開発技術】二人一組で品質を高める!「ペアプログラミング」|情報処理問題1000本ノック

アジャイル開発(特にXP:エクストリームプログラミング)で推奨される手法の一つに、二人で1つのコードを書くスタイルがあります。その役割分担やメリットを攻略しましょう。

1. 問題:共同開発の手法

【 問題 】 システム開発において、2人のプログラマが1台のコンピュータを共有し、1人がコードを書き、もう1人がそれをチェックしながら共同で1つのプログラムを開発する手法はどれでしょうか?

ア、ペアプログラミング   イ、デュアルプログラミング   ウ、コード共有   エ、エクストリームプログラミング

2. 正解:開発手法に関する正解

正解: ア、ペアプログラミング

3. 解説:ドライバとナビゲータの連携

ペアプログラミング(Pair Programming)は、役割を分担することで、コードの品質向上と知識共有を同時に行う手法です。

【図解:ペアプログラミングの役割】

■ ドライバ (Driver)
・実際にキーボードを叩き、コードを入力する人。
・詳細な実装(タイピングや構文)に集中します。

■ ナビゲータ (Navigator)
・横でコードを読み、間違いを指摘したり、全体の設計方針を確認したりする人。
・一歩引いた視点で、次に書くべき内容や問題を考えます。

※定期的な交代
・役割は頻繁に入れ替えることで、集中力を維持し、偏りを防ぎます。
[ 主なメリット ]
品質向上:常に「リアルタイムのコードレビュー」が行われているため、バグが混入しにくい。
教育・共有:経験豊富な人と新人が組むことで、技術継承がスムーズに進む。
集中力:一人で悩む時間が減り、作業のリズムが生まれる。

1. 理解のコツ: 自動車のラリーをイメージしてください。運転する人(ドライバ)と、地図を見て指示を出す人(ナビゲータ)が協力してゴールを目指すのが、ペアプログラミングのスタイルです。
2. 試験対策の視点: 「2人1組」「1台のPC」「ドライバとナビゲータ」という単語があれば、迷わずペアプログラミングを選びましょう。また、選択肢(エ)の「エクストリームプログラミング(XP)」は、このペアプログラミングを含む「12のプラクティス」からなる開発フレームワーク全体の名前です。


4. まとめ

「二人で1つの画面を見て、協力して開発する」。これがペアプログラミングです。コミュニケーションコストはかかりますが、結果として手戻りが減り、チーム全体の技術力が向上する非常に強力なアプローチです。