そもそもプログラミングを学習するのにどうやって始めればいいかという話が抜けていたので、今回はこの話を書こうと思う。

ちなみにまず自分の話をすると、私は完全独学でAndroid開発を学習して今に至っている。業務委託で仕事を受けてちゃんと終わらせた経験もある、実績数としては多くないけれど。

完全独学というのは、入り口も途中もすべて自分で調べたり、誰かが公開しているリソースを利用したりして勉強したということ。誰かから教えてもらいながら学習したわけではないという意味の独学。

スモールスタート

この前の記事でも書いたけど、まずはスモールスタートすべきである。これは間違いない。スモールスタートの意味は、できるだけお金をかけずに学習をはじめるべきだという話。

前も書いたけど、よくわからないからプログラミングスクールに入ってみよう、なんていうのは止めなさい。いやまじでやめとけ。それするならまだMacを買ったほうがマシだと思うぞ。

まずはネットで公開されている無料で使えるプログラミング学習講座を利用すれば良い。ドットインストールだったりProgateだったり、日本語で利用できる無料のプログラミング学習講座は探せばいっぱいある。とりあえずこういうのを利用して始めてみるのだ。

あとは図書館を利用する。学びたいプログラミング言語が決まっているのであれば、その言語に関する本をかたっぱしから借りてみる。置いてなかったら図書館が受け付けているのであればリクエストを出してみるとかね。ちなみに私はAndroid関係の本をかなりリクエストして図書館に入れてもらった経験がある。結構な数リクエストして入れてもらった。もっとも、これはお住まいの自治体によって異なるだろうから一概には言えないが。

無料の学習サービスは英語を視野に入れればもっとたくさんの選択肢が得られる。Udacityとか。探せばいろいろあるはず。

AndroidでいえばそもそもGoogleが大量に無料の学習資料を用意してくれている。そういうのを利用してやればよい。

それでもよくわからんとか、どの言語やればいいのかとかいう悩みがあるなら、ぜひメンタで相談して欲しい。もっとも私は自称プログラマーなので、アドバイスにどの程度の効果があるかは保障しないけれども。少なくとも、いきなりプログラミングスクールに相談に行くよりはマシな回答ができると自負している。

パソコンが必要

ただプログラミングをするにはパソコンが絶対に必要である。ここがちょっと大変なところ。すでにパソコンを持っている人はそれを使えば良い。問題は、パソコン自体持ってないという人だ。

だいたいプログラミングするならMacを使っとけっていう共通認識がある。Windowsじゃできないわけではない。Windowsのパソコン持ってるならそれを使えばいい。それでできることをやればいい。

Macがいいと言われるのは、Windowsに比べると環境構築が楽で、初心者でもつまづきにくいだろうというのがその理由。だと少なくとも私は思っている。ただMacは高い・・・スモールスタートと相反してしまうのが悩ましいところ。

Macがおすすめなのは間違いないのだが、初学者が買うにはハードルが高い。もともと欲しかったとかならいいんだけど。プログラミングを学習のためだけに買うのは結構勇気がいることなので、自分で持ってるパソコンがあればそれを使うのが一番いい。たとえ次に触れる環境構築が大変だろうとも。あるものを使えばいい。

プログラマーはサイヤ人ではないが、ハマればハマるほど強くなるので、あえて茨の道を進むのも良い。あくまで解決できればの話だけれど。ただ初学者が茨の道を行くのは、解決できなくてやる気を無くしてしまう可能性もあるので、一概にいいとは言えない。でも、周辺知識がつくのは間違いないと思う。茨の道だけどね。

どうしてもパソコン持ってない、でもプログラミングやりたいというのであれば中古とかでもいいかもしれない。ただ中古は中古でスペックがネックになったり、すぐに壊れるんじゃないかとかいう問題もあるので、このあたりは好みによる。

本当に覚悟を持ってプログラムで生きていくんだというのであれば、どうぞお好きに。Macbook PROスペックもりもりを購入して始めればよい。やっぱり自分に合わないなと思ったらメルカリなりなんなりで売却したらいいだろう。そこは自由だ。

