About Me
微生物学からソフトウェアエンジニアへ。 好奇心と必要に導かれた歩み。
これまでの歩み
大学
微生物学を専攻。 科学的方法論と分析的思考の土台を築いた。
飼料業界 (7 年)
営業 (2 年) と 購買 (5 年) を経験。 社内外の関係者と密に連携・交渉・コミュニケーションを取りながら、 ビジネス側のスキルを培った。
このころ、 趣味でプログラミングを楽しむようになる 💻
転機
子の誕生をきっかけに、 一念発起して ソフトウェアエンジニアへキャリアチェンジ。
プロジェクトマネージャ (1.5 年)
スマートフォンアプリ開発プロジェクトを率いる。 技術要件と業務要件の橋渡し、 部門横断のチーム調整を担当。
Web エンジニア (3 年)
Laravel で Web アプリケーションを開発。 PHP / MVC アーキテクチャ / モダン Web 開発の実践を深く経験。
Salesforce エンジニア (2 年 〜 現在)
Apex 開発に注力。 業務改善と機能開発に取り組みながら、 コードと アーキテクチャ の両面から問題を解くスタイルを大切にしている。
特に テスト容易性、 保守性、 そして 責務の明確な分離 を重視しています。
AI が当たり前になる時代だからこそ、 ビジネス経験のなかで培ったヒューマンスキルは、 技術力と並んで欠かせないものになると考えています。
ApexEloquent 誕生のストーリー
プロジェクト着任
Apex 開発者として、 初めての Salesforce プロジェクトに参画。
プロジェクトの危機
コードベースに目を通すと、 崩壊の一歩手前 という状態だった。
アーキテクチャの不在
オブジェクト指向設計を無視した手続き型スクリプトの山
形だけのテスト
アサーションが 1 行もない、 カバレッジ稼ぎだけのテストクラス
N+1 問題
あちこちに散らばるクエリ問題が、 パフォーマンスと信頼性を蝕んでいた
モダン Web 開発で当然のように大切にされている基本が、 ここには一切残されていなかった。
調査と分析
Salesforce 開発でよく起きる課題 (テストの書きにくさ / データ依存 / ビジネスロジックの肥大化) を体系的に洗い出した。 モダン Web 開発のパターンを、 Salesforce プラットフォーム上にどう適応できるかを探る。
ブレイクスルー
これが目を覚ますきっかけになった。 Salesforce 開発の現場には、 より良いパターンと実践が必要だ、 と確信した瞬間。
Decided to build
ApexEloquent
自前のフレームワークを作る。 ここから Apex Stem 全体への構想が始まった。
中心に据えたのが Query Delegation Pattern。 ドメインロジックを I/O から切り離し、 モック中心の高速な単体テストを書けるようにする設計です。
フレームワーク開発
ApexEloquent を組み上げ、 磨き続けた。 Query Delegation Pattern の実装、 詳細なドキュメント整備、 複雑な業務シナリオ (請求書管理など) を想定したサンプル実装まで、 一通り揃えた。
姉妹 OSS の登場
ApexEloquent だけでは解決しきれない領域 (結合テストデータ生成 / Usecase のライフサイクル追跡 / 基盤ユーティリティ) があると分かり、 続けて 3 つの OSS を順次設計した。
- ApexBlueprint: 結合テストデータを宣言的に組み立てる OSS
- ApexTrace: Usecase のライフサイクルログとテストの経路検証
- ApexTools: TriggerHandler 基底クラスと、 DI 対応の HTTP リクエストラッパー
こうして 4 つの OSS が揃った。
Handler-Usecase Architecture の考案
4 つの OSS を 1 つの開発フローで統合運用するための設計が必要になり、 Handler (エントリポイント) と Usecase (業務ロジック) の 2 段構えのアーキテクチャを考案した。 この 4 OSS + アーキテクチャ全体を Apex Stem としてまとめ、 一貫した思想で運用できるようにした。
知見の共有
同じ課題に直面する開発者にこのアプローチを届けたくて、 このサイトを立ち上げました。 堅牢で、 スケールしやすく、 テストしやすい Salesforce アプリケーションを作るための、 より良いやり方を探求しつづけています。