Kohaku Lab

ガジェットとカードが好きな人のブログです。

プログラミングがしたくて電通大に入学した人へ

これはUEC Advent Calendar 2014の23日目の記事です。昨日は、numa08さんのライブコーディングやってた話 #libcodingsoでした。

こんにちは。alstamberです*1電通大と関係ない話をするつもりだったんですが、せっかくのUEC Advent Calendarですので、電通大に絡んで「電通大とプログラミング」という話をしたいと思います。

プログラミングをしたい人は多いらしい

なんか電通大ってプログラミングがしたくて入学してきた人が多いらしいですね。僕はそうでもなかったんですけどw 電通大にある4つの学科のうち、総合情報学科と情報・通信工学科には、曲がりなりにも名前に「情報」が入っているので、一定数の「プログラミングしたい人」がいるんじゃないかなと思います。

ただ、入学してしばらくすると皆さん気づくんですが、総合情報学科や情報・通信工学科だからといって別にプログラミングだけしてればいいってわけじゃないんですよね。電通大は、情報系の学科を持っている以前に、理工系の大学ですから、理工系の大学を出た人間に期待される知識を身につけさせようとします。そのために、それなりに広い分野の講義を取らないと卒業できません。これ自体、私はとても良いことだと思いますが、時々「健康論やるために大学来たんじゃねえ!」とか荒れている人がいたりもしますw

大学の授業だけでは足りない

たまに、大学の授業に出て勉強していればプログラミングができるようになる、と勘違いしている人がいますが、これは正直ありえないでしょう。プログラミングは、実は外国語とよく似ています。外国語を学ぶと、自分と言葉が違う人に対して何かを頼んでやってもらう、ということができるようになります。同じく、プログラミングを学ぶと、人間とは全く物事の処理の仕方が異なるコンピュータという存在に仕事をさせることができるようになります。学校の授業だけ受けていてもなかなか英語が話せるようにはならないのと同じように、学校の授業だけでプログラムを書けるようになるのは難しいです。

そもそも、電通大の情報系学科では、情報工学の基礎を教えているのであって、実務的なプログラミングを教えているわけではない、という点もあると思います*2情報工学の基礎は、情報を取り扱う人間として知っておくべきですし、電通大で教えられている内容は、基礎知識としておさえておきたいものばかりです。しかしそれだけでは、多くの人が持っているであろう「プログラミングがしたい!」という欲求は満たされないのも事実です。

とりあえず手を動かしな

私の周りは、幸いにしてプログラムスキルの高い人がたくさんいます。もちろんスキルが高いといってもいろいろな人がいますが、皆に共通しているのは、プログラムを書いているという事実です。プログラムを書いていると言っても、色々なパターンが有りますけどね。

  • Haskellで高度に抽象化されたコードを書いて「美しい!」とか言ってる人
  • Webアプリとかかっこよさそうだから、とりあえずいろんなWebアプリフレームワークをいじってる人
  • Android向けの公式Twitterクライアントが腐ってるいまいちなので自分で作った人
  • ある問題を0.01秒でも速く解くプログラムを書くことに喜びを感じる人
  • これからは拡張現実の時代だと思ってOcculus Liftを買っていじってみたはいいもののいまいちだなあと思っている人

まあ様々ですね。「プログラムが書けるんだから、プログラムを書くこともあるだろう」と思われるかもしれませんが、皆最初は地雷を踏んだり、わからないところをググったら英語サイトしか出てこなかったり、時にはそういったことをくぐり抜けて知識をつけていると思います。自分の手を動かして身につけた知識は、身につくスピードが違いますし、自分だけの財産になります。

プログラミングできるようになるまでの環境構築とか、それぞれの言語を触った時の感想とか、ヨチヨチ歩きながらも動いているアプリケーションに対する感情とか、そういうのは手を動かさないと得られないですし、そういったものの積み重ねが「プログラミングスキル」につながると思います。

つくっておぼえるプログラミングワークショップ

上で述べたような考えに基づいて、今年の春にMMAとして「つくっておぼえるプログラミングワークショップ」というイベントを開催しました。これは、実際に手を動かして今まさに使われている言語やフレームワークをいじってみることで、手を動かすことによってしか得られないものを得てもらうことを目的に開催したものです。運営にあたっては、様々な問題も発生し、それは反省点ですが、結果として参加者の多くの方から評価の声を頂くことができ、決して無意味なものではなかったと確信しています。

手を動かすときに意識したいこと

手を動かすと言っても、ある程度意識しておいたほうがいいことも有ります。

道具はちゃんと整える

プログラマにとっての開発環境は、料理人にとっての包丁です *3。包丁はいいものを使いましょう。メモ帳でプログラムを書くなどというのは論外です。まずは、きちんとしたエディタを使うか、統合開発環境を導入します。慣れてくれば、より開発を便利にするツール群を入れていくと良いと思います。基本的にこうしたツールは無料で配布されていたり、本来有料でも学生向けには安価に頒布されていたりします。拘る人は、キーボードやディスプレイにも拘ります。

慣れてきたらきれいなコードを書くことを意識する

「自分それなりにプログラミングできるようになってきたな」と感じているのであれば、きれいなコードを書くということを意識したいものです。経験則でしかありませんが、「動けばいい」というだけの指針で設計されたコードは、往々にしてゴミなことが多いです。それは、実行速度が遅かったり、新しい機能を追加したいと思った時にすごく面倒くさいことになっていたり、バグがどこにあるのかさっぱりわからなかったりです。

長い経験則から、美しいとされるコードの法則が知られています。この法則にならうことで、ゴミコード化を回避できる確率がグーンと上がります。やはり美しいコードを書く人は、できる人だなという印象を受けますし、プログラミングスキルも高いと感じます。

コードのあり方の指針を示した名著として「リーダブルコード」が有ります。プログラミングをやっている人なら、ぜひ一度は読んで欲しい本です。

Amazon.co.jp: リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice): Dustin Boswell, Trevor Foucher, 須藤 功平, 角 征典: 本

そんなこんなで

電通大にもっとプログラミングする人が増えていくといいなと思います。お金もそんなにかからないし、人っこ一人が自分の力だけで世の中にインパクトを与えられる数少ない行為だと思いますよ。

明日はminpou_さんです。

*1:hatenaのIDは違うけど

*2:これは、他のどの情報系の大学・学部でも同じだと思いますが

*3:DeNAのページに書いてあったやつのパクリです