はじめに
未経験で入社し約9ヶ月が経ちました。感染拡大前にギリギリのタイミングで転職できたことがまず非常に幸運だったと思っています。(受託開発の会社)
完全に新しい環境で、新しいことをたくさん経験しました。触れることが出来た業務・技術やその所感をまとめます。
試験仕様書の作成
入社後すぐから1ヶ月半 ~ 2ヶ月ほど行いました。要件の理解や、どういった観点でソフトウェアの開発が行われるのかを概覧することができました。
うまく書けないことも多く実力不足を思い知りました。ミスの原因は大きく以下の3つです。
- 設計書/仕様書を読み込めていない
- ドキュメント作成の規約、ルールを確認していない
- そもそもの前提知識が足りていない
中でも「前提知識の不足」はその場で対処不可能であり深刻なので、職場で耳にした知らない用語や概念はすぐにメモしておいて通勤時間に調べるなどしていました。
AWS認定 クラウドプラクティショナー取得
前提知識の不足を解消するためにAWS認定を取得しました。ネットワークや基本的なIT常識を身につけるとともに、職場で使用されているAWS関連知識もカバーするためです。
入社後しばらくは他のエンジニアの方が何を言っているのか分からない状況が続いていたので、なんとかしたいという思いが強かったです。
React Native
React Nativeは「オワコン」と言われたり、一方では「はじまった」と言われたり、評価が別れているように思います。基本的にはReact Nativeに限らず技術選定は適材適所だと思っていて、Reactの知識でモバイルアプリ開発ができて、要件を満たすならそれに越したことはないと考えています。
多くのnpmパッケージの恩恵を受けることもできて、さらにReact Nativeで培った知見をWebアプリの開発にも生かすことができます。また、ネイティブモジュールをSwiftで書いたりなど、少しずつですがネイティブアプリ側の知識も付きました。
戦えるフィールドが増えることは経験の少ないエンジニアにとっての武器になると思っています。知識の深さではベテランエンジニアには敵いませんので、横に展開しながら優秀な人のやり方にたくさん触れられたらいいなと思っています。
Vue.js
Vue.js(バージョン3以前)は感覚としてはあまりハマりませんでした。なんかHTMLを書いてそこに付け足していく感じ?に慣れないというか。おそらく勉強が足りないのだと思います…
AtCoder
入社してすぐは週末にAtCoderもやっていました。C問題まではギリ解けますがそれ以降は無理でした。
ちなみに言語はNode.js。
数学やアルゴリズムの理解が必要な分野はすごく苦手意識があることがわかりました。それ以外の分野で自分が活躍できる場所、案件や業務を取っていく必要があると感じました。
Redux / Redux Saga
慣れてしまえばどうということはないのですが、大量のボイラープレートと学習コストが必要になるため、チーム全体として品質を保つのが非常に難しかったです。
外部APIとの通信(いわゆるサーバーステート)が絡む部分は、後述する「SWR」あるいは「React Query」を今後積極的に使用してReduxコードを減らしたいです。
しかしながら、Reduxはその概念というか設計思想の部分に価値があると思っていて、実装詳細をうまく隠蔽しておいて、値の変更をコントロールする知見は他でも役に立っています。「スタイルガイド」のページとか、思想が出てるので読むの楽しいです。
SWR
控えめに言って最高で、TypeScriptとの相性も良いのですごく気に入りました。
「APIからフェッチするデータのSingle Sourse of Truthはサーバーにあるでしょ」ということで、そもそもステートとして管理しない方が諸々の都合が良いというのは、言われてみれば確かにそうなんだけど今まで主流でなかったのが不思議です。
Recoil
まだExperimentalなパッケージですが使用感が非常に良いです。
Reduxでいう「アクション」の概念がないので、値の変更をコントロールするためにうまくカスタムフックにして必要がありそうです。
なんと言っても学習コストが小さいので、小さいプロジェクトであれば積極的に使って行きたいと思わせてくれます。
Svelte
出始めの頃に少し触ったきりでしたが、どんどん進化が進んでいるらしいので来年ぜひ取り組みたいです。TypeScriptとの相性も良いらしい。
Reactできるならそれで良いじゃんって思うこともあるのですが、やっぱり色々触っておきたいのと、後から出たものは基本的に現状の課題を解決するものであるはずなので、Reactの課題を知る意味でも使っておきたいと考えています。
Rust
現状JavaScriptしか知らないのでもう1言語くらいやりたい。できれば低レベル言語を学びたいと思い独習していますが難しくて10回くらい挫折しています。ちなみに「Rocket.rs」でAPIサーバ作ったりしていました。
言語としての人気が高いので、ぜひそこに付いていけるようになりたいと思っています。
TailwindCSS
最高。ただし慣れれば。
AWS関連
以下を使用。
AWS AppSync
AWS Amplify
AWS DynamoDB
AWS Cogunito
AWS Pinpoint
AWS Lambda
アニメーション/3D表現など
以下を使用。計算苦手です。
TweenMax
Three.js
シェーダー
React Konva
その他 のこと
以下を使用。
Gatsby.js
Jest
Testing Library
Express
StyledComponent
TailwindCSS
Rocket.rs
Docker
Firebase
GraphQL
Flutter
Swift
WASM
MikroORM
インターンシップのメンター