この記事をシェアする?

B!
もしくは、僕についての情報を読む?
むだそくんについて

プログラミングは独学でやれ!大学の「情報工学科」に行くことの意味について

プログラミング

うっかりツイートが伸びちゃうことってありますよね。

 

昨日軽いノリでツイートしたものが、うっかり伸びまくってしまいました。

で、今もなおガンガン批判の声が届き続けています。

 

https://twitter.com/AsceIsAlive2010/status/983199253433540608

 

うん、いや、まあ、ごめんな

僕の言いたかったこととしては「ゲーム作りたいなら受験勉強してる場合じゃない。ゲーム作ろうぜ」ということなのですが、Twitter芸人としてのクセで「君にエンジニアの適性はない」という強い煽りを入れてしまい、ムダに皆を騒がせてしまいました。慎んでお詫び致します。

ただまあ、せっかくツイートも伸びたし注目も浴びたということで、「大学で情報工学を学ぶこと」あるいは「ゲームを作りたい人はゲームを作るべきであり、進学を頑張る必要がないこと」について述べておきます。

 

大体の話としては、

  • 情報工学は学問として非常に面白い。また有益でもある
  • しかし、「ゲームを作りたい」というような”実用”のために学ぶものではない
  • ”実用”がしたいなら、大学受験とか大学行くとかしないほうがいい

というような感じです。よろしくお願いいたします。

 

前提-僕の経歴

慶應義塾大学理工学部情報工学科2016卒。

 

一浪の後、慶應義塾大学理工学部に一般入試で合格しました。

当時は、典型的な「やりたいことがない大学生」でした。何となく「一山当てたい」という感覚はあったので、

堀元
プログラミングやりてえなあ

ぐらいのぼんやりした気持ちはありました。どこにでもいる、ザッカーバーグになりたい気持ちだけあるヤツです。

 

今は慶應理工学部の受験制度がどうなってるのか分かりませんが、当時の受験制度における【学門5】という形態で入学しました。

入学時点では学科は決まっておらず、2年生進級時にいくつかの学科から進学先を選べるという仕組みでした。

僕の入学した学門5からは「情報工学科・管理工学科・生命情報工学科・機械工学科・電子工学科・物理情報工学科」あたりがメインの進学先でした。(成績さえよければ、これ以外でも全ての学科を選べます)

 

で、僕は色々見て回った結果、情報工学科を選択しました。「人工知能」だの「VR・AR」だの「ロボット」だの、引きがある言葉が多くて一番面白そうだったからです。

このように、テキトウに流されて生きてきました

 

で、情報工学科に入り、情報工学を学びました。

学問としての情報工学は非常に面白く、結構マジメに学びました。成績も悪くはなかったです。大学院に推薦で入れる程度の成績はキープしておりました。

 

で、研究室は「人工知能とロボット」の研究室にしました。ええそうです。何か面白そうだったからです。

と言っても、研究室配属後は研究に面白さを見いだせず、卒論はめっちゃテキトウに書きました

関連記事

 

大学院修士課程への進学は推薦をもらっていましたが、研究に興味がなさすぎて途中で進学を辞退しました。

以下、そんな一情報工学徒として書いていきます。

 

情報工学とは何か?

まず、”情報工学”とは何なのかということをまとめておきます。Wikipediaの解説文はこちら。

情報工学とは「情報」を工学的に利用するための学問分野である[1]。情報の発生(データマイニング、コンピュータグラフィックスなど)、情報の伝達(コンピュータネットワークなど)、情報の収集(コンピュータビジョン、検索エンジンなど)、情報の蓄積(データベース、データ圧縮など)、情報の処理(計算機工学、計算機科学、ソフトウェア工学)を扱う総合的な工学分野といえる

Wikipedia「情報工学」より引用

 

むだそくん
って言われてもよく分からん…!

という方が多いと思います。解説しますね。

 

具体的に情報工学科でやったこと-0と1を書きまくる

僕が具体的に情報工学でやったことをご紹介します。

例えば、「計算機基礎」という科目がありました。

この計算機基礎、内容の1つとして、ひたすら0と1の羅列を書いていくという脅威の内容があります。

こういうヤツね。聞いたことがあると思いますが、コンピュータの中の全てのプログラムは最終的にはこの「0と1の羅列」になります。

とは言っても、人間はこの「0と1の羅列」を普通は書けないし読めないので、代わりにプログラミング言語を使うワケです。

 

こういうヤツ

どうですか?これなら読めそうだし書けそうでしょ?

