私のパソコン歴(7) : 小学生~高校生までを振り返って(後編)
今までの投稿で小学生~高校生までの自分のやってきたことを振り返ってきた。 改めて見返すと、自分がなにかを習得するには4つのステップを踏んでいることがわかった。
- 学ぶ
- 手を動かす
- 見てもらう
- 教える
これからプログラミングを学ぶ人にとっても、このステップを踏んでいくのは意味のあることだと思っている。 そこで、学んだテーマごとにそれぞれのステップで私がどういうことをやっていたのかを振り返ってみようと思う。 今日は後半。実は3と4までやっているのが思いのほか無くてガッカリしている。
ネットワークの仕組み
学ぶ
座学としては、基本情報技術者試験の勉強でOSI参照モデルを知った。 セキュリティキャンプでTCPのシーケンスやフラグなどの踏み込んだ内容を学んだ。 カッコつけてキャンプでもらったネットワークスペシャリストの本も地味に勉強の役に立った。
いまから学ぶなら、『マスタリングTCP/IP入門編』をおすすめする*1。
手を動かす
C言語のソケットプログラミングを覚えた後、チャットアプリケーションを作ってパソコン室でクラスメイトとチャットをやった。 Webサーバを書いてみて、実際にブラウザからアクセスできることを知った。 WireSharkでパケットキャプチャを取って、知らない通信を調べたり通信内容を読んでみた。
ネットワークの話は手を動かすことで格段に理解度が増した。
見てもらう
自宅にサーバを置いて、Ubuntuを入れて、Dynamic DNSでサーバを公開してみた。
教える
高3までに教えた記憶はない。
OSの仕組み
学ぶ
勉強会で浴びるように話を聞いていたらなんとなくわかるようになってきた。 あとはTwitterのフォロワーさんや勉強会*2で知り合った人たちに教えてもらったり。
いまから学ぶなら、『[試して理解]Linuxのしくみ』が良い。 https://www.amazon.co.jp/dp/B079YJS1J1/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
手を動かす
課題研究でOSを作ろうとしてコンテキストスイッチまでは実装した。
見てもらう
課題研究で発表した。
教える
課題研究のメンバーに原理を説明した。
セキュリティ
学ぶ
主にセキュリティキャンプで勉強。OS, ネットワーク, アプリケーションといろいろなレイヤに脆弱性の入り込むスキがあることを知った。 また、守るためには攻撃の手法をよく知らないといけないこともよく分かった。
手を動かす
セキュリティキャンプで閉鎖ネットワーク内にて攻撃手法の実践を行った。 バースデーアタックやDNSキャッシュポイズニングやシェルコードによるroot奪取などを体験した。
※法に触れることもあるので皆さんが手を動かすときは法令を理解し正しく学習しましょう
見てもらう
特に活動した記憶はない。
教える
高3までで特に活動した記憶はない。
ソフトウェアを公開する作法
学ぶ
移植性の高いコードの書き方やMakefileやDoxygenなどを高校の同級生から教えてもらった。
手を動かす
実際に作ったものを高校の同級生に見てもらった。
見てもらう
実際に作ったものを高校の同級生に見てもらった(繰り返し)。
教える
特に教えた記憶はない。