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

【開発技術】単語を並べて構造を作る!「構文解析」|情報処理問題1000本ノック

切り分けられた単語(トークン)が、プログラミング言語のルール(文法)に則っているかをチェックし、プログラムの構造を解析する重要な工程を攻略しましょう。

1. 問題:プログラムの構造解析

【 問題 】 コンパイラの処理において、字句解析によって分割されたトークンの並びが、その言語の文法規則に適合しているかを判定し、「構文木(抽象構文木)」と呼ばれるツリー構造を生成する工程を何と呼ぶでしょうか?

ア、字句解析   イ、構文解析   ウ、意味解析   エ、最適化

2. 正解:言語処理プロセスに関する正解

正解: イ、構文解析(こうぶんかいせき)

※英語では「Syntax Analysis」や「Parsing(パース)」と呼びます。

3. 解説:文法チェックと「木」の構築

字句解析が「単語の切り出し」だったのに対し、構文解析は「文章の組み立て」を担当します。

【図解:構文解析の役割】

■ 処理内容
・トークンの並びが正しいか(例:カッコが閉じているか、演算子の位置は正しいか)を確認します。
・プログラムの論理的な階層構造を「構文木」として表現します。

■ 構文木のイメージ (a + b * c)
   +
  / \
 a   *
    / \
   b   c
(掛け算を先に計算するような木構造になります)
[ 関連用語:バッカス・ナウア記法 (BNF) ]
★ 構文解析の基準となる「文法の定義」を記述するための記法です。情報処理試験では、このBNF記法に基づいて正誤を判定させる問題もセットでよく登場します。

1. 理解のコツ: 英語の授業で行う「S(主語) V(動詞) O(目的語)」の判別と同じです。「単語は合っているか?」を見るのが字句解析、「文法(並び順)は合っているか?」を見るのが構文解析です。ここでミスが見つかると「Syntax Error(構文エラー)」が発生します。
2. 試験対策の視点: 「トークンから構文木を作る」「文法規則に適合するか」というフレーズがあれば構文解析です。また、次のステップである「意味解析(型チェックなど)」との境界線を意識しておきましょう。


4. まとめ

「トークンから構文木を作る」。これが構文解析です。バラバラだった単語に構造を与え、コンピュータが計算できる「論理の形」へと整える、コンパイラの知能とも言える工程です。



PR

【開発技術】ソースコードを単語に切り分ける!「字句解析」|情報処理問題1000本ノック

人間が書いたプログラムをコンピュータが理解できるように翻訳する「コンパイラ」。その最初の工程であり、文字列を意味のある最小単位に分解する重要なステップを攻略しましょう。

1. 問題:コンパイラの処理工程

【 問題 】 コンパイラがソースコードを処理する過程において、プログラムの文字列を走査し、キーワード、識別子、定数、演算子といった意味を持つ最小の単位(トークン)に分割する工程を何と呼ぶでしょうか?

ア、字句解析   イ、構文解析   ウ、意味解析   エ、コード生成

2. 正解:言語処理プロセスに関する正解

正解: ア、字句解析(じくかいせき)

※英語では「Lexical Analysis」と呼びます。

3. 解説:翻訳の最初の「下ごしらえ」

コンパイラは、いきなり全体を理解するのではなく、段階を踏んで翻訳を進めます。

【図解:コンパイラの主な翻訳フロー】

① 字句解析 ★今回の正解
・文字列を「トークン(字句)」に切り分けます。
・例:total = a + 10; → [total] [=] [a] [+] [10] [;]

② 構文解析
・切り分けられたトークンの並びが、文法通りかチェックします。
・「構文木(抽象構文木)」と呼ばれるツリー構造を作ります。

③ 意味解析
・「変数aは宣言されているか?」「型は合っているか?」など、意味的な正しさをチェックします。

④ 最適化・コード生成
・より速く動くように効率化し、最終的な機械語(オブジェクトコード)を出力します。
[ 関連用語:トークン ]
★ プログラムにおける「単語」のようなものです。字句解析では、スペースやコメントを取り除き、このトークンの列へと変換します。

1. 理解のコツ: 英文を読むときに、まず「英単語の区切り」を見つけるのが字句解析、その単語の並びから「これはS+V+Oの文法だ」と判断するのが構文解析です。まずは単語に分けないと、文法チェックもできません。
2. 試験対策の視点: 「トークンに分割」「最小単位」というキーワードがあれば字句解析です。また、これら一連の工程(字句→構文→意味→最適化→生成)の順番を問う問題も非常に多いので、セットで流れを覚えてしまいましょう。


4. まとめ

「ソースコードをトークンに分割する」。これが字句解析です。どんなに複雑なシステムも、まずはこの地道な「単語の切り出し」からすべてが始まります。

【システム開発技術】二人一組で品質を高める!「ペアプログラミング」|情報処理問題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つの画面を見て、協力して開発する」。これがペアプログラミングです。コミュニケーションコストはかかりますが、結果として手戻りが減り、チーム全体の技術力が向上する非常に強力なアプローチです。



【システム開発技術】最新ガイド対応!「デイリースクラム」の本質|情報処理問題1000本ノック


