見出し画像

プログラマーにはなれなかったけれど

IT業界にいるんだからプログラミングの1つや2つ打てなくてはならないという脅迫観念のようなものが自分の中にしばらくの間あった。関西弁が喋れないのに大阪生まれ、みたいな割とどうでもよい、しかし本人にとっては意外と根深いコンプレックスのようなものだと思ってもらえれば大体それで合っている。

もちろんITに携わる人全てがプログラマーではないし、プログラミングができる必要もないんだけど、一回こうと思い込むと居ても立ってもいられなくなってしまう自分の性格が災いして、プログラマーになろうと半ば勢いで社員十数人の小さなIT系のベンチャーに飛び込んだ。

結局その会社でプログラマーとして働くことはついぞなかったものの(なぜか経営企画室に配属された)、結果的に独学で簡単なWebアプリを作って公開するぐらいまでにはプログラミングが打てるようになった。結果オーライ、でも「この会社に入る必要なくね?」と言われればうつむき加減に頷くことしかできない...

どうしてそんなことになったのかといえば、それなりにグイグイ系の社長の元で繰り広げられる日露戦争時の日本軍@203高地的な世界観を前に、生きて帰りたい一心でプログラミングを勉強したからである。これ以上何があったかは察して欲しい。

というわけで僕はPythonというプログラミング言語でDjangoというフレームワークを使ってとても簡単なWebアプリケーションを作ることができる。そしておかげさまで地獄から生きて帰ることができた。(転職できたの意)

転職時にはプログラマーと企画それぞれの選択肢があって、でも最終的には企画を選んだ。今でもプログラミングの勉強は続けているけれど、プログラマーになることは今後も多分ないんじゃないかと思う。結局自分は文系の人間なんだと、プログラミングが少しできるようになって綺麗に納得したから。

プログラマーにはなれなかったけれど、プログラミングができるようになったことで「具体的に何ができて、何ができないか」が肌感覚として分かるようになった。そして、ちょっとしたアイデアが浮かんだ時に「じゃあとりあえず自分で作ってみよう」とすぐに行動に移すこともできるようにもなった。

登る前には見えなかった世界が登った後に見えるこの感覚はいつになってもシンプルに嬉しい。何度も言うように誰もがプログラマーになる必要はない、でもプログラミングを知っている世界は今までよりも少しだけ色鮮やかに見えるのではないかと思う。

ここからは簡単に僕がPythonを習得するためにどういう勉強をしたのかを書いていく(これが本題のつもりでした…)。多分誰でも継続して勉強ができれば3ヵ月~半年ぐらいでそれなりにプログラミングはできるようになるような気がしている。でもその継続がかなり難しい。始めてみれば分かると思うけれど、大きな落とし穴がいくつも待っている。

この感覚はギターを始めようとして挫折する人のそれに近いかもしれない。ギターは両手の筋肉の動かし方や弦を抑える指の皮の厚さなどいくつか必要な基礎があって、それは早くても弾き始めて1ヶ月ぐらい経たないと出来てこない。

でもその1ヶ月があまりにも辛いから大体みんなそこでやめてしまう。見事なアンティークギターの出来上がりというわけだ。本当は1日5分でいいから簡単なコードを毎日抑え続けるだけで、1ヵ月後には基礎ができて少しづつ弾けるようになるのに、そのたった1ヶ月が続かない。

プログラミングはギターと違ってモノがないからそもそも何を継続したら良いのかで悩んでしまう。だから基本的に僕のプログラミングの勉強はプログラミングを継続して学べる流れを意識したものになっている。

以下はPythonを学びたい人向けの内容だから、興味がない人や他の言語の学習を検討している人にはあまり参考にならないかもしれない。それでもという人は読んでみてもらえるととても嬉しい。

Pre プログラミングの考え方に慣れる

使用教材:Swift Playgrounds (IOSアプリ)

いきなりPythonを打ち始めてしまっても特に問題はない。でもその前にプログラミングの基本的な考え方を理解しておくと結果として進みが良い気が個人的にはしている。だから、もしiPhoneもしくはiPadを持っているんだったらAppleが出しているSwift Playgroundsというアプリで少し遊んでおくことをオススメする。

これはSwiftというプログラミング言語を学ぶために作られたパズルゲームみたいなもので、最後までやっても残念なことにPythonはできるようにならない。でもこのゲームの序盤は多くのプログラミング言語に共通する基本的な考え方(繰り返し、条件分岐、関数、変数)を理解させるために作られているから、Swiftを学ぶつもりがなくてもやっておいて損はない。Appleが作っているだけあってゲーム自体も結構面白い。

ただし言った通りPythonは学べないから軽く始めてみて、少し飽きたなぐらいまで進めばそれで十分だ。あと、アンドロイドしか持っていないという人は潔く諦めてPythonを打ち始めてしまおう。(ただどうしても似たようなことがやりたい場合はCode.orgというアメリカの団体が運営しているサイトがあるからのぞいてみると良い)

Step1 Pythonを学び始める

使用教材:Progate

そもそもプログラミングは自分の手で打たないと習得がかなり難しい。だから初心者が本で入門するというアプローチはできるなら避けた方が良い。それはスキーの初心者がゲレンデに出る前にスキーの滑り方の解説本を読み始めるぐらいに意味がない。

それよりもProgateのような自分の手でコードを打ちながら基礎を理解できるサービスを使ってみると良い。僕自身もこのサービスを使ってとりあえずPythonを打つところから始めた。

Progateは1ヵ月1000円ぐらいの月額課金のサービスで、好きなときに始めて好きなときに止められる。Pythonのコースは大体1ヵ月もあれば終わるから終わった段階でサービスを解約すれば費用は1000円程度で済むし、下手な本を買うよりも安い。

