🎅

iOSエンジニアがWebフロントエンドエンジニア(仮)になった話

2 min read

Sansan Advent Calendar 2日目🎄🎅🎁

はじめに

私は今も昔もiOSエンジニアだ。
ところが、今年の5月からSansanSeminarManagerというプロダクトのWebのフロントエンドを実装している。

なぜそうなったかというと、異動したのがきっかけだ。
私は異動先でもiOS担当だが、コロナ禍の影響もあり、まずWebのフロントエンドを実装することになった。その時点で、Webの実装経験はほとんどなく、知識もほぼ皆無という状態であった😭

異動前は、「Webなんて未知の領域だが、ワイまじ実装できるんか...?」という感じで超不安だったが、結論からいうと人間、頑張ればどうにかなった。

9月に無事プロダクトリリースした🎉

https://jp.corp-sansan.com/news/2020/sansan-seminar-manager.html

ただ、知識的にはまだまだである。
デプロイ環境の構築や、Web特有のセキュリティ対策、ブラウザの仕様等々は、まだうっすーーーい知識しか無いので、もっと学ぶ必要がある。その辺の知識不足がありつつ、プロダクトコードを書き、リリースできたのは、いいチームメイトに恵まれたおかげだと思う。育ててくれて感謝しかない☺️

では、本題に入る。iOSエンジニアがWebフロントエンドエンジニア(仮)になり、今日に至るまでどんな感じだったか、今年の締めくくりとして、書いていこうと思う。

まずは開発環境

メンバー

バックエンド:2人
フロントエンド:3人(私含む)

フロントで使ってる技術諸々

・HTML5
・CSS3
・TypeScript 3.x(Javascript+Node.js)
・React(+Redux)16.x
・コンポーネントデザインパターン(Atomic Desgin)
・Reduxパターン
・UIライブラリ(Material-UI)
他、必要なモジュールは都度

全体を振り返る

これまでを振り返って、モバイルからウェブの領域に踏み込むのが、どれぐらい大変だったかというと、時間は費やしたが、めちゃくちゃ大変とか、超辛かったという感じではない。
恐らく、iOSであれ、Webであれ、フロントエンドとして「画面を作る」という最終的な目的が同じ だからだと思う。例えば、「表示するデータがあればそのデータを表示し、データがなければ特定の文字列を表示する」 というタスクがあるとする。実装するにあたり、言語が違えど、プレゼンテーションロジック自体は同じになるはずである。なので今までの経験値をそのまま使うことができる。その他にも、UXの考え方や、レイアウト調整なども、今までの経験値が活きる。

バックエンド目線で見てみると、どれもバックエンドでは実装しない事象となるので、経験値の差で多少大変さが変わってくるんじゃないかと思う。

また、Githubの草を確認したところ。iOSの時より鬱蒼としていた🌳🌳
沢山書くことができる状況であったことは幸運で、書いた分、経験値や知識を得ることができた。

言語的な話

最も衝撃的だったのが、JSにEnumが無いことだった。 正直Enumなんてどの言語にもあるものだと思っていた。

TypeScriptを採用しているので、Enumを使うことは可能だが、結局はJSにトランスパイルされるのでやれることは少ない。「やれることは少ない」と感じたのは、実はSwiftのEnumが優秀だからという背景もきっとある。

SwiftのEnumに馴染みが無い方は、こちらの記事を是非↓

https://qiita.com/hachinobu/items/392c96820588d1c03b0c

それから、JSのスプレッド構文に驚いた。便利。 はじめ「...」を見たときは全く意味がわからなかったが、今となっては毎日使っているかもしれない。

スプレッド構文に馴染みが無い方は、こちらの記事を是非↓

https://qiita.com/Nossa/items/e6f503cbb95c8e6967f8

他にも衝撃的だったことは色々あるが、いずれもその言語の個性で、面白いなと思った。
それぞれの言語の優秀な挙動を、別の言語でも活かして、スマートなコードをかけたらイケてるよなぁ..😎

アーキテクチャー的な話

そこまで理解に苦しむということはなかった気がする。
もちろん、初めてプロジェクトコードを読んだときは混乱したが、それぞれの責務をきちんと分けて考えれば、整理できた。
どんなアーキテクチャであれ 「責務分けされていて、整理されている」 ということは同じなので、そのポイントが分かっていれば、理解・対応できると感じた。

まとめ

私はモバイル開発の経験しかなく、ウェブの領域に挑戦することは超怖かったが、結果的には案外通用したという感想と、自分の大きな経験値になっていると実感することができた。達プロの「あなたの知識ポートフォリオ」の章でも「毎年少なくとも1つの言語を学習する」ということをオススメしているので、もし機会があれば、やったことがない領域の開発に挑戦するのは自己成長のチャンスだと思う。
Webフロントエンドエンジニアの皆さん、iOS、是非。

一方で、今までの経験がかなり活きたということも感じたので、自分が最も得意とする分野のことをしっかりやる、ということも大事 だと痛感した。

2021年もイケてるエンジニアになるべく、日々精進していこうと思います。

皆様良いお年を〜🎉

PS:composableArchitecture気になってます👀

https://github.com/pointfreeco/swift-composable-architecture