はじめに
-
きっかけ
- 画面キャプチャに
Skitch
を使っている- 矢印を付けたり、注釈を追加できるので気に入っている
- しかし、ファイル名にタイムスタンプが付かないため、保存時にファイル名を手動で調整する必要があり、少し手間に感じていました
- 画面キャプチャに
-
目的
- 自動でファイル名にタイムスタンプをつけて重複しないようにしたい
-
incron
というツールを知ったので、これを使ってみたい
Skitchとは
-
【macOS・iOS】高機能な画面スクリーンキャプチャツールSkitchを使いこなそう
社内で情報共有したり、ブログを書いたりする際に、スクリーンショットを撮影することがよくあります。そんな時には、撮影した画像に何か説明を書き込みたいと思うこともよくあるでしょう。
Skitchの魅力はなんといっても、キャプチャした後の編集にあります。キャプチャすると、撮影した内容がSkitch上に表示されます。これが編集画面です。
incrnとは
-
• ファイルの作成、変更、削除、移動といったイベントを検知して、登録したジョブを実行させるものです。
-
監視ディレクトリにファイルが作成されたときにコマンドを実行するには:
IN_CREATE
作るものの概要
- Dockerでincronを動かす
- 画像の保存先はバインドマウントする
- ディレクトリを監視してファイルの作成をトリガーに動作させる
- Skitchの保存先としてそのディレクトリを指定する
- ファイル名にタイムスタンプを追記して、処理後に別のディレクトリに移動させる
- 処理前:Cursor_と_Qiita.png
- 処理後:Cursor_と_Qiita_20241026_105157.png
完成したもの
-
ディレクトリ構成
$ tree . ├── Dockerfile ├── README.md ├── docker-compose.yml └── work ├── img ├── img_re ├── log └── rename.sh
-
work/img
: 監視対象のディレクトリ、Skitchからここに画像を保存してください -
work/img_re
: タイムスタンプが追記され、ここに移動されます -
work/rename.sh
: リネームと移動を行うシェルスクリプト
ソースの説明
-
Dockerfile
FROM ubuntu:16.04 # パッケージの更新とincronのインストール RUN set -x && \ apt-get update && \ apt-get upgrade -y && \ apt-get install -y incron # incronの設定 # rootでの実行を許可する設定する RUN echo 'root' > /etc/incron.allow # 監視ディレクトリ イベント 処理内容 引数 を設定する RUN echo '/usr/share/work/img/ IN_CREATE /usr/share/work/rename.sh $#' > /var/spool/incron/root # incronをフォアグラウンドで起動 CMD ["incrond", "-n"]
-
docker-compose.yml
docker-compose.ymlversion: "3.7" services: ubuntu_incron: container_name: oguro_incron build: context: . volumes: - ./work:/usr/share/work restart: always tty: true
-
work/rename.sh
work/rename.sh#!/bin/bash # ログに元のファイル名を記録 echo "$1" >> /usr/share/work/log # 日付の取得(日本時間でフォーマット) d=$(TZ=JST-9 date "+%Y%m%d_%H%M%S") # スペースをアンダースコアに変える file_name=$(echo "$1" | sed "s/ /_/g") mv "/usr/share/work/img/$1" "/usr/share/work/img/$file_name" echo "元ファイル名: $1" echo "新ファイル名: $file_name" # 拡張子が.pngの場合のみリネームして移動 if [[ $file_name =~ \.png$ ]]; then new_file_name=$(echo "$file_name" | sed -E "s/(.*)\.png$/\1_$d.png/") mv "/usr/share/work/img/$file_name" "/usr/share/work/img_re/$new_file_name" echo "移動先ファイル名: $new_file_name" fi
使用方法
-
Dockerイメージをビルドします
docker-compose build
-
コンテナを起動します
docker-compose up -d
-
work/img
ディレクトリに.png
ファイルを追加すると、自動的に処理されます
実行権限の付与
-
rename.sh
に実行権限を付与する必要があります。以下のコマンドを実行してくださいchmod +x work/rename.sh
さいごに
- Skitchで効率よくファイルを保存することができるようになりました
- incronの活用は、今後他のプロジェクトでも役立てられると感じています