スクラムガイドの2020年改訂により、デイリースクラムは「報告の場」から、より柔軟な「再計画の場」へと定義が洗練されました。最新の試験傾向に合わせた内容を攻略しましょう。

1. 問題:最新のデイリースクラムの運用

【 問題 】 最新のスクラムガイドにおける「デイリースクラム」の説明として、最も適切なものはどれでしょうか?

ア、開発者がスプリントゴールへの進捗を検査し、次の24時間の計画を調整するための場である。
イ、以前から使われてきた「3つの質問(昨日何をしたか等)」に回答することが、現在も義務付けられている。
ウ、スクラムマスターが進行役となり、各メンバーの進捗を管理・評価するために開催する。
エ、15分の制限時間を超えても、すべての技術的な課題が解決するまで議論を継続しなければならない。

2. 正解:最新スクラムの実務に関する正解

正解: ア、開発者がスプリントゴールへの進捗を検査し、次の24時間の計画を調整するための場である。

3. 解説:形式よりも「ゴールへの集中」

最新の定義では、特定の「やり方(手法)」に縛られず、チームが目標を達成するために最も効果的な方法で同期することが求められています。

【図解:最新版デイリースクラムのポイント】

■ 目的は「検査と適応」
・単なる状況報告ではなく、ゴール達成の可能性を高めるための「作戦会議」です。

■ 手法は「自由」
・かつての「3つの質問」は例示に留まり、現在はゴールに集中できるならどんな形式でもOKです。

■ 主役は「開発者」
・自分たちの計画を自分たちで調整します。管理者が指示を出す場ではありません。
[ アップデートされたルール ]
タイムボックス:15分以内。これは以前と変わらず、一貫性を保つための鉄則です。
場所と時間:複雑さを避けるため、毎日同じ時間、同じ場所で行うことが推奨されます。
技術議論の分離:詳細な議論が必要な場合は、デイリースクラム直後に別途時間を設けます。

1. 理解のコツ: 「3つの質問」が選択肢に出た際、「義務」や「必須」と書かれていたら最新ガイドでは誤りとなる点に注意しましょう。現在のキーワードは「ゴールへの進捗」「再計画」です。
2. 試験対策の視点: スクラムのイベント(プランニング、レビュー、レトロスペクティブ)の中で、唯一「毎日」行われるのがこれです。短いサイクルで軌道修正を行うことが、アジャイルの機敏性の源泉であることを意識してください。


4. まとめ

「15分間で、今日のゴールへの道のりを確認し、障害を取り除く」。これが最新のデイリースクラムです。形式的な報告に終始せず、常に「目標達成のために今何ができるか」を問い続ける場であることを押さえておきましょう!


【システム開発技術】価値を最大化するリスト!「プロダクトバックログ」|情報処理問題1000本ノック


アジャイル開発(スクラム)において、プロジェクトの「羅針盤」となるのがプロダクトバックログです。何を、どの順番で作るべきかを整理するこの仕組みを攻略しましょう。

1. 問題:プロダクトバックログの性質

【 問題 】 アジャイル開発において、プロダクトに必要なすべての機能、改善、修正などを優先順位順に並べた一覧を何と呼ぶでしょうか? また、複数チームで開発を行う際の適切な運用はどれでしょうか?

ア、スプリントバックログ:チームごとに完全に独立した内容で作成する
イ、プロダクトバックログ:各チームが独立して動けるよう、項目を適切に分割・整理する
ウ、WBS:すべての作業を階層構造で固定し、変更を認めないようにする
エ、バーンダウンチャート:作業の進捗を管理し、残りのタスクを全チームで共有する

2. 正解:アジャイル開発に関する正解

正解: イ、プロダクトバックログ

3. 解説:製品の価値を決める「単一のソース」

プロダクトバックログは、顧客に提供する価値を最大化するために、プロダクトオーナーが責任を持って管理する「生きているリスト」です。

【図解:バックログ運用のポイント】

単一のリスト
・1つの製品に対してバックログは「1つ」。全員が同じ優先順位を見て動きます。

独立性の確保(INVEST原則)
・各チームが他チームの作業待ちをせず、独立して価値を提供できるように項目を分割します。

リファインメント(精査)
・状況の変化に合わせて、常に項目の追加、削除、優先順位の入れ替えを行います。
[ 関連用語の整理 ]
プロダクトオーナー:バックログの優先順位を決定し、製品の価値を最大化させる責任者。
スプリントバックログ:今回のスプリント(短い開発期間)で取り組む分だけを抽出したもの。
ユーザーストーリー:ユーザーの視点で「誰が・何を・なぜしたいか」を記述したバックログの形式。

1. 理解のコツ: プロダクトバックログは「やりたいことのウィッシュリスト」であり、上にあるほど具体的で、すぐに着手できる状態になっています。複数チームで動く場合は、チーム同士が「お互いの足を踏まない(依存しない)」ように細かく、かつ独立した単位に切り分けることが成功の鍵です。
2. 試験対策の視点: 「優先順位」「単一のリスト」「独立した分割」というキーワードが出たら、プロダクトバックログの適切な運用を指しています。スプリントバックログが「チームのもの」であるのに対し、プロダクトバックログは「製品全体のもの」という違いを明確にしましょう。


