始めに
こんにちは!まんじです!
今回は自分が2020年ぐらい?から0からPython(プログラミング)を勉強し始めて、実務に入るまでに実際にやった勉強法というか手順を書いてみたいと思います。
結論から書くと、こんなことを上から順番やっていきました。
- Pythonをドットインストールでちょびっと適当にやった
- MacでPython3系の環境構築
- Seleniumでスクレイピング
- Flaskで作るTODOアプリっぽいものを真似て改造してポートフォリオ化
- Djangoを使ってなんかもう1個ポートフォリオっぽいものを制作
- PaizaでPythonの文法(簡単めなアルゴリズム)を書く練習をした
- 実務に入って稼働開始した
こう見ると少し多く見えますけど、実際にやったのはPythonを入門してスクレイピングとウェブアプリを作ってからちょびっとコーディング試験などのための勉強をして実務に入ったって感じです。
1個ずつ書いていきたいと思います。
Pythonをドットインストールでちょびっと適当にやった
ドットインストールのPythonの講座を結構適当にやりました。
大体1~2周ぐらいで、ローカルのMacにデフォルトでPython3系が入ってきたので、それを使って勉強用のディレクトリを作ってやっていました。
定番の変数やらループ処理やらif文やら関数やらオブジェクト指向やらを一応真似して書いてたんですけど、正直理解は浅かったと思います。
大体2週間ぐらいはやっていたような気もします。
途中で飽きてやらなくなくなったので、次にいきました。
MacでPython3系の環境構築
デフォルトでpython実行するとpython2系が呼び出されていたので、python3系にaliasというかpathを通すみたいなやつをqiitaでコピペしてとりあえずローカルで快適にPythonを実行できるようにしました。
最近のMacとかWindowsのWSLとかだとデフォルトでPython3系が呼ばれるみたいなんですけど、自分のはPython2系だったので、変更しました。
ちなみにこういうパスを通すとかalias設定するとかは入門時の頃、まじで何がなんなのか意味不明すぎてつらみでした。。。
厳密には今もよく分かっていないんですけど、慣れてくると、そういうものなんだな〜っていう感じで常識化していきます。
読み返してみると、パス通すとかわざわざ書かなくても良いような気がするけど、なんか書いてしまった。
Seleniumでスクレイピング
自分はプログラミングをする前に中国輸入物販とSEOアフィリエイトなどをやっていたので、そこらへんの処理の自動化やらのためにSeleniumでスクレイピングしていました。
具体的には、Googleの検索順位チェックとか、Amazonの検索順位チェックとか、あとは大学の講義のスクレイピングをなぜかしていたり、ひたすらスクレイピングしまくってました。
スクレイピングして、CSVに保存して、なんか喜んでる、みたいな。
でも今思うと結構これは勉強になったなって思います。
↓こういうやつら。
- ライブラリをインストールする知識
- ライブラリを適当に使う知識(最初はqiitaからひたすらコピペして分からないけど動かす)
- 配列とか文字列操作やらifやらループやらの基本的なPythonの文法知識
やっぱり実際に使うほうがちゃんと考えて手を動かして調べられるので、ドットインストールとかで適当に真似してた時よりも深い勉強になっていたんじゃないか説が自分の中では結構あります。
大体2週間~1ヶ月ぐらいスクレイピングをやっていた気がします。
Pythonのコード書く練習にもなったし、htmlの構造を理解する的な勉強にもなったような気がする。
Flaskで作るTODOアプリっぽいものを真似て改造してポートフォリオ化
確かAmazonのプライムリーディング(プライム会員なら無料)に登録されていたやつがあったので、それをやりました。
↓これ。
個人的には結構分かりやすくて、コピペしたりしてもそこそこ進んでいけたので普通におすすめです。
ただ、途中からよく分からなくなっちゃったので、途中で挫折したんですけど、必要な箇所(CRUD)らへんまではこの書籍でたどり着けたのでそれはよかったなって思います。
この本でできた雛形を、Amazonの商品ページをスクレイピングしてそのデータを毎日保存するみたいなアプリにして、それをポートフォリオにしました。一応StripeもDevモードで入れた気がするんですけど、Productionでは動かせてなかったような。。。
この勉強含め、それを作るのに大体2~3ヶ月くらいはやっていたような気がします。
最終的にはこのmarginが微妙なのでなおすとか、ランキングをチャートで表示するとか、CSSをひたすらプロっぽいデザインにするみたいなことに時間を多く使っていました。
そこらへんに関しては勉強になっていたのかは怪しい。
Djangoを使ってなんかもう1個ポートフォリオっぽいものを制作
「FlaskやったらDjangoだろ!Djangoのが実務で使うらしいからな!!!」ってことをなんとなくネット見て知って、Djangoを始めました。
Djangoに関してもAmazonのプライムリーディング(Kindle unlimitedだったかも)みたいな本であって、それを真似してやりました。
↓これです!
解説多めなスタイルの書籍で、自分はフィーリングでとりあえず動かしながら慣れていく厨なので、まあまあって感じでした。
ただ、localhostで立ちあげたりDjangoのsetting.pyファイルのようなものやらデータベース接続やらがこの本で分かったので、そこの設定をベースにFlaskでやった時と同様に進めていきました。
テンプレートエンジン(htmlにforをつっこむみたいな)とか、getとかpostのルーティング設定とかもFlaskとかなり似ていたのでそこまで苦戦はしなかった気がします。
そんでこの本読んで真似てからDjangoで物販の在庫管理システムみたいなものを作りました。
↓こんなやつです。
- CSVとか.txtファイルをAmazonとかの売り上げレポートからダウンロードしてそれをアップロードする
- と、それをparseしてデータベースにつっこんで、それをグラフとか期間とかで表示
- 仕入れも原価入力してcsvでアップロードして、SKUごとの利益とかを見れるようにしてグラフとかで表示
結構実用性はあると思うんですけど、実際に細かい部分まで作りきるのとちゃんと集客してビジネスにして〜っていうところができなかったです。
Flaskのほうもそうなんですけど、実際に人に使ってもらうところまでは何気にハードルがすごいあるなと感じました。(技術的な側面ではなく。。。)
とりあえずこのDjangoでウェブアプリを作るぐらいまでで、結構一通りPythonやらウェブアプリの仕組みとかも分かったので、それは良かったなと思います。
Djangoも2ヶ月か3ヶ月ぐらいやってた気がします。
PaizaでPythonの文法(簡単めなアルゴリズム)を書く練習をした
ここらへんから、一応新卒でエンジニア就活をしようと思って、YahooとかビズリーチとかDeNaとかSanSanとかFreeeらへんに応募し始めました。
大体コーディング試験があって、まずビズリーチとYahooらへんからやったんですけど、くそ簡単なことができないことが判明しました。
具体的に出来なくてクソ悲しかったのがこれ↓。
- APIのエンドポイントがここなのでそれをどの言語でもいいのでCallするコード書いてください
- 連想配列(ハッシュテーブルとも言う)を使ってアルゴリズム組んで解くやつ
今振り返るとすごい簡単で、しかも当時の自分も「え、おれこれできないの???やばくね???」と気づきまして、そこからコーディング試験の練習を少しだけ始めました。
(当時、連想配列よりも全て配列で処理するみたいな独学アルアルな変なことをやってました、あとビズリーチとYahooはコーディング試験で落ちた)
具体的にやったのが、Paizaだけじゃなくて、簡単なデータ構造とアルゴリズムの勉強をこれまたAmazonのKindle unlimitedとかにあったのでそれをやりました。
- クイックソート
- バブルソート
- 二部探索
- 動的計画法
- キュー、スタック
- 木構造
ここらへんをやったんですけど、当時は全然よく分からなかったです。
とりあえず本にある内容をコードコピペというか真似して書いてみて、「うーん、よくわからないというか、何に使うんだろうこれ」みたいな感じでした。
そこから実際に練習したかったので、Paizaの有料会員月額980円ぐらいでプログラミングの問題の練習みたいなのが出来たので、それをひたすらやっていきました。
本当に簡単なものから、少しだけ難しいというかアルゴリズムっぽいものがあったんですけど、総じて結構簡単だった気がします。
LeetCodeとかも少し見たんですけど、当時はプログラミングを日本語でググってやっていたりしたので、「英語むり〜〜」ってことでLeetCodeはやらなかったというよりも実力不足でやれなかったです!!!
そんでPaizaを一通り解きまくって、そこからSanSanとかFreeeとかそこらへんのクラスタのコーディング試験をやって、ほぼ全部解けて面接進んで〜みたいな感じの勉強というかフローをしていました。
振り返ってみると、ここらへんで結構コーディング能力というかアルゴリズムっぽい計算量とかを微妙に意識できるようになったような気がします。
大体1~2ヶ月やっていました。
実務に入って稼働開始した
2020年の8月からプログラミングを結構真面目にやり始めたので、大体9ヶ月目ぐらいから長期インターンで実務を始めました。
「おれって1人でアプリ作れるしめっちゃすごいんじゃね?」とかFlaskのアプリを作っていた頃にめちゃくちゃ思っていたんですけど、残念ながら、、、全然出来ないというか出来なさすぎて、昔偏差値26から大学受験した頃とほぼ同じようなメンタルになりました。
「え、おれめちゃくちゃ底辺じゃん・・・」
と思って結構悲しかったというかつらかったです。
Pythonオンリーでやってたんですけど、そこの技術スタックがJavaScriptメインでバックエンドはExpressでフロントエンドがReactだったので意味分からなさすぎてかなり詰んでました。
そんでそこの長期インターンでボコボコにされながら実務を11ヶ月ぐらいやって、上場企業の正社員でJava研修2ヶ月やって、辞めてニートになってReactでフリーランスになったというのがその後の流れでした。
まとめ
文法を適当に入門してウェブアプリ作って、プログラミング力を高めるためにコーディング試験の練習して〜って流れでした。
淡々と文字では書いているんですけど、当時独学で勉強してた頃は結構つらかったです。
いろいろ人生におけるつらみはあったんですけど、具体的にプログラミングで特につらかったのがこいつらです。
- 1人でやってるから、イマイチ自分ができるのかどうか分からない不安
- 何を具体的にやると伸びるのか分からないというか、何をやるのがいいんだ?という不安
- 1人で朝4~5時間やって、外行って3時間ぐらいやる日々にまじで飽きていたというか、シンプルに毎日がつまらなさすぎて挫折しそうになりかけた
- 結構、途中で病んでた、特にDjangoらへん
- 25歳にもなってプログラミング無給で勉強してるおれ情けなさすぎないか・・・?という自尊心の欠落と毎月減っていく貯金(プログラミング始める時にSEOとか物販のビジネスをやめたので収入がなかった)
駆け出しシーズンはまじでつらかったんですけど、長期インターンで社長エンジニアを真似したり(感謝)、その後フリーランスになってからもGAFAM系のクソ強い系エンジニア達から教えてもらったり真似したり(感謝)、っていうのを繰り返していって、まだクソ余裕ではないけどエンジニアで普通ぐらいのゾーンまで来れたって感じになりました。
実家で25歳で無収入になり大学も休学してたから単位取りつつプログラミングを0から駆け出しエンジニアっていうめちゃくちゃ情けなかった頃がなつかしいです。