釣りタイトルだと思った皆さん、残念ながら本記事は釣り記事ではありません。
安心して読み進めてください。
「強くなりたいです。どうやったら強くなれますか?」
恐らく情報系の多くの人が抱えている疑問なのではないでしょうか。
「I know everything」みたいに言える人って中々いないですよね。
ちなみに、僕も強くなりたいです。
どうやったら強くなれるんでしょうね。もし強くなれる方法があったら知りたいですよね。
そもそも強さって・・・何だ?
そもそも論で行くと、「強くなりたい」とだけ言うのは少し微妙で、どのように強くなりたいか、という具体的なイメージがあった方が良いのではないかとは思うのですが、まあそんな事を思う人は恐らくこのブログを読んでいない事でしょう。
なのでこちらで「強さとは何か」を邪推してみるわけですが、このページを読んでいらっしゃる中高生の皆さん的には、「周囲にドヤれる、twitter上とかでブイブイ言わせられるくらいの知識があったり、技術力があったり」みたいなのを求めているのかなぁ、と。
で、それくらいなら簡単なんじゃね?って思ったので、僕が思う「『普通』の中高生でも『簡単に』OS分野で強くなれる方法」を書いてみたいと思います。
どれくらい強くなれるかというと、OS分野に限って言えば、そこら辺に転がってる情報系の大学生よりは強くなれると思います。大学院生の自分からすれば当たり前なのだけど、これを中高生の頃の自分に知っていれば、もっといろいろ世界が広がっていたと思うので、共有させてください。
1. 手を動かそう
絶対に必要な事として、手は動かさないとダメです。
ただ漠然とtwitterを眺めていても当然強くはなれないですし、Google検索で出てきたページを眺めたり、本屋で買った本を読んでいるだけでは強くなれません。
強くなりたければ実践あるのみ。コードを書きましょう。いろいろな壁にぶつかると思いますが、その壁を乗り越える事でしか強くなる事はできません。
皆さんご存知の「30日でできる!OS自作入門」はコードを書く上でとても参考になります。
もちろんこの本を読んだだけではダメで、実際に書籍内のコードを動かし、自分で書き、そして本の内容から外れた、オリジナルなコードを書いてみる必要があります。
とはいえ、OSに興味がある方ならこのステップはそんなに苦では無いでしょう。
「OSというブラックボックスを自分の手で書けるんだ!」というワクワク感から、自ずと手が動いてしまいますよね!
この本を読む上での注意ですが、この本はあくまで「自分でもOSは書けるんだ!」という事を読者に理解させるのが目的の本で、「OSについて学ぶ」本ではないです。(ちゃんと節々にその注意書きがありますよね)
なので、この本を読んだだけでOSの全てを理解したと思わない方が、OS分野で「強く」なれると思います。
「OSについて学ぶ」事にはそんなに興味はないんだけどなー、なんて人もいるかもしれません。もちろん、OSについて学ばなくても、持ち前の高い技術力で素晴らしいアウトプットを出せる方にはそういった話は不要なのですが、僕のような「普通の人」は、やはり一度は「OSについて学んでおく」事をオススメします。なぜなら、一度OSの基礎を学んだ人間の方が、その後で手を動かした時に出てくるアウトプットの質が上がるからです。
じゃあどうすれば良いのか、というのが次の話。
2. 大学の情報系学科のOSの授業スライドで自習する
多くの情報系の学科では「オペレーティングシステム」という講義(あるいはそれに類するもの)があります。その資料を手に入れ、自分で勉強しましょう。
大学の学部の授業は、専門家によって作られているだけあって、一通りの基礎知識をきちんと過不足無く教えてくれます。これをマスターするだけで大学生に肩を並べられるだけの知識がつくでしょう。
基礎を学ぶ事は大変重要です。基礎を学ばないと、学ばかなかった事によっていろんな所でつまづいてしまいます。つまづいて失う時間は基礎を学ぶのに要する時間よりも明らかに大きいので、とても非効率的なわけです。手を動かすときも、「知識があった上で手を動か」した方が作れる物の幅も広がるし、それによって得られる物も大きくなります。
(もちろん、これは「大学の講義の内容なんて学ばなくても、0から同じ内容を自分で再構築できるぜ!」と言い切れるぐらい強い中高生には当てはまりませんが、一応これは普通の中高生向けの記事なので)
というわけで、大学の講義を自習すると強くなれるよ!という所までは伝わったと思うのですが、恐らく中高生の皆さんにとって、大学の授業というのはイマイチイメージがつかないものだと思います。大学では凄く高度な教育が展開されてるから、今の自分には難しいかも・・・なんて身構えたくなる気持ちもわかります。
しかし多くの大学生は、試験直前に慌てて授業資料をWebからダウンロードし、一夜漬けで勉強してなんとか試験を乗り切るものです。よほど良い教員の授業を除いて、教員の講義なんてあってないようなもの。
大学の授業なんてこの程度の物なんですから、中高生の皆さんでも自力でなんとか勉強できそうですよね?
勉強できるという事は、巷の大学生並の強さにはなれそうですよね?
参考として授業資料がダウンロードできるリンクを貼っておきます。
東京大学理学部情報科学科「オペレーティングシステム」
東京大学電子情報工学科・電気電子工学科「オペレーティングシステム」
https://www.eidos.ic.i.u-tokyo.ac.jp/~tau/lecture/operating_systems/
勉強する上での注意として、「スライドをただ読み進めるだけ」というだけではさほど強くなれないので、オススメはしません。それだとそこら辺の大学生と同じになってしまいます。
スライドを読む時は、「自分が他の人にスライドを使って講義できるようになる」ぐらいまで理解しましょう。(具体的にはこの記事を自力で書けるくらいになると良いですね)ほんの少しでも理解していない所が残っていると、それを聞いた人は容赦なくツッコみを入れてくるものです。怖いですね。手を抜かず頑張りましょう。
3. 自分で更に膨らませて考えてみる
勉強しただけで終わり、ではその先の成長がありません。
基礎知識が身についたからといって考えるのを止めず、ふとした拍子に気づいた事やアイディアについて想像を膨らませましょう。
アンテナを広げて、いろいろ情報収集をしましょう。SNSやGoogle検索を活用したり、勉強会に参加したりすると、きっといろいろな学びや気付きがあるはずです。
基礎をきちんと築いた上で得られる学びや気付きは、とても価値のあるものです。それを大切にしましょう。
言うまでもない事ですが、学びや気付きを得たら、手を動かしてくださいね。
4. 手を動かした事をアウトプットする
これは有名な話なので、私がわざわざ書くまでもないですよね。
自分がやった事をブログに書いたり、勉強会で発表したりすれば、いろいろな人に自分の事を知ってもらえて、良い機会に巡り会える事も多くなるでしょう。
長くなりましたが、要するに「基礎をきちんと学び、手を動かし、アウトプットする」事をバランス良くやってね、っていう事です。どれかが欠けてもダメですよ。
いかがでしょう?中高生の皆さんでも簡単にできそうな事ばかりですよね?
補足:大学生の方へ
もしかしたら大学生の方もこの記事を読んでらっしゃるかもしれません。一応誤解なきように書いておきますが、「大学生の場合はここまで書いてきた事を全てやっても、強くはなれません」。
大学の講義をきちんと身につけるのなんて当たり前だし、課外活動だって当たり前。ここに書かれている事は「少し強い大学生」なら皆やっている事です。
この内容を中高生が実践してなぜ強くなれるかというと、彼ら、彼女らには「年齢的アドバンテージ」があるからです。
大学生の皆さんがもっと強くなりたいのであれば、他にもやらなければいけない事があるわけですが、それはまた別エントリで。
宣伝:セキュリティ・キャンプ2018
最後に宣伝させてください。
「強くなるための方法」として上で挙げた内容ですが、最初から一人で全てやる、というのは少し不安ですよね。
そこで、それを私がサポートする機会を作りました。
「セキュリティ・キャンプ2018全国大会」(公式サイト)というイベントがこの夏開かれます。「集中開発コース、YI OS開発ゼミ」の中の「最先端OS談義」というテーマは、「皆さんが自分の力でOS分野で強くなれる」事を目指す物です。まあ、有り体に言えば、このブログ記事に書いてある内容を、私がサポートしつつ実践してみる、っていうテーマですね。
学生の皆さんの金銭面での負担は一切無いので、是非ご応募ください。
私のテーマの詳細については、以下のブログエントリーで解説しています。こちらも参考にしてみてください。