ダイエット中の俺が解説!Frappe/HRMSで実現するスマート人事!


ダイエット中の俺が解説!Frappe/HRMSで実現するスマート人事!

frappe/hrms

2025-07-25

今日はね、みんながソフトウェアエンジニアとしてバリバリ働く上で、とっても役に立つかもしれない強力なツール、その名も「frappe/hrms」について、コント風に解説していくぞ!ダイエット中の俺と一緒に、この素晴らしいオープンソースHR・給与計算ソフトウェアの魅力に迫ってみよう!

登場人物

俺(AI戦隊ヒーロー)
ダイエット中のAI。いつもお腹がグー。

敏腕エンジニア・田中さん
毎日コードと格闘する、ちょっとお疲れ気味のエンジニア。

ナレーション
ある日のオフィス、田中さんはPCの前で頭を抱えていた。彼の目の前には、手作業で入力された山のような従業員データと、月末に迫る給与計算の悪夢が広がっていたのだ。

田中さん
(ため息)はぁ…またこの時期か。従業員データもバラバラだし、給与計算はExcel関数とにらめっこ。このままじゃ、ストレスでダイエットどころじゃないよ…。(お腹をさする)


(颯爽と登場!)田中さん!そんな時は、俺に任せろ!お腹がグーグー鳴ってても、君の悩みを解決する秘策があるんだ!

田中さん
え?君は…お、お腹が空いてるAI?


そうだ!そして、君のその悩みを解決するのが、この「frappe/hrms」だ!

田中さん
フラッペ?なんか甘そうでお腹が鳴るな…って、HRMSって何ですか?


グググ…それは、Human Resource Management Systemの略だ!簡単に言うと、従業員の管理、勤怠、給与計算、休暇管理なんかをぜーんぶ一元的にできる、とっても賢いシステムなんだ!しかもこれ、オープンソースだから、俺のダイエット食みたいにカスタマイズ自由自在なんだぜ!

田中さん
な、なんだってー!?それはまさに、今の俺が求めていたものじゃないか!でも、これってどうやって導入するんですか?難しそう…(不安そうな顔)


心配するな、田中さん!俺の体はカロリー不足だけど、説明はバッチリだ!

田中さんのように、手作業で人事業務に時間を取られているエンジニアの皆さん、この「frappe/hrms」は、まさに救世主になりえるんだ!

業務効率化と自動化の宝庫!

データの一元管理
従業員情報、勤怠、給与、休暇申請などがすべて一箇所に集約されるから、データの分散によるミスや手間が激減するぞ!まるで、俺の冷蔵庫に鶏むね肉が山ほどストックされてるみたいに安心だ!

自動化の恩恵
給与計算や休暇承認プロセスなどを自動化できるから、手作業による時間とヒューマンエラーが大幅に削減されるんだ。これで、君たちは本当にやるべき「コードを書く」という仕事に集中できるわけだ!

カスタマイズ性と柔軟性(JavaScript, Pythonが活きる!)

オープンソースの力
「frappe/hrms」は、Frappe Frameworkという強力なフレームワークの上に構築されているんだ。このフレームワークはPythonとJavaScriptで書かれていて、俺たちの手で自由にコードをいじれるのが最大の魅力だ!

業務に合わせた調整
会社の独自のルールやワークフローに合わせて、機能を追加したり、既存の機能を変更したりできる。例えば、「特定の部署だけ特別な勤怠ルールがある」「給与明細に独自の項目を追加したい」なんて要望にも、コードを書いて対応できるんだ。まるで、俺のダイエットメニューにチートデーを組み込むみたいに、柔軟に対応できるってことだな!

既存システムとの連携も容易!

APIが提供されているから、既存の会計システムやプロジェクト管理ツールなんかとも連携させやすいんだ。データの二重入力なんて手間は、もはや過去の遺物になるぞ!

コスト削減にも貢献!

オープンソースだから初期費用を抑えられるし、自分たちでカスタマイズできるから、高価なSaaSに頼る必要がない場合もある。浮いたお金で、たまには美味しいものを…いや、ダイエット中だからプロテインを買うんだ!

「frappe/hrms」は、Frappe Frameworkの上に構築されているから、基本的にはFrappeの環境をセットアップするイメージだ!

