VWork バイブコーディングフレームワーク

Frappe HRを参考に人事システムを作ろうとして、削り続けたら何も残らなかった話——テーブル10個が4個に、画面8つが4つに

2026年8月21日

名古屋でAIシステム開発の会社をやっています。今日のテーマは削ることです。既存OSSを参考に人事システムを設計し、そこから機能を削り続けたら、参考にしたものが何も残らなかった。その全記録です。

発端: 「職務・職責・目標」を管理するOSSが無い

きっかけは、ISOや個人情報保護で置いている「◯◯責任者」の管理でした。品質管理責任者、個人情報保護管理者、安全衛生推進者。担当者が代わると、その職が何をする職なのかが失われる。この一点だけを扱う道具が欲しかった。

探した結果がこれです(★数・更新日は2026-08-21時点の実測)。

どれも給与・採用・評価ワークフローを含む塊で、欲しい「職の記録を残す」一点だけを担う道具は実質不在でした。ライセンスもGPL系なので、買い切りで売る製品に持ち込みにくい。

第1稿: Frappe HRを参考にしたら、10テーブル8画面になった

そこでFrappe HRのデータモデルを参考に設計しました。できあがった設計書がこれです。

# テーブル 主な列
1 post 職 目的・権限範囲・要件・根拠規程・法令必須区分・必要人数・親職
2 job 職務 名称・詳細・頻度・根拠・重み(%)
3 responsibility 職責 決裁できる範囲・期待水準・重み(%)
4 assignment 任命 前任ID・任命者・期間
5 period 評価期間 準備中→期中→評価中→確定のライフサイクル
6 goal 目標 指標・目標値・単位・方向(up/down)・重み(%)・承認者
7 task 実施タスク 実績値・所要分・証跡URL・状態
8 evaluation 評価 自己評価→上長評価→確定
9 handover 引き継ぎ スナップショットJSON
10 audit 監査ログ 変更前後のJSON

画面は8つ。ロールは staff / chief(上長)/ admin / ai の4つ。重み付きの階層スコア計算まで実装しました。

動くものができて、見せた瞬間に返ってきた言葉が「複雑すぎる」でした。

削る作業が始まった

ここから先は、機能を足す仕事ではなく削る仕事でした。順番に消えていったものを並べます。

重み付け(weight) — 職務・職責・目標それぞれに%の重みを持たせ、加重平均でスコアを出す設計でした。「重みもなくていい」。合計100%に調整する画面ごと消えて、単純平均になりました。

法令区分・根拠規程・要件(criticality / basis / qualification) — 「法令とかいらない。重要度もいらない」。ISO用途を意識して入れた項目が、まとめて消えました。

職務・職責・目標の3テーブル分割 — Frappe HRの構造をそのまま踏襲していた部分です。「職務には職責があって、目標もあるけど、これは1:1:1」。1:1:1なら1行でいい。3テーブルが1テーブル(duties)になり、登録画面が3つから1つになりました。

評価期間(period) — 上期・下期の6か月サイクル、準備中→期中→評価中→確定のロック。人事システムなら当然入るものです。「期を考えるな。どの期間に誰が任命されてたかだけの情報で、期がシステムの機能には影響しないでしょ」。確かに、任命の日付があれば期は不要でした。テーブルもライフサイクルも画面も全部消えました。

引き継ぎパッケージ(handover) — その時点のスナップショットを固めて保存し、職の取扱説明書を生成する機能。これが一番大きな削除でした。「引き継ぎってのは、任命された人が前任の情報を見れるだけで、引き継げる」。記録が職に紐づいていれば、後任は最初から前任の記録を読める。 引き継ぎ書を生成する機能は、そもそも要らなかった。

評価(evaluation) — 自己評価→上長評価→確定のワークフロー。上長ロール(chief)ごと消えました。

監査ログ(audit) — 誰がいつ何を変えたかの記録。「監査もいらない」。タスクに記録者が残るので、実務上はそれで足りていました。

社員マスタ(employees) — これは最後に消えたものです。「kvgwcがある前提だと社員マスタはそっちで登録できるよね?」。誰が在籍しているかは会社の情報で、職の管理システムが二重に抱えると必ずズレる。外部のJSONを読むだけにしました。

結果: Frappe HR由来のものは、コードも構造も残らなかった

削り終わった状態を機械チェックした結果です。

初版(Frappe HR参考) 現在
10テーブル 4テーブル(posts / assignments / duties / tasks)
8画面 4画面(ホーム / 職 / タスク / 任命)
4ロール 3ロール(担当者 / 管理者 / AI連携)
重み・方向・承認者・法令区分・根拠規程・要件・階層・証跡URL・スナップショット 全部削除

