基本情報技術者(午前) / ITパスポートについて

# はじめに

こんにちは！ばーんです。

今回は基本情報技術者試験(午前) / ITパスポート試験について書いていきます。

「公式サイト」[ITパス](https://www3.jitec.ipa.go.jp/JitesCbt/index.html) / [基本情報](https://www.jitec.ipa.go.jp/1_11seido/fe.html)

自分の現況を補足しておくと、2020年4月にITパス取得、2020年6月に基本情報(午前)の事前試験合格しました。
業界未経験の自分がどのようにして学習したのかという記録と、自分の振り返りとして記事を書いています。

※対策で資格をとることがメインではなくCS(コンピュータサイエンス)の理解をメインに進めていきます
※基本情報は「出るとこだけ！基本情報技術者テキスト＆問題集2020年版」を元に進めていきます

## 全体像。とりあえず受けてみた所感

### ITパスを受ける前に

試験に申し込む前に、まずは過去問やると良いと思います。**無料です！**(https://www.itpassportsiken.com/ipkakomon.php)

というのも、ITパスは試験の傾向として「PCの知識」と同じぐらい「社会人としての基礎学力」を求められているように感じます。
例えば、SWOT分析・OJT・PL・BS・CEO・PDCAなど試験受ける前から知っていた言葉が多数出てきました。
なので自分は、一切前情報なく過去問100問解いたら正解率60%越えてました(試験の合格は60%以上で合格)

試験が4択で類似した答えから選ぶのではなく、全く違うことを説明している答えから選ぶので、単語のニュアンスを掴んでおけば自然と2択ぐらいには絞れます。

※逆に学生の方は難しく感じる部分があるかもしれません

試験受けようかな？と悩まれている方は
1. とりあえず過去問やってみる
2. 内容全然わからなかったToT　という人は学習しながら受けていいと思います
3. 7〜8割理解してたし、別に必要ないかな…　という人は受けなくてもいいと思います。

### ITパスと基本情報午前の範囲は被っている

やっていると気付きますが体感4割程度は同じことをやってます。
なので基本情報(午前)の学習とITパスは同時期にやるととても効率良いです＾＾

基本情報不安だな…と思う方は敷居も低いのでITパス受けていいと思います。
単純に自信つきますし、試験会場の場慣れにもなるので

### どちらの試験も過去問→書籍→過去問

自分はどちらの試験も両方この流れで進めました。
ポイントとしては**最初のうちは分からないところに時間をかけすぎないこと**(流石に全く調べたり考えずに次に行くのはダメですw)

恐らく未経験者の場合**分からない単語を調べたらさらに分からない単語が出てくる**
みたいなループに入ったり完全に理解できなくてフリーズしたりがあるので、時間とって無理なところは飛ばして次！

そこに留まるとモチベーションが下がりますし、先に進んでいくと過去にわからなかったことと繋がって理解できたり、時間が解決してくれたりするので。


## ITパスポート ポイント

ポイントは2つです。
**1. 知らない単語を見逃さない
2. 過去問をひたすらやる**

### 知らない単語を見逃さない

ディレクトリ、トランザクション、SCM…　なんじゃこれと思う単語が最初は出てくるかと思います。
大事なことは単語一つ一つを調べることです。意味はわからくてもいいです。そういうものでも大丈夫。
その知識が単発であることの方が少なく、基本的には地続きで繋がっているので続けていくうちに後から理解できることが多々あります。

特に大切なのがアルファベットの略語。これ必ず何の略語か調べてください。
例えば↑であげた「SCM」ですが自分は正確な内容はを覚えていません。しかし、

「Sはたしかサプライ(供給)でCは忘れた。Mは大体マネジメントだよなぁ…」
「これ確か物流に関することだったよなぁ…」

といった形で絞って選ぶことができます。このSCMを

>「生産・在庫・購買・販売・物流などのすべての情報をリアルタイムに交換・一元管理することによって生産から販売に至る一連の流れ全体の効率を大幅に向上させることを目指す経営手法。導入することで納期短縮や在庫削減といった効果が期待できる。」
(https://www.itpassportsiken.com/word/index_st.html#1 引用)

みたいな覚え方してたらキリがありません。パーツパーツを繰り返して覚えることで把握できるのでなるべく小さい単位で覚えていくと良いと思います。

自分がやっていたのはアルファベット1つ1つにイメージを持っておくことで、

- M　マネジメント
- S　セキュリティ / システム
- E　エンタープライズ / エンプロイー(従業員とか会社)　
- C　コーポレート / チーフ(チーフはCEO、CIOなど)
- T　トランスファー(変換みたいな意味)
- I　インフォメーション
- P　プロダクト(製品)

こんな形で把握していて、前後の文脈などから判断していました。
これは基本情報でも応用できるやり方なのでおすすめです。

### 過去問をひたすらやる

ITパスについてはひたすら過去問が良いと思います。
基本情報と違い殆ど計算問題などもなく暗記がメインの為。

基礎中の基礎なので分解して考えるとかえって時間がかかったりします。
(例) 1 + 1 = 2 を何故？と考えていくと果てしなく時間がかかるので

ひたすら早く周回することで、自分の中で単語に対するイメージみたいなものができて克服できると思います。
もちろん、「4択が正解してた！次！」ではなく1つ1つ解説と自身が描いていたイメージとのすり合わせは必須です。

細かい解説は基本情報のところと被っているので下記をご確認下さい。

## 基本情報(午前) 

### 基本情報のポイント

大枠で伝えると、基本情報はITパスに計算問題と論理的に考える問題が追加されています。

ITパスと違い**過去問に割く時間を減らし一問、一単語への理解を深める時間を増やした方がいいです。**
本質的に理解しているか？が問われており形だけの暗記だと膨大な量になってしまうので。
(公式やパターン丸暗記すれば論理的に考えなくてもいけますが、意味がない上に膨大なのでおすすめしません)

内容をざっと分けると以下の通りです。一つずつ解説していきます。

1. 2進数
2. 論理演算
3. データベース
4. ネットワーク
5. セキュリティ
6. アルゴリズム
7. テクノロジー系
8. マネジメント / ストラテジ系

### 1. 2進数

これまずは1周目はさらっと流して見ましょう。多分最初から全部理解しようとすると倒れます。

1周目: 10進数を2進数にする(さらっとは他も目を通す)
2周目: 2の補数表現、基数、浮動小数点などに頑張って向き合う
3周目: 過去問にチャレンジしながら1個1個向き合う

ぐらいのペースで良いかと思います。めっちゃ難関です。それぞれを補足すると、

#### 10進数を2進数に

[手で2進数を数えるやり方](https://laboradian.com/count-bin-num-by-hand/)

自分は計算式を覚えずにこの(↑)やり方で覚えてました。正直テストで1,000以上の10進数の変換求められなかったので。ただ、16進数への変換は求められます。

2 ⇆ 10 ⇆ 16進数の変換はできるようになる必要があります。
(8進数は殆ど出なかった & 出ても手計算でどうにかなったので軽視してました)

#### 2の補数、符号ビット

2進数でマイナスを表す表現ですが、どちらもそこそこ出ます。
2の補数の場合は必ず問題に明記されているので安心してください。

2の補数とは、

3 - 3 = 0
これは↓に書き換えられる
3 + (-3) = 0

これを文章にすると

> 整数 n のマイナスの値は n に足すと0になる値

となります。

そして2の補数表現は「その値の0と1を反転させて1を加えた数」を覚えておけばOKです。
忘れた時は小さな数値で考えてみてください。

(例)10進数3の場合 入れ物が3bit
2進数にすると「011」　これを反転すると「100」　ここに1足して「101」
**この「101」が2の補数表現です。**

011 + 101 = 1000 になりますが入れ物が3bitなので先頭の1は消えて = 000　となります。

符号ビットもその旨が問題文に明記されています。こちらは補数表現ほどは難しくないので省略します。

#### point

2進数を解くポイントは出来る限り小さい値に当てはめて考えることです。
ここで多いのが「ある10進数の整数 n が〜」みたいな具体的な数値が出てこない計算問題が多いです。
その際は必ず「10進数の3で考えてみよう！」と頭の中で置き換えてやると一気に楽になります。

#### シフト演算

これも↑の方法を使えます。右が倍にするんやっけ？どういう公式？と覚えなくとも実際の値にすればいいので。

(例)10進数4の場合 入れ物が4bit
2進数にすると「0100」
右に1をずらすと「0010」 = 10進数の2なので 1 / 2 になっています
右に1をずらすと「1000」 = 10進数の8なのでに 2倍 になっています

#### 浮動小数点

これは相当手強かったです。正直最後の方で覚えました。
それまでに取り掛かると他のこと忘れそう＆時間取られそうだったので。

そもそも浮動小数点って何？は把握しておいた方がいいと思います(試験には出ませんが)。
試験の方は過去問を繰り返して解き方を覚えること＆基数、指数などがどういう意味で何を示しているのかを把握すれば点数は取れると思います。

### 2. 論理演算

2進数の次がこれって思い出すと吐きそう…

これはベン図、フローチャート、論理回路、マスク計算とありますが、
基本的には**ベン図**さえ理解できれば他は全て応用効きます。
(ド・モルガンの法則は丸暗記した方が効率良いです)

ベン図さえ理解できれば円の数が増えても、煩雑な論理回路でも全てOKです。

![20180415095628.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534071/a7f56f99-2bbb-0e19-f736-cb7af3d74c2b.png)

<details><summary>引用元</summary>https://www.lifehack-street.com/entry/2018/04/15/101546

書籍で紹介されているパターンは下記の6種類です。

- AND
- OR
- NOT
- XOR
- NAND(ANDの反転)
- NOR(ORの反転)

ただし、反転は色ついてる部分反転させるだけなので、最初の4種類さえベン図の色を覚えておけばOKです。
個人的にはXORだけ他と間違えやすかったので繰り返しやって叩き込みました。
写真は7種類ありますが、基本はこの4種類さえ抑えればOKです。

(例)ORの場合
※色ついている部分が1(真)　白色が0(偽)。円はそれぞれA、Bと2つの円があると置き換えて下さい。

| A  | B | A OR B|
|:-:|:-:|:-:|
|  1(真) | 0(偽)  | 1(真)  |
|  0(偽)| 1(真)  | 1(真)  |
|  1(真) |  1(真) | 1(真)  |
|  0(偽) | 0(偽) | 0(偽) |

これは言葉にするとORの場合はどちらかに色がついていれば成功(真)なので、

- Aだけに色がついている場合は「どちらかに色がついている」に該当するので1(真)
- Bだけに色がついている場合は「どちらかに色がついている」に該当するので1(真)
- AB両方に色がついている場合は「どちらかに色がついている」に該当するので1(真)
- AB両方に色がついていない場合は「どちらかに色がついている」に該当しないので0(偽)

となります。ベン図のとこの考えが繋がれば論理回路もマスクも楽勝です。
円の数を増やしたり、値を出さずにどれがORの形か？という論理回路の問題にしてるだけなので。

ちなみに自分はベン図を暗記したわけではなく

- ORなのでどちらか一方があえばOK
- ANDなので両方一致している部分のみOK

みたいな形で覚えてました。
ちなみに論理回路の問題も2進数同様具体的な値を入れて試していくと正解が出せます。

### 3. データベース(DB)

E - R図や主キーについては理解しやすいかなと思うので省略します。DBのポイントは、

- SQLを書いて簡単な表を作ってみる
- 一つの表には一つの事実 / DBの表を見て違和感がないか？を見る
- トランザクション / ロールバックなどは暗記でお願いします

ざっとこんな感じです。

#### SQLを書いて簡単な表を作ってみる

学校の成績表や会社の売上表みたいなものでいいと思います。
めちゃくちゃ簡単な表でいいと思いますし、第三正規形とかは一旦気にせずに書いてみていいと思います。

第三正規形を理解しているか？とSQL書き方知っているか？は別の問いで出てくるので。
そこを切り分けずに「推移的関数従属性」の意味を追いかけてたら令和が終わります。

テストで出てくるSQLはめちゃくちゃ簡単なものなので、作ってみるが一番良いかと。

#### 一つの表には一つの事実 / DBの表を見て違和感がないか？を見る

第三正規形を理解しているか？の問いで役に立つ考えです。

この問題は繰り返しやっていくと早くに2択に絞れる問題が多かったです。
残りを、**一つの表には一つの事実 / DBの表を見て違和感がないか？**に照らし合わせると大体合ってました(感覚的な答えですいません)

論理的にはデータを削除や追加した時にDBがおかしくならない？を当てはめていけばたどり着けます。
個人的には推移的関数従属性みたいな言葉を調べるのは良いと思いますが、理解しようとして過度に時間を費やす必要はないのかなと思ってます。

#### トランザクション / ロールバックなどは暗記でお願いします

これはこれ以上分解しにくいので暗記がいいかと。ロールバックとロールフォワードがごっちゃになったのを覚えてます…

### 4. ネットワーク

**ここかなり重要です。**
試験の合格という意味ではなく、CSを理解するという点でとても大切な内容です。

ネットワーク(HTTP通信)に関しては自身も書籍を追加で見たり、講義を聞いたりして理解を深めました。
IT業界であれば仕事に就く時には必要な知識なので、暗記で終わり！は避けて意味まで理解して頂きたい部分です。
OSI参照モデルや、IPアドレス、DNSなど切っても切り離せない内容が盛り沢山です。

試験的なところで言うと、データの伝送速度は計算問題でよく出るイメージです。
必ず単位のひっかけがあるのでバイトなのかビットなのか、ギガなのかメガなのか合わせて進んでください。
単語関連は上記の通り何周してもいいので必ず理解して欲しいです。

<details><summary>ネットワークについて学びたい！という方へ</summary>できれば2020年9月中には勉強会を開きたいと考えています。「参加したい！」という声があればマストで実施するので、参加希望の方は是非お声掛けください！([TwitterのDM](https://twitter.com/baan_nasebanaru)頂けると泣いて喜びます)

### 5. セキュリティ

ここは大きく分けると、

- ハッキングなどの攻撃方法、内容
- それらを防ぐ手段
  - 公開鍵などの技術(デジタル署名)
  - ファイヤウォール
- その他頻出単語(WAF / DMZ / 可用性・機密性・完全性)

基本的にはざっくりと流れを理解してよく出る単語は覚えておく。
ファイヤウォールなんかは自分でサーバー立てる時に触ることあるので理解深めておくと良いことあると思います。

自分としては公開鍵、特にデジタル署名が難しいと感じたのでPickupして解説します。

#### 公開鍵などの技術(デジタル署名 / ハイブリット暗号)

難しいと感じた点は

- 一つ一つ理解していかないと途中でごっちゃになる
- 共通鍵、公開鍵、秘密鍵、暗号、復号と単語が似ていて覚えにくい
- 文字だけ読んでも確実に理解できない

といったところです。なので、

- 一つ一つ切り分けて理解していくこと
- できれば自分で図など書きながら進めていくこと

がおすすめです。

似たような問題がある。冷静に考えればわかりそうでファッと飛ばして進めるとはまります(経験談)

### 6. アルゴリズム

Atcoderみたいなのは好きなんですがこれは好きになれませんでした；；

ざっと分けるとこんな感じです。

- 実際のアルゴリズムフローを読み解く
- 探索方法の名前や特徴を把握する
- その他頻出単語を覚える

#### 実際のアルゴリズムフローを読み解く

こういう問題です(https://www.fe-siken.com/kakomon/29_haru/q5.html)

これ何回やっても慣れませんでした。見にくい…
ひたすら回数を重ねること、具体的な数値を入れることで時間かけて泥臭く解いてました。

#### 探索方法の名前や特徴を把握する

ヒープソートやバブルソートなどですね。二分探索木はほぼ出るイメージです。
これも特徴と名前を覚えるしかないと思います。ただ名前から連想しにくかったので個人的には嫌いでした。

### 7. テクノロジー系

- デバイス性能の計算問題
- 基本的な数学の問題
- 入出力処理 / 稼働率計算

の3点です。ここは今までどれだけ数学の勉強してきたか？が結構問われます。
(基本的な数学の問題は数学の話なので省略します)

#### デバイス性能の計算問題

ここでよく出てくるが「なんとかps」みたいな単語です。
大体「per second(1秒間あたりの)」という意味です。
あとはMがミリオン(もしくはメガ。桁数は一緒)、Gはギガです。

ディスクの読み込み速度、アクセス速度、処理速度はそこそこ出るイメージです。
どれも数回やればパターン分かると思うので苦手意識を持たずにチャレンジすると大丈夫かと。

個人的には計算していて「絶対この桁数」「絶対下一桁はこれ」と分かる時があるのでその時は計算途中でやめてます。
計算結果が合っているか？は大事ですが道中の式の組み立て方を理解しているかが重要だと思うので。

#### 入出力処理 / 稼働率計算

ほぼ間違いなく出るイメージですね。両方前提の問いの部分を勘違いして間違えた時が多かったです。
時間をかければ必ず解ける問題なので、繰り返しやって理解して本番では落ち着いて対応すればOKかと思います。

### 8. マネジメント / ストラテジ系

- 頻出単語(ITパスと結構被ってる)
- アローダイアグラム
- 基本的な数学の問題(省略)

ようやく箸休め的な章にきた…

ここではITパスから実際の開発手法なども組み込まれています。
PMBOKとかITIL / ホワイトボックス / ウォターフォール なんかがそのはず。

アローダイアグラムはほぼ出ます。クリティカルパスとか。
必ず理解しておいて下さい。

## まとめ

- ITパスは繰り返し過去問をやって単語を刷り込ませるイメージ
- 基本情報は本質的な理解を求められているので、理解することが大切ですが都度立ち止まるのは効率が悪いので、時間かけてわからないところは次回の周回で。それでもわからなければ周りに聞くか諦めましょう。

※周りに有識者がいなくても質問板や、Twitterで聞いてみると結構教えてくださる方がいます。ありがたや

流れとしては、

1. とりあえずサッと過去問やってみる
2. 書籍もサッと読んでみる。わからないところに時間はかけすぎない
3. 過去問をやってみる。今度はわからないところはチェックするなど、なるべくわからないところを明確にしていく
4. 「3」でチェックしたところを書籍以外からも調べてみる
5. 過去問を繰り返しやって覚えていない単語を減らす

といった流れが良いのかなと思います。

## 使用したサイトや書籍のレビュー

### サイト

[「ITパスポート-過去問道場」](https://www.itpassportsiken.com/ipkakomon.php)
[「基本情報-過去問道場」](https://www.fe-siken.com/fekakomon.php)
どちらも大変お世話になりましたm_ _m ログインすれば正答率も分かるし解説も丁寧だし、スマホで見れるし言うことありません。

[「独習ゼミ」](https://www.seplus.jp/dokushuzemi/doku_zemi/)
自分は今回基本情報を受けるにあたってこちらのサービスを利用しました。

- 半日ある長丁場の試験を事前に受けられる(午前の事前試験)
- 動画の資料が大変わかりやすい
- 書籍もあってカリキュラムも正確なので合格率が上がる

といった点が非常に魅力でした。基本情報以外にもあって応用情報受ける場合はこちら活用しようかと思ってます。
デメリットとしては2万円が少しお高いのと、スマホアプリが使いにくいなどですかね。

申し込む場合は安い方でいいです。高い方は書籍代が新品の値段で追加されてるだけなので、必要だと思えば後から購入すればいいかと。

### 書籍

- 「キタミ式 ITパスポート(平成31/01)」

キタミ先生の本はわかりやすくてよく読みます。これは試験対策というより、CSへの理解がメインに書かれていてとても良かったです。
資格取れればいいんやー！という人には微妙かも

- 「出るとこだけ！基本情報技術者テキスト＆問題集2020年版」

直近でこの系統の問題が何回出たか？も書かれている ＆ 試験対策とCS学習がバランスよく書かれていてとても良かったです＾＾

- 「絵で見ておぼえる 基本情報技術者」

これは自分には合いませんでした。ただ、基本情報という1つの試験を複数の書籍で見るのは良かったと思います。別の角度から見て分かることもあるので。

- 「図解でよくわかる ネットワークの重要用語解説」

また、キタミ先生の本ですね＾＾　これは本当によかったです。わかりやすかった。
IT未経験初日の方に渡しても大丈夫じゃないかというぐらい噛み砕かれていて、とても読みやすい本で入り口としては最適でした！


## さいごに
最後までご覧いただきありがとうございました！

自分も秋の試験にむけて再学習始めるので一緒に合格目指していきましょー！
(落ちたら顔真っ赤にして逃げます)