学生からソフトウェアエンジニアになってもうすぐ 1 年である。
配属されたのは長年運営されてきた Web システムの運用と開発を行う部署で、「大きなチーム」で度々「高い負荷のかかる」システムと向き合ったことで職業エンジニアとして日々の成長を感じている1
一方で新卒時に 25 歳だったことや、会社員になると「社会人としてのキャリア」や「エンジニアとしてサバイブする」といった話題もより一層身近になり、当事者としての意識も十分に生まれたと感じている。
時期としてもキリがいいし、著名なソフトウェアエンジニアや友人も自身のスキルセットの棚卸しをしているので、自分もやってみようかと思う。
overreacted.io blog.unasuke.com目次
フロントエンド開発
できること
私にとって JavaScript は一番手に馴染んだ言語であり、技術的には細かい挙動やトラブルシューティングも大抵のことはできるように感じる。
現職では Vue.js を用いたとても規模の大きいシングルページアプリケーションの運用と施策開発を経験したし、学生時代のアルバイトや副業でも React ベースのプロダクトを扱っていた。
ちなみに私のポートフォリオサイト2は Next.js で運用している。
業務では各ブラウザ毎の挙動や Web フロントエンドのパフォーマンスを意識した JS, CSS のコーディングをレビューで指摘されることも多く、状況に合わせて何を調べればいいかは頭の中にうっすらとインデックスを張ることができていると感じる。
できないこと
一方で、近年注目されている Rust 等の言語を用いた WebAssembly はまだ触ったこ とがない。
TypeScript については、公開されているライブラリや小規模なパッケージに型をつける程度のことはやったことがある。
もう少し高度なジェネリックを組み合わせた複雑な型定義は読むことはできるかもしれないが、自分で定義するのは難しいと思う。
エクストリームな領域ではあるが、mizchi さんが発表されていた新たなフロントエンド技術もまだ全然キャッチアップできていないと感じる。
できること
現職では AWS 上で Perl と MySQL をベースにしたシステムの運用に携わっている。
趣味レベルでは Express.js や Flask を用いた簡易的なサーバサイドを開発したことがある。
特に現職では、サービス開発に必要なサーバ側の各技術をさわり程度には経験できたかなと思っている。
そして何よりも、プロダクトの採用するアーキテクチャに沿って各階層の責務を分けることや、パフォーマンスが悪くならないかを意識してコードを書くなど、開発者としてのマインドはサーバサイドに触れたことで大きく成長できたと感じている。
できないこと
もちろんサーバサイドで採用されるプログラミング言語やフレームワーク, ミドルウェアなどは無数にあり、普段触るものについても運用と拡張をできる程度の経験しかないと感じている。
年末年始に副業で簡易的な API サーバを作成した際に感じたことだが、システムの要件に沿ってミドルウェアの構成や RDB のテーブル構成、コードの階層分けを考えるといったようなアーキテクトととしての能力はまだまだ足りない。
小さなシステムだったのでスクラップアンドビルドを繰り返して拡張や保守をしやすい形に仕上げることができたが、今年はもっと設計技法に関する本を読んだり、普段触るものとは別のシステムのコードを読んだり触ったりして知識や経験を積みたいと考えている。
昨日白山さんが設計について以下のようなツイートをされていた。名前のついたアーキテクチャに依らずとも、厚すぎず薄すぎずで保守, 拡張しやすい設計を模索できるようになりたい。
まったく同感ですが2点ありまして
— しろやま (@fushiroyama) 2021年1月24日
・DB(データソース)もインタフェース切っておくとこれを使うコンポーネントでテストが書きやすい
・実際に20プロジェクトに1回ぐらい助かる
ので、僕は特に静的型付け言語を選べる際にはここを1層切ります☺️
モバイルアプリケーション
できること
2015 年に大学時代の友人と Java + ADT を用いて Android アプリ3を作成したことがある。このときに Activity のライ フサイクルをふわっと理解したことで React コンポーネントのライフサイクルの考え方が馴染みやすかったように感じる。
また、IAMAS での修了作品4の一部である動画再生アプリを React Native で作成した。
できないこと
2016 年以降にAndroid Studioを開いていない。Swift と Kotlin は書いたことがない。
数日再勉強した程度ではまともなモバイルアプリケーションを作れるようにはならないと思うし、もしかしたら Java でアプリを作った知識がほとんど役にたたないほどのパラダイム・シフトが起こっているかもしれない。
Footnotes
-
逆説的に今まで未熟だったということも事実 ↩
-
もしもこの URL 先が Next.js じゃなくなっていたら、こちらが記事作成時点でのコードです https://github.com/nasustim/nasustim.com/tree/f33b2d8f53d20f7122d56d432b7b934146c2d22d ↩
-
NTT docomo 東海のコンクールで入賞したけど、ノミネート記事しか残ってなかった https://www.nttdocomo.co.jp/info/notice/tokai/page/151224_00.html ↩