小学生の頃からプログラミングを始めて15年で平凡なプログラマに着地したやつの話をだらだら書く

インターネットのプログラマ、人間味が感じられない。人間である以上、当然ながら人生というバックグラウンドがあるのだろうが、それがわからない。なんか突然ぽっと出てきて突然プログラミングできましたみたいな雰囲気を放ってる。今は日常のぼやきを観測できるツイッターがあるからまだマシな方で、2chの時代ではもう本当に天上の存在で、まさに「神」であった。

しかも過去を語らせても、小学生の頃からコンピュータを買ってもらって雑誌にゲームを投稿したとか、高校生でスマートフォンアプリ作って大ヒットとか、大学生でウェブサービス作って一山当てたとか、そんな話ばっかりである。

もちろん、プログラマだって冷酷キーボード叩きマシンではなく、同じ血が流れいる人間と信じたい。でも無理なんだ。遠いんだ。実績が違いすぎる。

技術の話や向上心の話よりも、人間であることを知りたかった。自分も同じことができる可能性があるんだと、信じたかった。バケモノの話が溢れすぎている。人間の話を聞いて、自分の自信にしたかった。

だから、私はここで自分語りをしようと思う。ただの人としての自分語り。小学生からプログラミングを続けて、15年経って、ろくな成果を出せなかった人間として。ただの小学生が、ただのプログラマになる話を。ヤマもオチもイミも緩急もないが、読んでほしい。

この記事には主張したいことも強調したいこともないが、「こんな人間もいる」ということを認識してくれればそれでいいかなと思う。この記事を踏み台として、誰かの自信になってほしい。

でも刺身タンポポみたいなテンションで書いてたら疲れるから今回は普通に書かせてくれ。

はじまりはホームページ

プログラミング、というかパソコンに初めて興味を持ったのが小学生高学年だった。小学校にもパソコンの授業が取り入れられ、4年だか5年だかでやらされた。興味なんてなかったのに。

授業はつまらなかった。なんか変なペイントソフトであそんだり、表計算ソフトっぽいので時間割表作らされたり、とにかく退屈だった。

ただ、自由時間があった。全てが変わったのが自由時間だった。友達に見せられたFlashで爆笑し、ゲームの攻略サイトを見て情報量に驚き、iフィルターに引っかかってがっかりして。

そしてなんの偶然か、その頃ちょうど「自分が自由に触れるパソコン」が家にやってきた。しょぼいスペックのWindowsXPマシンだった。それでネットサーフィンをしたり、付属のよくわからないゲームを遊んだりしていた。

ゲームの攻略掲示板やFlash情報掲示板、たまにおっかなびっくりしながら2chも覗いて、いろんな情報を知った。当時は「ひとりが立てたwikiに寄ってたかって情報を書き込んでいく」のような文化はなく、いろいろな個人がサーバを借りて作ったホームページが主流だった。そもそもwikiとかまだ存在してなかった気がする。

そうこうしてるうちに、ホームページ(ウェブサイト)というものに興味を持った。ホームページビルダーというソフトを使えば簡単に作れるのだと知り、親にねだって買ってもらった。無料レンタルサーバ(ジオシティーズだったかな?)を借りて、ホームページを作った。これが初の「作品」になる。

初めて作ったのはゲームの攻略サイトで、たしかロックマンエグゼの攻略サイトだったと思う。違ったらごめん。当時入り浸っていたと思われる「エグゼクティブ」というロックマンエグゼの攻略サイトの影響だろう。

もちろんこんな「大手」に敵うはずもなく、攻略本にも勝てるはずはなく、内容はショボかった。ただ、楽しかったのは覚えている。

そうしてホームページをいじっている間に、ホームページビルダーでは限界があることを知った。ネットで「ホームページビルダーはクソだ。自分でHTMLを書いたほうがいい」という意見を何度も見かけた。ホームページビルダーにはマウスで要素を配置できるモードと、HTMLを直接編集できるモードがあった。いろんな「HTML講座」ホームページをめぐり、いろんな試行錯誤をしながら、自分でHTMLをいじっていった。私のホームページは見違えるほど綺麗になった。これが、たぶん初めての「プログラミング」だ。HTMLをプログラミング言語として数えるかは、怪しいところがあるが。

