nasustim's weblog

日記と技術的な覚え書

私の技術スタック(2021年1月版)

ソフトウェアエンジニアとして2020年に新卒就職してからもうすぐ1年が経過しようとしている。

配属されたのは長年運営されてきたWebシステムの運用と開発を行う部署で、「大きなチーム」で度々「高い負荷のかかる」システムと向き合ったことで職業エンジニアとして日々の成長を感じている*1
一方で新卒時に25歳だったことや、会社員になると「社会人としてのキャリア」や「エンジニアとしてサバイブする」といった話題もより一層身近になり、当事者としての意識も十分に生まれたと感じている。

時期としてもキリがいいし、著名なソフトウェアエンジニアや友人も自身のスキルセットの棚卸しをしているので、自分もやってみようかと思う。

overreacted.io

blog.unasuke.com

フロントエンド開発

できること

私にとってJavaScriptは一番手に馴染んだ言語であり、技術的には細かい挙動やトラブルシューティングも大抵のことはできるように感じる。

現職ではVue.jsを用いたとても規模の大きいシングルページアプリケーションの運用と施策開発を経験したし、学生時代のアルバイトや副業でもReactベースのプロダクトを扱っていた。

ちなみに私のポートフォリオサイト*2はNext.jsで運用している。

業務では各ブラウザ毎の挙動やWebフロントエンドのパフォーマンスを意識したJS, CSSのコーディングをレビューで指摘されることも多く、状況に合わせて何を調べればいいかは頭の中にうっすらとインデックスを張ることができていると感じる。

できないこと

一方で、近年注目されているRust等の言語を用いたWebAssemblyはまだ触ったことがない。

TypeScriptについては、公開されているライブラリや小規模なパッケージに型をつける程度のことはやったことがある。 もう少し高度なジェネリックを組み合わせた複雑な型定義は読むことはできるかもしれないが、自分で定義するのは難しいと思う。

エクストリームな領域ではあるが、mizchiさんが発表されていた新たなフロントエンド技術もまだ全然キャッチアップできていないと感じる。

zenn.dev

サーバサイド

できること

現職ではAWS上でPerlMySQLをベースにしたシステムの運用に携わっている。 趣味レベルではExpress.jsやFlaskを用いた簡易的なサーバサイドを開発したことがある。

特に現職では、サービス開発に必要なサーバ側の各技術をさわり程度には経験できたかなと思っている。 そして何よりも、プロダクトの採用するアーキテクチャに沿って各階層の責務を分けることや、パフォーマンスが悪くならないかを意識してコードを書くなど、開発者としてのマインドはサーバサイドに触れたことで大きく成長できたと感じている。

できないこと

もちろんサーバサイドで採用されるプログラミング言語フレームワーク, ミドルウェアなどは無数にあり、普段触るものについても運用と拡張をできる程度の経験しかないと感じている。

年末年始に副業で簡易的なAPIサーバを作成した際に感じたことだが、システムの要件に沿ってミドルウェアの構成やRDBのテーブル構成、コードの階層分けを考えるといったようなアーキテクトととしての能力はまだまだ足りない。 小さなシステムだったのでスクラップアンドビルドを繰り返して拡張や保守をしやすい形に仕上げることができたが、今年はもっと設計技法に関する本を読んだり、普段触るものとは別のシステムのコードを読んだり触ったりして知識や経験を積みたいと考えている。

昨日白山さんが設計について以下のようなツイートをされていた。名前のついたアーキテクチャに依らずとも、厚すぎず薄すぎずで保守, 拡張しやすい設計を模索できるようになりたい。

モバイルアプリケーション

できること

2015年に大学時代の友人とJava + ADTを用いてAndroidアプリ*3を作成したことがある。このときにActivityのライフサイクルをふわっと理解したことでReactコンポーネントのライフサイクルの考え方が馴染みやすかったように感じる。

また、IAMASでの修了作品*4の一部である動画再生アプリをReact Nativeで作成した。

できないこと

2016年以降にAndroid Studioを開いていない。SwiftとKotlinは書いたことがない。 数日再勉強した程度ではまともなモバイルアプリケーションを作れるようにはならないと思うし、もしかしたらJavaでアプリを作った知識がほとんど役にたたないほどのパラダイム・シフトが起こっているかもしれない。


*1:逆説的に今まで未熟だったということも事実

*2:もしもこのURL先がNext.jsじゃなくなっていたら、こちらが記事作成時点でのコードですhttps://github.com/nasustim/nasustim.com/tree/f33b2d8f53d20f7122d56d432b7b934146c2d22d

*3:NTT docomo東海のコンクールで入賞したけど、ノミネート記事しか残ってなかった https://www.nttdocomo.co.jp/info/notice/tokai/page/151224_00.html

*4:https://nasustim.com/works/slash-module-slash-whom