経験値、ほしくないですか??
この記事を読むだけで、誰でも今日からものすごい経験値を得ることができます!
(怪しい記事じゃないです)
経験値がほしい
「経験値」ときいて、何を想像しましたか?
おそらく、大半の人が「知識・ノウハウ・経験」といった、業務上の経験値かと思います
なんたって、ここはQiitaですからね
でも、この記事で言う「経験値」は残念ながらそうではなく
いわゆる「EXP」、こっちの経験値です
つまりどういうこと?
ここまで、「???」となっている方も多いと思います
念のため言っておきますが、ゲームの攻略記事でもありません()
コミットをすると経験値をもらえるようにしてみた
コミットをするたび、経験値がもらえます
うれしい
ざっくり説明していく
1.スクリプトを用意
・今回用意したもの
#!/bin/sh
command -v git-lfs >/dev/null 2>&1 || { printf >&2 "\n%s\n\n" "This repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'post-commit' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks')."; exit 2; }
#!/bin/bash
# 保存先(共通で使えるようにホームディレクトリに)
STATUS_FILE="$HOME/.git_xp_status.json"
# ファイルがなければ初期化
if [ ! -f "$STATUS_FILE" ]; then
echo '{"level":1,"xp":0,"next":100}' > "$STATUS_FILE"
fi
# 現在の状態を読み込む
level=$(jq '.level' "$STATUS_FILE")
xp=$(jq '.xp' "$STATUS_FILE")
next=$(jq '.next' "$STATUS_FILE")
# 今回のコミットで追加された行数をカウント
added=$(git show --shortstat -1 | grep "insertion" | sed -E 's/.* ([0-9]+) insertion.*/\1/')
# 空だったら0
if [ -z "$added" ]; then
added=0
fi
# 経験値加算
new_xp=$((xp + added))
# レベルアップ判定
if [ "$new_xp" -ge "$next" ]; then
new_level=$((level + 1))
new_next=$((next + 50)) # 次のレベルに必要なXPを増やす
new_xp=$((new_xp - next))
echo "🎉 Level Up! You reached Level $new_level!"
else
new_level=$level
new_next=$next
fi
# 新状態を保存
echo "{\"level\":$new_level,\"xp\":$new_xp,\"next\":$new_next}" > "$STATUS_FILE"
# 状態表示
echo "🧠 Commit XP: +$added"
echo "📈 Level $new_level [$new_xp / $new_next XP]"git lfs post-commit "$@"
こいつはコミットを監視して経験値を得るためのShellScriptです
2.スクリプトを配置
.git / hooks 下にある post-commit に先ほどのスクリプトをペースト
(なければつくる)
3.ファイルの実行権限を与える
chmod +x post-commit
このコマンドを実行し、コミットをフックさせる
4.あとはコミットするだけ
あとがき
今回は、単純に差分の行数がそのまま経験値になるようなってます
そのため、Unityなどを扱っている場合はprefabなどの差分でめっちゃ経験値もらえたりします
ので、色々カスタマイズしてつかってみるのがよさそうです
でも、やればやるだけ経験値がもらえていて、実際にそれは"自分がこれだけやったぞ"という証になるので、モチベーションには多少なりとも繋がるかとおもいます
ぜひ今日からレベリングしてみてください

