# PJ概要
スマホアプリの刷新によるUI/UX改善(webView→ネイティブ化)
# チーム構成
- エンジニア人数: 6名(テックリード2名) *初年度は自分含め2名だったが、半年毎に2人ずつ増員。
- PdM: 2名
# 私が担当した(している)主な業務例
- 使用技術の選定
- コーディング規約の作成、ソフトウェアアーキテクチャ、システム設計書のフォーマット選定等
- 開発環境の構築
- システム/API設計〜開発 + レビュー(独自FWレガシーコードのAPI移行)
## 技術・アーキテクチャ選定理由 *一部抜粋
### 使用技術
- Laravel+PHP-FPM(OPCahce)
チームに経験者が多く、webリソースへの手の届きやすさ等から採択。パフォーマンスに関してもOPCacheの有効化等によりコンパイラ系言語に対しても遜色なく対応可能と判断。
- Jenkins
OSSであることから承認フローが省けてスピーディに導入できる点、また上記同様、コミュニティが大きく、web上のリソースを見つけやすく、必要十分なプラグインが用意されていたことから採択。
- ソフトウェアアーキテクチャ
これまで抱えていた課題の、テストコードの未実装やFatController、独自ルール等による属人化されたソースからの脱却を目指し、責務毎に分け処理の依存関係を定めた、クリーンアーキテクチャライクな構造を採用。
- システム設計書
これまで使っていたGUIdiagtam生成ツール(Gliffy)の細々と矢印を動かす作業が不毛だっため、フローチャート、ER図にはマークダウン形式の生成ツールMermaidを採用。
## 開発環境の構築業務 *一部抜粋(CI/CDツール導入による開発サイクルの自動化)
- デプロイプロセスを自動・最適化
深夜オペレーションが不毛だったことから、それまで課題だった深夜リリースを削減するため、ブルーグリーン・デプロイメントを簡潔に実施できるよう、リリースのみでなくwebサーバのs-in,outもJenkins Jobから完結に実施できるよう設計。
公開ディレクトリをシムリンクで設定し、直近の3バージョンリソースをCICDサーバに残すことにより、高速でロールバックを行えるよう設計。リリース後バグによるユーザーインパクトを最大限抑えられるようにした。またこの作業をワンクリックで誰でも実施可能にするため専用のJobを用意。
- CIによるテストの自動化
commitのpushをトリガーに、テストコードをCICDサーバ上で実行するJobを用意し、失敗した場合マージができないよう設定することでレビューコストの削減。
*上記Jobの起案、設計、開発までを0ベースから全て単独で構築
## テックリード業務 *一部抜粋
- PdM,事業側と日々要件の検討を行い、ユーザー体験の向上度合いと技術的コストのバランスを都度共有しながら、事業側との要件決定サポート。
- 全員がアウトプットに責任を持てるよう、全員が他人のコードレビューに参加するようにしつつ、最終レビュワーとしてマージの制御ルールを用意。
- 結局自分が手を動かさないと見えない部分があるという考えから、他のエンジニアと共に自身もAPI設計、開発業務を担当。
- 毎日30分PRに関して全員で議論したり、フラットに意見を共有し合うMTGを開催するなどし、皆で学び合い、かつ心理的安全性を築けるよう工夫。
## 実績等
- バグの検知がしやすい構成、入念なレビュー等から、2024年3月のリリースから、バグ、不具合0件を達成。
- 自社モニタリングツールを利用し、STGでもエラー発生時は全てチャットに飛ばすよう設定。
- サービスの複雑性により、外国籍のエンジニアにとってサービスの深い理解が難しかったことから、テストコードで誰もがエッジケースをある程度カバーできるような工夫した構成をとっていた。
- 全プラットフォームにおけるスマホアプリユーザー比率が、リリース前後で16.73%→24.26%(7.5%)の増加、売上約58%の上昇(前年比)に貢献。