れぞんでーとる

すりつぶされたりせんぞ

プログラミングを始めてからITエンジニアになるまで

しょくぱにすと
2018/10/21 (更新: 2019/12/6)

ども、しょくぱにすとです。
今回は僕がどうやってプログラミングを勉強して、ITエンジニアになれたのか、その過程をご紹介します。

プログラマとかITエンジニアになりたいけれど、どうすればいいのか分からない学生さんやエンジニアへの転職をお考えの方の参考になればと思います。

プログラミングを知ったきっかけ

中2の頃マトリックスがすごく好きで、コンピュータを自在に操れれば、自分が神の仮想世界を作ることができるんじゃないかと思ったのです。
物凄い厨ニ病な発想ですよねw

それで、リアルな3Dゲームの世界がどう動いているのか興味が湧いて
プログラミングというもので作られるらしいということを知りました。

親のウェブサイトのhtmlを組むのを手伝ったりしていたので、
パソコンを触るのはちょっと得意でした。
早速本屋さんにいって、ゲームプログラミングの本と、java入門の本を買って、内容を真似して勉強しました。

ゲーム作りから始めたプログラミング

始めて作ったシューティングゲーム

そんなこんなで、「Javaでゲームを作りますが何か?」というサイトや、「Javaゲームプログラミングアルゴリズム」という本を参考にシューティングゲームを作ってみました。

0から世界観を作り上げる楽しさ

まず紙にゲームの画面構成や、キャラクタ、ゲームシステム、といったアイデアを書きました。
キャラクタとか背景素材はGIMPを使って自分で描きました。

中学生の時初めて作ったシューティングゲーム

凄く楽しい作業でした。
全て0から自分でつくり上げるのが刺激的だったのです。

プログラミングに無限の可能性を感じる

脳内でイメージしている理想のゲームという妄想を、デザインとロジックを組み合わせることで現実にできるなんて、、、
当時の僕にとって、もはや錬金術でした。

できたゲームはしょぼいクオリティだったけど、プログラミングに無限の可能性を感じていました。

ゲームプログラマを志す

高校になってもゲーム作りは相変わらず好きだったので、ちょくちょく続けてました。
ゲームプログラミングの館というサイトを参考に、より本格的なシューティングゲームを目指しました。

無駄に高校で習った数学の知識を活かして、追跡弾とか放射状の弾とか弾幕表示に挑戦してみたりしていました。

弾幕に挑戦したシューティングゲーム

でも、中々おもしろいゲームができず、プログラミング力が足りないのと、デザイン力がないのが悔しくて、悩みました

そこでとりあえず、プログラミングをもっと頑張ろうと決心します
この頃に、将来ゲームプログラマになりたいと思い始めました。

Linuxに出会い、コンピュータ自体に興味を持つ

Linuxとの出会い

USBブートでlinuxを初めて触る

プログラミングについて色々調べていると、linuxというOSがあるらしいと知りました。
どうやらプログラミングをするにはwindowsは向いていないと。
何が違うのかよく分からなかったので、実際にノートPCにUSBブートでlinuxを起動してみました。

その時のOSは、ubuntu10.04とかだったと思います。

始めて開いたOSに感動しました。UIとかフォントがwindowsに比べて綺麗だし、動作が軽快。
CUIの世界に始めて出会った僕は、unixコマンドとか、オープンソースコードのコンパイル、環境構築に没頭していきました。

Linuxいじりにはまる

無駄にOS起動・終了時のスプラッシュ画像を自分の好きな画像に変えたり、
compiz fusionで、デスクトップをかっこ良くしてみたり、
OSをオリジナル風にカスタマイズするのにもこだわってみました。

次第にオリジナルのlinuxディストリビューションとかに興味を持ち始めて、「Linux from scratch」に挑戦しました。
当時は知識不足過ぎて、上手く行かなかったけれど、linuxの世界観を知るにはちょうどいい題材でしたね。

初めての自作PC

Linuxを専用機で動かしたくなる

すっかりLinux好きになってしまって、デュアルブートじゃなくて、専用機で動かしたくなりました。
ただ、既にPCを持っているのに新しいPCが欲しいというのでは親を説得できないと思ったため、
他の方法を探っていた所自作PCという存在を知りました
そういえば、大阪の日本橋(東京でいう秋葉原)に、PCパーツとか売っていたなと。

ジャンク品で自作PCに挑戦

早速一番安い中古ジャンク品をかき集めてPCを組みました。
全部合わせて8000円ぐらいだったと思います。
PentiumDとか使いましたw
youtube見るとcpu負荷が100%になるようなスペックでしたが、linuxを色々弄るには最適な実験機でした。
分からないなりにhttpサーバーとかCGIにも挑戦しましたね。

