IT業界経験2年8ヶ月のプログラマーが応用情報技術者試験を受けた体験記

先日おこなわれた令和6年度秋季応用情報技術者試験を受験してきました。
合格発表はまだなのですが、試験勉強をする過程で体感したことをつらつらと記載していきます。

# この記事の対象者
* 応用情報を受験するか悩んでいる方
* 応用情報を受験するかを決めるための判断材料を探している人
* 応用情報の試験範囲を勉強することで感じたことや学べたことを知りたい方


# 筆者のスペック
30歳
普通科高卒→IT業界に入るまではITとは無縁の世界で生きていました
IT業界歴→応用情報技術者試験受験時で2年8ヶ月目

保有資格→基本情報技術者試験、PHP8技術者認定上級試験



# 午後問題の学習を進める過程で、業務中にやってしまいそうなアンチパターンを知ることができる
私的にはこれが一番、応用情報を受けるうえでメリットを感じました。
ただ漠然と問題を解くだけだと学習効果は薄いのですが、問題を解く→答え合わせをおこなう→回答の理由を理解するというステップを踏むと、色々と現場でも役立つ知識を得ることができると感じました。
いくつか例に出してみます。

### データベースにパスワードを原文ママで保存するのはセキュリティ上のリスクがある
令和6年度秋季午後問題、セキュリティ分野で出題された内容です。

https://www.ipa.go.jp/shiken/mondai-kaiotu/2024r06.html#aki_ap

> 設問1
会員のパスワードをハッシュ関数でハッシュ化して保存することは、情報漏えいの脅威に対してメリットがある。それはハッシュ値にどのような特性があるからか。

本記事を執筆時点ではまだIPAからの公式回答は出ていないのですが、答えとしてはこんなところでしょうか。

**ハッシュ値から元の値を割り出すのは困難だから**

経験が浅いエンジニアだとこのあたりを考えずに、原文ママでパスワードをデータベースに保存してしまうところですね、はい。
この問題を解くことで、以下のような知見が得られると思います。

「データベースに登録されている情報が漏洩してしまったときに、原文ママで保存されていると簡単に悪用されてしまうから、ハッシュ化をしてから保存する必要がある」

「パスワードといった重要な個人情報を、暗号化しないままデータベース保存するのはデータ漏洩時にまずい！だからパスワードにはソルトやペッパーをつけてハッシュ化する！」

「実際のシステムではどういった手順でソルトやペッパーをつけるのか、そしてつけたソルトとペッパーはどこに保存をするのか」

知っている知識だとしても、反復することでより記憶に定着するのでこうやって試験形式で知識を深めていけるのはいいですよね。



### レビューをする目的からズレた議論を始めてしまい、レビュー時間が長引く
令和4年度秋季午後、情報システム開発分野で出題された内容です。

https://www.ipa.go.jp/shiken/mondai-kaiotu/2022r04.html#aki_ap

> 表5
集合ミーティングの時間中に、一部欠陥の修正方法、修正内容の議論が始まってしまい、会議の予定時間を大きくオーバーした。

これもあるあるですねぇ！

#### レビューが長引く例
:::note alert
部下: 上司にアウトプットの方向性があっているかをざっと目を通してもらいたい
上司: 完成品としてのレビューを求められていると勘違いし、時間をかけて丁寧にレビューをしてしまう
↓
部下と上司の間で意思疎通ができておらず、完成品として最終レビューを上司はしてしまう。
部下はフィードバックを待つ時間を浪費してしまう。
上司はレビューをする時間とフィードバックを伝える時間を浪費してしまう。
:::

どういった目的で、かつどれくらいの時間をかけてレビューをしてほしいのかを明確にするのは大事ですよね。

:::note info
部下「タスクの方向性があっているかをすり合わせるために、現時点でのレビューをお願いしたいです。方向性の確認を5分ほどで確認してもらえないでしょうか」

上司「OK！それなら今すぐに見ちゃうから、このまま方向性の確認をしちゃおうか！」
:::