調べているうちに、「CSS」や「JavaScript」という存在も知った。CSSはなんの役に立つのかわからなかったが、JavaScriptを使えばマウスに星の画像を追従させたり、右クリックを禁止できるということがわかった。もちろんJavaScriptなんて理解できるはずもなく、そのままコピペして、文字列だけ書き換えて、自分のホームページに設置した。ボタンを押すとメッセージが表示される。最高の気分だった。

掲示板(フォーラム)やアクセスカウンタ(PV数を表示するカウンタ)も設置したくなってきた。KENT WEB等から拝借し、頑張って設置した。

CGIプログラムの設定を書き換え、言葉の意味もわからず「パーミッション」を設定し、動作させて、ご機嫌だった。掲示板にはほぼ書き込みがなく、アクセスカウンタはほぼ回らなかったが、それでもよかった。友達に自慢して回った。パソコンの授業中に見せびらかした。

ありとあらゆる面で拙かったし、内容も薄っぺらかったけど、それでも、毎日ワクワクしていた。

Goluah!!とC++

2chは怖いところで、近寄らないほうがいい。そういうイメージが、なぜか自然にできていた。ただ、調べ物をしていればときどき目に入ってくるし、誰かのホームページの掲示板にURLを貼り付けていく人もいた。恐れを知らない友達から、2chの面白い話を聞くこともあった。Flashでは2chのキャラがいっぱい出てきた。2chはどんどん身近になっていった。警戒心は薄くなっていった。そしていつのまにか入り浸るようになっていった。

そして「Goluah!!」という格ゲーに出会った。このゲームは2chで制作され、C++というプログラミング言語でプログラムを書くことにより、勝手にどんどんキャラクターを追加していけるゲームだ。「格ゲー」自体が初めての体験で、新鮮だった。そしてなにより、「自分でキャラを作ってゲームに追加できる」というのは、とても魅力的だった。

自分でも、キャラを作ろうと思ってしまった。小学生が、である。C++で、である。

まず、なにやらコンパイラというのがいるらしい。Borland C++ Compilerとかいうのが無料で手に入って、それで作れるらしい。エディタとかいうのがいるらしい。何を選んだかは忘れたが、たぶん秀丸の体験版あたりだと思う。

まあ、当然、無理だった。頑張って頑張って、2chでわけのわからない質問をしてボコボコに叩かれ、全くコンパイルは通らずにいた。そもそもイラストが用意できないから他所様のキャラからファイルをパクってきて作ろうとしていた。挫折するのにそんなに時間はかからなかった。

これがたぶん、HTML/JSを除けば初めてのまともなプログラミングとの出会いだったと思う。初めてのプログラミングは、何もできずに終わった。そりゃC++は無茶だろ。

中学校とゲーム作り

中学に上がると、突然Flashを作りたくなった。なぜかはわからないが、作りたくなった。たぶんFlash動画やFlashゲームをたくさん体験して、興味を持ったんだろう。当時はネットコンテンツといえばFlashだった。Flashには全てが詰まっていた。

Flashの開発ツールは有料で、おじいちゃんに買ってもらった。Flash MX 2004 Professionalだったと思う。8万円だったのは覚えてる。Pro版の機能なんて一切使わないのにね。ついでにパソコンも買い換えてもらった。BTOで。合計して家が傾く金額だったと思う。

Flashは単なるプログラミングだけではなく、ドラッグ&ドロップで操作できるエディタを使っての作成が可能だった。もともと動画作成向けのものなのだから当たり前だが。マウスで画像を配置し、配置した画像に個別にプログラムを書き込むことでコンテンツを動作させることが可能だった。シーン管理機能なんかも標準搭載だった。当たり判定も簡単に取れた。C++でGoluah!!のキャラを作るより圧倒的に簡単だった。今で言うUnityみたいな立ち位置だと思う。

