毎月の振り返り

プログラミングを独学で勉強した3年間の反省点【まとめ】と失敗談とアドバイアス|パート2/3

前回のパート1のおさらい

なんだかんだで言語を調べてみて、Pythonからスタート。最初は開発環境がなかなか構築できず、思っていたのと違う感が満載で、コンソールに「HelloWorld」を表示。魔法を使えるという幻想は捨てた。次は本をひたすら写経。意味も分からず写経をくり返しながら徐々に理解するも、英語入力に慣れていないので、イライラが止まらない。まずはタイピング練習を行う。慣れてきたところで、次はライブラリーが読み込めず、最初から開発環境を作り直す。なんだかんだで3か月経過。進み具合はほぼゼロ状態。ここが前回のパート1のおさらいです。

3ヵ月目以降に起こったこと

色々なライブラリを使って関数を作ってみよう!というところで、一通りの写経が終わる。自分で、例題じゃないやつも作ってみる。実際動いたときに、「すげーーー!」ってなった。「じゃあここにこうやって入力したら、こうなって、こういう風になって、おー!つながった、ちゃんと計算してる!!面白い!」という感じ。やってることは足し算とか引き算みたいなカンタンなことだけど、何が面白いって、自作関数が、その通りに動く!「動くこと自体」が楽しい感じ。でもそんな楽しい時間もすぐに終わる。
いよいよこの辺りからクラスが出てくる。ここで一気に止まる。クラス?インスタンス?オブジェクト?説明書きを読むと概要はだいたい理解できる。ネットで調べても大体わかる。でも、なんでそういう書き方?どうやって覚えたらいい?「私にあなたのことは理解できない。これ以上訳の分からないことを言うなら、もうついていけない。」ってなった。そうしているうちに、コンストラクタ(大型トラックみたいな名前)の言葉が出てきて、「__init__(self):」と書きなさい。「???」となっているのに、「問答無用です。書きなさい」と言われる感じ。インスタンス変数とか、クラスの継承とか出てくる。その時に 「あ、、、この人(Python)は運命の人じゃなかった」となった。今まで勉強してきて、それなりに理解していると思っていたのに、、、一気に迷子になった。これは犬のお回りさんでも泣き叫ぶレベル。と思った。ここを理解しないと進めないのか~、、、と思ったら一気に冷めた。ここまでが半年~1年の間くらい。

失敗談とアドバイス

・クラスはまずは、概念だけ理解する
・こういうものがあると知っておく
・フレームワークはクラスの塊なので、やっていくことで学べる
・本でやることは、理解してなくても開発できる

自分を信じられずPHPに浮気をしてしまう

神様「いつになったら、Webアプリとかスマホアプリが作れるんだね。」
私「Pythonでもそういうことが出来るはずなんですが、、、調べてみます!」
「Python WEBアプリ」とか「Python ブラウザ表示」とか色々調べました。本にもWEB入門みたいな節があり、やってみましたが、全然うまくいかないし、エラー地獄から抜け出せない。やったこともないことで、エラーが出る時って本当に楽しくない。ブラウザにHello World がいつまでたっても出せない。どんなエラーなのか、HTMLかPythonなのかさえわからない。しかも自分のローカルサーバーだけでしか見れないし(サーバーってなんぞ?)公開はされないの?というレベル感。(その辺も意味が分かっていなかったし、HTML自体触れなかったので意味不明だった)ここでMAMPをゲットして設定して、パスを通して、とか色々格闘して、やっとHello Worldを表示。Pythonでやろうとするからエラーでるんじゃない?HTMLだけならエラー出ないし。となる。
もう「AIとかデータ分析とか別にいい。やめや、やめや」「俺はWEBで何か作れた方がいいんだ。それやわ」「流行りなんかよう知らんけどPythonってなんやねん、WEBアプリ作るのに、なんでPythonやねん!」「HTMLとPHPやし。」となります。ここで一旦Pythonさんとは「さよなら」しました。

初のオンライン学習スタート

ここで私は、プロゲートというオンライン学習サービスを契約します。月額1000円くらいだったと思います。ほかにもドットインストールとかなんとかアカデミーとかがありましたが、当時、一番安くて、人気っぽかったので、プロゲートにしました。
オンライン学習で初めて気づいたのは、本で勉強するより、オンライン学習サービスを使った方が圧倒的に効率がいい。ということです。もう度肝を抜かれました(笑)圧倒的でした。環境もあるし、どこが間違っているのかも指摘してくれるし、問題はちゃんと順を追って難しくなるし、わざわざ意味のわからないエラーを検索することもなくなったし、わからなかったらまた戻って出来るし、しかもネットさえ繋がっていればどこでも出来る。クリアしたら点数とかもつくしちょっと面白い。あと、これはこういうものだよ!という解説がついているので理解しやすかったです。(忍者の猫みたいなキャラがかわいい)
最初はひたすら、HTMLとCSSとJavaScriptの講座を入門編から応用編までフル回転。3回転くらい。これで、基本的なことはだいぶイメージがつきました。何も見ずに書きなさい。と言われると厳しいけど、これがやりたい場合、こういう処理を入れないといけない。というのが大体わかるようになりました。一旦やり方を知りさえすれば、どうやるんだっけ?と思ったら書き方はググったらいいという感じでした。

失敗談とアドバイス

・HTMLの基礎と応用はオンライン学習でやっておいた方がいい
・JavaScriptとCSSも基礎と応用コースをやっておいた方が良い
・WEBブラウザ側で何が出来るのかは知っておいた方が良い
・細かく覚えなくてもググったらOK

PHPと駆け落ちとその結末