ここでPythonの外観をつかむとともに、自分に本当にプログラミングが合っているかを確認することもできるからお試し感覚で始めてみると良いと思う。

Step2 学んだ内容をさらに深める

使用教材:PyQ

Progateを終えるとPythonがなんとなくわかった気にはなってくる。しかしここで大きな落とし穴が待っている。その状態ではまだ自分の思う通りのものは全然作れないのだ。スキーで言えば数回初心者コースを滑ったものの、滑り方もまだおぼつかないし、ましてや上級者コースなんて絶対にいけない状態だと思ってもらえると良い。

つまり学んだ内容をさらに自分に深く定着させる必要がある。そしてそのためには何度も初心者コースを滑る必要がある。でもじゃあProgateを何周もするのが良いかと言えば、それではつまらないから多分続かないし、慣れることはあっても理解が深まることもない。

つまりProgateよりもさらに深い内容を基礎を反復する形で学べると理想的だと言える。そんな都合の良い教材がPythonにはありがたいことに存在して、それが使用教材としてあげたPyQというサービスだ。

PyQは月額3000円程度と少しお金がかかってしまうものの、Pythonに特化したProgateと同じくコードを打ちながら学べるサービスで、基礎から応用までをうまい具合に反復しながら効率的にPythonを習得できる。

またPythonを理解するだけでなく、その先の目的毎(アプリケーションの作成やデータ分析)のコースもあるのでこれを一通りやるとある程度のものが自分で作れるようになる。

気合いを入れれば2ヵ月ほどでPythonの基礎と目的別コースの一つぐらいは終わらせられるから、プログラミングスクールに通うよりは格段に安く実践的な内容が習得できるはずである。

Step3 反復練習

Progate、PyQとステップを踏んで紹介してきた。基本的にはこれで一通りマスターできるとは思う。ただもし余力があるのであれば地味な反復練習をこれに加えるとさらに良い。なんでもそうだけれどうまくなりたいなら練習するしかない。

以下では練習として最適だと思ういくつかのサイトを紹介しておく。プログラミングで検索すると初心者用の入門と中上級者向けのコンテンツはかなり出てくるけれど、初心者から中級者の間を埋めてくれるものは以外と少ない。

その中で自分が色々と試行錯誤しながら見つけたものなので誰かの参考になればすごく嬉しい。

Pythonで学ぶ 基礎からのプログラミング入門

これはマイナビニュースで連載されていたPythonの文法をわかりやすく解説した記事で、上記のステップで学んだ内容をさらに深く理解することができる。サンプルコードが付いているのでこれを自分の手で打ってみながら読むとPython力が間違いなく向上するだろう。

Python自習テキスト

実践的なシナリオ形式で問題が出題され、解説も綺麗についているため初期の練習に最適。ただし、解説のPythonのバージョンが古いため読み替える必要があるのが少し難点。何かを作り始める前にとりあえずこれを眺めるだけでも参考にはなるのでやってみて欲しい。

atCoder Problems

世の中には競技プログラミングというものが存在する。atCoderというのはその競技プログラミングを運営するサービスで、大体毎週コンテストが開催されている。これ自体はかなりハイレベルで初心者がいきなり突っ込んでも派手に散るだけだけど、出題された過去問を解くことはかなりプログラミングの練習になる。

atCoderはアルファベット順にA,B,C,Dと問題が続き、アルファベット後半の問題になればなるほど難しくなる。後ろの問題は相当の鍛錬をつまないと解けない。でもA,B問題ぐらいだったら初心者でもなんとかなる。

atCoder Problemsという過去問をまとめてくれているサイトがあるので、ここでA,B問題を中心にやるととてもよい練習になる。ただし、競技プログラミングは色々と癖があるので、どうやって解くのかを含めて初めに割と自分で調べる必要がある。

それでも自分でやってみたいと思えるのであれば、やってみると良いしそうでないならちょっと難しいからやめた方が良い。Paizaというライトなサービスもあるのでそういう人はそこをのぞいてみても良いかもしれない。

Final 自分で何かを作ってみる

ここまで来るとPythonで何ができるのかというイメージとその具体的な実現方法が頭におぼろげながらに浮かぶようになると思う。そのタイミングで一から自分で何かを作り始めるとよいと思う。

僕はあまり初期の段階から何かを作り始めてしまうことはオススメしないけれど、結局はプログラミングは作れてナンボなものなので、基礎ができたらその時点すぐに何かを作り始めてしまうことは大賛成だ。

自分でゴールを思い描き、それを実現するためにどうするのかを調べながら実現していく過程で得るものは驚くほど多い。これまで学んできたことを全てぶつけて、さらに不足していることを実践の中で補う、ここまでくればあとはもう問題がない。

自分で作り続けるもよし、プログラマーになるのもよし、僕のようにプログラミングが分かる企画として働くのもよし、なんでもありだ。それなりの努力をしてここまでたどり着いたのだから、その能力をフルに活かして楽しい生活を送ろう。

そして同時に日々能力をアップデートできると今よりも明るい人生が待っている、かもしれない。

おわりに

今後の将来が見通せない今だからこそ、何かしらの能力を獲得しなくてはと危機感を感じている人も多いんじゃないかと思う。もしこの記事がそういう人の助けに少しでもなれば本当に嬉しい。

未来を明るく照らすのも、暗く影を落とすのも、結局は今を生きている僕らだと思う。少しでも明るく照らせるようにそんなちっぽけな努力を続けていければと思っている。

この記事が気に入ったらサポートをしてみませんか?