会社辞めてプログラミング漬け生活を始めて1年が経過したので心境を書いていく

更新日:

プログラミング初心者の勉強ブログ #136

会社を辞めてプログラミング漬け生活し始めて気づいたら1年が経っていたので、現状の進捗感や心境を書いていく。自分の人生のどの1年間を切り取ったとしても、この1年間より変化に富んだ期間は無いと考える。実績と呼べるものは無いが、現状の成果など含めて自己満のためにまとめる。

 

目次

 

はじめに

会社を1年前に退職し、自由な働き方をするために業界知識0からプログラミンングを勉強し始めた途中経過。自分のモチベーション上げるために脈絡なく思うがまま書く。

 

学習進捗

学習面の進捗を記録する。プログラミングと言いつつ、結構広範囲に手を出しているため項目を設けて書いていく。

 

Web基礎

HTML / CSS

書くまでも無いが、一応網羅的にまとめるため項目として設けた。そうは言いつつ、一番コードを書き時間を割いている項目である。HTMLのタグはOGPなど含めSEOに直結する部分(もちろんコンテンツ力が一番だが)があるので、metaタグあたりを意識して覚えた思い出。CSSは好きだったのもあり、SCSSプリプロセッサとかBEM設計技法などにも取り組んだ。正直CSS書いた量が一番自信がある。最近はラクしてBootstrap使ってしまっているが、Bootstrap入れると自分で編集するときに思わぬ挙動で悩まされる。

ここら辺で地味に詰まるのがパス関係だった。相対パスを適切に書くことに慣れるきっかけであり、それが無いとBootstrap含めライブラリを使いこなせない。今となっては当たり前のことに感じるが、当初は意味わからなかった。

 

言語・フレームワーク等

学習の時系列に沿って書く。

 

JavaScript / jQuery

最初はJavaScript、というかjQuery。JSライブラリとは聞くものの、当初はjQueryも概念的にしっかりとJSと区別できてなかったなと思う今であり、JSとjQueryの区別も曖昧でかつDOMが何なのかも腑に落ちていないまま、DOM操作がうまく行かず頭を抱えていた。

Node.jsやVue.jsなどもJSだが、一旦切り分けて後ろで書く。

 

Ruby / Ruby on Rails

プログラミングスクールがRubyを学習、というかRailsを学習した。Railsが自分の中で母であり、RailsがMVCを教えてくれ、gemが大体のことを解決してくれた。Webの基礎知識をRailsの後追いで学んだ。スクレイピングも、APIも、非同期も。「最近はRailsでHerokuにデプロイしただけでプログラマー」とか揶揄されたとしても、成功の実体験を超スピードで提供してくれるRailsが好きで何が悪いんだと思う。実体験は学習を加速させるのは間違いないと思うし、便利なものを使って時間かけない方が少なくても生産性は上がる。リーン的なスタートアップの思考で言えば、その考えはナンセンスであり、古参的で老害的思考に酔っているか、または技術者としての維持とプライドか、そこらへんの話になってくる。技術者としての維持とプライドなら納得する。

 

Python / Django

PyQというサービスでPythonの基礎文法を学んだ。Rubyでは意識しなかったタブルや集合の概念を学んだ。他にもラムダ関数やインデンドなどから、言語によって概念や書き方の幅が異なることを感じた。PyQというサービスでは、Python環境がオンラインで整っており、ローカルで環境構築を一からすることはなかったため、Djangoも正直やったものの覚えていない。実際に何か自分でプロダクトを作成しないと定着しないと改めて感じた。

Pythonやってみていた当時は機械学習について興味が薄かったが、最近は機械学習に手出したい願望がかなり高まってきている。コラボラトリーとPythonライブラリを駆使すれば、そこまで難しいものではないのではないかと感じるが、モデル作成は職人芸みたいな話も聞いた。ニューラルネットワークの説明を聞いたが、よくわからなかった。

 

JavaScript / Node.js / Express

Node.jsってなんだよ、Next.jsとかNuxt.jsとか似たような名前多すぎだろ、っていう状況から脱却すべくNode.jsに手を出す。一言で言えば「開発環境」であり、とにかくこの環境を使えばサーバーでJSが動き、Webサーバーを立ち上げることもできるのである。開発環境とか言われても、当初全く腑に落ちることはなかった。Railsが入りだと、フレームワークという概念に縛られる。学習が進むにつれ、実際にフレームワークがやっていることをキャッチアップする作業が始まる、というよりそうしないと理解ができない。つまり、Railsで学んだ概念のどれにも当てはまらなかったから最初Node.jsの存在そのものが理解できなかった、今ではそう思う。

Expressは空っぽのフレームワーク。現状Webアプリ開発でExpressをわざわざ使う理由が理解できていない。ただやってみたいだけで、ジャンルで言えば趣味であり、そうなると勉強ではなく遊びになってしまう。優先順位下げてもいいかもしれないなと書いてて思った。

 

PHP / Laravel

