ビジネスに貢献できるエンジニアになる
-技術面-
現在、僕はawsやバックエンドの開発も行なってきましたが、フロントエンドよりの技術に携わることが多かったです。ビジネスに貢献するには、専門領域を持つことも大事ですが、バックエンドの知見を持つなど、広い視野が必要だと思います。そのため、今後はバックエンド側の仕事も行い、広い視野を持ってビジネスに貢献できるエンジニアになりたいと考えています。
-キャリア-
技術力を高めつつ、チームを牽引できるようになりたいと考えています。技術でも解決できることは多いですが、マネジメントもできるようになることで、ビジネスへの貢献度をより高められると思います。そのため、将来的には、チームリーダーなどマネジメントもできるようにしていきたいと考えています。
-自己実現-
家族を持つこと以外に、自分の身の回りの人を幸せにしたいです。そのためにも、仕事をした上で、プライベートの時間を確保して周りの人と関わる時間を増やしたいと考えています。そのため、シフト制ではなく、土日祝日は休みの働き方をしたいと考えています。
このプロジェクト詳細は公開されていません
このプロジェクト詳細は公開されていません
このプロジェクト詳細は公開されていません
このプロジェクト詳細は公開されていません
事業部から依頼される開発案件をスクラム開発を主体として機能の開発を行った。
プロジェクトマネージャー:1人
エンジニア:5人(属人的な業務をなくすため、全員が様々な業務を行った)
新たなサービスを追加することになったため、料金設定を変更する必要が出てきた。そのため、バッチを用いて新たなサービスを利用する顧客のデータを取得し、新しい料金データの紐付けを行うバッチを作成した。
バッチのコーディング
自分オリジナルのものを作成しないことを意識しました。他のバッチと作りを似せることで開発効率も高められる上、今後修正する場合に修正がしやすくなることが考えられたため、周りのバッチを参考に作成しました。
機械の不具合により取得できなかったデータをバックアップデータから抽出する機能が元々rubyで作成されていた。この機能を作成した方が弊社から離れることになったため、Node.jsで書き換えることになった。
取得したデータをcsvで出力させる際、エラーにハマってしまい、解決に時間がかかっていた。自分のチーム内にきいても解決させることができなかったが、フランス人の同僚に相談し、csvを出力させる機能の使い方を相談して解決させることができた。
社内業務の効率化を図るツールの開発。顧客情報を変更する際、今まではswaggerを使用していた。そのため、他部署からシステム部への案件伝達、システム部内でデータ変更と定期作業が発生していた。その作業をシステム部にそもそも持ってくる必要がないようにツールを作成した。
プロジェクトマネージャー:1人(エンジニア歴10年以上)
サーバーサイドエンジニア:1人(エンジニア歴約1年)
フロントエンドエンジニア:1人(エンジニア歴約1年)
業務上、1.5ヶ月という短い期間で設計〜開発全ての工程に取り組んだ。そのため、設計書は必要なものだけを選別し、
・API仕様書
・シーケンス図
・画面設計図
のみを作成して開発に取り組んだ。
Atomic designを軸に使用して画面開発を行った。
API gatewayのエンドポイントを叩いてlambdaを呼び出し、そのlambda内でpostgreSQLへの接続、Cognitoを操作できるよう作成をした。Cognitoはそもそも自社で認証サービスとして使用しているため、Cognitoを呼び出す処理を今回作ったlambda内に作成した。
開発では設計図は必ず必須だと考えていました。しかし、設計図は必ずしも必要ではなく、新しくチームに人が入ってくる場合などで必要なことを学びました。
保守・運用業務では大きな規模になってくると、buildするだけで時間がかかるので、型エラーなどを事前に把握する必要がありました。また、会社としてもTypeScriptを導入する方向だったため、今回の開発でも活用することになりました。
長めの関数を書いた時に返り値の型をを指定しておいたことで実際に関数を動かす必要なく、型などのエラーを見つけることができました。今振り返ると、長めの関数を書くことは多々あるので、いかに開発効率をTypeScriptで上げることができるのか実感できたと思います。
TypeScriptの特性はAPIの作成で特に実感しました。try、catchでAPIを叩く仕様にしたため、成功した時、失敗した時の処理を書く必要がありました。返り値や処理を正確にできているのかの確認箇所が多く、エラーを見つけずらかったですが、型を定義しておいたおかげで返り値のエラーを防ぐことができました。また、APIを叩いて確認するのは時間がかかるため、開発効率もかなり上がったことを実感しました。
初めてNext.jsを使ったこともあり、環境変数を使う時に、
NEXT_PUBLIC_
を使わないとNext.jsでは環境変数を使うことができないということを学びました。
フレームワークとしてNext.jsを採用したため、簡単にサーバー側のAPIに接続をすることができることを学びました。axiosやexpressなどのライブラリを検討する必要がないため、APIの使い方をチームメンバーで少し話すだけで実装を進めることができました。
社内のみの開発でかつ、業務を効率化させるツールの作成だったため、以下の要点に絞って設計図を作成することにしました。
・デザインには拘らない(デザイナーに依頼しない)
・重要な機能を持つポイントにのみ設計図を作成
そのため、処理の流れ、簡単な画面設計、APIの作りのみに焦点を当て、開発の時間を多く取れるよう工夫しました。
APIで取得してきたデータの有無で画面の切り替えを今回は行いました。そのため、データがある場合、ない場合でboolean型のカラムがtrue、falseに切り替わるように工夫しました。保守、運用で学んだことを活用して開発に活かせることができました。
基本的にはこの順番で解決をしていきます。また、時間をかけすぎるのも良くないので1、2、3をそれぞれ10〜15分ほどで終わらせることを意識して取り組んでいます。
僕自身、今回の開発で今までやってきたことを活かしつつ、aws lambdaとDB、 cognitoの接続と新しいことに挑戦できたのはいい経験でした。学び方に関しても、何度も復習するだけでなく、新しいことを学んだ時にこれは今まで学んだことの何が使われているのかを考えることで頭への定着率を向上させれました。この日々の行動から、個人学習で日々の業務で感じる自分の弱み・課題を改善しており、上記以外にも次のプロジェクトで活かしたいことを増やしたいと考えています。
また、ドキュメントをただ読むのではなく、背景まで理解することで、そもそもこの動きはおかしい、使い方としてはこうも考えられるなど開発効率を向上させることができます。このことも生かして今後のプロジェクトに取り組みたいと考えています。
電気の供給先・需要先をマッチングさせて顧客が選んだ供給先から電気を届けてもらうサービス。電気の消費量や月々の請求金額などを確認ができる。また、選んだ供給先はどの程度環境に配慮した発電を行っているのかも確認可能。
プロジェクトマネージャー:1人
エンジニア:5人(属人的な業務をなくすため、全員が様々な業務を行った)
Jest
React
TypeScript
設計力
Vue
リファクタリング
プロジェクトごとに触る言語にコミットすることが大事だと考えています。今の開発現場では、上記に挙げた技術を扱っているため、それらを深く学ぶことが大事だと感じています。
また、技術としてリファクタリングを挙げたのは、どんな開発にも必要になるからです。一人で開発をすることはほとんどありません。チームとしてどれだけアウトプットできるかが大事です。
また、基本設計など設計力を高めることで自分1人が生み出せる生産性を高められると考えています。
以上のことから、上記の技術を身につけなければならないと考えており、今後も継続して学び続けます。
自分が一番パフォーマンスを出せるのは気軽に周りと話すことができつつ、チームとして動くことを大事にしている環境です。どんな人でもエラーが出るときは出てしまいます。そのときに長い間悩むよりも、少し考えてわからなければ人の意見を参考にする方がチームの開発効率は向上します。
自分は今もチームスポーツをしていることもあり、周りと連携できることがいかにチームとして大切かを理解しています。そのため、自分は気軽に周りと話すことができつつ、チームとして動くことを大事にしている環境で一番パフォーマンスを出せると感じています。
このような環境を作ることも私は大切にしています。そのため、リモートでの開発も許可されていますが、毎日出社し、チームメンバーと顔を合わせたり昼休みに会話することで関係を構築しています。また、休憩中に雑談を意識的に取り入れることで視野を広げるとともに新しい考え方を取り入れ合えるように心がけています。