1
/
5

エンジニアを目指した文系のこれまで

 プログラミングを始めたのはたしか小学校四年生の頃で、その当時は友達と一緒にCrefusというレゴ・マインドストームを用いてロボットをプログラミングする知育塾のようなところに通っていた。レゴのロボットを動かすのはおもしろかったけれど、実際にはWindowsのコマンド・プロンプトのほうに興味があって、この黒い画面をどう使うとなにが起きるのかというところにはもっと面白さを感じていた。レゴではなくてパソコンでプログラミングをやりたいと父親に訴えると、ボーランド社のC/C++コンパイラをインストールしたPentium IIで200Mhzくらいの富士通FMV(バッテリーがすごく重かった)を僕に使わせてくれて、家の近くのブックオフに出かけるとそこでC言語の入門書を買ってくれた。その入門書は最後の章が関数宣言の文法で終わるような本当に初歩の初歩のような入門書だったけれど、僕にとってはひどく難しくて、結局C言語をある程度使いこなすことができるようになるには小学校高学年になるくらいまでかかった。

 C言語が本当に「ある程度」書けるようになると、今度は大規模なソフトウェアに憧れるようになった。たとえば、マイクロソフト・エクセルだとか、マイクロソフト・ワードのような、たくさんの機能があるソフトウェアはどうやって作られているのだろうと思って、ソースコードを探したが、もちろんその当時オープンソース・ソフトウェアの概念を知っているわけはなく、どう頑張っても、その類のソフトウェアのソースコードを見つけられはしなかった。唯一、その当時LSI-Cコンパイラの試食版が無料で配布されていて、そこにはコンパイラのソースコードが付属していたけれど、そのソースコードは頭が痛くなるくらいの難解なコードで、僕は結局読むのをやめることにした。しばらくすると、C言語にも少し飽きてきて、HSPやActiveBasicなどのより簡単な言語を使って簡単なGUIアプリケーションを作ったりして遊ぶようになった。HSPは小学生の僕でも比較的馴染みやすい言語で、d3moduleという低レイヤーな3Dレンダリングのモジュールを使って綺麗な動きのあるスクリーンセーバーを作ったりした。

 小学校高学年頃には、河合秀実氏が著した「30日でできる!OS自作入門」との衝撃的な出会いを通して再びC言語への熱意が再燃した。C言語よりも低レイヤなアセンブラという言語があることを知っていた僕は自分の知っている言語だけでOSのような大規模なものが作れると思うとわくわくしたが、当時の僕に4000円近いその本はとても自分の小遣いで買えるような代物ではなく、誕生日プレゼントとして買ってもらうのを待つほかなかった。しかしながら、親も僕にゲームに没頭されるよりかはむしろ本を読んでもらいたいといった具合だったので、さほど苦労もなく僕はOS開発という深淵に足を踏み入れることになる。

 とはいえ、そのころ自分の中ではプログラミングだけではなくてサッカーへの興味が湧き出していて、下北沢に住んでいる友達と夜な夜な裏路地で1on1やパスの練習をしていた。そんな意欲から、中学に入学すると迷わずサッカー部に入部したものの、実際に小学生からクラブで毎日練習をしているような上手い連中には足元にもおよばなくて、練習試合ではほぼ毎回ベンチを温めるポジションをつとめた。一方で家では少しづつOSの開発は続けていて、2ちゃんねるのOS板でSourceForgeでコードをホスティングするとよいという教えをもとにSourceForgeでアカウントをとってSVNを使ってソースコードの管理をしてみたり、一緒に開発をしてくれるメンバーを集めたりしながらリモートで擬似チーム開発のようなことをした。初めて父親からパソコンをもらったときは、リテラシーの観点からインターネットに接続するときには毎回親の許可が必要だったが、この頃から少しづつその制限も緩み始め、インターネットでosdev.orgなどのOS開発のためのリソースへアクセスできるようになると、Linuxやその開発者のリーナス・トーバルズ、MonaOSの開発を行っていたひげぽんさんなどのようなすごい人の存在を知るようになった。とりわけ、ひげぽんさんのMonaOSは、FreeBSDのドライバの移植などのような本当に実用に近づく開発をしていて、本当に僕にとっては神のような存在だった。

 中学2年生に頃には僕の中で空前のアニメブームが来て、「涼宮ハルヒの憂鬱」や「らき☆すた」のようなアニメを観まくった。当時アニメを見ていた人達と同じように「涼宮ハルヒの憂鬱」の26話のライブの回を見てギターを弾き始めると、それまでのOS開発をほっぽりだして、毎日ギターの練習に熱中した。加えて、同時期にGalneryusやDragonForceを知り、中2病の典型例たるメロスピに傾倒しながら高校へ入学、勢いで軽音楽部へ入部した。この時期は僕の中でのプログラミングへの熱意はあまり高くなく、むしろギターがうまくなりたいという気持ちだけで生きていた。高校2年生の夏には、IPA主催のセキュリティ&プログラミングキャンプ2011の話を親からされるも、自分の作ったOSで書類選考が通るわけがないという卑屈な気持ちから応募を躊躇した。しかしながら、応募は偶然にも通り、これまで自分が目にしたこともないようなドープなハッカー集団と大阪の会場で相まみえることとなった。このイベントへの参加自体は僕のプログラミングへの意欲にある程度の影響を及ぼしたものの、まだLL界隈へ手を出すことはなく、家ではひたすらギターを弾き続ける生活を続けた。

 高校3年生のころにDVDでレンタルした、マーク・ザッカーバーグによるFacebookの創設を描いた「ソーシャル・ネットワーク」を見てWebプログラミングの世界に興味をもち、Perlに少し手を出した。そのころの僕にとっては、Perl/CGIくらいしかWebプログラミングをイメージさせるものはなかったので、PHPやRubyを選ぶという選択肢はなかった。高校3年生は僕にとって大学受験の年でもあったが、毎日プログラミングとギターばっかりしている姿は親の目にはあまりよく映らなかったようで、僕も大学受験のために塾へ通うことを余儀なくされた。また、プログラミングが好きな人間ならば数学もきっと得意なはずだという推測は、僕にとっては当てはまらなかった。情報系の学部へ進学するには間違いなく数学で良い点をとらなければならないが、結局受験の終盤まで思うように数学系科目の点が伸びなかった僕は、大学ではプログラミングではなく、比較的得意だった英語の能力を伸ばそうと決め、英語系の学部へ進学することにした。

 大学入学直後は、プログラミングを仕事にしようという夢はある程度あきらめ、軽音楽研究会に入りバイトにも行かずに毎日サークルの部室で時間を潰しながら前期を過ごした。入学直後は大学での単位履修のシステムがよくわからず、自分の好きな授業のみしか取っていなかったため、後期は授業の多さに苦労することになった。大学1年生の後期にようやく人生で初めてのバイトを始めるが、そのバイト先のマネージャーがWordPressを使ったWeb制作をやっていたこともあり、その時期からプログラミングへの熱が再燃し、ドットインストールなどを使いながらJavaScript, HTML/CSS, PHPなどの基礎を自分で勉強し始め、Web制作の案件を手伝ったり、簡単なブログなどを作ったりするようになる。また、大学2年生の頃にクラウドワークスの存在を知ると、MFCを用いたデスクトップアプリケーションの開発案件を受注したりした。大学3年生の春には、クラウドワークスのインターンへ参加するも、その頃の僕はRubyの文法や、Railsの基礎(MVCの概念や基本的なディレクトリ構造)に関して全くの無知であり、手探りでクラウドワークスの大規模なコードベースの読解に骨を折りながら、なんとかインターンを修了した。このインターンは、自分にとってIT企業=ブラックというこれまでの安易な考え方を変える転換点にもなり、Web系のエンジニアとしてのキャリアにはまだ可能性があるのかも知れないと思うようになった。

 同年の夏には、春の逆求人フェスティバルで知り合ったiid, FeedForce, VASILY, Speeeの四社でサマーインターンをすることとなり、それぞれの企業で企画、チーム開発、Gitを用いた開発手法、仕事の進め方などのこれまで自分が触れたことのない知識を補充する学びを得た。とりわけSpeeeのインターンでは、純粋な技術面だけではなく、いかにしてチームやその周囲の人間と効率的に作業をしていくのか、自分のパフォーマンスを最大化するための目標設定とは、などのような技術力だけではないマインドセットの重要性を実感した。しかし同時に、インターンに参加していた優秀な学生や実際に業務で求められるスキルやRuby, Rails, JavaScriptなどの言語的な知識/経験不足などから、自分が実際にエンジニアとして就職するにはまだまだ未熟であると感じるようになり、夏季休暇の終わりと同時に休学をすることにした。偶然にも、休学しオーストラリアやイギリスへ行くような比較的「意識の高い」人間が自分の周りには多かったこともあり、自分にとって「休学」という選択肢はさほど遠いものではなく、また自分が浪人も留年もしていないという点で、少なくとも1年間学校から離れることがディスアドバンテージになる可能性は大きくないだろうとという目論見があった。

 Wantedlyは休学直後、初めての中期インターンとして働かせてもらった場所で、それまではCoffeeScriptもAngularも触ったことがなかった(AngularはControllerを作るくらいのチュートリアルだけやった)ような僕でも、メッセンジャーアプリのSyncの開発に関わらせてもらえた。Syncはこれまでに自分が見たことも作ったこともないようなゴリゴリのSPAで、JavaScriptを使うとWebでもデスクトップアプリケーションみたいなUXのサービスが作れるんだと感動したし、それと同時にAngularを用いたコードベースがでかくなってきたときにどのへんがどうツラみになるのか、どうしたらパフォーマンスチューニングができるのかという点も含めて多くの学びがあった。SyncチームのWebで僕のコードをレビューしてくれていた現Syncエンジニアリングリーダーの岩永さんは、僕とほぼ年齢が違わないのにも関わらず、フロントエンドに関する知識は途方も無いくらいかけ離れていたし、同じVimmerとしてもvimrcのカスタマイズ具合はいつになっても遠く及ばないように思えた。そのほかにも、CTOの川崎さんにもとても良くしてもらったり、年末のWantedlyの社内ハッカソンに参加したりした。

 Wantedly SyncがAngularで書かれていることによって、これまで触れなかったAngularの資料に多く触れるようになると、Goodpatchの記事やスライドを多く目にするようになった。Goodpatchの主力プロダクトであるProttがAngular 1系で作られていることもあって、いかにDirty Checkのパフォーマンスを改善していくかのような知見をたくさん得られたが、それと同時にGoodpatchのCEOである土屋さんがインターンをしていたというBtraxにも興味を惹かれた。もともと英語系の学部に所属しているだけあり、周りにはおのずと留学組が少なからずいて、もちろん僕も大学入学直後は留学をしようという意気込みに満ち満ちていた。そうした理由もあり、ひとつ休学中の経験としてサンフランシスコへ行くことを決めた。

 BtraxはサンフランシスコでもSomaと呼ばれる倉庫街にあり、真横にはThe Divisionやアサシンクリードシリーズで有名なUbisoftのオフィスがあった。倉庫街とはいっても、そのほとんどが倉庫風の建物のIT企業のオフィスで、有名なところでは近くにGithubやDropboxが軒を連ねていた。どのオフィスも比較的カジュアルに訪問を許していて、昼休みにはIT企業のオフィスへ突撃訪問しロゴ・ステッカーをもらうという活動を他のインターン生と一緒にやっていた。

 Btraxは実際のところ自社サービスや受託開発を行うというタイプの企業ではなかったため、社内で積極的にコードを書いて開発をするということはあまりなかった。その代わりに外部の活動として、DeveloperWeekやLaunch HackathonなどのOn-siteハッカソンや、hack.summit()、Yelp Hackathonなどのリモートハッカソンへ積極に参加することにした。アメリカではDevpostやEventbriteなどのイベントのリスティングのサービスの利用が盛んで、ほぼ毎月と言ってもいいほど、どこかの地域でハッカソンが開催されていた。せっかくサンフランシスコに来たから、ということで僕もインターネットでチームメンバーを探したり、また現地で人に声をかけたりなどしてハッカソンに参加しようとしたが、自分の英語力の問題や、そもそもすでにチームを作って参加している人間が多かったことなどもあり、ひとりでハッカソンに参加しプロダクトを開発して、最後はジャッジに「これ全然ビジネスモデル考えてないよね?」というような感じでボロクソに言われたり、なかなかおもしろおかしい経験をすることになった。唯一、Laptop BattleというLaunch Hackathonの中で行われていたラップトップに貼られたステッカーの美しさを競うコンテストのようなもので、5位に入賞したことのみがポジティブな思い出になった。

 ひとつサンフランシスコのハッカソンが日本と比較的異なるなと思った理由のひとつとして、ハッカソンでプロダクトを作るレベルから、ビジネス的な視点で審査されるということだった。実際には、サンフランシスコでハッカソンにでるまでは「ハッカソン」というイベントに参加したことはなかったが、帰国後に参加したAngelHackやその他のハッカソンなどはその場での盛り上がりなどが比較的評価の対象となることも少なくなかったように感じた。スポンサーにも、UberやDropbox、Twitterなどのスタートアップ界の大物たる企業が多くいたり、ハッカソンの賞金などが桁違いという点も、いわゆるスタートアップの聖地たるシリコンバレーっぽさを感じた。

 とはいえ、意外にも現地のUCバークレーなどに通うエンジニアの学生が自分とは比べ物にならないレベルのものすごいコードを書いていたわけではなかった。2度現地で参加したリモートハッカソンでは、SAPに勤める若いエンジニア、バークレーで勉強をしている学生とそれぞれペアを組んで開発をしたが、彼らのコードはさほど自分が期待していたような洗練されたものでなかったように思えた。日本でももちろん言えることではあるが、ある場所にいる人間が必ずしも全員同じレベルのスキルを持っているわけではない。アフリカ系の人間だから、バスケが強い、足が速い、などの固定観念的な思い込みは知識や経験の欠如からくるものであると大学のアメリカ文化論では学んだが、僕もまたシリコンバレーという地に対して、根拠なくこうした見方をしていた(あるいは、僕が現地で本当に尖ったエンジニアと出会えなかった)のではないかと思う。

(続く)




18 Likes
18 Likes