### スマートフォン側で負荷の高い処理をしてしまい、バッテリーの消費が激しいアプリになってしまう
令和6年度春季午後、システムアーキテクチャ分野からの出題です。

https://www.ipa.go.jp/shiken/mondai-kaiotu/2024r06.html#haru_ap

> スマートフォンの特定の画面において次の問題が発生した
・スマートフォンのCPU負荷が大きく、頻繁に使用するとバッテリの消耗が激しい。


プロトタイプとはいえ、なぜクライアント側でデータの加工をがっつりおこなう作りにしたのだろうか🤔

スマホアプリを開発する手順を追っていく問題なので、これもまた興味深かったです。


# データベースの試験範囲、バックエンド開発に役立つ
午後問題でデータベースを選択する場合、データベースの仕組みやSQLの書き方
ER図の読み方、正規化といった具合にデータベース関連の幅広い知識が必要になってきます。
まあこれが業務の役に立つわけでして。

### ER図の読み書きができるようになる
ER図はここ5年くらいは午後のデータベース分野で必ず出題されているので、データベース分野を選択する場合は嫌でも覚えます。



### 第一から第三正規化を学ぶことで、正規化されていないヤバそうなテーブル設計がわかるようになる
正規化について覚えるのに加えて、午後のデータベースの問題ではいい感じに正規化されたER図がでてくるので、ベターなテーブル設計を見聞きすることができます。

### SQL文が読み書きできるようになる
これもまたER図と同じように、午後問題でデータベースを選んでいる場合はゴリゴリに出題される範囲なので嫌でも覚えます。


### なんとなくindexが追加できるようになる
私が勉強に使用した合格教本シリーズではindexについても記載がされていたので、これまでいきあたりばったりに近い追加をしてしまっていたindexが、それっぽく追加できるようになりました。

https://www.amazon.co.jp/s?k=%E5%BF%9C%E7%94%A8%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85+%E5%90%88%E6%A0%BC%E6%95%99%E6%9C%AC&i=stripbooks&rh=n%3A465392&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&linkCode=sl2&linkId=741ad1da26f3eb0d40ce033cac0a148d&tag=asuyuh-22&ref=as_li_ss_tl