本屋にはFlash入門の本が大量に並んでいた。とにかく片っ端から買い込んで、全部試した。ネットのFlash講座も全部目を通した。トゥイーンの使い方から始まり、ボタンをクリックしたら絵が変わるプログラム、シューティングゲーム、RPG、いろいろ作った。もちろん内容を書き写しているだけでなんの理解もしていないし、今考えるとどの本もあまり良い作り方ではなかったと思う。

練習を繰り返しているうちに、しょぼいFlashを作れるようになった。「雪が降るFlash」「音楽に合わせてテキストを出しただけのヌヌネノのFlash動画」「ペーパーマリオRPG吹き出しメーカー」「メイドインワリオのアシュリーの15パズル」、いろいろ作って2chに投下してた。本場のFla板だとみんな目が肥えてるから、AA板とかゲーム板とかで。

徐々にゲームを作るようになっていった。「ジエンの横シュー」とか、「2chクイズゲーム」とか。どれもマウスで画像を配置して、本の内容をコピペして、ちょろっと書き換えただけのものだった。それでも2ch住人は褒めてくれたし、ある程度の満足感はあったが、なにかモヤモヤがあった。

途中で横道に逸れて、U=GIさんの2ch格ゲーのFAQサイト作ったり、ゲームの攻略サイトを作ったりで、なんとか気分をごまかしていた記憶がある。このあたりから↓の話は時系列をあまり鮮明に覚えてないので、実際は前後する可能性はある。

Flashから逃げたい気持ちが重なり、Tonyu Systemというものの存在を知り、手を出した記憶がある。これはゲーム特化の開発環境で、ネイティブアプリを作れた。

Tonyuを使って「房津」スレに「フサベーダー」を投下した。内容はたしか、「つー」が「フサギコ」を撃ち落とすインベーダーゲームだ。もう確認できないので合ってるかはわからんが。

今となってはダウンロードはできないが、評判はそこそこよかった。できは悪かったが。「フサベーダー」は私の人生の中での数少ない成功例になる。このときは最高に気持ちよかったし、自分が天才なのではないかと錯覚した。

Tonyuは楽だった。それでもやっぱりFlashで上を目指したいと思った。ブラウザ上で動くのは魅力的だからだ。lzhをダウンロードして解凍してexeファイルをダブルクリックしてください、なんて言ってたら誰も相手にしてくれない。

nextFrame(!)のTANAKA_Uさんみたいになりたかった。艦砲射撃を作りたかった。SeventhSkyを作りたかった。

Flashの本をたくさん読んだ。オブジェクト指向の本を読んだ。デザインパターンの本を読んだ。fladdict(深津貴之さん)を読んだ。clockmaker(池田泰延さん)を読んだ。yossyさんのブログを読んだ。hakuhinさんのホームページを読んだ。にゃあプロジェクトを読んだ。

なにもわからなかった。「クラス」ってなんだ。「イベントをディスパッチする」ってなんだ。三角関数って、行列ってなんだ。何も頭に入ってこなかった。

まずActionScript(Flashで使われる言語)がわからない。なんですごい人は一箇所にまとめてプログラムを書くのか、なんで個別の画像にバラバラにプログラムを書かないのか、さっぱりわからなかった。「動的生成」の意味がわからなかった。オブジェクトプールの意味も作り方もわからなかった。

勉強したのに、本を読んだのに、手を動かしたのに、なにもわからなかった。ただ思考の世界が違うことだけがわかった。自分の知能が全く追いついてないことがわかった。

2chで質問をしても、そもそもなにがわかってないのかがわかってないので、要領を得ない日本語を吐き出し、2chねらーが困惑するだけというのがいつもの流れだった。何度も叩かれ、怒られた。質問すること自体が億劫になった。

正直、メールでも送れば、あの有名な人たちは答えてくれたと思う。でも、それをする勇気はなかった。距離感があった。怖かった。怒られるんじゃないかと思った。

