読者です 読者をやめる 読者になる 読者になる

明日になったら本気出せる

底辺Web系エンジニアの日記

どうやってプログラミングを学んだか

知人がゲームを作りたいらしく試行錯誤してるらしく、少し前にゲーム作るのに言語は何がいいかということを聞いていた。この問題は割と昔から考えてる問題なんだけど、未だに自分の中で答えが出ない。目的ありきで考えていくのが一番いいと思うんだけど、プログラミングって最初のとっかかりがなかなか掴みづらいのが難しいところだと思うんだよね。

目的別で考えるなら下のサイトはよくまとまってると思う。

どの言語を学ぶべき? - プログラミングスレまとめ
http://vipprog.net/wiki/which_lang.html

そういや僕はどうやってプログラミングに触れたかなーと思ったので時系列的に書いてみる。

出会いは中学生

はぢめてのぱそこん

大体13年前の話。初めてPCを買ってもらった。NECバリュースターのスリムタワーだったかな。OSはWindows98SEだった。正直その当時はPC持ってる友達が羨ましくて、ぶっちゃけ何に使っていいのかさっぱり分からなかったまま買ってもらったんだよね。それでも買ってもらった時はほんとに嬉しかった。

で、当時はPC買ってもらったはいいけど何していいか分からなかったので、PC持っていた友達に勧められたWindows100%という雑誌を毎月買っていた。半分以上はその雑誌の後半部分にあるアダルトコーナー目的で、気に入ったヌード写真を収集するのが毎月の楽しみだったのだが、それ以外にもPC初心者だった僕は大分この雑誌で鍛えあげられたと思う(いい意味でも悪い意味でも)。

ある時その雑誌でHSPというプログラミング言語に関する特集をやっていた。
当時中学生だった僕はプログラミングに対するイメージなんて英語の羅列を高速でタイピングしてカッケー!!!みたいなイメージしか持ってなかった。で、実際に触ってみたんだけど何が作れるのかよく分からん。
とりあえずサンプルのまま作ってみて、その後数学の問題を画像で表示して答えを選択、最後に合計点を表示するというすごく簡単なプログラム組んでたなぁ。あぁなんて懐かしい。

その後、HSPの専門書を買ってみたのはいいものの、RPGを作ろうみたいなところでわけがわからなくなって挫折した。

HSPについて

割と当時はHSP自体が新しいものだった(と今知った)ので、当時と大分言語仕様が違う感じがする。かる~く触ったり調べたりしたところ以下のような感じかな。

軽くプログラミングがどんなのかなーと触れるにはいいと思う。ただ割と独自実装が多い気がするので、他の言語もできるようになりたいとか、ちゃんとプログラミングについて学びたいという人は最初からそっちをやったほうがいいと思う。個人的はオブジェクト指向プログラミング言語でないというのは相当痛い。ただ小学生向けの本もあるくらい取得難易度は相当低い。さらっとリファレンス読んだだけでどんな感じか分かるし、これが最大の強みなんだろうね。
Win32API叩けるらしくやろうと思えば色々できそう。まぁそれをするくらいなら別の言語使ったほうが手っ取り早いが。

微妙な高校時代

リア充は爆発

このころは部活やら女やらに明け暮れていたので特段なにもしてない。HTMLをちょこっと書いて、コピペレベルだけどバッチファイル作って、CDに焼いてautorun.infでバッチファイル⇒ブラウザ⇒HTMLみたいなことしてた記憶はあるけどそれくらいか。

閑話休題「どこからプログラミング言語なのか」

人によって意見が分かれる部分その2。まぁどう捉えるかなんて個人の自由だけど、僕は以下のようなイメージ。

プログラミング言語でない HTML CSS UML Tex
きわどいライン SQL shell、バッチ

躍進の大学時代

再びプログラミング言語を触る

とは言っても大学の履修科目で否応なしにという感じだった。C言語。確か大学はSunOSだったな。真っ黒い画面に延々となんか作業させられてる感じで、正直くっそつまらなかった。ここからどうやってゲームが作れるのかめっちゃ疑問だった。ただ成績はよくて、よく課題を同期に教えていた。ポインタ付近で挫折する人がめっちゃ多かった。

今でも忘れない納得出来ない採点

文字列で表現された数値をint型に変換しなさい。

#include <stdlib.h>

main() {
  int num;

  num = atoi( "123" );
}

確かこんな感じの回答したら不正解だった。いや、問題の意図は理解できるよ。そういう関数自作しろってことでしょ?ただこれでも正解なんだからいいじゃねーか。これを不正解にするんだったら問題文が悪いわ。

ゲームを作る

せっかくC言語覚えたのでこれで何かゲーム作れないかなーと思って調べたらDXライブラリというのにたどり着いた。多分この出会いが僕のプログラミング技術の原点なんじゃないかなと思う。

DXライブラリ置き場
http://homepage2.nifty.com/natupaji/DxLib/

このライブラリ使ったゲームを公開してるサイトがあって、東方みたいなシューティングゲームの作り方をすごく丁寧に解説してくれるサイトがあったんだよね。

新・ゲームプログラミングの館
http://dixq.net/g/

このレベルのゲームを作れると思った時はもう心が震えたね。で、このサイトを見ながらほんとに一からコーディングしながら勉強した。あの時は何もかも新鮮でコントローラーでキャラが動いたり、敵が出てきたりしただけでなんというか大喜びしてた(笑)。

で、この勉強を糧にして自分でもオリジナルのシューティングゲーム作ったりした。ミッション性で敵を倒すとお金がもらえて、インターミッションで武器が買える。装備の概念(自分の当たり判定可視化、当たり判定縮小、スピードUP、DOWN)。選択するミッションでマルチエンディング。他にはアクションゲームも作ったなぁ。しょぼんのアクションに感化されてという感じなんだけど。

今この作った作品はどこかにいってしまったんだけど、とてつもなくひどいコードを書いていたのは記憶にある。まぁそれでもちゃんと動くものが作れたっていうのはとてもいい経験になった。今更ながらこのサイトにはとても感謝してる。実はこのエントリーはそれが一番言いたかったりする(笑)

別の世界へ羽ばたいた社会人

で、作ったゲームで就職活動したらすぐに内定もらえた。
書くのに飽きてきたので省略!

PHPJavascriptC#を主にやった。まれにC++ってくらいかな。最初PHPやった時は型がないのに戸惑った。

そして現在

暇な時にPythonで遊ぶ日々。シンプルな言語仕様でいろんなことができて楽しい。selfとタイプするのが速くなった。