### データベースのテーブル設計がやりやすくなった
ER図が書けるようになったり正規化を知ることで、テーブル設計時に自信をもって設計ができるようになりました。
まだまだ試行錯誤しまくりですが(ｶﾞﾊﾊ

### joinは友達怖くない
INNER JOIN、LEFT JOINといった色々なjoin、そしてjoinした際のテーブル同士が結合される動作を理解することで、なんとなく敬遠していたjoinを使用することが怖くなくなりました。
~~今ではjoinを使わなくても使用できてしまう、カラムを持ちすぎているテーブルのほうが怖いです。~~




# IT業界で使われている単語を色々と知れる
午前問題、午後問題を解く課程で知らない単語を調べていくことでIT業界用語を色々と覚えることができます。
PoC、SIEM、ウェルノウンポート、ゼロトラストなんかはWeb系の現場ではよく出てくる単語ではないでしょうか。

それから、これまで何気なく認識して使用していたwifiのSSIDの末尾についているaとgは、wifi規格のIEEE 802.11a、IEEE 802.11gからの名残でaとgをつけているんだと知れたときはちょっと感動しました。
命名に歴史あり...

他にも、問題にでてきた知らない単語を調べる
↓
そこから芋づる式に知らない単語や知識がでてきて、さらに調べる

といったループを繰り返すことで、IT業界に関連した知識を知ることができたのでこれもまた、応用情報を受けて良かった点に感じます。
きっかけがないと、なかなかこういう知識って知ることができないので。

実際に私が勉強中にあった例としては、問題文に出てきたアクセシビリティの意味を調べるうちに利用しやすいアプリケーションのデザインについて少し詳しくなっていました。

https://www.ap-siken.com/kakomon/30_haru/q24.html

# コンピューターを便利にする仕組みが知れるのがおもろい
記憶容量が少ない主記憶を有効に使うための仕組みであるライトプロセッサやキャッシュといった、コンピューターをより便利に、高速に動作するように考えられている仕組みは個人的に読んでいて面白いです。
アプリを作るうえでは、あまり意識することは少ないですが。
ただ、このあたりは基本情報でも試験範囲なので応用情報である必要はないですね。

# 経営層になったときや、起業するときに役に立ちそうな考え方が学べる
試験範囲で言うところのストラテジあたりを勉強しているとですね。
損益分岐点とか、安全性指標とか在庫の管理手法(ダブルビン法、定期発注方式、定量発注方式)、原価売却etc...といった単語や考え方が出てきます。
このあたりの知識は会社を経営する立場になった際には使う機会はなくとも、知識として知っていると役立ちそうな気がします。





# 応用情報を取得している人のレベル感を知れる
応用情報を受験し合格、または合格に近い点数を取ることで応用情報技術者試験に合格するために必要な勉強量や文章を読み解く力を把握することができるので、合格者のレベル感を把握することができるようになります。

これは結構いいことだなと個人的に思っていまして、応用情報合格者のレベル感を知っておくことでエンジニアの採用を担当することになった場合、応用情報を取得している応募者の実力を図る物差しが一つ増えることになり、複数の視点で応募者の見極めができるようになるのではないかと思っています。

試験概要や、過去の試験を解くことでもある程度合格者のレベル感は把握できると思いますが、実際に受験することでより試験の難易度を把握できるのでそういった意味では、まだ合格判定は出ていませんが受験して良かったと思っています。

とはいえ、開発に必要な知識周りをスルーできる午後問題の選択方法もあるので、あくまで目安にはなりますが。


# 仕事の進め方を学べる
令和6年度春季午後、プロジェクトマネジメント分野や[システムアーキテクチャ分野](https://qiita.com/Bakio202076/items/0b9536ee9df7656e3574#%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%83%95%E3%82%A9%E3%83%B3%E5%81%B4%E3%81%A7%E8%B2%A0%E8%8D%B7%E3%81%AE%E9%AB%98%E3%81%84%E5%87%A6%E7%90%86%E3%82%92%E3%81%97%E3%81%A6%E3%81%97%E3%81%BE%E3%81%84%E3%83%90%E3%83%83%E3%83%86%E3%83%AA%E3%83%BC%E3%81%AE%E6%B6%88%E8%B2%BB%E3%81%8C%E6%BF%80%E3%81%97%E3%81%84%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%97%E3%81%BE%E3%81%86)の出題問題を見ていると、IT業界の現場での仕事の進め方の雰囲気を感じることができます。

https://www.ipa.go.jp/shiken/mondai-kaiotu/2024r06.html#haru_ap

こんな感じの流れですね。

### 仕事の進め方
```
解決したい課題に対してプロトタイプを作成したり、仮説を立てドラフト版の解決案を作成する
↓
作成したドラフト案でパフォーマンス面を調べたり、クライアントにプロトタイプのシステムを使用してもらい意見を出してもらいブラッシュアップを重ねる
または上司からのレビュー内用を元にブラッシュアップを重ねていき初回リリース版を作成する
↓
初回リリース後、不備内容等を修正していき安定稼働を目指す
```

ITコンサルや開発者やマネージャーといった幅広い、各IT業種視点での仕事の進め方を見聞きできるのは興味深い物がありましたし、主体的に仕事を進めていくようになった際には参考にして、仕事の進め方を考えることができそうですね。

# 終わりに
受験をして良かったかと聞かれると、即答で良かったと言い切れます。
IT業界の知識を幅広く得ることができますし、合格することができた場合は転職活動時や派遣先を決める際にも有利に進めることができますし。
あと会社によっては一時金が出る会社もあるので金銭的なメリットもありますしね！

応用情報技術者試験を受けようか迷っている方々に、最後に一つだけアドバイスです。
とりあえず申し込みをして受験料を振り込んでおけば、1~2ヶ月後の自分が頑張って勉強して受験してくれます。
勢いで申しこもう！！！！

# 追記
受かってました、わーいわーい。

https://x.com/Bakio202076/status/1872116158650069101