2025年秋の応用情報技術者試験(以下AP)を受けてきた。
勉強期間としては、9月の頭から1カ月半ほど。
今の気持ちは解放感というより、「もう終わってしまったのか…」という虚無感の方が近い。この1カ月半の試験勉強を通して、自分でも驚くほど成長できたと感じている。 このAPでの学びを今後に活かしていけるよう本ブログに整理してまとめた。
本ブログは、以下の構成となっている。
- 学びの整理(気になった・印象に残っている技術等)
- 試験勉強を通じて感じた成長
- 今後の方向性
1. 学びの整理
システム構成
システムの処理形態(分散処理、集中処理)
- ロードバランサ
高信頼性・高性能システム
サーバの性能向上策(スケールアウトやスケールダウン等)
スケールアップとスケールダウンがサーバそのものの性能、スケールアウトとスケールインがサーバの台数。これややこしかった。ただただ性能を上げるためだけにスケールアップ、スケールアウトをするのではなく、その時々に合った性能の上げ下げをすることが重要であるようだ。
仮想化技術
キャパシティプランニング
ハードウェアとコンピュータ構成要素
プロセッサ関連(CISCやRISC等のアーキテクチャ、高速化技術、内部構造)
大学の実験でVDLを用いたALUの実装やKUE-CHIPによるRISCでの暗号化技術の実装をすることがあったが、その辺りとつながった。
メモリアーキテクチャ
記憶階層、主記憶への書き込み方式(ライトスルー・ライトバック(LRUアルゴリズム))などキャッシュメモリ周りの理解を深めることができた。しかし、キャッシュメモリの割付そのものやダイレクトマッピング方式をはじめとした方式についての解像度が低いため、実際に動かしながら知識を付けたい。
OS
タスク管理(排他制御や同期制御)
プロセスとスレッド
並列処理使いこなしたい…試験勉強中、PythonのThreadingライブラリを使って簡単なプログラムの実装をしてみたが、これ使いこなせたら世界変わりそうと思った。プロセッサレベルは別のライブラリの方がいいみたい。GoはGoRoutineにより並列処理が得意な言語として挙げられる。使いこなしたい。
記憶管理
- キャッシュメモリ
- 仮想記憶管理
DB
DBMSの仕組み
インデックス
ストアドプロシージャ
3層クライアントサーバシステムにおいて、バックエンドサーバとDBサーバのデータ通信量を減らすことができる。実際どんな風に最適化されているかまでは学んでいないので知りたい。
DBチューニング
バックアップ方法(redo/undoあたり)
分散データベース
- 2層コミットメント
CEP
リアルタイムで分析処理するやつ
ネットワーク
TCP/IP
IPv6有能。もう少し詳しく知りたい、ヘッダーの仕組みなど。
SDN(OpenFlow)、NFV
制御部をソフトウェアの階層で実装するてどゆこと!?試してみたい。
セキュリティ
ネットワークとソフトウェアは紙一重だなと感じた。脆弱性というのは意図的なものではなく、ソフトウェアやネットワークの仕組みをただ利用しているだけという印象を受けた。便利にするために仕方のない実装というものそうでないとその技術が有効に使えないという実装があり、それをカバーするために多段階防御という思想があるのではないかなと思った。
認証周り
チャレンジレスポンス認証
ネットワーク上に直にパスワード等を流さない工夫が面白い
攻撃手法
ポートスキャン
ネットワークの授業でポート開放した際にちゃんとポートを閉じといてねって言われたことがあったがこれとつながった。でも試験では間違えた。(SYNスキャン時はSYN/ACKが返ってきたら、稼働中)
オープンリゾルバを悪用したDDoS攻撃
印象に残っている。当たり前かもしれないが、セキュリティ攻撃を防ぐには、いったん攻撃者の視点に立ってみるというのは大事だと思う。私ならこの仕組みを使ってこう攻撃するな等、そこからこうしたら防げると試行錯誤を繰り返すことで、どんどん堅牢性が上がっていく。もちろん堅牢性が上がれば上がるほど、使いにくくなったりと利便性が下がっていくので、そこでリスクマネジメントにより、リスクを経営や損失の面から分析し、評価し、どう対応するかが最も重要ではないかと感じた。
TLSアクセラレータ
TLSの複号の処理ってWebサーバにとって負荷が大きいらしく、この複号処理を別のサーバに分けてやることらしい。めっちゃ便利だ。実装してみたい。
システム開発技術
オブジェクト指向
今回学び、本当にうまくオブジェクト指向をうまく使いこなせているかと聞かれたらうまくは使いこなせていない気がした。もっと勉強していきたい。
モジュール設計
STS分割、TR分割
STS分割は特に今まで実装が言語化された。AtCoderで問題を解くとき、とりあえず、入力と出力が何であるかを抑え、出力がどのような性質を持つのかを羅列することで良い実装に繋がっていた。この性質をどれだけスマートに実装するかが腕の見せどころだと思うが… このような方法を実際に使いこなしていきたい。
テスト管理手法
バグ管理図の形からソフトウェアの信頼性が分かるのはとても興味深かった。 AIによるエンジニアリングにおいて、TDDが脚光を浴びているようだが、今後このあたりは変わっていくのだろうか。まずこの意見が出てくる時点で私の理解は浅いのかもしれない。
マネジメント
タスクスケジューリング(クラッシングやファストトラッキング)
納期や一定の予算内でプロジェクトを完遂する方法論を学んだ。一つ思ったのが、理論的には予算や納期に間に合ったとしても、実際に実現可能かは人間力などに関わっているのではと思った。
マネジメントの本質は理論ではなく、人間力なのでは…? そんな人間になるにはどうしたらいいんだろうか…?????
ストラテジ
ユーザビリティテスト
利用者視点の使いやすさを測るにはこれしかない。
エッジコンピューティング
実装してみたい技術。自分のコンピュータのみでは資源が足りない際はこれを使えばいいのでは…と夢が広がった。
2. 試験勉強を通じて感じた成長
技術の裏側を構造として捉える力
試験勉強を通して、自分でも驚くほど技術的な深堀ができるようになったと感じている。
例えば、最近だと韓国のデータセンターの火災の件に関して、今までは火災については「大変そうだな」と思うだけだった。 しかし今では、バックアップ取っていないという報道を見て、 「RAID構成で冗長化するべきだった」「定期的なフル・差分バックアップを取っていれば…」「障害時のリカバリの計画はどうなっていたんだろう」等、 内部でどんな対策が取られていた・取るべきだったのかを考えられるようになった。
これは単に知識を覚えたというよりは 「技術の裏側を構造として捉える力」 がついたという事である。 Twitterで流れてくる技術的な投稿を読んでも、背景の仕組みや共通する原理を読み取れるようになり、理解の幅がかなり広がった。
今まで異なるものに見えていた技術が「点から線」へとつながり、体系的に知識を吸収できるようになった。 この構造的に技術を捉えることが、今回の学びで得た最大の成長であると思う。
3. 今後の方向性
この成長をどう活かしていくか。応用情報技術者試験で得た「構造的に捉える力」を活かし、 「新たな技術の理解」と「基礎理論のさらなる深堀り」につなげていきたいと考えている。
技術トレンドを追う
”単に使いこなす” だけでなく その技術の原理やなぜ有効であるかまで掘り下げたい。
使う → 理解する → 応用する というループを自走で回せるようになるのが目標。
各分野の深堀
応用情報の学習を通じて理解が浅かったり、もう少し深堀したい部分を今後は手を動かしながら、深めていく。
- データベース(参考:『達人に学ぶSQL徹底指南書』)
- SQLの基礎
- DBMSの仕組み理解(ストアドプロシージャやインデックスの設定)
- 各種DBの特徴比較(まずはRDBを中心に)
- ネットワーク
- 各プロトコルの理解(特にWeb周り:HTTP/HTTPS, DNS, TLS等)
- 過負荷環境下でのシステム設計・分散処理
- セキュリティ
- 実装面の安全性(参考:『安全なWEBアプリケーションの作り方』)
- 攻撃の視点から防御策を理解(自作アプリに対して、模擬的に攻撃を実装)
- OS(参考:『ゼロからのOS自作入門』(みかんOS))
- 資源管理やスレッド / タスクスケジューリングの仕組み
- プログラミング言語
Java(オブジェクト指向の言語)
入社先で使う言語。オブジェクト指向の思想を実践的に理解したい。 また、読み書きに慣れておきたい。
内部のメモリ管理や実行モデルの理解も含めて掘り下げたい
4.最後に一言
大学の総復習ぐらいの気持ちで挑んだAPだったが、 結果的に、今後エンジニアリングに関わっていく上での強固な土台を築くことができたと思う。
AIの進化により、プロセスを飛ばして“出力”だけを見る時代がやってきているように感じる。 そして、私は過程を想像し、構造を理解することこそが本質的な理解だと感じている。 そしてその過程を想像するために必要なのが、APで求められる知識なのではないかと思う。
ただAIの進化を見ていると正直、5年10年後に基礎的なCSの知識が必要かはわからない。しかし、現時点でこのような知識・能力が必要なのは間違いないだろう。私は 「今できるそして、今求められていることを精一杯やること」 が重要だと思う。と、そんな偉そうなことを言える身ではないが、自分への教訓として胸に刻みたい。
本記事は、私自身の学びを整理するために書いたものだが、 もしこの記事が、同じように学び続ける誰かの一助になれば、これ以上に嬉しいことはない。