
テクノロジーTechnology
海外のエンジニアとコラボし、グローバルプラットフォームを開発

<経歴>
入社年:2020年8月
国内大手SIer、金融機関、メーカー、保険会社でソフトウェアエンジニアとしてソフトウェア開発に従事。国内電子書籍出版、EC企業でプロジェクトマネージャーとして海外とのコラボレーション業務に従事。国内ゲーム企業でバックエンドエンジニアとしてゲームエンジン開発に従事。国内EC企業でグループマネージャーおよびテクニカルリードエンジニアとしてフロントエンドアプリケーション開発に従事。
<担当領域>
インフォメーションテクノロジー
1日の流れ
09:30 その日のタスク設定
時間管理と、タスクの抜け漏れを防ぐため、その日完了すべきタスクをリストアップし、タスクリストを作成。メールチェックもここで。
10:00 開発
1日の最初に手掛けるのは、現在携わっているプロジェクトのアプリケーション開発。1日の中で最も頭が冴えている時間帯だから、テクニカルタスクに取り組むのに最適。
11:00 Nitroチームとミーティング
NITRO(NextGen Innovation and Technology Research Organization)は、主にテクノロジー主導のイノベーションによる競争優位性の創出とビジネス課題の解決に焦点を当てたEYグローバルのチーム。プロジェクト開始前に彼らと協力することで、既に実証された膨大な技術知識やアイデアをプロジェクト計画に活用できる。
12:00 昼食
ランチタイムは人脈作りの時間に利用しています。仕事に必要なのはテクニカルスキルだけでなく、コミュニケーションスキルも重要なもの。
13:00 Globalチームとミーティング
Global企業のEYでは、複数地域間のコミュニケーションとコラボレーションが強く推奨されている。Globalチームのディレクターとは定期的にミーティングを行うほか、南北アメリカ、欧州地域、アジア・太平洋地域のエンジニアやテクニカルマネージャーからも頻繁に連絡が入る。
14:30 開発作業
開発作業の続きを行う。その日の自分の作業が完了している場合は、他のメンバーをサポート。
17:00 スコープと計画見直し
現在の作業から少し離れ、現在および今後のタスク計画について内省する時間。開発への取り組み方や、アプリケーションのパフォーマンス、運用方法の改善について再考するのは非常に重要なこと。
17:30 自己学習
テクニカルスキルだけではなく、コミュニケーション力向上のために、日本語スキルを復習。同僚とはほぼ英語だけでいいが、同僚だけでなくクライアントともより良いコミュニケーションを取れることを目指し、日本語を再学習中。
18:00 業務終了
帰宅中は日本のドラマや映画を見て、日本語のリスニングスキル向上を図っている。

日々のタスクをこなす為に工夫していること
私は時間管理を徹底しています。その日に完了すべき全てのタスクを毎朝リストアップし、毎日の計画を立てています。大きなプロジェクトでも小さなタスクに分解することで、より適切なプロジェクト開発の見積もりを作成することができます。もちろん、状況は都度変化し、優先順位が入れ替わることもあるので、適宜計画を変更し、翌日のTODOリストを見直します。
週末は妻とサイクリングでリフレッシュ
リフレッシュ手段の1つとして、最近サイクリングを始めました。平日は仕事終わりに3、4回、一度に20~30km走り、週末には40~50km程度、妻と一緒に楽しんでいます。
10段階のテクノロジー対応でドキュメント作成工程を削減
ECクライアントのウェブアプリケーションをゼロから移行する、という案件に以前携わったことがあります。しかしこの案件には設計書や仕様書がなく、リソースが完全に不足している状態で、開発スケジュールも非常に厳しいことが課題でした。そこでこれらの課題に対して、以下の10段階の対応を行いました。
- システム仕様作成
- 運用担当者からできる限り多くの情報を収集し、リバースエンジニアリングで作成。
- ベースWebアプリケーション作成
- Serverless Frameworkを使用してNode.jsアプリケーションを作成。
- BFF(Backends For Frontends)作成
- JavaおよびPlay frameworkを使用してデータソースとして機能する別のBFFを作成。
- 負荷改善
- Restの代わりにGraphQLを使用し、エンドポイントを最小限に抑え、クエリによるデータソースの負荷を改善。
- SPA(Single Page Application)作成
- フロントエンドアプリケーションについては、状態管理にReduxを使用し、複数のルート処理可能なSPAを作成。
- Webpack の利用
- プラグインを使用する開発や、jsファイルやcssファイルをバンドルするために使用。
- クラウドソーシングUIライブラリの利用
- チーム内外で利用可能にするため、アプリケーション内で必要なUI要素をクラウド上にライブラリ化。
- テストの効率化
- ユニットテスト用のjUnityとUIテスト用のWebdriverIOでスクリーンショットを撮影。
- コードフォーマッターの利用
- 差分コード全体を確認するためコミット前に「prettier」を実行。
- 最後に
- Grafanaで監視しているクラウド上のIaaSに展開し、RBellに統合。
加えてこのプロジェクトでは、ドキュメントはJSDocsで生成し、リポジトリ内に保管したため、ドキュメント作成工数の削減につながりました。また、多くのテストを自動化対象に追加することで、リソースの問題も解決しました。モジュールは内部で共有し、他のチームでも簡単に再利用できるため、結果として将来のプロジェクト開発にも役立てることができました。
他のグローバルエンジニアとのコラボでサービスの品質向上
現在のTech StackとEYプロジェクトの開発/コーディング標準について、グローバルエンジニアリングハブを介して他のグローバルエンジニアとミーティングを行い、クライアントに提供可能なサービスの品質を向上させています。また、NITROチームとは頻繁に情報交換をしています。彼らがどのようなサービスを提供し、今後のプロジェクトでどう利用するかについて常に把握しておくことで、日本のクライアントに提供可能なサービスの幅を広げています。

これからの目標
Global ITチームが開発した素晴らしい資産を活用し、日本のクライアントにその価値を提供できるようローカライズする予定です。また、EYには社内向けソフトウェア開発とクライアント向けソリューション開発を担うクライアントテクノロジーハブチームが存在します。自身の経験を活かし、クライアントテクノロジーハブの組織体制や運用改善にも貢献していきたいです。