4. まとめ

「やらなければならないすべての項目を、独立性を保ちながら優先順位付けしたリスト」。これがプロダクトバックログです。変化に柔軟に対応しながら、チームが迷わず開発に集中するための重要なツールであることを押さえておきましょう!


【システム開発技術】データの流れでプログラムを分ける!「STS法」|情報処理問題1000本ノック


大規模なプログラムを効率よく開発するためには、適切に「分割」する必要があります。データの入り口から出口までの「流れ」に着目した設計手法を攻略しましょう。

1. 問題:プログラムの分割手法

【 問題 】 データが「入力」「処理」「出力」という一連の流れに沿って処理されていくことに着目して、プログラムを分割する構造化設計手法はどれでしょうか?

ア、機能分割   イ、STS法   ウ、ジャクソン法   エ、ワーニエ法

2. 正解:構造化設計に関する正解

正解: イ、STS法

3. 解説:データの「源泉」から「吸収」まで

STS法は、プログラムをデータの流れに基づいて3つのセグメント(部分)に分割する手法です。名称は、それぞれの役割の頭文字を取っています。

【図解:STS法の3セグメント】

S:Source(入力流/源泉)
・外部からデータを取り込み、加工しやすい形に整える部分。

T:Transform(変換中心)
・入力されたデータを、出力用のデータへと変換する主要な計算・ロジック部分。

S:Sink(出力流/吸収)
・変換されたデータを、帳票や画面、ファイルなどの外部へ出力する部分。
[ 他の設計手法との違い ]
ジャクソン法・ワーニエ法:データの「流れ」ではなく、入出力データの「構造(形)」に着目してプログラムを設計します。
TR法(トランザクション分割):入力データの「種類」に応じて、処理を振り分ける構造(分岐)に着目します。

1. 理解のコツ: 「入力(S)→ 処理(T)→ 出力(S)」という川の流れのような一本道をイメージしてください。この流れの「変わり目」を見つけ出し、そこを境界線としてモジュール(部品)を分割するのがSTS法です。
2. 試験対策の視点: 問題文に「入力・処理・出力の一連の流れ」というフレーズがあれば、迷わずSTS法を選びましょう。また、これらは「構造化設計」という大きな枠組みの中の手法であることも重要です。


4. まとめ

「データの通り道(ストリーム)に着目して分割する」。これがSTS法です。シンプルで直感的なため、多くのシステム設計の基礎となっている考え方であることを押さえておきましょう!

【システム開発技術】中身を見るか、見ないか?ホワイトボックステストの手法|情報処理問題1000本ノック


プログラムの内部構造(ロジック)に着目して、すべてのルートが正しく実行されるかを確認する「ホワイトボックステスト」。代表的な手法と、混同しやすい手法を整理しましょう。

1. 問題:ホワイトボックステストの手法ではないもの

【 問題 】 次に挙げるテスト手法の中で、ホワイトボックステストの手法に該当しないものはどれでしょうか?

① 命令網羅   ② 判定条件網羅   ③ 同値分割   ④ 条件網羅

2. 正解:テスト手法の分類に関する正解

正解: ③ 同値分割

3. 解説:内部ロジックの「網羅性」がカギ

ホワイトボックステストは、プログラムのソースコード(内部構造)が「どう書かれているか」に基づいてテストケースを作成します。一方、正解の「同値分割」は、内部構造に関わらず「入力と出力」の関係に着目するブラックボックステストの代表的な手法です。

【図解:テスト手法の2大分類】

ホワイトボックステスト(中身を見る)
・プログラムの分岐やループを網羅するのが目的。
・手法:命令網羅判定条件(分岐)網羅条件網羅、複数条件網羅など。

ブラックボックステスト(中身を見ない)
・機能仕様通りに動くかを確認するのが目的。
・手法:同値分割境界値分析、意思決定テーブル、原因結果グラフなど。
[ ホワイトボックステストの網羅基準(例) ]
命令網羅:すべての命令を少なくとも1回は実行する。
判定条件網羅:すべての分岐(Yes/No)を少なくとも1回は実行する。
条件網羅:分岐内の個々の条件式が真・偽の両方を取るように実行する。

1. 理解のコツ: 「〇〇網羅」という名前がついていたら、それはプログラムの中身を隅々までチェックする「ホワイトボックステスト」だと判断してほぼ間違いありません。対して、データをグループ分けして代表値を調べるのが「同値分割」です。
2. 試験対策の視点: 「命令網羅 < 判定条件網羅 < 複数条件網羅」の順でテストの強度が上がる(網羅性が高まる)という関係性もよく問われます。まずは「網羅」はホワイト、「分割・分析」はブラック、という棲み分けを完璧にしましょう。


4. まとめ

「プログラムのロジックを追いかけて、すべての道を通る」。これがホワイトボックステストの本質です。内部構造を知っている開発者が行う単体テストなどで主に使用される手法であることを押さえておきましょう!