プログラムを覚えるにはどうしたらいいか?僕が年収1300万円稼ぐまでに勉強したことや作った物


前にプログラムはコスパがよく最強の投資となる話を書きました。

「プログラミングはコスパ最強の投資!プログラムを学んで年収が4倍になった話!」

今回はそのプログラムを覚えて年収1300万円になるまで行ってきた勉強、作った物、プログラムを覚えるにはどうしたらいいか?について書いてみたいと思います。
まず、僕がプログラムを始めた年齢は26ぐらいの時です。始めた年齢は遅くもなく早くもなくといったところでしょうか。
前段階として僕はhtmlを独学で勉強していまました。あとFLASHも趣味で使っていたりしました。
htmlの学習自体はネットで調べたもので当時、無料のホームページスペースのジオシティーズというものがありそこを利用してホームページを作っていました。
htmlの学習自体は当時のレベルのものであれば1ヶ月程度勉強すれば作りたいと思えるものは疲れていました(javascriptを除く)

さて、はじめて学んだ言語はPerlでした。「はじめてのPerl」みたいな本を買ってきて写経して覚えていったと思います。
機能の一部として作ったのではなくちゃんとサービスとして動くものを作ったのは
トリビアの泉をパクったサービスでした。
トリビア(お題)に対して「へぇ」ボタンを押すとへぇが集計されるような今考えると大して面白くないサービスなんですが楽しく作ったのを覚えています。
その後、仕事でちょくちょくperlを使ってホームページの一部のコンテンツを作成することがあったりしてそこでperlを大体、実用的に使えるまで覚えました。
今ではほぼ使うことがなくなってしまったので忘れてしまいましたが・・・w

その次に覚えたのがPHPとApache、MySQLでした。当時windowsしか触ったことがなくLinuxなどは全く分からなかったので
Linuxをインストールするのがけっこう大変で書籍通りにインストールしようとしてもうまくいかなことが多かったり、ネットで情報を探しても今みたいに情報がなく当時のも僕にはハードルが高くて別の方法を探し
結局、windowsにPHPとApache、MySQLを入れて勉強していたと思います。

https://www.amazon.co.jp/MySQL-PHP-Web%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E5%85%A5%E9%96%80-%E7%94%B0%E4%B8%AD-%E3%83%8A%E3%83%AB%E3%83%9F/dp/4797313250/ref=sr_1_130?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=MySQL+PHP&qid=1563008279&s=books&sr=1-130

この本に書かれていることをやってPHP、MySQLを使った初歩のWEBシステムはできるようになったかと思います。
ただ、今読んでも情報を古すぎるし役に立たないかと思います。当時は基礎的なことを知れるのでとてもいいと思える書籍でした。

僕がPHPとMySQLで作った作った最初のWEBシステムはSNSでした。
そうです。いきなりSNSですw
作りたい物を作らないと結局上達しないと当時から思っていたのでSNSを作るために必要な情報を調べてなんとか作り上げました。
ただ、誰かに教えてもらうことがなかったので、致命的なデータベース設計をしていたりしました。
それこそ、今だったら考えられないし、なんでこんなことしてるんだ?と思うような設計です。
運用を始めてからこのやり方は致命的なんだと気付きましたがここまできてしまったのでそのままサービスを続けました。
それから数年して何か新しいことやりだす時はルールや作法があるだろうとかなり調べてから作るようになりました。
よくあることだと思うのですが、昔、自分が書いたコードを読むのがすごく恥ずかしいというか辛いというか消し去ってしまいたいというか、これは多分何年たってもあるだろうなと思いますw

その次に作ったものもSNSでした。このSNSではトランザクションを勉強したいと思いPostgreSQLを使ってSNSを作りました。
このSNSではFLASHとデータを連動させてグラフを表示させるようなものを作りました。

SNSを作るというのは仕事で必要になるようないわゆるホームページ作成という技術をほぼ身に着けることができると思います。
ログイン機能、掲示板機能、日記機能、メール機能、あしあと機能、ポイント機能、管理するための管理画面の機能、(余裕があれば課金機能)など

次にアフィリエイトにはまっていた時期によく利用したものでapiを使ったサイト作りをよく行っていました。
当時はビッダーズという楽天のようなサイトがありそこでwebサービスというものがあってビッダーズwebサービスを使って
商品情報を取得して通販サイトのような物を作ったりしていました。ここではじめてapiというもの学習しました。

