>
私は現在、個人でWeb開発とゲーム開発をしています。私がプログラミングを始めたきっかけと夢中になったきっかけについて書きます。
私のプログラミング(コーディング含む)の遍歴は、以下の通りです。
HTML/CSSはブログの運用で自然に覚えました。最初はレンタルブログで日記を書いていましたが、ブログで広告収入を得られることを知ってからは、人に読まれることを意識して記事を書くようになりました。
ブログを運用するなら、レンタルブログよりWordPressが良いと知り、何も考えずに月額500円のレンタルサーバー(さくらのレンタルサーバ スタンダードプラン)を借りて、WordPressでブログの運用を始めました。最初の半年間は赤字でした。レンタルブログである程度稼げるようになってから、WorePressに移行する選択肢もありましたが、自分の尻に火をつけることで、ブログの運用に本気で取り組むことができたので、正しい決断だったと思います。
WordPressのテーマをカスタマイズしたくなり、PHPを触るようになりました。PHPでブログの機能やツールを作りました。わからないことをネットでその都度調べるというやり方で覚えたので、知識がつぎはぎの状態で、わけのわからないエラーに泣くことが何度もありました。もう触りたくないです。
JavaScriptを使ったWebツールをいくつか作って公開したところ、ぼちぼちアクセス数を稼げるようになりました。その頃、記事を他のブログにパクられることが何度かあり、歯痒い思いをしていたのですが、簡単にパクられないWebツールやWebサイトの開発に注力したほうが良いのではないかと思うようになりました。
Webサイトを作る技術を習得するために、PythonとDjangoを学び始めました。PythonとDjangoを選んだ理由は、Pythonを書いた経験(スクレイピング)が少しあったのと、機械学習に興味があったからです。他の候補には、Python/Flask、PHP/Laravelがありました。PHPには苦手意識があったので、自然とDjangoとFlaskの2択になり、大規模な開発もできるDjangoを選びました。
Djangoの本を買って2ヶ月程で最後のデプロイの章まで読み進めたのですが、AWSの設定の画面が実際のものと異なり、設定の内容もよくわからず、悩まされました。ちょうどその時にゲームエンジンのUnityに興味が移っていたこともあり、Djangoの学習を一旦中断することにしました(それ以来、Djangoを触っていません)。
Djangoの学習を中断(終了)し、それ以前から興味のあったゲームエンジンのUnityを始めました。Unityで、プログラミングの楽しさと、インタラクティブなものを作ったり触ったりする楽しさを強く感じました。Unityで使用するC#は静的型付け言語で書きやすく、自分に合っていました。class, interface, 非同期処理の使い方をここで覚えました。
最初に3Dのアドベンチャーゲームを作ろうとして、やることの多さに気付き、断念しました。次に2Dのパズルゲームを作ろうとして、面白いゲームを作る難しさの壁にぶち当たりました。それでも、なんとか完成させようと開発を続けていましたが、これを完成させたところで、どれだけの人にプレイしてもらえるだろうと考えた時に、自信がなくなり、開発を一旦中断することにしました。そして、確実に需要のあるWebツール・Webサイトの開発と学習を再開しました。
Djangoの本の最後の章で行き詰まっていたので、Djangoの学習を再開する気にはなれませんでした。HTML/CSSとJavaScriptの知識の曖昧さに不安があったので、HTML/CSSとJavaScriptを本で体系的に学習することにしました。HTML/CSSもJavaScriptも抜けていた知識があったので、体系的に学習して正解でした。JavaScriptの本は『独習JavaScript』を選びました。
HTML/CSSは、今なら下記の書籍を選ぶと思います(未読)。
JavaScriptの学習を終え、その流れで、JavaScriptライブラリのReactを触ってみました。チュートリアルをやってみて、すぐにReactの楽しさがわかりました。PHPやDjangoには感じることのなかった楽しさがありました。その後、ReactをベースとしたフレームワークのNext.jsを触り始め、開発のしやすさに感動しました。Djangoのデプロイから逃げた身なので、Next.jsのデプロイの簡単さには涙が出ました。
静的型付け言語のTypeScriptも自分に合っていました。Reactはフロントエンド開発のためのライブラリですが、Next.jsを使えば、フロントエンドもバックエンドもTypeScriptで一貫して書けます。「これだ!」という確信がありました。自分に足りなかったパズルのピースが見つかったように感じました。
その時、2つの目標を掲げました。WordPressのブログをNext.jsで開発したブログに移行すること、JavaScriptで作ったWebツールをNext.jsで作り直すことです。明確な目標があったので、モチベーションを維持して学習を続けることができました。そして、それらの目標をやり遂げ、今に至ります。
振り返ってみると、プログラミングを始めたきっかけは「WordPressのテーマのカスタマイズ (PHP)」で、プログラミングに夢中になったきっかけは「UnityとNext.js」でした。
今後についてですが、Webツール、Webサービスのアイディアがいくつかあるので、これから順番に着手します。ゲーム開発もタイミングを見て再開します。
もし、あなたがこれからプログラミングを始めたいと思っているなら、作りたいものを作るのが一番の近道です。作りたいものがあれば、モチベーションを維持できます。Web開発ならJavaScript → React/Next.js/TypeScript、ゲーム開発ならUnity/C#をおすすめします。楽しみながらプログラミングを習得しましょう。