最初はLaravelかかってこい的な感じで身構えていたが、Webフレームワークだけで言えば、言語がやることはデータの処理と演算くらいで、PHPをやったときに「理解できないモノ」にぶつかる感はあまりなかった。そのため言語を増やすことに抵抗を感じる必要はないのかもしれない、と少し調子に乗ってしまった。その後やってみたSwiftで「理解できないモノ」=知らない概念にガンガンぶつかって少し反省した。

そして、ここへ来てLaravelがRailsに負けず劣らず「良いモノ」だと感じてしまっている。理由は2つあり、本番環境構築がレンタルサーバーで出来てしまうことと、Vue.jsが標準実装であること。ララビューとかよく言われるが、確かにVueやるならRailsよりLaravelの方が工数が少ない。そしてVueもかなり「良いモノ」だと感じている。

 

JavaScript / Vue.js

双方向データバインディング見てすげーなった。Vue-cliとvuex入れたあたりで複雑になってきた。ララビューするとまた少し違う。SPAはVue使うと思ったより難しくないことを知った。SSRがまだ手を出せていない。async / await とりあえずつければ非同期処理はだいたい制御できる。リファクタリングが課題。感覚的にcomputedとmethodsを使いこなせていない感が凄い。storeもリロードすると消えるからなんかあまり有効活用できてない。課題が残る。

 

Swift / Xcode

WebとNativeの両立は難しいと言われたが、スクールの先生はフツーにどちらも扱えているのでそんなことはないと思い、Swiftに手を出した。アップデートの度にアプリが壊れるとか聞いて、Swiftやる意味があるのか悩んだが、やりたいもんはやりたいのでしょうがないと割り切った。iOSアプリはSwiftだけで作られていると思っていたが、XcodeでUIKitやAutoLayoutでフロントエンドを構築する必要もあると知った。確かに考えてみればアプリも主要言語とフロントエンドは分かれてるなと。当たり前なのかもしれんけど。

これも授業で画像投稿アプリをローカルで写経しながらやった程度なので、まだまだ時間がかかりそう。

 

データベース

PostgreSQL

Rails学習で言われるがまま最初使ったDB。MyQLに比べると玄人感が出るイメージがあると聞いた(知らんけど)。今思うとHerokuがポスグレだからRailsでPostgreSQLは教材カリキュラム的に都合が良いのかもしれない。DBは違いを述べられるほどよくわかっちゃいない。

 

MySQL

PHP学習で初めて触った。PhpMyAdminや MySQL WorkbenchみたいなDB周りの便利ツールがあることをここで知る。ポスグレの時はターミナルでDBの中身を確認していた。探したらポスグレでも用意されているみたい。PHPはPDO使うときSQL直で書いたのでSQLの復習になった。バージョンによってはNoSQLもできるみたいなのでやってみたい。

 

mongoDB

Node + Express + mongoDB でフロントからサーバーまでオールJS構築をする時に使用した。NoSQLというDBに興味があったため使ってみたくなった。NoSQLのDBは色々特徴が異なるらしい。興味本位で少し使ってみた程度。

 

 

インフラ環境構築系

Heroku

言われるがままとりあえずデプロイした。意味わからなすぎてエラー出てめっちゃ萎えた。とにかくエラーが出ないことを祈っていた。今思うとHerokuで根をあげている場合ではなかった。それくらい簡単にデプロイできるサービスであり、ありがたいものだった。

 

AWS EC2 / S3

EC2とS3へのデプロイを1回だけやった。AWSは苦手で、勉強しないなといけないなと思っている。サーバーレス構築は知っておきたい。API Gateway + Lambda + DynamoDBは近いうちに必ずやる。

 

レンタルサーバー・VPS

VPSにOSから入れてサーバー環境を構築すると、サーバーでアプリが動くために何が動いていて何をしなければならないかを手っ取り早く学ぶことができる。Linuxコマンドをちょいちょい使うが、一方でLinuxそのものの知識をつけるとなるとこれだけでは足りず、環境構築は学べるものの、OSの構造を知るのはまた別の話になってくるなと思った。サーバーレス構築に魅力を感じつつも、VPSでの勉強は本当にためになったと思っている。あとハード面は弱い、メモリの使用量とか苦手意識を感じる。

 

MANP / XAMPP

PHPローカル環境構築で学習。現状MANPに慣れてしまって結構好き。MANP環境のMySQLとローカルのMySQLが衝突してエラー出たりして最初しんどかった。

 

 VirtualBox / Vagrant

WindowsにVirtualBoxとVagrantで仮想環境作ってみたりした。Macで最初からやっておけばよかったかもと思った。整理整頓は嫌いじゃないがめんどくさい。

 

Docker

LaravelとRailsとExpress環境構築をやってみた。イメージ使って立ち上げる作業だけ。環境構築が工数少なく行える気はした。

 

デザイン・UI / UX

既存Webサイトの模写10個分と本3冊ほど読んだ。デザインは奥が深く、キリがないものなのでとにかく時間を取られる。グラフィックデザインとUIデザインの違いを学んだり、基本デザイン原則やカラー、フォントなど的な美大生がやりそうなことも勉強した。時間をさいた分、UIで評価されることは多いが、自分的にはレベル上がらないなと、どちらかというと消極的になっている。

 

