Works

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

取り組んできたこと

業務実績

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

稼働中のシステムを、確かめながら改善する

原因を調べ、対策を選ぶ

認可方式を変更した後の表示遅延を調査し、セッションのロックを原因として切り分けた。保存先をDBへ変更し、表示速度が戻ることを確認した。

別の性能改善では、検索・並び順・ページ送りへの影響を比較。既存の仕組みを残し、業務上必要な取得範囲について顧客と合意した。

取引データを守る

3Dセキュア認証に失敗するとポイントが失われる不具合を検証。購入準備の段階でポイント・在庫の消費が進むことを確認し、処理を呼ぶタイミングを変更した。

EC拡張の担当範囲を見る →

変更とリリースを支える

差分配布の仕組み、許可外のpushを止めるGit hookとそのテスト、開発環境のセットアップを整備。ルールを手順と道具に落とし込んだ。

不具合を再現するテストを追加し、段階公開には機能フラグを利用。安定稼働した機能のフラグは外し、不要になった分岐も整理した。

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

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

2020年3月〜現在(約6年) 3名(設計・実装リード) 累計 2,200h超
共通入口API切替マスタ記録共通項目へ変換API固有項目を残す 法人・取得対象ごとの設定
入口は共通化し、マスタは項目を揃える。業務フローが異なる記録はAPIごとの項目を残す。

課題

既存の通信基盤に別の外部APIを追加する必要があった。共通化できるデータと、業務の流れが異なるデータをどう扱うかが課題だった。現場でのスマホ利用に対応する画面も整えた。

技術的判断

Adapterを介してAPIを切り替える構成を実装。マスタ系は項目を揃え、訪問記録・対応記録は業務フローが異なるため、API固有の項目を残す構成へ見直した。

成果

法人・取得対象ごとに外部APIを切り替えられる構成を実装した。共通入口を用意しつつ、記録系の業務差は呼び出し側でも扱う。連携追加の影響を、境界ごとに確認できる形にした。

背景・進め方など詳細を見る

背景

2021年に通信処理とエラー処理の共通基盤を整備。2025〜2026年の同期処理・API切替の実装でも、この基盤を利用した。

自分の役割

連携処理の設計・実装、同期処理、Adapter層とテストの整備を担当。顧客との要件整理にも携わった。API切替の実装には生成AIも利用している。

設計・実装のポイント

APIの入口を共通化することと、すべてのデータを同じ形にすることは分けて考えた。マスタは共通の項目へ変換し、記録は各APIの項目を保つ。AdapterとService層にテストを追加し、変更を確認する足場を整えた。

学び

項目名が似ていても、業務の流れまで同じとは限らない。共通化を目的にせず、差異を残すほうが保守しやすい部分を見極めることが大切だと学んだ。

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

この案件で示せる強み

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

運用の仕組み化 | Webとサーバの接続

バックアップ結果を、まとめて確認できる仕組みへ

2021〜2024年の構築・保守 | API・画面・通知スクリプトを担当

サーバから個別に届くバックアップ結果を、メール通知からWebAPIで集める方式へ変更。通知の受信APIと確認画面、PowerShellの送信モジュール、バックアップ製品との連携を設計・実装した。

人が使う画面と、スクリプトが呼ぶAPIで認証を分離。開始・終了を組にした通知と単発の通知を扱い、成功・失敗・警告・未検知を画面で確認できるようにした。

検証と保守で見直したこと

実機で試すと、ログが日時順に並ぶという前提が誤っていた。直近の実行結果を抽出する処理へ修正し、机上の想定を運用環境で確かめた。

受信データの検証テストも整備。後年にはサーバ間で通知設定に差が生じたため、スクリプトを比較し、共通のものとして整理した。

画面だけでなく、通知を送る側と保守の手順まで揃えて、一つの仕組みとして作る経験になった。

CakePHP 4 / PostgreSQL / Docker / PowerShell / PHPUnit

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

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