リポジトリ全文を検索して、frappe / erpnext / hrms などの痕跡はゼロ。vendorもcomposer.jsonも無く、外部から読み込むのは自分の設定ファイル1つだけです。参考にしたはずのものが、1行も残っていない。

残ったのはコードではなく、たった1つの原則でした。

記録の主語を「人」ではなく「職」に置く。

日報も管理表も個人フォルダも「誰が書いたか」で整理されているから、その人が抜けた瞬間に記録の所属先ごと消えます。職に紐づけておけば、担当者が代わっても記録は職に残る。これだけが生き残りました。

削る過程で、逆に足したものが1つある

削ってばかりではありませんでした。削っている最中に突きつけられた指摘がこれです。

「任命された人は前任の情報を見ながら登録したいの!入力が面倒だと誰も使わなくなるの」

その通りで、この手の仕組みが死ぬ原因は機能不足ではなく、白紙のフォームに毎回ゼロから書かせる設計にあります。目標管理シートをExcelで配って期末に誰も更新していない、というのはどの会社にもある光景です。

そこで登録フォームをタブにしました。「入力」タブと「これまでの記録からコピー」タブがあり、参照タブには前任を含む過去の記録が日付・記録者つきで並びます。「コピー」を押すと内容が入力欄に入って入力タブに戻る。定型のタスクも、前任が書いた職務・職責・目標も、引き写して違うところだけ直せば終わりです。

削る作業で機能を減らし、減らして空いた分を「入力を減らす仕掛け」に使った。これが今回いちばんの学びでした。

学び: 削った状態を維持する仕組みが要る

削るのは一度きりの作業ではありません。放っておくと必ず戻ります。人事の人に見せれば「上期・下期で区切りたい」と言われ、期のテーブルが復活する。

そこで自己テストに「構造の単純さ」の機械チェックを入れました。

自己テストは全65件。誰かが後から機能を復活させると、テストが落ちてデプロイが止まります。「複雑にしない」を人の意志ではなくテストに担保させる——これは他の製品にも横展開する予定です。

できたもの: Kurage HR Post(職務・目標・引継ぎ管理)

まずデモをどうぞ: https://proto.exbridge.jp/khrpost/(管理者パスワード: demo2026)

経理責任者のタスク画面で「これまでの記録からコピー」タブを押すと、前任・鈴木一郎さんの記録が並びます。後任が前任の記録を読む、という一点を実際に触って確かめてください。

入手する3つの方法

どのルートも中身は同じ製品・価格は統一です。違いは「誰がどこまでやるか」。

方法1: Brainで導入手順書つきを買う(55,000円税込) 記事形式の正規販売。有料部が丸ごと導入手順書で、設置手順に加えて職務・職責の書き分け方・目標値を件数に翻訳するコツ・社員マスタをCSVから作る実務・カスタマイズ用AIプロンプト4本・落とし穴5つを収録しています。 職務・目標・引継ぎ管理「Kurage HR Post」正規販売(Brain)

方法2: Kurage App Storeで完成品を買う(55,000円税込) 配布パッケージ一式(本体+自己テスト65件+Claude Code連携スキル)をダウンロード。ソースコードごと渡します(MIT)。 職務・目標・引継ぎ管理(Kurage App Store)

方法3: バイブコーディングで自社仕様にして納品(110,000円税込〜) 「うちの等級制度に合わせたい」「実績を件数でなく金額で測りたい」「部署別の一覧が要る」——自社仕様が必要なら、Kurage HR Postをベースに当社が拡張して納品します。最短1営業日で動くデモ。 バイブプロトタイピング

全体像と、引き継ぎ書が機能しない理由の解説はこちら: 引き継ぎ書を書かせても、属人化は消えない

考察: 「参考にする」の正しい使い方

今回、Frappe HRから継承したものは何もありません。では参考にした意味が無かったかというと、逆でした。

巨大なOSSは「業務ドメインの全体像を無料で見せてくれる教科書」です。 職・職務・職責・任命・評価期間・引き継ぎ——人事という領域に何が存在するのかを、Frappe HRのデータモデルが教えてくれました。その全体像を知った上で、自分たちの顧客に要るものだけを選び直す。この「知ってから削る」順序が重要で、最初から4テーブルを思いつくことはできませんでした。

そして削り切った結果、ライセンスの制約も、フレームワークの重さも、改造の難しさも全部消えて、1ファイルのPHPで買い切り55,000円という形になりました。参考にしたOSSの痕跡がゼロであることは、失敗ではなく到達点です。

数字はいつもの実験ダッシュボードで公開しながら育てます。