スタートアップ・経営面

PMFとかMVPとかペインとかトラクションとかARRとか、こういう感じの言葉をたくさん学んだ。一括りにスタートアップではなく、シードから始まり、アーリーやミドル、複数のシリーズを経てIPOを目指す訳で、それぞれの段階で意識すべきことが違う。作りたいものありきではなく、使いたいと思うユーザーありきでなければならない。市場規模と課題感の強さ、その課題を解決するに値するプロダクト・サービスであるかが一番重要であり、そのためにプロダクト・マーケット・ソリューションについてそれぞれヒヤリングを行う。だたヒヤリングするのではなく、ターゲットとなるセグメントを分割し、建設的にインタビュー結果を蓄積させ顕在層・潜在層のユーザーを明確にする。

ペルソナ選定、カスタマージャーニー、それぞれがどのタイミングでどのように必要になるか。投資家に響くのはソリューションではなくトラクションだということ。全て言われてみれば確かにそうである的な事柄。魔法とか謎のパワー的なものが働いている訳ではなく、言葉が難しいだけで、やってることはとてもロジカル。実態が掴めなかった「起業」というもののリアルを少しずつではあるが感じることができる。

これらはリーンスタートアップであり、デザインシンキングとも呼ばれるらしいが、エンジニア視点ではこの思考はなかなかできない。なんならシード期はモノなんてなくていいくらいであり、最低限サービスを回せるMVPだけ用意すればいいというのが実態。エンジニアの出番はない。

起業家のアイデアと人柄、チームをみて、投資家VCは何百万という金を投資する訳で、そこにプロダクトとトラクションが加わることで、場合によっては時価総額が2億とか5億とか、そんくらいの金額になる世界。プロダクトがなくても数百万の投資が行われる。意味わからないけど、実際にそうであるから納得せざるを得ない。スタートアップがどんなもんかを実際に経験することで、非常に勉強になっている。スモールビジネスをやるにおいても、サービスを提供してお金をもらうスキームを構築をするにあたって、本質的に同じ部分があると思う。

 

資格学習

基本情報技術者・応用情報技術者の勉強。テクノロジ系の知識が全くなかったため、勉強した項目もセキュリティ、ネットワークやデータベース、アーキテクチャなどなど。ストラテジ系は勉強していない。DB、セキュリティに関しては特に勉強してよかったと思っている。

 

 

実績

実績は特にないので、このブログと開発アプリの状況などをかく。

 

当ブログ

ちょうどこのブログも初めて1年が経過した。投稿数は140くらい。最近の更新頻度は月3回ほど。

当ブログは2019年9月14日現在で、

  • 平日 300〜400人/日
  • 土日 150〜200人/日

ほどのユーザー数。

PV数は先月が10,000弱のPV/月。今月で大台1万PV/月にたどり着きそう。

ブログPV

技術ブログは平日と土日でPVに結構差がある。サイトパワーの関係なのかなんなのかわからないが、書き続けるとちょっとずつ増えていくイメージ。

 

自作アプリ

公開しているのが現在3つあるが、そのうち2つはユーザーが少しずつ増えているのでその2つをかく。

 

Fortune Checker

毎朝占いをスクレイピングしてまとめて掲載している。自動TweetさせているのでユーザーはTwitter流入が9割。

https://fortune-checker.supunic.com

 

こちらも2019年9月14日現在で、

  • 平日 300〜400人/日
  • 土日 〜50人/日

ほどのユーザー数。土日は占いが更新されないため当然ユーザーが来ない。

PVは最高でおおよそ30,000 PV/ 月くらい。

占いPV数

 

運転免許問題集

免許の問題アプリ。

https://driverlicense-app.supunic.com

 

初期は全く誰も来なかったが最近ちょいちょい来るようになった。

 

2019年9月14日現在のユーザー数は、平日休日共に 40〜60人/日。

 

PV数は先月おおよそ 2,000PV/月。

 

免許PV数

 

その他

応用情報技術者試験合格

 

 

まとめ

誰に向けてるわけでもない記事を書いてしまっている。ターゲットは誰とか、なんの目的でとか、そういうのは大事であるが、そればっかり考えると疲れる。趣味嗜好は人それぞれであり、顕在的でない潜在的なユーザーのニーズを探してあげるというのはビジネス側のお節介であり、言い方も偉そうではあるが、的確に的を射ているんだと感じた。

こうやって自分のやってきたことをまとめていくと、「自分1年間サボってきてないわ」と少し感じれた。ここに書いてないだけで他にも色々書けるものはある。モチベーションが維持できず、だらだらすることも多いが、怠惰な心と自制心の共存が最低限できているかなと。主体性は大事。当初は仕事とか組織とかが嫌でそういうのから自由になりたいと思って会社を辞めたが、今思うと仕事をしていたとき自分に足りていなかったものは自由ではなく、仕事に対する興味と主体性とやりがいであったのかもしれないと最近考える。

色々偉そうに書いているが、中途半端であり引き続き継続が必要。

以上ありがとうございました。

 

 

-sup?, その他
-,

Copyright© s u p ? , 2019 All Rights Reserved.