MANA-DOT

PIXEL ART, PROGRAMING, ETC.

ブラウザ履歴をブックマークに無期限保存するchrome拡張機能「Eternal-History」をストア公開しました

Claude Codeのお陰で積ん趣味プロが一週間で片付いた - MANA-DOT でも紹介したChrome拡張機能をストア公開したので紹介します。

Eternal History Eternal History on bookmarks - Chrome ウェブストア

このChrome拡張機能は Chromeの90日しか保持できない履歴を永続化 し、検索で使いやすくする拡張機能です。以下のような特徴があります。

  • Chromeのhistory APIをもちいて、 すべての履歴をブックマークに保持 する
    • 通常、Chromeの履歴は90日で消えてしまいますが、ブックマークに保存することで永続化します
  • 新しいタブを置き換え、スクリーンショットのような 履歴閲覧 & 検索UIを提供
    • ブックマークに保存した履歴を効率的にアクセスするためのUIを提供します
    • site:- などのクエリを用いた検索ができます
    • 検索クエリを保存して、ショートカットとして利用することができます

一度開いたドキュメントへのアクセスを効率化するための拡張機能となっています。 会社で「ドキュメントが色んなところにあり、一度見たあのドキュメントが見つからない!探すのに時間がかかる!」ということが頻繁にあるため、その解決策として作りました。

もともと個人で作っていて作りかけで放置していたものを、Claude Codeを使って完成させたものになります。

続きを読む

【小ネタ】AIコーディングする場合、mainへのコミット禁止hookを書いておくと捗る

先週 Claude Codeのお陰で積ん趣味プロが一週間で片付いた - MANA-DOT という記事で、 Claude Code で趣味プロを久々に楽しんでいることを書きました。以降も自宅ではClaude Codeを使いまくっていますし、会社ではCopilot Agentを使っています。これらAIコーディング時に husky などで以下のようなpre-commitでのmainブランチへのコミットを防止するとはかどります。

branch=$(git rev-parse --abbrev-ref HEAD)
if [ "$branch" = "main" ]; then
  echo "Direct commits to main branch are not allowed."
  exit 1
fi

AIコーディングをしてるともはやブランチはコミット直前にAIに切らせるほうが事前に人間が名前を考えて切るよりも楽なのですが、この場合AIが作業中に勢い余ってmainにコミットしてしまうことがあり、これを防ぐためのhookです(一回、そのまま勝手にリモートのmainにpushされてしまい、それに気づいたAIがforce pushまでしようとしていたことがあった)。 もちろん作業開始時に作業内容を伝えてまずブランチを切らせてもいいですが、もはやそんな手間すら省略したいということです。

このhookを入れておけばAIはコミットが必要なときまずmainにコミットしようとしますが失敗し、このエラーメッセージを見て「ブランチを切らないといけない」と勝手に気づいてくれるため、そのまま適切な名前のブランチを切ってくれます。機械的に守れるだけでなく人間の手間が一つ減るので、考えることとやることの両方が減るのでおすすめです。

人間がどうしてもmainにコミットしたいとき

git commit --no-verify をすればpre-commitの実行をスキップできますが、 npm version patch など内部でコミットを行うコマンドの場合に困ります。huskyの場合は環境変数 HUSKY0 を指定することでもスキップできます。

HUSKY=0 npm version patch

自分はgithub actionsでバージョンコミットを作りたいときなどこの指定をしています。

このように、このhookを入れてもどうしても必要な場合の抜け道も存在するため、大きなデメリットにはなりづらいので入れ得です。

Claude Codeのお陰で積ん趣味プロが一週間で片付いた

ここ1~2週間ほど Claude Code が非常に盛り上がっています。 かく言う自分もこの火曜日から利用をはじめ、その自走力の高さに惚れ込んで毎日使い倒しています。 どのくらい使うかわからなかったのでクレジット課金にしていたんですが、追加購入しまくっててやばい。 というかここ数年平日は疲れ果てて趣味プロとか全然できなくなってたんですけど、Claude Codeのおかげで平日から趣味プロが捗りまくってます。すごい。

趣味プロというのはそもそも、最初にアイデアを思いついて熱量があるうちはいいんですが、次第に熱量が落ちて未完成のままGithubリポジトリの隅っこで埃を被るものだと思うんですよね。 自分はいくつもそういう状態のプロダクトが眠っているんですが、それらがここ一週間の間にClaude Codeの力で「とりあえず完成」と呼んでも良い状態まで持って行けています。

この記事ではそんなAIの力で完成した趣味プロダクトたちを紹介します。

続きを読む

文字列置換により20行程度で実装する倉庫番ゲームのミニマム実装

文字列置換により20行程度で実装する倉庫番ゲームのミニマム実装

先日、Slack上でインタラクティブに倉庫番を遊べるhubot-slack-soukobanを作ったにてSlack上で遊べる倉庫番の紹介を行いました。 このhubotスクリプトでは文字列置換による実装を駆使して倉庫番のゲームロジック部分が20行程度で実装されており、今回はその実装について解説をします。

※このエントリは倉庫番というゲームのルールを知っている前提で書かれていますので、予めご了承ください。

続きを読む

ssh-agentのforwardを利用し、ホストマシンとローカルVMの非公開鍵を共有する

ssh-agentはずっと利用していたものの、agentのforwardという機能をつい最近まで知リませんでしたが、ローカルVM開発する上でかなり便利な機能でしたので書きます。

ssh-agentのforwardを利用すると、例えばVM開発する上で、ホストマシンの非公開鍵を使用してゲストマシンでsshを利用できたりします。特に、github複数の鍵登録する必要がなくなるのが便利。

続きを読む