ちょうどこの頃webデザインはcssで行うことが主流となってきており、その前までのテーブルレイアウトという物が淘汰されてきていた時期で
cssを使ったサイト作りを勉強しました。昔は今では考えらないですがスペーサーとかいう透明なgifなどを用いてテーブルレイアウトが崩れないようにコーディングしていたんです。
今の人が聞いたらテーブルレイアウトってなに?と思うかもしれませんねw

そして時代はワードプレスへ!
ホームページの作成はコンテンツの更新には専門的な知識が必要でした。
しかし、ワードプレスというものが登場してから専門的な知識を持っていなくてもコンテンツの更新作業を企業のweb担当者レベルの人でも容易に更新できるようになりました。
それまでは高いお金を払って更新作業をホームページ制作会社に依頼したりしていたのが
簡単にコンテンツの追加や更新ができるようになりランニングコストがあまりかからなくなりました。
当然、ワードプレスをベースにしたり一部コンテンツをワードプレスにするということが非常多くなり
通常のホームページより高単価でお客さんからしてもランニングコストがかからないということが魅力でどの制作会社でもワードプレス!ワードプレス!という感じでしたので
僕もワードプレスの本を買ってきて1週間くらい勉強したかと思います。
ワードプレスはPHPで作られているので独自のタグもありますが学習しやすかったです。

このあたりからサーバーについて勉強するようになりました。
レンタルサーバーだと制約が多く、やりたいことができないということが多かったので
重い腰をあげて脱レンタルサーバーということでvpsを借りてcentosでサーバー構築をしました。
実は以前からwindowsサーバーに関してはある程度知識があったのですが
Linuxについてはあまり知識がなかったのでこのままではいけないなと思ったのも理由のひとつでした。
ただ、windows大好きっ子だった僕は、初っ端からつまずいていました。viってなに?テキストエディタ一つとっても操作を覚えるのが大変でした。
root権限ってなに?
yumってなに?
リポジトリってなに?
iptablesってなに?
sshってなに?
分からないことだらけでネットで1つずつ調べながらサーバーを構築していきました。
きちんと運用できるようになるまで1ヶ月はかかったかと思います。

サーバーを運用するようになってからサーバー関係の仕事も請け負うようになりました。
高負荷サイトの運用を行うようになり。webサーバーをApacheからNginxに切り替えて運用するようになりました。
この時、キャッシュを利用することも覚えました。

ワードプレスは静的にページが生成されるわけではなく動的に作られるものなので静的ページを表示することに比べてかなり負荷がかかります。
そこで大量のアクセスを捌かなければいけない高負荷のサイトでキャッシュを覚えました。ここでいろんなプラグインを試しました。
さまざまなキャッシュプラグインがあったのですが最終的に現在はNginxのリバースプロキシキャッシュというものを利用する方法をページキャッシュさせるサイトにおいては利用するようになりました。

サーバーばかりやっていてフロント関係の知識がかなり乏しかったのでこのあたりからフロントエンドについて勉強をするようになりました。
jQueryにcssフレームワークのbootstrapを利用した高速開発も勉強しました。今はまたほとんどフロントを触らなくなったのでだいぶ忘れてしましましたがw
jQueryについてはjavascriptをあまり勉強してなかったのでwebサイトで簡単にダイナミックな表現ができるので当時すごいと思ってよくjQueryプラグインを活用してサイトを作っていました。

このあたりでスクレイピングサイトをよく作ったりしていました。
スクレイピングによるまとめサイトみたいな物を沢山作りました。
アンテナサイトとかも作ってました。
まとめサイトとかは嫌われる傾向にありますが一人で絶対できないようなサイトもプログラムを利用し作ることができるので技術的な部分では勉強になりました。

ワードプレスによるサイト作成をかなり行っていたのですがどうしてもワードプレスだと色々と向かないサイトというのもあり
そういったサイトは大規模なサイトに多いのですが大規模なサイトはフルスクラッチで作ることほとんどでした。
また、1つのhtmlでcssを変えることによりスマホやpc、タブレットなど複数のデバイスに対応したサイトを作る技術のレスポンシブWEBデザインが主流となってきた時でレスポンシブについて少し勉強しました。