一旦このプログラミング言語を書き、それを翻訳してくれるソフト(コンパイラ)に翻訳してもらうという流れが一般的です。

出典:http://gihyo.jp/dev/serial/01/c-programming-introduction/0001

 

便利でしょ?コンパイラという便利なソフトがあるから、0と1の羅列を書かなくていいワケですね。

 

ところが、僕ら情報工学徒は、0と1の羅列を書くことを要求されます。

衝撃です。人間が書いたり読んだりしなくていいものをあえて書いたり読んだりします

「計算機基礎」の講義では、手が痛くなるほど0と1を書きまくりました。

イメージ

 

なぜそんなことをするのか、という話なのですが、仕組みを理解するためです。

コンピュータの仕組みを理解するためには、内部で何が起こっているかを理解しなければなりません。

 

情報工学科で学ぶことは「コンピュータはなぜ動くのか」

結局のところ、情報工学科の勉強は「コンピュータはなぜ動くのか」ということにつきます。

コンピュータの動かし方」ではなく、「コンピュータはなぜ動くのか」です。

だから、プログラミング言語が書ければ十分プログラムは動くのに、情報工学科ではあえて0と1を書くところまでやります。動作原理を理解しなければならないからです。

 

「動かし方」と「なぜ動くのか」は全く次元が違う話です。

どちらを習得する必要があるのかはやりたい仕事によって異なります。

タクシードライバーになりたい人は車の「動かし方」を理解していれば十分で、「なぜ動くのか」は理解している必要はないです。

しかし、車の整備工になる人、あるいは、全く新しい車を設計する人は、「なぜ動くのか」を理解していなければならない。

もちろん、この2つは完全に分離できません。タクシードライバーだって車の最低限の整備知識は必要ですし、部品なんかについての知識もあるに越したことはないでしょう。しかし一番学ぶべきは「動かし方」です。

 

コンピュータの場合も、車の例と同じです。

やりたいことが「ゲームを作る」なら、学ぶべきことは「動かし方」であるはずです。

しかし、情報工学科で学ぶことは「なぜ動くのか」です。ここに大いなるギャップがあります。

タクシードライバーは必ずしもエンジンの構造を熟知している必要はない、ということが分かっている方なら、ゲームを作るために情報工学科に行く必要はないということを認識して頂けると思います。

 

情報工学は有益であり、面白い。しかし、万人には必要ない

僕は情報工学を学ぶこと自体はとても好きでした。大学2年生で学科に分かれてからの大学生活はまあまあ楽しかったです。

コンピュータの中身はどうなっているのか?アルゴリズムとは何か?UNIXの基本的な知識と操作……そんな専門の内容は知らないことばかりかつ刺激的で、学びがいがあります。

学科に分かれる前、大学1年生の一般教養過程は退屈な物理と数学だらけでしたからね。あの時期は何度「大学やめようかな」と思ったか分からない。

 

大学2年、そこそこに遊びながら、大学の勉強もマジメに楽しくやりました。

1500ページくらいある「アルゴリズムとデータ構造」を読むのが楽しくて全部読んだ日のことをよく覚えています。

僕はこの専門課程での学びは面白かったですし、情報工学を学んだことは後悔していません。シャノンの情報理論を、未だにあちこちで引用しています。

そして、学問として有益でもあります。新しい技術を生むためには、情報工学をしっかり学ぶことが必要です。

 

しかし、「ゲームを作りたい」と言っている人が学ぶ必要があるかと言われたら大いに謎が残ります。

まして、それを学ぶために大学受験に多大なリソースを割く必要は全くないと思います。

 

プログラマーになりたいならまずコードを書け

これはよく知られた大原則なのですが、プログラマーになりたいならプログラム(コード)を書かなければなりません

参考書を一冊読んで、読み終わったらいざ実践!という手順ではダメなのです。

参考書の最初の数ページを読んで、実際にやってみて、色々苦戦しながら成功し、次の数ページに進む……という段階を踏まなければいけません。

 

書いたコードの分だけ、潰したバグの分だけ、プログラマーは成長します

 

だから、まずコードを書きましょう。「大学で学んでからゲームを作る」という発想が、そもそもピントがズレた発想なのです。

ましてや、大学で学ぶことは「使い方」ではなく「なぜ動くのか」です。学ぶべきことでないことを学ぶために、コードを書くのを後回しにしてはいけません。

 

高校時代から頑張ったエンジニアなら、働き口に困ったりしない