Sparkプロジェクトも私にダメージを与えた。Sparkプロジェクトは、当時のFlashではわりと珍しい、ソースコード共有プロジェクトである。

全部コードを見ることができる。でもさっぱりわからなかった。使い方もわからなかった。運営の誰かが「もっと躊躇せず参加してほしい。これ(秀樹が還暦するまでのタイマー)みたいなのでもいいんですよ」と言ったのを覚えている。でも秀樹還暦タイマーのコードすらわけがわからなかった。

たぶんもっと頑張ればちょっとは理解できたんだと思う。でも当時は正直パニックで、脳が理解を拒んだ。結局、なにもわからないまま自信がなくなり、Flashからは遠ざかっていった。

大学とJavaScript

高校はなんもしてない。勉強してただけ。あとホームページ作り。

大学は運良くか運悪くか、情報系の学科になった。記念受験したら受かったので仕方なく行くことにした。記念受験といっても、世間からみたら真ん中ぐらいの大学だとは思うが。

大学ではC/C++/Java/Ruby/Prolog/Octave/CASLIIあたりを学んだ。Cは1年の必修授業だったのでなんとかなる難易度だったが、JavaやPrologがきつかった。特にJavaなんてFlashとそう変わらない。必修部分だけは難易度が異様に低いのが救いだった。Prologはいまだにわけがわからん。

JavaとかC++とかやると、Flashと似たような知識が必要になってきた。クラスとか、型とか、デザインパターンとか、そういうのだ。ここでちょっと気合いを入れ直して勉強した。なんとなくだが、危機感があった。さいわいなことに大学の図書館には本がいっぱいあった。空き時間は図書館に行って、ひたすら本を読んで、ノートPCでプログラム組んでた。家でも本をいろいろ買って勉強した。今になって考えるとわけのわからん駄本も混ざってたが、とにかく必死だった。学部4年間と院2年間と休学2年間、合計8年間、ずっとプログラミングの勉強してた。あっちの言語やったりこっちの言語やったり、触るフレームワークはバラバラだったり、本を取っ替え引っ替えして、効率はとてつもなく悪かったと思う。バイトとかはせず(今考えるとプログラミングのバイトした方が良かったんじゃ?)、ひたすら勉強に明け暮れた。

学校の成績とか、就職の武器とか、そんなのじゃなくて、単純になにかがヤバいと思ったのが原動力になっていた。人生のほとんど全てをプログラミングにベットしてきているのに、そのプログラミングが他人よりできないとなると、もう生きている価値はない。そして、この大学は記念受験で通ったところだ。周りの頭が(私からみて)べらぼうに良い。できるやつはすぐ私を追い抜いていく。少なくともプログラミングだけは抜かされるわけにはいかないと思った。

あと、情報学科ってパソコンずっといじってるところだと思ってたから座学の多さにはびっくりした。線形代数とか微積分とかやると思わないでしょ。なんで論理学?オートマトンとか初めて聞いたわ。グラフ理論ってなんだよ。

この頃もまだホームページを作っては消し作っては消ししていた。小学生の頃と比べると、CSSを学び、JavaScriptも少しは使えるようになっていたので、ある程度のサイトが作れるようにはなっていた。たしかVPSが流行り始めていたのでそれを借りて、自分でウェブサーバ構築をやってみるなどもした。Linuxなんてろくに使えないから、苦労はしたが。

ホームページ作りをずっと続けていた理由はわからない。ただ、それ以外にできることがなかったから続けていたんだと思う。運動も勉強もダメで、趣味もダメ。ゲームも下手。人生向いていない。人生におけるプラスがせいぜい「ちょっとパソコンが得意」ぐらいで、そこから離れたらもはや死ぬしかない。そのパソコンすら危うくなってきてるのだから、すがりつきたくもなる。

そのうち「Flash、死ぬんじゃね」って声が各所から聞こえ始めた。スマホの普及開始である。それと同時にHTML5という話が聞こえ始めた。HTML5とやらに手を出してみるかという気分になって、ついでにDartにも手を出した。ウェブをやっていこうという気持ちになっていた。

