Works

実務で向き合ってきたのは、派手な新規開発より、複雑な業務を壊れにくい形へ整える仕事です。ここでは、そのときの判断と工夫をケーススタディとして紹介します。

代表実績サマリー

実務で向き合ってきた課題を、成果ベースで抜き出しました。詳細は各ケーススタディで紹介しています。

業務実績

受託開発で手がけた主要プロジェクト

福祉スケジュール管理システム

福祉・介護 | マルチテナント構成

2020年3月〜現在(約6年) 3名(設計・実装リード) 累計 2,200h超

背景

福祉・介護領域の外部API連携で、個別実装が3社分並存していた。各APIはデータ形式もエラーハンドリングも異なり、連携先が増えるたびに保守コストが膨らむ構造だった。

自分の役割

外部APIの差異を吸収する設計方針の整理から、実装方針の決定、Adapter層の設計まで担当。顧客ヒアリングは20回以上、Redmineチケットの作成数はプロジェクト最多。

課題

個別実装のままではAPI追加のたびにビジネスロジック層へ影響が出る構造。テスト範囲も毎回拡大し、リグレッションリスクが高い状態だった。また、現場スマホ利用率60%に対応するレスポンシブ設計も求められた。

技術的判断

4社目の連携追加を機に、個別実装の継ぎ足しをやめて統一基盤への再設計を決断。API差異の吸収にはAdapterパターンを選択した。Facadeパターンも検討したが、各APIの仕様差が大きく、個別のAdapter内で変換処理を完結させる方が保守性に優れると判断した。

設計・実装のポイント

各APIを個別のAdapterクラスでラップし、統一インターフェースを定義。ビジネスロジック層がAPIの違いを意識しない構造を実現。エラーハンドリングもAdapter層で正規化。空き時間検索アルゴリズムを独自実装し、Docker開発環境を構築・標準化して新メンバーのセットアップ時間を大幅短縮した。

成果

以後の連携追加がAdapterクラス1本の追加で完結し、ビジネスロジック側の修正が不要な構造を実現。GoogleMap連携、外部API連携、添付ファイル用ストレージ移行なども担当。

学び

抽象化は多ければよいわけではなく、差異が出る場所を正しく見極めることが重要。設計パターンは「知っている」と「実務で効かせる」の間に大きなギャップがある。

PHP CakePHP Vue.js PostgreSQL Docker Adapter Pattern API設計 マルチテナント

この案件で示せる強み

外部API連携の抽象化 Adapterパターンの実務適用 マルチテナント構成 保守性を考慮した設計

EC-CUBEプラグイン開発 20本+

小売・EC | 単独で設計〜リリース

2020年6月〜2023年2月(約3年間) 1名(単独)

背景

EC-CUBE4をベースとしたECサイト構築で、標準機能では対応できないカスタマイズが多数必要だった。

自分の役割

要件整理、設計、実装、リリースまでを一貫して単独で担当した。

課題

本体コードを直接改修すると、EC-CUBEのバージョンアップ時にすべての変更箇所を検証し直す必要がある。カスタマイズが増えるほど追従コストが膨らむ構造だった。

技術的判断

Open/Closed原則を徹底し、すべてのカスタマイズをプラグインとして実装する方針を選択。本体コードに手を入れないことで、バージョンアップ追従とカスタマイズの独立性を両立させた。

設計・実装のポイント

Symfonyのイベントディスパッチャーを活用したフック設計。PCI DSS対応の3Dセキュア認証(JWS/JWT)決済プラグイン、TCPDFによる注文書PDF生成・メール添付機能、カート追加アニメーション(Ajax非同期処理)、店舗休業日を考慮した配送日時制御ロジックなど、幅広い要件に対応。プラグイン間の依存関係を最小化する設計を心がけた。

成果

20本以上のプラグインを単独でリリースし、3年間で本体バージョンアップ時に影響を受けたプラグインは0件。プラグイン単位での展開が可能になったため、複数クライアントへの機能適用がプラグイン導入のみで完結し、展開スピードが大幅に向上した。

学び

制約の強い環境ほど、拡張ポイントを見極める設計力が問われると実感した。「本体に触らない」という制約が、結果として壊れにくい設計を生む。

EC-CUBE4 Symfony Open/Closed原則 3Dセキュア JWS/JWT TCPDF

この案件で示せる強み

制約下での拡張設計 Open-Closed原則の実践 単独での設計〜リリース ECサイトカスタマイズ