最後に一点だけ、批判に回答しておきます

むだそくん
将来のために学歴はあった方がいいのでは!?

これ、学歴必要論と不要論というネットでは太古の昔から繰り広げられている議論なのですが、ことエンジニアに関しては要らないということで良いと思います。

エンジニアは実力主義だからです。特に今エンジニアなんて全然足りてないですからね。

ゲームが作りたくて、高校時代から自分で色々アプリを作ってました!

なんていう、ガッツがあり、技術もあるヤツは引く手あまたです。

実際僕の友人には大学一年生で中退して、色んな企業のCTOを渡り歩いている男もいます。彼は高卒ですが、毎日のようにあちこちからオファーが来ていて楽しそうです。

 

ただし、ビザの問題が絡んでくると別かもしれませんね。

シリコンバレーに行きたい人は違うのかもしれません。僕は知らんけど。

 

まとめ

以上、「ゲームプログラマーになりたいなら受験勉強する前に、1つでも多くのゲームを作りなよ」という内容でした。

現代は非常に便利な時代でして、独学&独力でゲームアプリを作って売ることまでできるようになっています。

そんな時代に大学受験してる場合じゃないですよ。まずゲームを作る。壁にぶつかったら自分で学ぶ。そういうスタンスが最強です。

 

あなたがやるべきこととやるべきでないことをしっかり見分けて、正しい進路選択をできること、お祈りしております。

 

また、情報工学科に行かずにプログラミングスクールに行くという選択があります。プログラミングスクールに行くのは情報工学科に行くよりは全然ありだと思います。その際の選び方のコツとしては

  • 短期間であるもの(長々と学費を払い続けるべきではない。基礎だけスクールで習得して、あとは自分の作りたいものを勝手に作ってスキルアップせよ)
  • 実践的であること(プログラミングスクールでもダラダラ学問をやられる場合がある。そういのは避ける)
  • 終了後のスキルアップにつながるもの(一ヶ月終わって放り出されるのではなく、その後にスキルアップできる環境があることが望ましい)

 

上記のコツをふまえて考えると、「ICTEアカデミー」はコンセプトがイケてるなと思いますのでリンクを貼っておきます。

こちらは一ヶ月限定のスクールで「実践型研修」「無料の住宅補助」「終了後即就職可能」を謳っています。このくらい明確なコンセプトのところに通うのはいいですね。

こちらは無料相談を承っていますので、まずは無料相談に行ってみてはいかがでしょうか。雰囲気を見て自分に合うかどうか確認するのが一番良いです。

 

追記「情報工学の基礎は必要」について

こちらの意見を頂きました。

 

情報工学の基礎的な所を知らないといずれ技術を理解できず詰むことになる。

技術やりたいなら基礎大事。

 

こちら、本当におっしゃる通りです。僕の元の言説に抜けていたポイントですね。ご指摘ありがとうございます。

僕がこの部分についてどう考えているかと申し上げますと、「壁にぶつかったら学んだらええやん」ということです。

タクシードライバーが、「お客様がより快適に眠れる運転をしよう」と心がけて運転した結果、「もっとも良いブレーキの踏み方は何か」→「ブレーキの特性を把握したい」→「ブレーキの原理・部品を調べよう」となり、車の構造について詳しくなっていく、そういう感じですね。

プログラマも同じで、何かを作っている内に「学ぶ必要があるな」と感じたらその都度情報工学を学んでいけばいいのです。そのほうが学びの効率が圧倒的にいい

今はやりのブロックチェーンをしっかり理解しようと思ったら、「データ構造とは何か?」という議論は避けては通れないでしょう。その時に初めてデータ構造をしっかり学べばいいのです。

 

以上、追記でした。「情報工学の基礎を学ぶ必要性はあるかもしれないけど、それはその都度やればいいじゃん」という話です。

 

 

 

関連記事

関連記事

「魔のプログラミング演習」と言われる地獄の講義で得た学びについて。

 

関連記事

ロボットの首をテープで止めたりしながら卒論を3日で書き上げた話。

 

関連記事

Webサービスを10日で作ってリリースした話。

author
Ken Horimoto
堀元 見

インターネットおもしろ雑文オジサンとして生計を立ててます。(性格が)悪そうなヤツはだいたい友達。

最近の主な収入源はnoteの有料マガジン『炎上するから有料で書く話』です。記事が面白かったら投げ銭がてら購読してください。

最近は有料マガジン頑張って書いてます!無料部分もあるのでぜひ読んでね!