無題の備忘録

IT技術について調べたことや学んだこと、試したこと記録するブログです。Erlang、ネットワーク、 セキュリティ、Linux関係のものが多いです。

情報セキュリティスペシャリスト試験に合格したので、その時の勉強方法

勉強前のレベル

 Webアプリケーションを開発する場合は、OSコマンドインジェクション、SQLインジェクションJavaScriptのエスケープ、htmlのエスケープ対応が必要だということを知っているくらいです。

試験勉強の基本的な方針

試験だけの勉強ではない、もしくは試験勉強が目的ではない

 試験だけの勉強になると面白くないので、学んだことを実際に手を動かして実験します。 セキュリティ関係の実験はなかなかおもしろいのですし、実際に知識を定着させて使えるようになることが目的です。 試験はあくまで学習した内容の評価基準のひとつで、単なる通過点です。実際に使える知識にすることを目標にします。

6ヶ月の計

 6ヶ月間を計画して、余裕を持って受験します。 情報処理技術者試験は春と秋にやっているので、例えば、春試験が終わったらすぐに秋試験への対策を開始するといったスケジュール感です。 6ヶ月間あれば、十分に余裕があるので多少の予定変更は吸収できます。 ちなみに、情報セキュリティスペシャリスト試験は、春・秋の両方で試験が受けられるので、スケジュールが立てやすいです。他の試験は1年に1回です。

継続的にする、習慣化する

 毎週1日は試験勉強をします。リズムを取ります。学習する週やしない週をなど、可能な限りムラをつくらないようにします。 学習をしない週があれば、どうせリカバリできないので無理に次の週に頑張らずに、スケジュールを立て直します。 スケジュールは実現可能な予定に変更して管理するものです。実現できないような予定を立てても仕方ないので、そういうことはしません。

試験本番を意識する

 どうせなので、1度で試験を合格できるようにします。 試験を何度も受けるのは金銭的にも時間的にも、もったいないです。 試験は1回5700円(税込み)します。2回受けたら1万円を超えます。1万円あれば、他に何かできます。 1回目不合格になって、2回目の試験勉強の時間を、実機を使って手を動かして試す時間に割り当てた方が良いです。 1回で合格する強い思いを持ちます。同じ試験を2度も受けたくありません。

 過去問はダウンロードできるので、印刷します。 印刷した試験問題を使って、実際の時間で問題を解きます。 これでかなり試験当日のことがわかります。 時間がどれくらい余るのか、見直しする余裕があるか、選択問題で自分が解きやすい問題をどのくらい吟味できそうか。 また、実際に筆記することも重要です。普段はキーボードを打っているので、筆記の感覚を取り戻す必要があります。 集中力がどれくらい長続きするかなども意識します。 このような観点で試験問題をとき、当日の試験にベストになるように時間配分と気持ちを調整します。 具体的には、試験当日は次のような試験時間です。

午前Ⅰ 午前Ⅱ 午後Ⅰ 午後Ⅱ
試験時間 9:30~10:20 10:50~11:30 12:30~14:00 14:30~16:30
(分) (50分) (40分) (90分) (120分)
出題形式 多肢選択式(四肢択一) 多肢選択式(四肢択一) 記述式 記述式
出題数 出題数:30問 出題数:25問 出題数:3問 出題数:2問
解答数 解答数:30問 解答数:25問 解答数:2問 解答数:1問

試験日までの流れ

 試験までの流れは次の4つのタスクを自分の好きな分量で行えばよいかと思います。

予定タスク

 2種類あります。 最初の全体スケジュールと途中のリスケジュールです。

 全体スケジュールは、最初に全体像を把握するために、勉強するべき項目を洗い出して、試験までの予定を立てます。 この全体像を把握することは非常に重要です。この作業でおおよそどのような項目があるのかを知ることができます。 この時点でおおよその項目を知ることで、実際に学習したときに、理解度が高まるように思います。 本来なら試験日までの2/3〜4/5の期間で学習タスク(訓練タスク)が終わるように予定が立てられると良いと思います。 学習タスク(訓練タスク)の合間に試験タスクを組み込みます。このとき日々の生活リズムを反映することがポイントです。 実際の生活と乖離した努力目標のようなスケジュールは、苦しいばかりであまり役に立ちません。実現可能な予定にします。 こうしてできたスケジュールに沿って、勉強するというよりは、生活をするという意識で臨みます。

 リスケジュールは、気が乗らないときや風邪を引いて、学習できなかった場合に、予定を変更する作業をします。 気が乗らない場合は勉強をあえてしないというのもありです。そうすることで心に余裕が生まれます。結果的に、勉強しないことが少なくなった気がします。 やらなくてもいいけど、予定になっているし、やっとくか、って感じです。 リスケジュールのやり方は、単に残りの全体スケジュールを遅れた分だけ後ろにずらします。そのための6ヶ月間の勉強期間です。 無理をせず、ずらしてしまいます。遅れを取り戻すことは、ほとんどの場合できません。 ただし、連続して2, 3回スケジュールを遅らせるようなことがあれば、スケジュールを立てた時に見落としていたことがあるので、それを含めて予定を見直します。 見直すときは、残りの期間と残りの学習タスク(訓練タスク)・試験タスクの量で決めます。基本的には、タスク量が平均的になるように再分割して、残りの期間に割り当てます。

試験タスク

 試験問題を印刷し、通して1回分の試験を実施します。 現在の試験制度になってから(たしか平成21年度から)の試験をすべてやるように予定に組み込みます。 試験を解いて、すぐに答え合わせをします。わからない単語や問題があればすぐに調べて、メモを作成します。 このメモは、試験が近づいてきた時に、自分の弱い点を見直すときに使います。

学習タスク

 理論を学ぶタスクです。全体スケジュールを立てるときに、勉強するべき項目について、洗い出しています。 この学習項目について、書籍やネットの情報を元に学びます。 私は、学習する本の内容を実際に手を使って試したり、メモを取って学びました。 私は、基本的にはやりっぱなしでしたが、復習するとより良いと思います。 ここでやりっぱなしと言いましたが、学習した項目についての理解度の評価は、試験を解くことで代用できています。 また、試験タスクでわからない点や間違った点は調べたりして復習します。 習熟度の低い学習項目はこの学習タスクとして実施します。

訓練タスク

 実践するタスクです。試験問題を解いて、調べるだけでは、物足りません。実際に、PC上でどのように実現するのかなどを調べて試します。 最終的な目標としては、アプリケーションを作成したり、システムを設計する時に使うことです。 実際にPC上で学んだ知識を再現したり、試すして、試験で得た知識を自分の血肉とすることです。 時間がかかりますが、実際に学んだ知識の効果を確認することができて、面白いですし、理解度がぐっとあがります。 このタスクをどの程度全体スケジュールに含めるかは、どの程度学習項目の内容を知っているかによります。 よく知っている学習項目であれば、学習タスクの量を減らして、その分を訓練タスクとして実施すればより良いです。

ポイントをまとめると

  • 6ヶ月間の予定をたてる
  • 毎週1日は勉強する
  • さぼったら単にずらす
  • 本番さながらで試験問題を解く
  • 可能な限り手を動かす

全体的なやり方としてはこのように進めました。参考にしてみてください。