医療機関向け在庫管理システム

医療 | 新規開発・長期保守

新規開発5ヶ月 + 保守6年間(2019〜2025年)

背景

医療機関で消耗品・医療材料を管理する在庫管理システムの新規開発および長期保守を担当。入出庫管理や発注業務を支援する機能の拡充が求められていた。

自分の役割

既存仕様の読解、不具合原因の切り分け、機能追加時の影響確認、保守改善を担当した。

課題

入出庫の履歴が追いにくく、発注に必要なデータの抽出も手作業が多い状態。伝票操作UIにコード重複が多く保守コストが高い状態だった。また、在庫計算ロジックにエッジケースで不正な結果を返す不具合が潜んでいた。

技術的判断

在庫計算の不具合は、既存コードを丹念に読み解いて原因を特定するアプローチを取った。安易にロジックを書き直すのではなく、既存の設計意図を理解した上でピンポイントに修正することで、影響範囲を最小限に抑えた。

設計・実装のポイント

入出庫の履歴を一覧・検索できる画面を新規構築。発注用データの出力機能を実装し、手作業での転記を不要に。PHPExcel → PhpSpreadsheetへの移行を実施。bakeコマンドのカスタマイズによるコード自動生成効率化も行った。

成果

伝票操作UIリファクタリングでコード重複80%削減。発注業務はCSV→Excel手加工の流れが、Excelファイルの直接ダウンロードのみで完結するように。需要計算に基づく発注伝票自動生成機能を実装し、在庫計算の不具合修正でシステムの信頼性も確保した。

学び

保守では、全面的な作り直しよりも、意図を理解した上での最小変更が価値になる場面が多い。「なぜこう書かれているか」を理解してから手を入れることが、保守の品質を左右する。

PHP CakePHP SQL Server PhpSpreadsheet 既存コード解析 医療

この案件で示せる強み

既存コード読解 最小変更での不具合修正 長期保守 医療業務システムの改善

建設業向け作業日報管理システム

建設 | 初期構築・UI刷新

2019年7月〜9月(初期構築)+ 2023年8月〜10月(UI刷新) 2名(設計・実装) 累計 160h+

背景

建設業の現場で使われる作業日報の管理システム。入社直後に初期構築を担当し、4年後にUI刷新・機能追加で再び携わった。

自分の役割

2019年の初期構築から設計・実装を担当。2023年のUI刷新でも同じシステムのリファクタリングと機能追加を主導した。

課題

日報の入力に時間がかかり、現場からの不満が多かった。また、週報・月報は手作業で集計しており、管理コストが高い状態だった。

技術的判断

4年前の自分の設計を見直す機会となった。当時の設計判断の良い点を活かしつつ、入力UIは全面的に刷新する方針を取った。

成果

日報入力UIを全面刷新。日報の入力値を週報の初期値へ自動反映するなど入力動線を再設計し、入力の手間を大幅に削減した。

学び

自分が作ったシステムを4年後に自らリファクタした経験。当時の設計判断の良い点と悪い点の両方が見え、「未来の自分が保守する前提の設計」の重要性を実感した。

PHP CakePHP jQuery PostgreSQL 建設

この案件で示せる強み

業務UI改善 自作システムの再設計 入力負荷削減 現場業務に合わせた改善

環境保全管理システム

環境保全 | 短期集中開発

2019年4月〜6月(初期)+ 2022年9月〜2023年2月(機能追加) 2〜3名(設計・実装リード) 累計 480h+

背景

環境保全領域の管理システム。入社直後に既存システムの改修・機能追加を担当し、3年後に大規模な機能追加プロジェクトで設計・実装リードを務めた。

自分の役割

設計・実装リードとして、顧客打合せの宿題をチケット化し要件を精緻化するプロセスを確立した。

課題

年間予定の管理が手作業で行われており、点検履歴の追跡も困難な状態だった。顧客の要望が曖昧で、要件の精緻化が必要だった。

技術的判断

曖昧な要望をチケットベースで精緻化するプロセスを導入。月100h超×4ヶ月の集中稼働で、短期間に大量の要件を整理し形にするアプローチを取った。

成果

年間予定自動生成ロジックを設計・実装し、手作業での予定管理を解消。点検履歴管理機能の実装により、過去データの追跡が容易に。顧客打合せの宿題を都度チケット化して要件を構造化し、曖昧な要望を仕様に落とし込んだ。

学び

短期集中で大量の要件を整理し形にした経験。顧客の曖昧な要望を、チケットベースで精緻化するプロセスを確立した。

