いんたーねっと日記

141文字以上のものを書くところ

プログラミングを始めたきっかけとかの話

僕がプログラミングをはじめたきっかけ - ごみ箱あたりで、中高生ぐらいのプログラマーがプログラミングを始めたきっかけとかどんな言語が好きかなんていう話を書いていて、中高生じゃないし今年で23くらいになるけどせっかくなので参加してみる。

使ったりしてる/した言語

Ruby
いちばんまともに使える。何か作れといわれたらまずRubyを使うとおもう
HTML/CSS
HTML5とかCSS3とかたのしいですね。GUIのついたプログラム作るのめんどくさいし、Webブラウザならいろんな端末で使えるんだからWebアプリで済むようなものならWebアプリにしちゃえばいいと思ってる。
JavaScript
書いてて楽しいし、上に書いた理由でいろんなことをWebブラウザ上でやりたいので書きまくる。
HSP
たぶん初めて触った言語。というだけでしかない。
PHP
HTMLの中にプログラムが書けてWebサービスが簡単に作れる!!!すごい!!!!って思っていた頃が僕にもありました。今は書いてるうちにウェーってなってくるけど、以前はけっこうお世話になりました。
Python
書けたらいいなと思いつつ、ぜんぜん触ってない
Processing.org
(言語ですらないけど)プログラミングを学ぶ上で非常に楽しかったので思い入れがある。簡単にきれいなグラフィックが作れるのはなかなか感動的だった
LISP
真理
Java
の話はやめろ。SunSPOTいじるときにちょっと触っただけ
C/C++
の話はやめろ。計算機工学みたいな感じのことをする需要で読みはするけど自分で書こうとは思わない。

大学入学までの話

アマチュア無線家の父親が大昔からPCも使っていたので、たぶん生まれた頃から家にPCはあったと思う。本格的にPCに触れたりしたのはWindows95が出た頃で、父親が自分以外の家族にも使えるようにPCを買ってきたあたりだった。このPCを買う少し前、父親がタッチタイピングを覚えさせるために英字タイプライターをくれたのは、今思うと異常な出来事だった。そのおかげかタイピングは当時からかなり速かったはず。
本格的にインターネットを使うようになったのは2000年ごろで、それまでISDNだった回線がケーブルテレビにして1Mbpsの常時接続環境になった。このころに悪名高きホームページビルダーによって最初にWebサイトを作成した(ことはなるべく記憶から抹消したいですね)。
このへんのどこかでHSPを触ってみたりしたのがたぶん最初のプログラミングで、ただ大したものを作ることもできずにわりとすぐに放り出していた。
ホームページビルダーがクソだと気づいてちゃんとエディタで作るようになってからはHTML-Lintで100点を取るのが目標になって、意識してきれいなサイトを作るようになった。配布されているCGIスクリプトを設置したりはしていたのだけど、自分でそれを作ってみるというところまではやらなかった。というかどうやって勉強していいのかよくわからなかった。いちおうやりたかったのは確かで、PerlRubyPHPHello Worldしたりはしていた。たぶんこれくらいの頃にfizzbazzくらいは作れたんじゃないかと思う(けど、当時はそういう問題を出してくれる人もいなかったし、プログラミングの本も読まなかった)。
文字を表示するだけのプログラムはすぐ飽きたし、Webサイトに使うCGIはそこらじゅうに転がっていたし、GUIなプログラムはコードが難しすぎて独学できそうになかったのでそれ以上さわらなかった。
2004年(高校1年)あたりにブログブームが発生して、そのころにCSSでブログのテンプレートをいろいろいじったりして、floatだとかposition:absoluteとかをバリバリ使うようになった。あとPHPでメールフォームみたいなのを作ったりした記憶もある。
ブログブームのときに衝撃的だったのはRSSやAmazonのAPIの存在で、XMLというものが素晴らしい未来を作ってくれるように感じたりしてしまっていたのも高校の時だったような記憶がある。そういう経緯でcronでPlaggerを回したりもしていた。Ruby On Railsに最初に触れたのもこのころだった気がするけど、当時は動かすサーバーもなかったし自習するための資料もあまりなかったので、10分でブログ作るとかすごいなー、自分には無理だなー、で止まっていた。