2020年6月〜2023年2月(約3年間) 1名(単独)
BEFOREAFTEREC-CUBE 本体改修改修改修改修改修本体に手を入れる=VUPで全再検証本体触れないPluginPluginPlugin×20本
本体コードを直接改修せず、すべてのカスタマイズをプラグインとして外に出した。独自機能の変更箇所を、本体から分離して管理できる。

課題

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

技術的判断

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

成果

20本以上のプラグインを単独でリリースし、本体への直接改修を避け、独自機能をプラグインとして分離。プラグイン単位での展開が可能になったため、複数クライアントに適用する独自機能を、プラグイン単位で導入・更新できる形にした。

背景・進め方など詳細を見る

背景

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

自分の役割

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

設計・実装のポイント

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

学び

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

EC-CUBE4 Symfony Open/Closed原則 3Dセキュア 決済処理 TCPDF

この案件で示せる強み

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

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

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

新規開発5ヶ月 + 保守6年間(2019〜2025年)
BEFOREAFTER伝票UI伝票UI伝票UI伝票UI同じ処理が画面ごとに重複共通処理画面画面画面画面共通化
画面ごとに写経されていた伝票操作を共通処理へ引き上げ、各画面はそれを呼ぶだけにした。

課題

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

技術的判断

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

成果

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

背景・進め方など詳細を見る

背景

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

自分の役割

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

設計・実装のポイント

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

学び

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

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

この案件で示せる強み

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

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

建設 | 初期構築・UI刷新

2019年7月〜9月(初期構築)+ 2023年8月〜10月(UI刷新) 2名(設計・実装) 累計 160h+
BEFOREAFTER日報週報手入力手入力(再入力)日報手入力は1回週報初期値を自動反映
日報と週報で二重入力していた値を、日報から週報の初期値へ流し込む一方向の関係に変えた。

課題

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

技術的判断

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

成果

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

背景・進め方など詳細を見る

背景

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

自分の役割

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

学び

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

PHP CakePHP jQuery PostgreSQL 建設

この案件で示せる強み

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

環境保全管理システム

環境保全 | 短期集中開発

2019年4月〜6月(初期)+ 2022年9月〜2023年2月(機能追加) 2〜3名(設計・実装リード) 累計 480h+
BEFOREAFTER年間予定を1件ずつ手作業点検履歴も台帳の外ルール年間予定を自動生成し、点検履歴と接続
年間予定を1件ずつ手で置く運用から、ルールから生成して点検履歴と繋がる台帳へ移した。

課題

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

技術的判断

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

成果

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

背景・進め方など詳細を見る

背景

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

自分の役割

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

学び

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

PHP CakePHP jQuery PostgreSQL 環境保全

この案件で示せる強み

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

軽貨物業務支援システム

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

2025年6月〜2026年1月(8ヶ月) 2〜3名(設計) 累計 547h
BEFOREAFTER業務フローが言語化されていない業務フロー基本設計詳細設計8ヶ月・累計547hで設計を完遂
散らばっていた業務フローを言語化し、基本設計・詳細設計として積める形に構造化した。

課題

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

技術的判断

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

成果

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

背景・進め方など詳細を見る

背景

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

自分の役割

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

学び

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

PHP Laravel React PostgreSQL Docker 物流

この案件で示せる強み

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

設計実績

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

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

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

2022年4月〜2024年6月(約2年間) 設計担当 累計 1,700h超
BEFOREAFTER組織・タスク・シフト=暗黙のままUMLクラス図 20枚超に分解
暗黙のままだった組織・タスク・シフトの関係を、UMLクラス図20枚超に分解して読める形にした。

自分の役割

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

成果

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

背景・進め方など詳細を見る

背景

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

設計・実装のポイント

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

学び

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

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

この案件で示せる強み

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

個人開発は Tools にまとめています

朝刊エージェント(毎朝実運用中のAIエージェント)や家計データのAI可視化など、業務外で「課題→仕組み」に変えたプロダクトは Tools ページで、考え方の流れごと紹介しています。

Tools で見る

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