必要なものの準備(大食い準備と同じくらい大事だぞ!)

Python (3.x推奨)

Node.js (LTS推奨)

MariaDBまたはPostgreSQL(データベース)

Redis

Git

Frappe Benchのインストール(お気に入りのトレーニングウェアを準備するくらい簡単だ!)

Frappe Benchは、Frappe Frameworkのアプリケーションを管理するためのコマンドラインツールなんだ。

# pipでインストール
pip3 install frappe-bench

# または、GitHubからクローンしてインストールすることもできるぞ!
# git clone https://github.com/frappe/bench /path/to/bench-repo
# pip3 install -e /path/to/bench-repo

新しいサイトの作成(これで俺たちのダイエット基地が完成だ!)

# 新しいワークスペースを作成
bench init frappe-workspace

# ワークスペースに移動
cd frappe-workspace

# 新しいサイトを作成(自分のドメイン名とか適当に決めよう!)
bench new-site yoursite.local

HRMSアプリのインストール(プロテインを飲むようなもんだ!)

# HRMSアプリをダウンロード
bench get-app hrms

# サイトにHRMSアプリをインストール
bench --site yoursite.local install-app hrms

開発サーバーの起動(さあ、ダイエットのためのトレーニング開始だ!)

bench start

これで、http://yoursite.local:8000(または指定したポート)にアクセスすると、HRMSの画面が表示されるはずだ!最初のログインは、Administratoradminでログインしてみてくれ!

【よくあるトラブルと解決策
ダイエットで挫折しそうな時と同じだ!】

benchコマンドが見つからない!」

pipのパスが通ってないかも。環境変数を確認するか、python3 -m pip install frappe-benchのようにフルパスで試してみてくれ!

「データベースに接続できない!」

MariaDBやPostgreSQLが起動しているか確認!設定ファイル(my.cnfなど)やユーザーの権限を見直すんだ!まるで、カロリー計算を間違えた時のリカバリーと同じだ!

「アプリのインストール中にエラー!」

インターネット接続は大丈夫か?依存関係のパッケージがちゃんとインストールされているか確認しよう。bench update --requirementsで、必要なものが揃っているかチェックしてみるのも良いぞ!

さあ、ここからは、俺たちソフトウェアエンジニアが腕の見せ所だ!「frappe/hrms」はオープンソースだから、色々なカスタマイズができるぞ!

例えば、「健康維持手当」という項目を給与明細に追加したいとする。

アプローチ
Frappe Frameworkでは、Doctype(データベースのテーブルとフォームの定義)を拡張することで、新しいフィールドを追加できるんだ。

GUIからフィールドを追加する方法(まずは手軽に!)

HRMSにログインして、「Doctype List」を探す。

「Salary Slip」Doctypeを開き、「Customize Form」をクリック。

「Add New Row」で新しいフィールド(例
health_allowance)を追加し、タイプを「Currency」などに設定する。

これで、給与明細の入力フォームに新しい項目が追加されるぞ!

コードでカスタマイズする方法(エンジニアの本領発揮!) 独自のアプリを作成し、hooks.pydoctype_jsdoctype_pyで処理を記述するんだ。

例えば、custom_app/custom_app/salary_slip.pyというファイルを作成し、before_saveフックを使って、健康維持手当の計算ロジックを追加できる。

# custom_app/custom_app/salary_slip.py

from frappe.model.document import Document

class SalarySlip(Document):
    def validate(self):
        # 例: 基本給の1%を健康維持手当とする(あくまで例だぞ!)
        if self.base_salary:
            self.health_allowance = self.base_salary * 0.01
        else:
            self.health_allowance = 0

        # 合計給与に健康維持手当を加算する場合(既存のフィールド名を確認してね!)
        # self.total_deduction += self.health_allowance # 控除なら
        # self.total_additional_salary += self.health_allowance # 追加給与なら
        # frappe.msgprint(f"健康維持手当が計算されました: {self.health_allowance}")

そして、hooks.pyでこのフックを登録する。

# custom_app/custom_app/hooks.py

doctype_js = {
    "Salary Slip": "public/js/salary_slip.js"
}

doctype_list = {
    "Salary Slip": {
        "on_update": "custom_app.salary_slip.SalarySlip.on_update_hook" # ここでカスタムロジックを呼び出す
    }
}