先述の、大学生活通してのプログラミング猛勉強のおかげでDartもJavaScriptもそう難しく感じなくなっていた。HTML5もすんなり飲み込めた。急に馴染んだ感覚がした。

Twitterのフォローつながりでホームページづくりを手伝ってみたりもした。ホームページなんて時代遅れだったが、個人サイト作りたい人とか、特設ページ作りたい人とか、意外といた。あまりうまくは作れなかったと思うが、いい経験にはなったと思う。

大学院に入った後ぐらいだったか、ブログを開設した。Dartのことを広めるためである。皆さんご存知の通り、Dartはもうほぼ死んだが(Flutterは生きてるか……)。

家の諸事情で院を休学していたのだが、その間にDartの雲行きが怪しくなり、生のJavaScriptを勉強しようと思い立った。元からある程度やっていたので、ついていけると思ったからだ。この辺りでブログも方向転換し、JavaScriptをメインに扱うようになった。自分の勉強がてら、1ヶ月に1回更新するように決めて、新しい知識をどんどん取り込んで行こうと目論んだ。1週間では短すぎて記事の質が落ちるし、3ヶ月ではダレる。なので毎月更新。これはかなり成功していて、歩くMDNとまでは行かないが、かなり詳しくなった自信がある。毎月更新は今でも続けているので、興味のある方は購読してほしい。

Reactとかが出始めたのも確かこのあたりで、一生懸命勉強した記憶がある。いくつか簡単なウェブアプリ(ゲームのパラメータ計算機とか)を作って、就活のときのポートフォリオに入れた。

Node.jsにもそろそろ手を出すか、と思い始めたのもこのあたりの時期だったはず。もともとサーバサイドにも興味はあったが、PythonとかRubyとかJavaとか苦手なので手が出なかった。そこでJavaScriptで書けるということを聞いたのでツバつけるぐらいの勉強はしておいた。

VagrantやAnsibleにも手を出してみた。さっぱりわからなくてすぐ投げ捨てたが。最近になってやっと使えるようになった。Dockerにも触れた。これも当時は3秒で投げ捨てて1ミリもわからなかったが。

こんな感じで「HTML/CSS/JavaScriptとNode.jsはいけます。他は無理です」な大学院生が誕生した。

就活と就職後

長くなってきたし、就職周りに関しては細かくはブログの方で。

「C/C++/Java/HTML/CSS/JavaScriptいけます」で履歴書とポートフォリオ出して通って今の会社に入った。

仕事できてるかっていうと、あんまりできてないと思う。上司はわりと褒めてくれるが、まあ、そういう人なので。

プログラミング、ちょくちょくブランクこそあくものの、だいたい15年ぐらいやってる計算になる。そんでもプログラミングの腕は、うん、まあ、あれだな。他人に刺身タンポポとか言える立場じゃないな。

それでもなんとかやっていけてるし、今のところの大きなミスはテスト用のDBをまるごとぶっ飛ばしたぐらいで、プログラミングでのやらかしは少ない。

正直、最先端を行くすごいプログラマにはなれないかなって、そろそろ認めなきゃいけない時期に来ている。15年間やってこれだからね。新しいこと学んでる間に、次の新しいことがやってくる。私の生きる速度じゃ、何も間に合ってないんだよ。

それでも社会人としてはなんとか生きていけるんじゃないかなとは思ってる。与えられた仕事はちゃんとやってる。しっかりしたクオリティで。下っ端プログラマとして、特に問題ないんじゃないかな。

知ってる知識はみんなに譲渡しようと思ってる。それがブログであり、社内勉強会である。全部渡したら、あとはモブとして生きるかな。

でも、私は今でもnextFrame(!)になりたい。まだ中学生の頃の夢を捨てきれずにいる。いつか叶うかな。





この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

139

古都こと

印象に残ったnote

私が気になったnoteを保存しています
1つのマガジンに含まれています
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。