初音ミクという衝撃

なんかクラスのオタクの中で、初音ミクというキャラクタが流行っているらしいと知りました。
興味半分で調べて音楽を聞いてみたら、初めは違和感だらけで何がいいのかわかりませんでしたが、
ニコニコを見ている内に初音ミクというものにどんどん惹かれていきました。

初音ミクを取り巻くエコシステムに感銘を受けたのです。

初音ミクという音声合成技術に加え、MMDというCG技術、PV動画クリエイター、ボカロPといった各々の創作物が高次元で融合して、技術×クリエイティビティが達成されていると。
もともとプログラミングを始めた目的であるコンピュータによる世界創造」が、既に実現されているのを目の当たりにしました。

これを機に、ゲームだけとは言わず、プログラミングには無限の可能性が秘められていると確信し、大学受験では情報系の学部を目指すことにしました。

大学時代

授業を無視し、一人でプログラミングを勉強

大変だった受験勉強に無事合格していざ大学の講義を受けてみると、思っていたのと全然違うじゃないですか。
一年次はしょぼいC言語の講義があるのみで、他は全部理数系の教養科目の座学。
この期間は講義をほとんど無視して遊びまくりました。

二年次からはより専門的な科目が増えて、興味ある講義もありましたが、
やっぱり理論ばかりで思っていたのと全然違うなと。
この頃から一人でプログラミングの勉強を進めるようになりました。

色々いじったり試したりしていました

  • 色んなlinuxディストリビューションを試したり、カスタマイズしてみる
  • ラズパイで自宅サーバー
  • Ruby on Railsでwebアプリ作りに挑戦

「技術的知識とプロダクトを作るスキルは別物」と気づく

こんな感じで、大学でコンピュータ・サイエンスの理論、個人で実用的なレイヤーの技術を試す、ということを続けていると、
いいものを作るのと、詳しい技術的知識を持つことは別物だと思うようになりました。

それまでは、

深い理解がないとプログラミングが上手くできない => いいプロダクトができない

と思っていましたが、全然そんなことありませんでした。

もちろん知識はあるに越したことはないのですが、 いくらOSの動作原理を勉強したところで、たくさんダウンロードされるアプリを作れないですよね。

このことに気づいてから、開き直ってアプリとかweb開発に力を入れるようになりました。

初めて作ったAndroidアプリ

僕はルービックキューブの早解きが自慢だったので、
初心者向けのルービックキューブアプリを作ることにしました。
ロジックは以前に作ったことがあったので、それを流用してAndroidアプリを作りました。

キューブ・ソルバー

始めは中々ダウンロードされなくてどうしようかと悩んでいましたが、
アプリのアイコンを変えたり、ASO対策してみたり、英語対応してみたりした結果、
おかげさまである程度遊ばれるアプリになりました。

ITエンジニアを目指し就活

逆求人エージェントさんにかなりお世話になりました。
一度に色んなIT企業の採用の方を話せる機会を提供していただき、効率よく就活を進められました。

色々作ってきたけれど、就活時点ではちゃんと世の中で使われているようなアプリは無く、
IT企業でバイトした経験もなかったので、就職できるか不安でしたが、
奇跡的に第一志望の企業から内定をいただけました。

実績は少なかったけれど、その時々に必要なことを考えながら実際に行動に移して試行錯誤してきた経験がアピールの元になりました。

学部研究時に機械学習を勉強

研究テーマからはちょっと外れるのですが、機械学習にハマりました。
初めはAIと呼ばれている技術が実際どんなものなのか気になって、軽く勉強を初めてみたのですが、
画像に関してはかなり実用的なレベルまで技術が発展してきていて面白そうだったので、色々論文を読んで実際に実装して試したりしました。

機械学習をコア機能にした画像加工アプリを作ってリリースしましたが、上手くユーザーが集まらず、サーバー維持代も高かったため、公開を終了しました。
かなり苦労して作ったので悔しかったです。

現在

現在は、ITエンジニアとして日々お仕事させてもらっています。
PHPや、vue.js、Reactを使ったWeb開発に加え、データ分析、機械学習といった込み入った領域の仕事にまで携わらせてもらっています。
業務で経験を積みつつ、趣味で業務とは別の新しい挑戦に取り組んでいます。
その一つとしてこのブログを運営していたりします。

まとめ

以上のように、色々迷って試行錯誤しながら、ITエンジニアになった経緯があります。

プログラミング自体そこまで難しい技術じゃないので、ブログみたくカジュアルに、プログラミングでものを作って公開する人が増える世界になるといいなと思っています。

このブログでは、初心者の方にとっても役立つようなプログラミングのノウハウを紹介していく予定です。

© 2017-2019 れぞんでーとる All Right Reserved.