ただ1つ注意しておいてほしいのは、プログラミングするのに言語にもよるが、パソコンのスペックは学習効率に影響を与えるものである。やはりスペックの高いマシンの方がよいというのは確実である。

私がメインでやっているAndroidで言えばメモリの容量は多ければ多いほどよい。16Gは最低ラインという感じだろうか。それより少なくてもできなくはないのだが、ビルドの待ち時間が長いとか学習効率に関わってくるので、学習する言語によってはスペックが大事になってくるというのは覚えておいて欲しい。

ただスペックが大事とはいえ、とりあえず今ある環境ではじめてみてはいかがかというのが本稿の趣旨である。

環境構築

環境構築はプログラミングを始める上で最初で最大の難関と言えよう。初心者はここで躓く人が多いと思う。

最近ではCloud9とかのWebで使うIDE^1を使ってはじめるというのもある。が、そのCloud9を使えるようにするまでが、初心者にはハードルが高い。

ちなみにAWSは私にもハードルが高い。なんか料金かかると怖いからと、ろくに使ったことがない。そういうところもケチるのが私なのだ。しかし使ってみないと幅が広がらないのは確かなので、四の五の言わず使ってみる必要があるかもしれない。

私がよく使っているKotlinでいえば、オンラインで学習したり実行させたりするツールが確かあったはずだ。学習についてはよく覚えてないけれど、少なくともこれを使えばWeb上でKotlinのプログラムを動かすことができる。ある程度補完も効いてた気がする。

JavaScriptであればブラウザがあれば動くので、特に設定することなく学習ができるだろう。ただ、npmとか使える構文の歴史的経緯とかいろいろややこしく、私も勉強しているのだがとにかく「ややこしい」という印象がある。これはあくまで個人の感想である。

ちなみにプログラミング学習には、プログラム言語以外にもサーバ構築だったり、ターミナルの使い方だったり、Gitの使い方だったり、学習したいプログラミング言語とは別のことも学んでいく必要がある。いわゆる周辺技術の学習である。

プログラミング言語を勉強すればなんでもできるようになるわけではない。周辺技術の獲得も必要なのだが、それを書き出すと本稿の意図からずれていくのでここで止める。

最後に

まずはお金をできるだけかけずに学習せよ。私がこの記事で言いたいことはそれだけである。

学校に通っているならば、学校の仲間と一緒に勉強するのがいい。それが学生の特権である。大いに活用すべきだ。使える時間も自由だろう。仲間と一緒に作品作りをしてプログラムを学んでいけばよい。

社会人になってからはそうはいかない。もはやひとりでなんとかするしかない。そんなときこそ、私ならまずはお金をできるだけかけずに学習することをお勧めする。なぜなら私がそうだったからだ。仕事を辞めた後で学習を始めたので、お金をかけることができなかったという理由が大きいのだが。

けれどそれは初学者にも当てはまるだろう。自分がプログラミングに合うのかどうかもわからないのに、いきなり大金かけるのはもったいない。無料でできる範囲ではじめて、それで興味が続くのであれば徐々にお金をかければいいのである。

無料のリソースだけではまるでわからない、面白くないとなるのであれば、それは大金をかけてもプログラミングは向いていなかったということになりはしないだろうか。手取り足取り教えてもらえても、それが終わった先には自分でなんとかしなければならない世界が待っている。残念ながら初学者なんで、始めたばかりなんでといっても現場は許してくれない。

独学は変な癖がつくから止めたほうがいいという意見もあろうが、それは学習者による問題だと思う。こうしなければ動かないと思うかどうか、一般的なやり方を知らないかどうかは、学習者の問題である。独学することの問題ではない。

そういうわけで、私はスモールスタートをお勧めするのである。

あまり無料の学習講座を紹介していないのは、単に私が今すぐ覚えてる範囲で書いたからである。わざわざググったりしてないので、「うちもやってるのになんで書いてないの」とか言わないでいただきたい。

そういうサービスの所有者はプルリク送ってくれればよいので、ぜひどうぞ。ただ、私がみて初学者には向かなさそうと思ったらリジェクトするけども。そこは私のブログなので勘弁していただきたい^2