見出し画像

【月次報告】エンジニアになって17ヶ月が経ちました

こんにちは、しゅんです。エンジニアになって17ヶ月が過ぎましたので今月も振り返りをしていきます。

※エンジニアになって16ヶ月目の記事も投稿しています。お時間ございましたらご覧ください。

■エンジニアになって17ヶ月が経ちました

全体を通して

JQuery→React, TypeScriptのリプレイス案件に携わっています。本来であれば自分を含めたメンバー2名でフロント実装にあたるはずがサーバー側のAPI化が全て完了していない。新デザインに伴う機能変更・追加に際しての見積もりミス。その他考慮漏れが多々発生しており結果としてサーバー1(もう片方のエンジニアがサーバーサイドが本業ということもあったのでサーバー側を担当してもらっています。)フロント1(自分が担当)として完全分業化させました。

リプレイスするにあたって追加機能は除き全てのサーバーからのレスポンスがAPI化されている。ドキュメントがある(これがないのが相当痛い。。)という前提が満たせていなかった時点でPMにもっと強めに警告すべきでした。これに関しては反省です。

実は先月あたりからほとんど分業のような体制ではありましたが、実装を進めるにつれあまりにも「この機能の仕様は?」「表示するロールは決まっている?」「APIはある?」の繰り返しだったので今回このような体制を取るに至りました。

しかし考慮漏れを見つけるたびにデザインも追加され実装→使用確認の繰り返しになってしまいスムーズに実装できないため時間的にかなりきついです。。

PMがもともと組んでいた2.0の工数がサーバー実装(改修)に1.0消え、自分としては0.2〜0.3は別の案件で消えるので残りの約0.7で実装するほかありません。

と言いつつも工数が足りないからといって適当な実装をするつもりは全くなく今までの既存のサイトで見られていた負債を取り除き、今後の運用面で楽になるような実装を意識して取り組んでいます。

例えば今月メインで実装していた日本語⇄英語に切り替える「言語切り替え機能」に関して既存のサイトでは日本語用のページ、英語用のページと2つ作っていたことを伺いました。

メンバーに詳細を聞いたところ、先方から修正依頼があると2つのページをメンテナンスしなくてはならないので実質工数が2倍になるとのことでしたので、この負債を取り除く実装を行いました(現在進行形で実装しています。)

i18nのライブラリで辞書登録し日本語⇄英語の切り替えの実装を行ったのですが次の課題に直面しました。

言語切り替え機能の課題

ベタ書きで表示している静的なページのテキストをjsonでどのように持つか考えるのに苦慮しました。i18nの仕様上、jsonファイルで日本語のテキストと英語のテキストを管理しています。

例えば利用規約ページでは通常のパラグラフと表示している条項がありますが、ulタグ,olタグで表示している条項があったり、文章の中にaタグが埋まっている時やイベントハンドラが埋め込まれている箇所も見受けられました。

条項ごとにループ処理で表示したかったのですが、どのようにオブジェクトを組むのか思考錯誤しました。

言語切り替え機能を実装してみて

pタグ, olタグ, ulタグを配列として管理し配列の中はpタグ内のテキスト、liタグをオブジェクトとして管理することにしました。

配列で回すpタグ内のテキストとliタグのオブジェクトにはイベントハンドラを保持するか確認できるbool値ともしイベントハンドラを保持する場合のイベント名を持たせています。(これで当初の課題はクリアできる)

さらにこのjsonファイルのデータをpropsとして渡すことでpタグ, olタグ, ulタグ(それ以下のDOM)を表示できるコンポーネントを作成し、jsonファイルのデータに持たせているイベント名を使ってコンポーネントの外で該当するイベントハンドラの出し分けと実行を行っています。

うまく言語化できているか怪しいですが結論いい形で利用規約のような静的ページを表示するためオブジェクト構造の考案と、それを表示するためのpresentationalコンポーネントを実装することができました。

i18nの仕様上仕方なかったとはいえ、テキストデータをjsonファイルに移し関数コンポーネントに記載しているコードを簡略化することができました。

文言の変更はjsonファイルを確認するだけで済み、項目の追加、削除、イベントハンドラの付け外しなど現状考えうる変更にも耐えられる設計になっています。

毎回、利用規約やプラポリ、お問い合わせ、FAQのような静的ページのテキストデータをどのように管理すべきか考えていたので今回の実装を通して1個の回答を見つけることができて良かったです。

このような感じで言語切り替え機能だけではなくJQueryの時から負債を取り除く実装に取り組んでいます。

