BUILD
業務Webシステムを、ゼロから立ち上げる
要件定義・基本設計から開発、運用保守まで担当します。言語やAPサーバの選定、認証・権限まわりの共通化、API定義からのクライアント自動生成といった「開発基盤そのものを作る」ところから引き受けられます。
36 Years / 135 Projects
1件を1本の帯で。横幅が実期間、高さは人月(差が潰れないよう圧縮)。グレー=勤務時代 / 青=フリーランス / 下段=小規模改修・保守
2013年以降の主要案件は作業日報(273か月分)の実績値。それ以前と小口の案件は、稼働月数を着手順に積み上げた概算配置です。
BUILD
要件定義・基本設計から開発、運用保守まで担当します。言語やAPサーバの選定、認証・権限まわりの共通化、API定義からのクライアント自動生成といった「開発基盤そのものを作る」ところから引き受けられます。
REBUILD
C#の旧システムをJava / Angularへ、Excel運用をWebシステムへ。既存の作りと業務の実態を突き合わせ、影響範囲を見極めたうえで移していきます。
EXTEND
intra-mart を8年扱っています。ワークフロー、申請・検索画面、OPRO X や JasperReports による帳票出力、外部システムとの連携API。EC-CUBE のカスタマイズも対応します。
OPERATE
不具合の調査と修正、DBチューニングによる性能改善、既存チームへの技術支援。同じ取引先と20年以上続けている案件もあります。
請求書の作成からPDF化・送付・顧客への受け渡しまでを、テナント単位で完結させたい。
マルチテナント対応のSaaSとして開発中。サーバ側は Spring Boot 3.3 / Java 17 をクリーンアーキテクチャ+CQRSで構成し、画面側は React 18 / TypeScript / Vite で実装。顧客向けのダウンロードはワンタイムパスコードで保護している。
OpenAPI定義から API クライアントと型を自動生成し、サーバと画面の契約ずれを構造的に起こらなくした。電子署名はシステム側では行わず、未署名PDFをダウンロード → 外部ツールで署名 → 再アップロードして検証する方式にしている。検証では署名そのものの暗号的な有効性に加えて、ByteRange がファイル全体を覆っているか(署名後に追記されていないか)を確認し、原本と同じ請求書かどうかは本文から起こしたセマンティック指紋で判定する。テナント越境はリポジトリ実装層で必ず遮断し、DBに触る変更は Testcontainers の実MySQLで統合テストを回す。設計から実装まで Claude Code を主体に進めている(開発の進め方)。
運行実績から請求・支払までを一貫して扱う社内システムを、ゼロから立ち上げたい。
要件定義に始まり、サーバ側とクライアント側の開発基盤構築、REST業務APIの開発、業務画面の開発、開発環境構築、運用保守までを一人で担当。本番環境は AWS EC2(Amazon Linux)上に構築し、デプロイと運用も受け持っている。
「開発が楽に行えること」を基盤設計の目標に据え、アプリに依存しない部分(JDBC層・2-way SQLテンプレート・JWT認証・メール/LINE送信・帳票)を再利用可能なフレームワークとして切り出し、業務側と分けて保守できるようにした。API定義から画面側のAPIサービス(59サービス・190モデル)を自動生成し、実装差異が生まれない形に。運行1件だけにスコープした期間限定トークンでドライバーの参照を許すなど、権限は5ロール+例外で設計している。
なお、この構成の考え方は2017年から改修を続けている在庫・出荷・請求管理システム(Java / Angular / JasperReports)と共通のもので、9年たった今も手を入れられる状態を保てている。
C#で構築された旧システムを、保守を続けられる構成へ載せ替えたい。
旧システムの読み解きと外部仕様の作成は別の要員が担当し、そこから先の詳細設計と実装を主に担当。サーバ側API(Spring Boot 3.2 / MyBatis / Flyway)とクライアント側(Angular 18 / ag-Grid)の両方を実装し、並行して不具合の調査と修正を行った。
15名体制のなかでサーバ側とクライアント側の両方を担当できる立ち位置を取り、API仕様の受け渡しで生じがちな手戻りを自分の範囲内で吸収した。帳票出力やバーコード生成など、現場で使う機能も含めて実装している。
販売・レンタル・工事・修理点検を扱う既存の基幹システム(.NET Framework)に、機能改修と機能追加を重ねたい。
Windowsクライアント・Webクライアント・バッチの3系統に対し、受注/レンタル貸出・返却/売上/支払/会計連携の各機能を改修。
要件に対して「どう実装すれば影響範囲を最も小さく抑えられるか」に重点を置いて調査した。設計書だけでは判断しきれない箇所は、コード本体・実DBのDDL・実機のマスタデータを一次資料として突き合わせ、根拠の所在(ファイルと行、その時点の基準コミット)を明記した調査結果にまとめてから着手している。
設計と実装の主体に Claude Code(AIコーディングエージェント)を据えて開発しています。 自社プロダクトの請求書発行システムは、要件の整理からDDL・API設計・実装・統合テストまで、この進め方で作りました。 速く書けること自体より、出てきたものを鵜呑みにしないための仕組みを先に用意しておくことに手をかけています。
PRE-MORTEM
DDL変更・状態遷移・採番や締め・並行処理といった非自明な設計に入る前に、将来破綻しうる点を洗い出します。順序の仮定(作成順と確定順は違う)、二重クリックやリトライに対する冪等性、一意制約の粒度、後から変えにくいキー設計、テナント越境、マイグレーションの不可逆性。観点ごとに別のレビュー役を立てて、実装前に通します。
VERIFY
フレームワークやドライバの挙動を「〜のはず」で書かず、実行するかソースを読んで裏を取ってから断定します。回帰テストを書いたら、対象を壊して赤くなることまで確認します。実装の文字列を言い換えただけのテストは、バグを入れても緑のまま通ってしまうためです。
CONSTRAIN
「呼び出し側が〜すること」という口約束の不変条件は、型・DB制約・起動時検証に格上げして、破れたらその場で落ちるようにします。自動テストで守れていない配線は、カバーしているふりをせず文書に明記します。
RECORD
設計判断・変更履歴・踏んだ落とし穴をリポジトリ内の文書として残し、次に触るときに同じ前提から始められるようにしています。この蓄積があるかどうかで、任せられる範囲が変わります。
この進め方は自社プロダクトに限らず、受託案件の調査・設計にも使っています。既存システムの改修では、 設計書だけで判断せず、コード本体・実DBのDDL・実機のマスタデータを一次資料として突き合わせ、 根拠の所在(ファイルと行、その時点の基準コミット)を明記した調査結果にまとめてから着手しています。
受託の合間に、自分で企画したソフトウェアを作ってきました。2000年代のものは更新を止めていますが、開発の記録を残しています(配布は終了しています)。
Internet Explorer のキャッシュからWebページを再構築する初代版。後継が Copy Web Cache。
詳細 →Internet Explorer と Netscape のキャッシュから、閲覧したWebページをローカルディスクに再構築します。
詳細 →Windows NT / 2000 のイベントログを監視し、指定したイベントの発生時にメールを送信します。最終版 1.2.1a。
詳細 →マルチテナント対応の請求書発行システム。Spring Boot と React で開発中です(公開時期は未定)。
技術的な詳細 →案件のご相談、見積りのご依頼、技術的なご質問など、お気軽にご連絡ください。稼働状況や対応可能な範囲についてもお答えします。
hattori@infosurfing.jp