大学入学以降

中学高校の間、Webデザインはいろいろやったけれどもプログラミングはあんまりマトモに勉強できなかったので、本格的にプログラミングをやり出したのは大学に入ってからだと思う。
このころに出会って衝撃を受けたのがProcessing.orgで、たしかWebデザインの授業の初回で紹介されたような記憶がある。履修の記録にはその授業がないのでたぶん独学でいろいろやったはずなのだけど、USBカメラの画像を処理したりするプログラムをいじったりしていた。このへんがたぶんコードをまともに書けるようになった最初の経験だと思う。
大学に入ってすぐの電子工作の授業ではなぜかBASIC STAMPという、BASICでプログラムが書けるマイクロコントローラみたいなのを使っていた。この授業ではAVRとBASIC STAMPのどちらかを使う事になっていたのだけど、C言語がこわかったのでBASICにした記憶がある。今思えばAVRにしておけばよかった。C言語にはそのあと、1年生向けのプログラミングの授業でもう少しまともに触れることになるのだけど、その授業は入門用すぎてポインタのポの字も出てこない、ループしたり条件分岐したりするだけの内容だったので、Processing.orgなどをいじっていた僕にとってはあまり面白くなく、CやC++にまともに触らない道へ進むのに一役買った。
研究会に入ってからは相変わらずProcessing.orgで画像処理をしたりしていたのだけど、同時にLispの授業を受けたり独学でRubyを使ってTwitter botを作ったりするようになっていた。Rubyのことがいろいろとわかってきて、だんだんと動的言語が楽でいいじゃんという気分になってきたのがこのころ。
電子工作も、BASIC STAMPのあと最初はPICを使っていたのだけど(研究会にPICを使っている人がいたので)、Arduinoが大学の中で流行りだしてからはProcessing.orgっぽいしこれでいいじゃんという気分になっていた。Arduinoだとほとんどなにも考えずにコードが書けてしまうので、そのぶんハンダ付けの仕上がりなどに凝るようになっていった。
大学4年生にもなると、Ruby信者のTwitter Bot作者として周囲に知られるようになって(@SFC_wellnessという大学の体育の授業の予約状況をpostするbotを作ったりしていた)、Webサービスを作るような研究をやりだしたのでもはやRubyとHTMLとCSS以外の言語を使わなくなっていた。このころからJavaScriptにも凝るようになって、そこでLISPでの経験から悟りのようなものが見えた気がして一人で興奮したりして、リア充爆破だとかTweetshootingだとかを作ったりして、GAE+JRuby+SinatraとCrhome拡張で卒研のシステムを作ったりして、大学院に入ったりして、今に至ります。

まとめ

こうやってまとめてみると、結局自分にできることは本当にたいしたことがなくて、たまたまなんとなく自分に使えそうだなぁという程度の基準で選んだ言語でできそうなことをやってきたに過ぎなかったような感じがする。Webや電子工作はちょこちょことやってきたけれども割と中途半端だし、OSネイティブなGUIを使うプログラムとかは全然書いてないことに改めてショックを受けたりもした(この件については研究室の同期からちょくちょくディスられている)。
このシリーズを書いている他の中高生たちは、中高生のころからもっとすごい経験をたくさんしていて、たぶん大学を出るような歳になる頃にはさらにすごい人材になっているだろうと思う。そう思うとすこし悔しい。自分がすんなりコードを書けるようになった理由としてたぶんWindows95のPCが家にきたときからの積み重ねはあっただろうけど、もう少し忍耐強く、本や機材を買って勉強していればよかった。
とはいえ、中高生プログラマーが本当に幼いころから神童のようにコードを書いていたのかといえば、記事を読む限り必ずしもそうではなくて、意外と最近(ここ数年)だったりするのは少し驚きだった。がんばろう。