PHP CakePHP jQuery PostgreSQL 環境保全

この案件で示せる強み

曖昧な要望のチケット化 短期集中開発 要件精緻化 設計・実装リード

軽貨物業務支援システム

物流 | 新規開発・基盤設計

2025年6月〜2026年1月(8ヶ月) 2〜3名(設計) 累計 547h

背景

軽貨物運送業向けの業務支援システムを新規開発。業務フローの整理からシステム化の要件定義、基盤設計までを担当した。

自分の役割

基本設計・詳細設計を担当。育休直前まで月100h超で稼働した直近の主力案件。

課題

既存の業務フローが属人的で、システム化の要件が明確でなかった。ゼロベースでの新規開発のため、基盤設計の判断が求められた。

技術的判断

既存改修が中心だったキャリアの中で、ゼロベースの設計判断が求められる案件。技術選定から基盤設計まで、将来の拡張性を見据えた設計方針を策定した。

成果

業務フローを整理し要件を定義。新規システムの基盤設計を担当し、8ヶ月・累計547hでシステムの基本設計・詳細設計を完遂した。

学び

ゼロからの新規開発で設計に関わった経験。ゼロベースの設計判断を求められる場面が多く、技術選定の引き出しが広がった。

PHP Laravel React PostgreSQL Docker 物流

この案件で示せる強み

ゼロベースの業務整理 基本設計・詳細設計 Laravel・React構成 新規システム基盤設計

設計実績

実装を伴わない設計フェーズの成果

自社パッケージリプレイス設計

自社プロダクト | 設計専任

2022年4月〜2024年6月(約2年間) 設計担当 累計 1,700h超

背景

自社パッケージソフトウェアのフルリプレイスにおいて、設計フェーズを2年間にわたって担当。既存システムの構造を分析し、新アーキテクチャの設計を主導した。

自分の役割

設計専任として、UMLによるシステム構造の可視化、ER図によるデータベース設計、見積提示・画面遷移設計を主導した。

設計・実装のポイント

draw.ioを用いたUMLクラス図の作成、組織管理・タスク管理・シフト管理機能の詳細設計、ER図によるデータモデリングなど、設計ドキュメントを中心としたアウトプット。

成果

UMLクラス図を20枚以上作成し、システム全体の構造を設計。組織管理・タスク管理・シフト管理機能の詳細設計、ER図によるデータベース設計、見積提示・画面遷移設計を主導した。

学び

実装なしの設計フェーズのみでも成果を出せる能力を証明した。2年間にわたって設計の精度を追求し、「コードを書かない成果物」で価値を生む経験を積んだ。

UML ER図 draw.io 画面遷移設計 自社プロダクト

この案件で示せる強み

UML設計 ER図設計 設計ドキュメント作成 実装前の構造整理

個人プロジェクト

業務外で取り組んだ自主開発

家計データのAI可視化

個人開発 | AI × データ設計

1名(個人開発)

背景

4人の子育て中の家計管理。データはあるが「全体像が見えない」「意思決定に使えない」状態だった。

課題

家計簿アプリでは「月次の収支」は見えるが、資産全体のバランスシートやキャッシュフロー、将来のライフプランシミュレーションまでは可視化できなかった。

技術的判断

自前でダッシュボードを作るのではなく、AIに「正しい問い」を投げることで可視化を実現するアプローチを選択。データの前処理と構造化をエンジニアが担い、チャート生成はClaude(AI)に委ねた。

設計・実装のポイント

B/S(貸借対照表)・CF(キャッシュフロー)・ライフプランなど19種類のチャートを体系的に設計。エンジニアのデータ設計力 × AIの可視化力で、家計の多角的な「見える化」を実現。

成果

支出構造の偏りを発見し、固定費を10%前後削減。月次の家計見直しが10分程度で完結するようになり、19種類のチャートが家族との対話のベースになるデータに。この取り組みはLab記事としても公開中。

学び

AIは「問いの質」で出力が変わる。エンジニアとしてのデータ設計力が、AI活用の精度を左右すると実感した。

Claude データ可視化 家計管理 Chart.js

この案件で示せる強み

AI活用 データ構造化 可視化設計 暮らしの課題を技術で整理する力

実際に動くツールも公開しています

個人開発のWebツールは、このサイト上でそのまま動かせます。設計や使い勝手をぜひ直接確かめてください。

設計判断の詳細は Lab の記事でも紹介しています。