
テクノロジーTechnology
先端テクノロジーを活用したアジャイルアプローチへの挑戦

<経歴>
入社年:2019年7月
ベンチャーでモバイルアプリ開発に従事。会計系コンサルティングファームで、デジタル戦略部署の立ち上げメンバーとして参加。アジャイルソフトウェア開発に従事。IoTベンチャーで、IoT関連ソフトウェアサービス開発に従事。
<担当領域>
全てのサービスライン(コンサルティング・監査・税務)におけるソフトウェア開発
1日の流れ
08:00 起床
朝食は取らず、近所のカフェからコーヒーをテイクアウト。
09:30 出社
リモートワークのため、自宅のソフトウェア開発用に準備したデュアルモニタ環境の作業スペースで業務を開始。メールチェック後、その日のタスクを確認し、優先順位の高いものから作業に着手。
10:00 チームミーティング
週1回のチームミーティングに参加。パイプライン、プロジェクト進捗状況の共有、課題の整理などを行う。
12:30 昼食
自宅近所のファストフード店でランチを購入し、持ち帰り昼食。
13:30 クライアントミーティング
クライアントとのリモートミーティングに参加。タスクや進捗状況、QA等の確認を行う。
15:30 資料作成・残タスク
クライアントミーティングで指摘されたことを受けて検討資料を修正し、残作業を処理。
19:30 業務終了
通勤がないため早目に近場の定食屋で弁当を購入し、自宅で食事。
20:30 自分の時間
テック界隈の最新ニュースや技術情報をチェックしつつ、趣味の読書などをしてゆったりと過ごす。
24:00 就寝

主な業務内容
ソフトウェア知見が必要な提案作業、PoC(概念検証)や、クラウドプラットフォームを活用したアーキテクチャ選定を行っています。特にアーキテクチャに関してはMicrosoft Azureを活用し、serverlessアーキテクチャやDockerなどのコンテナ技術をベースにした構成を考慮しています。また、実際の開発業務においては、ソースコードマネジメントからソフトウェアのデプロイまでを考慮したパイプライン設計とその構築を行っています。
日々のタスクをこなす為に工夫していること
全体感を把握し、タスクの抜け漏れ防止に努めています。また、デッドラインを意識し、自動化による属人的作業の排除といった効率化を図っています。
アジャイル開発で要求の変更に柔軟に対応
大規模なシステムの開発ほどプロジェクト期間が長くなり、計画段階と開発が始まった後で、クライアントの要求に対する優先順位の変更や、要求そのものに変更が発生することがあります。要求の変化に迅速に対応するために、私が現在担当しているプロジェクトではアジャイル開発と呼ばれる開発管理方法を導入しています。
アジャイル開発では、ユーザストーリーとして実現したい機能や要求をまとめ、優先順位を割り振り、ユーザストーリーから詳細なタスクに落とし込み、全体のスケジュールやマイルストーンを決めます。そのうえで、プロジェクトの状況変化にタイムリーに対応するため、開発が進んでいる最中でさえ週次で対応するべきタスクを見直し、進捗確認を行うことで、要求の変化に柔軟に対応します。
このように状況の変化に合わせてタスクの優先順位を見直すことで、緊急度、重要度の高い課題に取り組むことができ、本当に価値のあるシステムを優先してクライアントに提供できるのです。
テクノロジーの有効活用で課題解決
- デプロイを自動化し人為的ミスを削減
- ソフトウェア開発初期フェーズにおいては、機能や仕様が安定していないためデプロイ間隔が短くなります。従来はマニュアルで作業を行っていましたが、作業が煩雑なため、バージョン間違いのデプロイ等のミスが発生していました。そこで、こうした作業をプログラムに置き換え、各種クラウドサービスを活用したデプロイプロセスを構築することで属人的ミスをなくし、スムーズにクライアントに成果物を提供できるようになりました。また、自動化により、ソフトウェアにバグが含まれていた場合でも素早く以前のバージョンにロールバックし、リカバリの手間を最小限にすることができました。
- リアルタイム処理に適したリアクティブプログラミングを採用
- リアルタイム性が重視されるモバイルソフトウェア開発において、従来のモデル/ビュー/コントローラという3層構造設計(MVCアーキテクチャ)では、コントローラが肥大化し保守性の低下を招いていました。そのため、アーキテクチャを見直し、リアルタイム処理をよりシンプルに記述できるリアクティブプログラミングを採用しました。採用当初はプログラミング思想の違いにより実装に時間を要し、苦労しましたが、プロジェクトが進むにつれ、コードの肥大化を最小限に抑えつつ、リアルタイム処理に対してより柔軟性のある実装ができるようになりました。
- UI用テストフレームワークを導入でバグの混入を最小限に
- ウェブアプリケーション開発ではユーザインターフェイス(UI)テストが課題でした。新規機能や変更を加えるたびにマニュアルでテストしなければならず、かつ膨大なテスト数であったため時間を要していました。そこで、UI用テストフレームワークを導入し、テストの大部分を自動化、さらに、リリースタイミングでテストを自動的に実施することで、バグの混入を最小限に抑えることができました。また、プログラムで記述されたテスト項目をドキュメントに変換することで、ドキュメント記載内容とテスト項目の不一致から起こる保守性の低下も未然に防止することができました。

これからの目標
ソフトウェア開発者として、開発スキルをより発展させ、クライアントから本当に必要とされるサービス開発を継続していきたいです。その結果、EYのクライアントハブテクノロジーに所属していることが、すなわち日本のソフトウェア開発者の最高峰であるといわれるようになりたいです。