プログラミング初心者の方へ(あきらめる必要なし!!)
はじめに
【この記事を読んで欲しい方】
・これからプログラミングを勉強しようと思っている方
・色々プログラミング言語あって悩むけど、Pythonにしようかなと思う方
・ちょっと手を付け始めたけど、今の居場所が良く分からない方
僕はビットコインの誕生やこれまでの経緯について書かれた、デジタル・ゴールドという本を読んでプログラミングを始めました。
「こんなサービスあったら便利かな?」と思った時に、それを形にできる力が欲しいと思ったからです。
皆さんも、何か「自分なりの動機」があって、今Pythonを学ぼうとしていると思います。
1. 初心者の壁
実は、Pythonを始めること自体は、全然難しくありません。
Pythonをインストールして、起動すればOKです。(わー簡単)
Anacondaなんかインストールした日には、いきなりデータ処理や、機械学習のライブラリなんかも使えます。(すげー)
でも、本当の壁はそこじゃないと2,3年前に初心者だった僕は思います。
学習サイトや、HowTo本、ブログ等、学習する手段も今は沢山あります。
Progate、PyQ、Paiza、ドットインストール・・・かなり豊富ですよね。
僕の場合、この本を手に取って勉強しました。
【この本の主な構成】
・はじめに基本的な文法の解説
・文法を組み合わせて簡単なプログラム(ゲーム)を作る
・ゲームなので、GUI(一言でいうと画面)を作る
・・・流れ的にはとても、丁寧だし。良い内容だと思います・・・
が!!!
読みながら、写経(プログラムを書き写して再現すること)して、読了し思ったのは・・・
「これとお手本と同じプログラムは書けるけど、こっからどうしたらいいのか???」ということでした(笑)
また、文法だから覚えなきゃいけないんだよな?こんなの覚えられるかな?
これが一番つらかった。
分からなかったので、学習サイトを片っ端からなめていきました。
・Paizaラーニング
・Progate
・PyQ
有料登録して、やりました。(スクール通うのに比べたら随分安いですが)
それでも、まだ「自分が何ができるようになったのか?」これが分かりませんでした。
2. 迷走?の日々
もしかしたら、専門分野に特化したら、道が開けるのか!?と、突然それっぽい本を買って読んでみたり(途中でやめたけど)・・・
PythonのGUIはちょっと小難しいけど、GUIをマスターしてもっと形にできたらなんか見えるかな?と、wxPythonをかじってみたり(もう覚えてない)
そうだ!Webアプリケーションという選択肢もあるぞ!とDjangoを学び・・・(今復習中)
いや、フレームワークってなんかこう、型にはめられてる感あるから、自分でPHPとSQL書けるようになってみようかと、PHPやらJavaScriptやらを少しかじってみて・・・
そういや、Webスクレイピングってやってみたかったんだよなーと本で勉強し・・・
さらに、flutterという、iosアプリとAndroidアプリを一つの言語で書けるという楽し気な言語まで手を広げる始末。(英語版のUdemyで勉強しました・・・英語分かんないけど 笑)
・・・結構振り返ると、やっぱまあまあお金かかってますね (笑)
3. 答えはそこにあった
よくまあ、自分でも挫けずにやってきたなーと思いつつも、それでも一体これで何ができるようになったのか?その答えが見えず、悶々とする日々。
しかし、ふと気づいたのです。
途中から、自分でも色々手を動かして思いついたものをコードに書くようになっていました。
僕はiPhoneを使ってますが、PythonistaというPythonを書いて実行できる便利なアプリがあります。
通勤時にコードを書いて、Webスクレイピングでニュース記事をまとめて読んだり、あとは、くだらないけど思いついたことをコードで書いてみたり・・・(僕はじゃんけんゲームと、Bingoゲームをプログラムにしてみました)
いつの間にか、コードがそれなりに書けるようになってました。また一つ気づいたのは、暗記する必要なんてないことです。
人それぞれやり方はあると思いますが、僕は学んだことは大体Evernoteに放り込んであります。忘れた時、使いたい時にキーワードで検索すれば取り出せます。(Evernoteを僕のデータベース化してます)
また、Google先生に聞けば、大抵のコードの書き方は載ってます(笑)
もちろん、プロのエンジニアではないので、これがランクでいうとどれくらいの位置づけなのかは知りません!
でも、もはやそんなこともどうでも良くなりました(笑)
自分がやりたいと思ったことを形にできる力、これこそが自分が求めていたものだったからです。
随分、遠回りはしたのかもしれませんが、今思うとどれ一つ無駄になったものはありません。すべてひっくるめて、今に繋がってると思います。
4. 大事なこと
一番大事なことは以下3点。そんなに難しくないことです。
① あきらめない
➁ 分からなかったら、聞くまたは調べる
➂ 知ったことは自分なりの方法でデータベース化する
プラスαで、学習の効果を増幅させる行為は以下3点。
➊ アウトプットする(人に説明する・何か作ってみる)
➋ 考え方の幅を広げる(読書したり、色んな人と話したり)
➌ 面白いと思ったことを追求する
これらができれば、後は自然と付いてくるのではないかと思います。
そして、プログラミング学習を始めてから、自分の思考能力がアップデートされた感があります。
仕事上、コードなんて基本書かないのですが、課題解決力自体が上がったように思います。
プログラム書く時って、「こんなやり方ならできるかな?」、「このやり方は自分には難しいから、簡略化するとこういうことかな?」みたいに、取り得る方法を複数考えたりします。
また、「Aという値がきたら、こっちに流して・・Bだったらこっち側に流して・・・、待てよ・・・どっちにもあてはまらない場合って・・・」みたいに結構MECEに考える癖もつきます。
これって論理的思考力の訓練にもなってる気がします。
今は、何も身にならない気がするかもしれません。でもそこは入り口でしかなくて、絶対に歩いていけばどこかに辿りつくし、その歩いている行為自体が実は答えなのです!だから、是非あきらめないでください。
5. このマガジンで書いていきたいこと
基本を解説しつつ、じゃあそれを具体的にどのような場面で使うんですかね?って事を交えて、書いていきたいと思います。
ぼちぼち更新していくので、よろしくお願いします!!