さあ次はいよいよPHPです。入門編や応用編を次々にやっていきます。PHPの入門編でCRUDを体験し、ビビるくらい楽しかったです。(CRUDを知らない人へ解説です。Cはクリエイトで登録、Rはリードで読み込みや参照、Uはアップデートで更新、Dはデリートで削除。CRUDクラッドと読みます。)データを登録したり編集したり削除したりするという意味です。自分でMAMPとPHPとHTMやCSSを駆使して、画面を作って、ローカルサーバーでデータベースにアクセスして、出来る、出来る!!!俺も出来たぞ!!!と楽しい時間を過ごしていました。しかしですね、、、結局Pythonの癖が抜けずに、リストの扱いや条件分岐や繰り返しなど、少しアレンジしようと思うと、PHPの基礎知識が乏しいので、思ったようにできないんです。また基礎からやり直しか、、、そう思うと憂鬱です。PHPはPHPで書き方があるわけですよ。半年前に始めたばかりです。少なくとも私にはPHPとPythonの書き方の使い分けが出来ず、ややこしくなる一方でした。始める前はLaravel(PHPのフレームワーク)の本まで購入してやる気満々でしたが、いざ触ってみると、Pythonが恋しい。PHPで何かを書く度、調べる度、Pythonで書きたい。Pythonにもう一度会いたいという思いは強くなる一方でした。その結果、PHPとの関係も終わっていきます。
Pythonを使ってもWEBの処理は出来る。HTMLとCSSが課題だっただけで、俺にはやっぱりPythonしかいない!!!となりました。(ただ、わからないところから逃げ回っているだけですw)

失敗談とアドバイス

・基本的にどの言語も親戚みたいな感じで似ているのは似ている
・一つの言語を極めたらあとの言語は必要に応じて使える
・学習コストがかかるのでやりたいことに応じて選択するべき

DjangoとSeleniumとの出会い

次に私は、PHPで出来たんだから、Pythonで簡単なWEBアプリを開発しようと試みます。
その時、出会ったのがフレームワークというものです。名前は、Flask、Django、Bottleのお三方です。チュートリアルやQiitaを見ながらやってみました。今までの基本構文とは比べ物にならないくらい難しい。書いてあることが理解できませんでした(笑)
でも実際に書いて、調べてやってみると、出来ることは出来る。ここで一つ悟りました。
「最初からすべての意味を理解しなくていい、必要に応じて理解していくものなんだ」と。エラーが出たらラッキー、そこを修正するためにまた理解が一つ深まる。ただ、そうは言ってもクラスもわからない人間がゴリゴリ使えるものじゃないと思いました。そうこうしているうちに、WEBスクレイピングに出会いました。「初めまして、WEBスクレイピングって言います、よろしく!」とSeleniumくんが現れました。なんでも、WEBブラウザをプログラミングの制御で自動で操作してくれるようです。チュートリアルをやってみると本当に動いた!これでWEBブラウザを使う処理とか全部自動化できるんじゃない!?とわくわく
以前に「退屈なことはPythonにやらせよう」という本を読んでいたこともあり、テンションはMax!!!今まで手間だったことも工夫次第で、仕事が自動化出来る!実際に仕事で活かすことが出来て、作業をいくつか自動化しました。
WEBからデータを取得して、データベースや、スプレッドシートやエクセルに保存するという方法も試して実際に出来たし、この辺りはめっちゃ楽しかったです。あるサイトを毎日スクレイピングし、データを少し加工して、LINEやチャットワークに自動で毎日通知するというアプリを作成しました。少し利用してもらっており、年間5万円稼いでくれています(笑)
サーバーはHerokuの無料枠を使っているので無料です。これが初めて稼いだお金でした。

失敗談とアドバイス

・こんなこと出来たらいいんじゃない?というアンテナを大事にする
・まずは小さく作って、小さくやってみる
・技術だけ勉強するんじゃなくて、やりたいことを見つける。
・やりたいことをどうやったら実現できるかを大事にする

スマホアプリへの野望

自分用の便利アプリを作って、スマホで使うぞ!と意気込んでいた時期もありました。
ただ、スマホアプリは無理なので、WEBアプリを作ってそれをスマホで見る。というイメージでした。しかし、Djangoも中々進まず、WEBアプリは諦めモードでした。そこへ彗星のごとく現れたのが、GoogleのGrideです。

私が手を出したときは、まだまだ基礎的な機能しかなくて、今の機能とはかけ離れていましたが、それでもカンタンにこういうものが作れるんだ。と感動しました。ノンコードでスプレッドシートをデータベースとして扱い、スマホで動く簡単なアプリが作れます。(2022年1月現在はもっと機能も充実しているのでより高度なものが作れるようになっています。)

半年から1年半の経験談と失敗をまとめると

とにもかくにも、一人で勉強と言うのは、続かないです。プログラミングの勉強をやる目的がはっきりしているかどうかだと思いました。
仕事でやるなら、転職した方がいい。もしくはオンライン学習で仕事をする前提で高いコースに申し込む。その方がしっかり身に付きますし、活かせます。
私の場合、本やネットで勉強して独学でやってきましたが、実際に仕事でやるレベルの最低レベルというのがわかりません。エラー処理や例外処理やログを残すかなどもわかりませんでしたし、実際にお金を取る段階になって、こういう場合はこういう処理を入れておいた方がいいとか、後で見返したときここが分かりずらいし、こういう風に別のファイルにしておいた方いいとか。やってみて初めて気づくことが多かったです。チームで動くとかも無理です。基本構文を知り、自分で動くものを作ってみた。というのが1年間の成果でした。一番の学びは、やりたいことがある、わからない、調べる、動かしてみる、エラーでる。調べる、動く、カスタマイズしてみる。いうサイクルを見つけたことです。