独学プログラミング・個人開発のすゝめ
マスタリーの皆さま、偉そうなタイトルですみません。
この記事の目的は、プログラミングを学習する上での一つの道筋を紹介することです。筆者は、初心者としてプログラミングを独学で学習しました。その後、5ヶ月ほどでアプリを作成し、公開をしました。そのスピードは独学者としては早い方だと友人に言われました。また調べてみても、初心者が独学で公開まで漕ぎ着けた例がいくつも出てこないのです。
一方、独学でプログラミングを初めることに不安を覚える方はいると思います。プログラミングの独学は挫折しやすいとも言われています。プログラミングスクールの宣伝文句に、「独学で行き詰まったら」が採用されるくらいですから、挫折する人はかなり多いのでしょう。
そういう悩んでいる人に対して、「プログラミングは独学できる」と、お伝えできればと思います。そして、半年ほどでアプリ公開までできる一つの道筋を共有できたらと思います。
プログラミングは学ぶべきか?
プログラミングを学び始めようか悩んでいる人向けの記事ですから、この問いについても僕のスタンスを明確にしておきます。僕のスタンスは、「やるべきかはわからないけど、時間が余っているならやってみて欲しい」です。
やるべきことがあるのに、あるいは他にやりたいことがあるのに、その時間をプログラミングに割くことには疑問を持ちます。自分の興味がある場合は、それを追求すべきだと思います。
一方、やりたいことは無いけど、何か始めたい!という人には、勧めたいです。なぜなら、プログラミングは義務教育になるからです。「スキルが活きるかも」とか、「キャリアの変更に」とかもありますが、そもそもこれからの世代の人は必修科目としてプログラミングを学ぶのです。その世代の人々は、戦国時代の三武将(織田、豊臣、徳川)を覚えるのと同じノリで、プログラミング言語のことを話せるようになっていると思います。
そういう人が大人になったとき、一緒に仕事をすることになるのです。次の時代の常識の一つにすらなっているかもしれないのだから、悩むくらいなら学習しておいた方が良いのでは?と思う次第です。
筆者の学習ルート
こんな感じです。プログラミングの学習はProgateというサービスを使いました。月額980円で、最近使われているほとんどのプログラミング言語の基礎を学習できます。その後、その中でRuby on Rails(以下、railsと省略)というのを選んで、ローカル開発環境(自分のコンピュータ)でアプリケーションを開発しました。その後、それをデプロイ(インターネット上に公開)しました。
では、この三つに関して、それぞれ個人的に感じたポイントを挙げてゆきます
プログラミング学習はProgateがオススメ
Progateの他にもプログラミングを学ぶサービスはありますが、その中でもProgateをオススメする理由は、Progateが、学習環境を用意してくれているからです。
Progateの画面には、三つの列があります。
左:その課題の内容と、手順
真中:プログラム入力画面
右:動作確認画面
他のサービスで学ぼうと思う場合、ローカル開発環境(自分のコンピュータ)に、プログラムファイルを編集するエディタと呼ばれるアプリケーションをダウンロードして、プログラムを作成します。そして、そのプログラムファイルをローカル環境で実行するのですが、ここでエラーが出ることがあります。初心者にとって、このタイミングでのエラー遭遇は、真っ正面から大洪水とぶつかるようなものです。これが、学習の妨げになります。
その点、Progateではサービス内で学習が完結しており、効率よく学べます。
ローカル開発:エラー回避・解決のススメ
Progateをクリアしたら、そこで学んだ言語を使って何かを作ってみるのが良いと思います。僕はRuby on Railsでしかアプリを作ったことが無いので、何がオススメか?とか、どの言語が良いのか?までわかりません。
ですから、これ作ってみたい!と思いついたものがあれば、それをネットや本で調べてみて、どういう風に作るのか参考にすると良いです。前例はたくさん出てくるものです。
作りたいものが決まったら、ローカルにエディタを導入し、プログラムを作って動かしてみましょう!・・と言いたいところなのですが、その前に、注意があるので書いておきます。
その注意点とは、バージョン確認の徹底です。これにより、先に述べた「真正面からの大洪水」は避けられます。
多くのプログラミング言語は、それをローカルで使えるようにするためには「環境構築」が必要になります。例を二つ挙げます。まず一つ。筆者が学習しているrailsをローカルで動かすには、Rubyがローカルに入っている必要があります。railsはrubyの上に乗っかって応用して動くものだからです。また、railsはrubyのバージョンによって動き方が若干異なり、rubyのバージョンとrailsのバージョンの組み合わせによってはエラーが起こることもあります。この組み合わせに関しては「依存関係」とも表現されます。
そして二つ目。railsはrailsだけで動くものではなく、データベース(MySQLやPostgreSQLなど)と連動させて動かすものですから、データベースのソフトも、ローカルに導入する必要があります。この際も、そのデータベースのバージョンによって連動に違いが出てきます。僕は、これを怠ったため、MySQL導入に際して大洪水にぶち当たりました。
※MySQLを使うことがある方に宛てて先に伝えておこうと思いますが、sequel Proというソフトを使うと、データベースの内容を見ながら開発できるのでオススメです。ただし、MySQLのバージョンは、5.7をインストールしましょう。バージョン8.0〜だと、動きません。これについても、調べてみてください。
何が言いたかったというと、しっかり動作するバージョンの組み合わせを事前に調べることで、未然にエラーを防ごう!ということです。
バージョンを合わせてもエラーが起こることはあるでしょうが、それについてはエラー文を読んだり調べたりして解決していってください。これは独学なら誰しも通る道であり、誰もが挫折したくなるところでしょうが、この記事の読者方には諦めずに乗り越えてもらえたらと思います。ここでの独学で身に付けた力は他の独学にもきっと生きます(と思います)。ちなみに、僕はローカル開発〜デプロイの際、Udemyという動画レッスン(rails、dockerに関して)を購入して、学習しました。
デプロイ:ネットワークに関して知識を学ぼう
ローカルで開発したアプリを、インターネットに公開したいと思う方はいるかと思います。というか、公開したいと思わなくても、やってみるといろいろ学びがあるのでぜひデプロイをやってみて欲しいです。
デプロイに関しては、ローカル開発の応用です。インターネットに公開するために、
- 世界のどこかにあるコンピューターを本番環境として借りて(ホスティングという。また、このコンピューターをサーバーと呼ぶ。)、
- サーバーに環境構築を行い、構築した本番環境に作成済みのアプリを置き、
- その本番環境に、インターネットと通信ができるように住所を設定する
という順序で進めます。もちろん、ローカルと同じく、環境構築におけるバージョン確認は徹底すべきです。
デプロイもrailsに関してしかお伝えできないのですが、ローカルまでの学習量と比べると、少なくともそれ以上の学習が必要です。主な学習内容は、ネットーワーク構築、インターネットと通信、それを可能にするためのサービスやソフトなどです。
確かに学習量は必要なのですが、裏を返すと、諦めないでやり切れる人は一気に少なくなるということですし、ここまでたどり着いたときの達成感も半端ないです。スクール生が何十万円もかけて到達(スクール生はその代わりスピードが早い)するところを独学で可能にしたということは、どうやら転職時にもかなりプラスに働くようですから、やるならここまでやるべし!と個人的に思います。
さて、先述したネットワーク構築、インターネット通信、サービス・ソフトの三つに関して、僕が自分のrailsのアプリに関して行ったデプロイに関して、簡単に図にまとめましたので、参考になればと思います。
railsはProgateで学び、MySQLをローカル開発で学んだ、というだけの段階でこの図を見ても、「は?」となると思います。僕自身、デプロイの際に参考にしたサイトを初めて見たときは、圧倒されました。
ところが、様々なサービス・ソフトを調べて、エラーと格闘しながら使い方を理解してゆく中で、今流行りの技術や、その流行の理由や背景についても知れます。また、各々のサービス・ソフトの連動の裏でどうデータが動いてにいるのかについても学べます。さらに、各々のサービス・ソフトの性格を理解すると、使うべきサービス・ソフトの選定も、あくまで簡単にですが、できるようになります。要は、IT業界の開発に関わる仕事全般について、肌感覚がわかるようになります。
僕がデプロイまでやると学びが多いと書いた理由はここにあります。IT業界は、①受託開発、②マーケティング(広告運用・SEO)、③自社開発サービス販売 の三つの領域がありますが、この①開発に関しては、ほぼ浅く広く学べると感じます。今回の学習の向き不向きによって転職を考えても良いと感じます(希望通りになるのかまでは不明ですが・・)。
おわりに
長くなりましたが、今回は独学でのプログラミングの学習に関して、自分の辿った道を元に、簡単なルートを提供し、その際の注意点とやりがいをお伝えしました。独学を始めたいという方へお伝えしたいことの一部ですが、お役にたてばと思います。この記事に需要があるようなら、開発段階で苦しんだ部分や乗り越えた経験に関してもまとめていこうかな、と思います。
この記事が、学ぶかどうか悩んでいる方の決断の助けになれば、幸いです。ちなみに、エンジニアなどへの転職で悩んでいる方がいるならば、独学で学ぶよりも当然スクールの方が早いですから、スクールの無料キャリアカウンセリングなども検討してみると良いと思います。