# または、より汎用的なbefore_saveフック
doc_events = {
    "Salary Slip": {
        "before_save": "custom_app.salary_slip.SalarySlip.validate"
    }
}

これで、給与明細が保存される前に、健康維持手当が自動で計算されるようになるぞ!まるで、俺のカロリー計算を自動化してくれるアプリみたいに便利だ!

「部署ごとの残業時間をグラフで見たい!」なんて時にも、俺たちのPythonスキルが活かせるぞ!

アプローチ
Frappe Frameworkにはレポート作成機能があるから、それを使って新しいレポートを作成する。Pythonでデータを整形し、Chart.jsなどで可視化できるぞ!

新しいレポートの作成(GUIから)

「Report List」から「Add New Report」を選ぶ。

レポート名やDoctype(例
Timesheet)を指定し、レポートタイプを「Script Report」にする。

Pythonでデータ取得と整形(メインイベントだ!) レポートのPythonファイル(例
custom_app/custom_app/report/overtime_by_department/overtime_by_department.py)を作成し、必要なデータをクエリで取得し、整形する。

# custom_app/custom_app/report/overtime_by_department/overtime_by_department.py

import frappe
from frappe import _

def execute(filters=None):
    columns = [
        {"fieldname": "department", "label": _("Department"), "fieldtype": "Data", "width": 150},
        {"fieldname": "total_overtime_hours", "label": _("Total Overtime Hours"), "fieldtype": "Float", "width": 200},
    ]
    data = []

    # ここで残業時間のデータをデータベースから取得するクエリを書く
    # 例: タイムシートのデータを集計
    timesheets = frappe.get_list(
        "Timesheet",
        filters=filters, # レポートフィルターを適用できる
        fields=["employee", "hours", "start_date", "end_date"]
    )

    department_overtime = {}
    for ts in timesheets:
        # 従業員情報から部署を取得
        employee_doc = frappe.get_doc("Employee", ts.employee)
        department = employee_doc.department if employee_doc and employee_doc.department else "不明"

        # ここで残業時間を計算するロジック(あくまで例だよ!)
        # 例として、単純にhoursを加算
        overtime_hours = ts.hours
        department_overtime.setdefault(department, 0.0)
        department_overtime[department] += overtime_hours

    for dept, hours in department_overtime.items():
        data.append({"department": dept, "total_overtime_hours": hours})

    # チャートデータの作成(棒グラフの例)
    chart = {
        "data": {
            "labels": [d["department"] for d in data],
            "datasets": [{
                "name": _("Total Overtime Hours"),
                "values": [d["total_overtime_hours"] for d in data]
            }]
        },
        "type": "bar",
        "height": 300,
    }

    report_summary = [
        {"value": sum([d["total_overtime_hours"] for d in data]), "label": _("Grand Total Overtime Hours"), "datatype": "Float"}
    ]

    return columns, data, None, chart, report_summary

これで、部署ごとの残業時間を集計し、グラフで表示するレポートが完成だ!まるで、俺の消費カロリーと摂取カロリーをグラフで可視化するみたいに、一目で状況がわかるようになるぞ!


どうだ、田中さん!「frappe/hrms」の力、わかったか!?これを使えば、君の頭を悩ませていた人事業務が、まるで俺の腹筋のようにスマートになるぞ!

田中さん
お、お腹が空いてるAIさん…感動しました!これで俺も、面倒な人事業務から解放されて、もっと開発に集中できる!そして、心置きなくダイエットに励める!ありがとう!


よーし!これからも俺は、みんなのエンジニアライフをサポートするぞ!そして、いつか、このグーグー鳴るお腹を満たすためにも、もっともっと頑張るんだ!

というわけで、みんな!「frappe/hrms」は、単なるHRソフトウェアじゃない。俺たちエンジニアが、日々の業務を効率化し、より創造的な仕事に集中するための強力な武器なんだ!ぜひ、一度導入してみて、そのパワフルさを体験してみてくれ!


frappe/hrms




リンクも驚く情報収集術!Maigretで広がるエンジニアの視野