大規模サイトならではのことなのですが、キャッシュに関してやはり詳しくなりました。
アクセスが非常に多いサイトでページの更新の頻度が多いサイトなどの場合、ページ全体をキャッシュして負荷を減らすという方法が取れない場合が多く。
負荷が出る場合のボトルネックとなる部分がMySQLのデータの取得部分にあるので、取得したデータをRedisなどのKVSに保存する方法をよく利用しました。
また、サイト内検索などは全文検索エンジンの導入など行ったりしました。

フルスクラッチでの大規模サイトの制作が辛くなってきて
phpフレームワークのcakephpを少しやってみましたが一通りサンプルを作ってみて、作法を覚えるのが面倒で結局フルスクラッチでやっていましたが
のちにLaravelを使うようになりました。

PHPフレームワークはいくつかありますがその中でもLaravelは最近主流のフレームワークとなっており、書籍も出てきたので学習しやすくなってきています。
Laravelは業務でも使うようになったのですが、慣れると一から開発するのが辛いと思ってしまうくらい楽になります。
ただ、phpの勉強をせずにいきなりフレームワークから入るのはやめた方がいいです。

その後、ロードバランサーを使った負荷分散システムの作成、APIを利用した課金サービスの導入、クラウドサービスを使った画像配信、最新のフロントエンドの技術であるvueなどをやりました。

サーバーをかなりの数管理するようになり統合監視ソフトウェアのZabbixを導入するようになりました。設定がちょっと難しく今でもあれこうだったかなと試行錯誤しながらやっていますがサーバーの異常をいち早く知ることができるので障害対応が遅れることがなくなり重宝しています。

現在ではクラウドサービスが非常に人気でサーバーなどは全てクラウドを利用するということが増えてきています。
ただ、AWSなどはあまり大きな規模のサイトでなかったりサイトの種類によってはコストが高くついてしまうことが多いため、僕はVPSを利用しています。
大規模サイトなど初期の設備投資が異常にかかるようなものはクラウドというのはそれこそコストを1/10くらいに抑えることも可能となるため
これからクラウドについてより深く学習することは必須となってくるかと思われます。

ざっとですがどんなことをやってきたか書いてきましたが。上記くらいのことができるレベルであれば年収500万600万程度は普通に稼げるようになると思います。
あとは営業能力に関してですがこれは勉強会でもなんでもいいので人脈を広げていくことで自然と仕事を紹介してもらえたりします。
ブラック的な働き方をすれべ年収1000万も可能かと思います。
僕の場合、完全なリモートなので時間的な拘束が多かったとしてもストレスはほぼありません。
とにかく手を動かして、積極的に人と関わっていくことで安定して稼げるようになるかと思います。

ただ、僕の場合、たったこれだけの知識を身につけるのに莫大な時間をかけてしまいました。
はっきりいって非効率的で今の自分が知識を得るとしたらオンラインスクールなどを利用して短期間で技術を習得すると思います。
もしきちんと誰かに教わっていたとしたらここまで苦労せずにある程度の収入を得ることがもっとずっと早い段階でできていたと思います。
おそらく7,8年は早く習得できていたと思います。
その7年8年という時間を他のことに費やしていれば今よりもっと高い収入が得られていたでしょう。
より専門的な技術が必要な案件は高額な単価となります。もし、オンラインプログラミングスクールなどを利用していれば
そういった深い技術の習得に時間をかけられることができていたかと思います。
時は金なりとはよくいったもので、時間はすごく貴重なものです。
多少コストはかかってしまいますがそれだけ時間を節約でき、将来的に稼ぐことができる金額は数千万、下手すれば1億以上増えるでしょう。
自己投資を惜しまないことこれは本当に思っていますので、これからプログラミングを始めようと思っているかたは、オンラインスクールを検討してみることをおすすめします。
また、転職や就職にもプログラムは有利に働くのでおすすめです。

以上となります。
上記のことを実践してきたら僕は年収1000万以上稼げるよになりました。僕レベルの技術は長くても2,3年で全て習得できるレベルのことなので、もし人生を豊かにしたいと思っている人がいれば
ぜひプラグラミングを始めてみてください。
きっと、あなたの最強の武器となるはずです。ホリエモンも、ひろゆきも元プログラマーですからね。彼らもたしか言っていたと思います。プログラムは本当にコスパがいいです。
また、機会があれば過去の経験などについて話してみたいと思います。
それでは、よいプログラムライフを!

シェアする

  • このエントリーをはてなブックマークに追加

フォローする