技術を磨こうと思った理由
今日の昼下がり、僕は会社のオフィスでカレーを食べていた。ローソンのカレーだ。コンビニカレーは成人男性の胃を満たすには量が少ないが、味はとても美味しい。
左手に持った器から、右手のスプーンでせっせとカレーを口に運ぶ。
口に入れたカレーをもぐもぐと咀嚼しながら、僕はある衝動と戦っていた。
カレーを投げたい。
今すぐカレーを投げたい。
左手に持ったカレーを高く投げ上げたい。
投げ上げたカレーが重力に従って落下運動をし、オフィスの白い机にぶつかって汚れる様を見てみたい。
社員が真面目に仕事をする昼のオフィスで、カレーを投げたらどんな反応をされるだろうか。
前回の日記でも書いた「破壊衝動」だ。
毎日、心の中で次から次へと破壊衝動が生まれ、消えていく。
毎日、破壊を想像しては理性で否定する。
今のところ理性の連戦連勝で、破壊衝動を行動へと移したことはないが、それも長くは続かないような気がしている。いつか破壊衝動に負ける日がやってくる。
「終わり」は確定した未来だ。不可避の未来だ。そんな気がしている。僕はいつか必ず行動に移してしまう。
Xデーが明日なのか1年後なのか20年後なのかは分からないが、「終わり」は必ずやってくる。いつか僕はオフィスでカレーを投げる。オフィスで打ち上げ花火をする。会議中にポップコーンを食べる。社長に肩パンする。オフィスでニコ生配信をする。
破壊衝動に負けるのが確定した未来ならば、「終わり」の後に備えなければならない。
僕が社会的に終わろうが終わるまいが、その後も人生は続く。会社をクビになっても生きねばならない。金を稼ぎ、飯を食わねばならない。
幸いなことに、今は一定の技術を持ったエンジニアは超売り手市場だ。教育コストをかけずに開発に参加してくれるエンジニアを、多くのベンチャー企業が喉から手を出して欲しがっている。
こういった企業で即戦力になる技術力を持っていれば、終末後も糊口を凌ぐことができる。
そんな理由で、終末に備えて技術を磨こうと思い立った。
せっかくなので勉強記録を日記に残すことにします。
現在の技術スタック
日記として公開するからには僕の成長を見せられた方が面白いと思うので、現在の技術スタックを紹介しておきます。
勉強を始める前(現在)の僕の技術スタックは以下の通りです。
エンジニア歴
- 情報系の学科に大学4年間通った。
- 新卒でIT系中小企業に入り4ヵ月が経った。
Webアプリ
- Djangoで自分用の単語帳Webアプリを作り、今でも使っている。
- Djangoについては一通り触ったので、Webアプリ・Webフレームワークに対する基本的な理解はできているはず。
サーバサイド
- フレームワークが無いと何もできない。
- APIに関しても「URLによって適切なJSONを返すプログラム」くらいの認識。
セキュリティ
- 『安全なWebアプリケーションの作り方』を読んだことがある。内容はあまり覚えていない。
インフラ
- 作ったWebアプリをVPSにデプロイしたので、Linuxの基本的な知識(デーモンとかプロセスとか)は持っており、基本的なコマンドも叩ける。
- AWSに関しては何も分からない。
モバイルアプリ
- 大学の授業で10時間くらいかけて簡単なAndroidアプリを作った。
- iOSに関しては何も分からない。
フロントエンド
- HTMLとCSSは書けるが、デザインセンスが無いのでCSSフレームワーク(主にBulma)に頼りきっている。
- CSSは冗長なのでSassの書き方は覚えた。
- VueやReactは存在を知っている程度。「何らかの操作をトリガーとして、画面の情報からリクエストを作ってAPIを叩き、帰ってきたレスポンスを画面に反映させるライブラリ」くらいの認識。
設計
- 最近『Clean Architecture』読んだ。アーキテクチャって凄いなあ、もっと知りたいなあ、と思っている。
機械学習
- 『ゼロから作るDeep Learning』を読んだ。
- 人工知能は「何を与えれば何を学習してどうなるのかが不明瞭」という印象で、触っていてあんまり楽しくなかったので勉強をやめた。
- 最近の生成系AI(ChatGPTやDALL·E)には興味がある。
総括
- 中小企業なら新卒として雇ってくれるけど、それ以上の規模には新卒カードを使っても雇ってもらえないレベル。
- 雇われエンジニアを今後も続けるくらいの素養はあるけど、技術一本槍でフリーランスになるのは無理。
1日目の勉強
とりあえずReactを勉強しようと思ったけど、環境構築に時間がかかってしまった。
Windowsにnodeを入れるよりも、WSLにnodebrewを入れたほうがnodeのバージョン管理をしやすくて便利だと聞いたので、そうすることにした。
WSLでHomebrewのインストールコマンドを打ってhomebrewを使えるようにし、homebrewでnodebrewを入れた。
nodebrew install stable
でstableバージョンのnodeをインストールし、npx create-next-app sample-app --typescript
コマンドを打った。
これでReactは使えるようになったんだけど、環境構築ってこれでいいのかな。
Next.jsはReactを使うにあたって便利な機能を提供してくれるフレームワークって認識なんだけど、合っているんだろうか。
よく分からんけどReactが動いたからまあいいか。
環境構築で時間がかかってしまったから今日は寝ます。