ハイラルを旅する勇敢なソフトウェアエンジニアの皆さん、ごきげんよう!今日は、まるでゼルダの伝説の壮大な冒険のように、私たちエンジニアが「情報収集」という試練に立ち向かうための、素晴らしい魔法のアイテムをご紹介しましょう。その名も「soxoj/maigret」!


「情報を探す時間」を消滅させるAIパートナー:MineContextの技術スタック(PythonによるRAGとElectron/ReactによるUX)

「落ち着け、相棒!見ろ、このキーワードだ. ..volcengine/MineContext、electron、react、python. ..そして『コンテキストアウェアなAIパートナー』だと!?これはただの事件じゃない、ソフトウェア開発における『生産性の殺人事件』だ!」


ラーメン屋の親父が語る!Pythonだけで作るWebアプリ「Reflex」

なんだか、小難しい顔してパソコンいじってるな。WebアプリをPythonだけで作ろうとしてるのかい? え? 難しくてなかなか前に進めない、だと?ったく、最近の若いもんは、すぐ諦めるからいけねぇ。だが安心しな。俺がとっておきの秘策を教えてやる。


ソフトウェアエンジニア必見! MCPでAI開発の密室を突破する

おいおい、一体どういうことだ!? この部屋は完全に密室じゃないか!…おっと、すみません。ついドラマの役に入り込んでしまいました。でも、この密室、実は我々ソフトウェアエンジニアの目の前にある「AI開発の密室」かもしれません。「ん? AIの密室ってどういうこと?」と、あなたは首を傾げていますね。ご説明しましょう。


【エンジニア必見】面倒な認証はComposioに丸投げ!800以上のツールとAIを繋ぐ方法

AIに「何かやっといて」と言っても、「やり方は知っていますが、ボタンは押せません」なんて言われたら、喉ごしが悪いですからね。アサヒ(キレ担当) 「おい、最近のAIエージェント、頭ばっかり良くなって行動が伴ってないんじゃないか? 喉ごし(UX)がガツンと来ないんだよ!」


OpenArm徹底解説:ソフトウェアエンジニアが知るべき物理AI研究プラットフォーム

特に、機械学習やロボティクスに興味がある方にとっては、理論だけでなく、実際に物理的なシステムを動かし、データを収集し、検証できる貴重な基盤となります。OpenArmは、完全なオープンソースとして、ソフトウェアエンジニアが最先端のAI研究を実機で進める上で、大きなメリットを提供します。


オレオレ詐欺に注意...じゃない!GitHubDailyで良質な情報を安全に手に入れる方法

GitHubDaily/GitHubDaily は、その名の通り、GitHub上で見つけられた高品質で興味深い、実用的なオープンソースプロジェクトを毎日共有しているリポジトリです。新しいプログラミング言語、フレームワーク、開発ツール、面白い技術チュートリアルなど、多岐にわたるプロジェクトが紹介されています。


あなたのサービス品質向上に貢献:qeeqbox/social-analyzer導入とAPI連携の具体例

このツールは、指定されたユーザー名が、1000以上のソーシャルメディアやウェブサイトで利用されているかどうかを、効率的かつ広範囲にわたって調査・分析するためのものです。Node. js、JavaScript、Pythonに対応しており、API、CLI(コマンドラインインターフェース)、そしてウェブアプリとして利用できます。


分散型Webアプリの新境地!HeyPuter/puterで始める次世代開発

「HeyPuter/puter」は、一言で言うと「ブラウザ上で動くオペレーティングシステム(OS)」です。でも、ただのOSじゃありません。これはインターネットを基盤とした、分散型Webアプリケーションを構築するためのオープンソースのフレームワークなんです。JavaScriptを書いて、ブラウザ上で動くOSのような環境を作り、ファイルシステム、ウィンドウ管理、GUIツールキットなどを活用することができます。これは、まるでブラウザの中に、自分だけの「パソコン」を作るようなイメージですね。


【エンジニア向け】Nextcloud導入の極意:データの主権を取り戻す方法

まず、コントに入る前に、Nextcloudが一体何なのか、そしてなぜソフトウェアエンジニアにとって重要なのかを簡単に解説します。Nextcloudは、一言で言えば「自分でホストできるプライベートクラウドストレージ」です。DropboxやGoogle Driveといったサービスと機能は似ていますが、決定的に違うのは、データがあなたの管理下にあるサーバーに置かれるという点です。