まさか0→1案件でコンポーネント設計、ディレクトリ構成の考案、技術選定、リンターの設定、CICDの組み込みなど開発基盤を整えるだけでなく実装自体を全て自分が賄うことになるとは思っていませんでした。

裏を返せば案件納品までの全ての工程に関われるので自分にとってはプラスなのですが、工数2.0で進める案件に対して0.7で進めざる負えないので自分への負担がかなりあるのも事実です。

一度かなりやばめな案件(下記の記事参照)に入って潰れた経験もあるので、その反省を活かして今回は生き残ろうと思います。

とりあえずゴールは12月中なのでそこまでは頑張ります。

業務委託に関して

正直にJQuery→React, TypeScriptのリプレイス案件の負担が大きすぎて時間があまり取れないのが正直なところです。

その中でも時間を見つけてコミットしてはいますが、正直に申し訳ない気持ちでいっぱいです。

また来月詳細に触れようと思います。

■17ヶ月目を過ぎて思ったこと

転職活動について

最近の記事でよく触れていたのですが転職活動を行っています。が一旦今月で転職活動に区切りをつけました。結論として今年度は今の企業に残留することに決めました。(例の如く変わる可能性は十分にあるのですが。)

理由として某メガベンチャーの最終面接でCTO直々に「技術力が足りない」と言われたからです。

この「技術力が足りない」基準に関しては企業によりけりだと思いますが、いろいろな会社の選考を受けている中、エンジニアとの会話で技術の概念的な面で深ぼった回答することができないなと痛感し、強めな企業に行くならば今以上の技術力・技術的知見をつけなくてはいけないと思いました。

よく採用情報にある「経験2年、3年」言うのは言い得て妙だと思っていて、一人称の実装の先、エンジニアとして「技術的根拠をもった実装」ができるかが問われる期間が「経験2年、3年」だと思いました。

今自分は17ヶ月間エンジニアとして経験を積んできましたが少なくとも経験年数が2年になり強い企業でも戦力になれるレベルまでは今の企業で知見を貯めようと思った次第です。

また今携わっている案件が12月中で終わる(納品する)のですがその後の案件も無事に決まりポジションはわからないのですがReact(もしくはNext.js)での案件になることが決まったのも今の企業に残ろうと思った背景の一つです。

エンジニアとして自分は成長していないのか?

エンジニアとして成長している実感はあります。技術力はもちろんですがここ半年くらい案件を通して実装に対する自我が芽生えたことが大きいと思います。偶然うまく自分のこの考えを言語化しているなと思ったのが次のツイートです。

ツイートにも書かれているように「当事者意識」が芽生えた案件が思ったより多かったからだと思います。自分に置き換えると具体的には下記になります。

  • 教育サービスでフロントの先輩社員が退職されたのをきっかけに一人で案件を回さなくてはいけなくなってしまった。

上記に関してはその内容に触れた月次報告があったので載せておきます。この時先輩社員は「バッターボックスに立つ」という言葉で当事者意識の喩えをしていました。

  • マンション管理サービスで案件中期から入ったにもかかわらずメイン機能の実装を全て任せていただけた。

これはフロント専任のエンジニアがおらず、かつその機能の骨子を作っていたフロントエンジニアが退職され実装が宙ぶらりんになっていたところに自分が入ったことが実装を任された背景だと思っています。

当時React, gRPCは初めて実務で扱ったのですが、メイン機能であるが故に先方からのFBも多くユーザーが一番触れる機能でもあるので様々な状況を想定をして実装を進めなければならずその経験が「当事者意識」を持つことの基礎になっていると思います。

  • JQuery→React, TypeScriptリプレイス案件で一人で開発していること

今まさに直面しているところです。フロント開発が一人になってしまい実装における責任は全て自分になるので危機感を持って実装しています。0→1案件を一人でこなすことでまた違う景色が見えるのではないかと期待しています。

このような感じでエンジニアとして成長している実感があります。

■最後に

10月末のフロントメンバーの退職をもって自分がフロントdivの最古参となりました。最古参だから何かあるというわけではないのですが、寂しいですね。

今月、某作業スペースでアーロンチェアで作業する体験ができたのですが、やはりいい椅子で作業すると心なしか捗る気がします。一時的なイベント?みたいなものだと思いますが、もし常時アーロンチェアが置かれるなら定期的に通うか検討したいです。

今後も継続してこの月次報告をしていこうと思っています。是非今後ともよろしくお願いいたします。駆け足になりましたが最後までご覧いただきありがとうございました。


いいなと思ったら応援しよう!