見出し画像

『ホワイトハッカーの教科書』の断片的なメモ

このnoteを読んで分かること

駆け出しエンジニアのスキルアップの方法。

この記事は
IPUSIRON『ホワイトハッカーの教科書』(C&R研究所)
からの抜粋です。
何を抜粋し何を抜粋しなかったかは、完全に筆者の都合に基づいています。
このnoteは自分用のメモのため、
本の中の限られた情報のみを記載しています。ご容赦ください。

『ホワイトハッカーの教科書』の中身

この本の対象:
駆け出しセキュリティエンジニア、エンジニアの卵…という人
勉強法といえば学生時代の受験勉強の方法しか分からない、
という駆け出しエンジニア

内容:
エンジニアの勉強のハウツー本
目標の立て方、教材のタイプ、各種教材のメリットデメリット
が広く、詳細に紹介されていました。
つまり、ホワイトハッカーになるために
何を勉強するべきか?(脆弱性など)ではなく、
どう勉強するか?が中心です。
ただし、セキュリティに限らずITエンジニア一般に通用する内容もあります(それは6,7割くらい?)。

エンジニアの目標設定

スキルマップは役に立つ

スキルマップ=ここでは、エンジニアに求められる能力の一覧表。
能力はレベルごとに刻まれて定義されている。
これは現状の自分の能力を評価するために使える。
初心者なら、これから学ぶ分野の雰囲気を掴むために有用である。
以下の2つのスキルマップを紹介する。

経済産業省のITスキル標準プラス
「データサイエンス領域」「アジャイル領域」「IoTソリューション領域」「セキュリティ領域」の能力が扱われている。

ITスキル標準V3 2011
より幅広いIT系の能力が扱われている。
ソフトウェア開発など。

駆け出しエンジニアの学習法

プログラミングの学習法

・現場が必要とするプログラミング言語のスキルを学ぶとよい。
・プログラミングの習得には手を動かすことが最も効果的。
・分からない時はすぐにストップして考え、調べる。
・どうしても分からない時は保留する。
学習を進めることで理解できるものもある。
ただし、数日後には前回理解できなかったコードを読み直すべき。

基本的な文法を理解しているレベルになったら?
・まずプログラミング学習で目指すべきは、
自力でロジックを考え、それをプログラムで実現できることである。

・中級者向けの書籍を進める
・何かを作る (例:ツール作成、定番アルゴリズムの実装)
・公式サイトが公開している標準ライブラリのドキュメントを読む。
どんな処理が用意されているかを把握する。
(例:Javaの標準API バージョン18)
・理解しやすいコードとは何かを学ぶ
(例:『リーダブルコード』)
・現場で使えるフレームワークや周辺サービスの知識を習得する
・セキュアコーディングを学ぶ
・代表的なアルゴリズムについては何も見ずに説明できるレベルにまで理解しておく。

・ネットワークのスキルアップ法
パケットキャプチャーを使ってネットワークに流れているパケットを観察する

IT技術書の読み方

・本にあるプログラムを写経する&以下の方法を実践する。
・1行ずつ、あるいは数行ずつ実行し、動作結果を確認する。
なぜなら、そうすることでコードと処理の対応関係が分かってくるからである。
・ソースコードを読む。
最初はブロック単位で読む。
その際に意識すべき観点は、データ構造、アルゴリズム、設計の3点。
・異常ケース時の挙動を考える
・ソースコードをリファクタリングする
・サンプルプログラムを改造する
・ソースコードを管理する
(例:GitHubのプライベートリポジトリを使う)

・IT技術書の種類
①リーディング型=読み物の形式
②プロダクション型=手を動かしながら学ぶ形式
③リファレンス型=辞書のように扱う形式 (例:コマンド集)

・苦手な分野や初挑戦の分野を学ぶ時は、
まず薄い初学者向けの本を十数冊読むのが一つの方法である。
ある程度知識を身につけてから難しめの本にステップアップしてもよい。

その他の勉強の素材

・Web
必要十分な情報を得るために複数のサイトを参照するとよい。
あとは、エンジニアのブログもよい。 
(例:クックパッドの技術者ブログ)

・勉強会
勉強会を探せるサイト
connpass
Doorkeeper
TECH PLAY

・資格・認定試験を通じて学ぶ
注意点は、目的を明確にすること。
すなわち、資格取得を目的にするのか、
スキルアップを目的にするのか、
である。
メリットとデメリットを勘案するべき。

・ゲーム
自作CPUがテーマのゲーム『Turing Complete』
以下のブログで紹介されている。面白そう。
https://blog.agile.esm.co.jp/entry/turing_complete#:~:text=Turing%20Complete%20on%20Steam&text=%E5%AE%87%E5%AE%99%E4%BA%BA%E3%81%AB%E3%81%95%E3%82%89%E3%82%8F%E3%82%8C,macOS%E3%80%81SteamOS%20%2B%20Linux%E3%81%A7%E3%81%99%E3%80%82

一般的な勉強のコツ

・信号の待ち時間などの隙間時間を活用するとよい。
・効率性を求めるせいで勉強に取り掛かれない場合がある。
そんな時は、
まず取り掛かる→失敗する→軌道修正する
というやり方がおすすめ。


以上です。
この本を通して強調されていたのは、
「勉強しよう」ということです。
筆者も駆け出しエンジニアなので、
Gitの理解に励みたいと思います。

拙筆ながら読んでくださりありがとうございました。

この記事が気に入ったらサポートをしてみませんか?