Upgrade to Pro — share decks privately, control downloads, hide ads and more …

macOSの機能を活用した自動勤怠技術

 macOSの機能を活用した自動勤怠技術

「勤怠を自動化する技術」LT Night の発表資料です。
https://connpass.com/event/135463/

打刻スクリプトとplist https://gist.github.com/af12066/982d8386e6367bfd74ddeace55c658df

Takuma Hashimoto

July 19, 2019
Tweet

More Decks by Takuma Hashimoto

Other Decks in Technology

Transcript

  1. 誰 Takuma Hashimoto - SRE at freee - GitHub: af12066

    - マイブーム: - アウトドアアクティビティ - Sauna
  2. 想定する対象者 macOSで開発をされる方 - Windows, Linux, etc. 話 しません :bow: -

    非エンジニアでもよいです 個人単位で自動勤怠を導入したい方 - 全社的に導入... という話 しません :bow:
  3. 勤怠自動化 ポイント(私 場合) 人力操作を さまない - ワンボタンで出退勤 -> ボタン押す 忘れる

    正確な時間を記録 - ラップトップを開いた時点/閉じた時点で出退勤 - Software Engineerなら画面見ない日 ないですよ ? 工数あんまり割きたくない
  4. Client ID/Secret, Token 保存 API 利用に Client ID, Client Secret,

    Refresh Tokenが必要 これらをKeychain Accessに 保存 - すべてパスワードとして 保存される - ファイルに保存するよりよさそう
  5. CLIでKeychainへ 格納・取り出し securityコマンドでKeychan Access 操作が可能 $ security add-generic-password -a client-secret

    -w "${TOKEN}" \ -s freee-kintai -U $ security find-generic-password -a client-secret -w -s freee-kintai - -a: アカウント名(ここで client-id, client-secret, ...) - -s: サービス名(freee-kintaiとする) - -U: 上書き、-w: パスワードを指定また 出力
  6. Run Shell Script コツ exitコマンド Exit code つ に0にする -

    non-zeroで終了すると、Automator エラーが出る - 後続 処理が実行されない テキスト 通知センターやダイアログに流す - stdout/stderr 直接見られず - 通知センターを使う こ ため
  7. ログアウト時に退勤 macOSにログアウトをHookする機構がない - 昔 存在したが、現在 Deprecated * 人事労務freee API 退勤を上書きできる仕様

    - 一度退勤してから、APIで再度退勤できる - ログアウトするまで定期的に退勤APIを叩く * https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CustomLogin.html
  8. プロパティリスト (plist) XMLでサービスについて記述 - ProgramArguments: 実行ファイル - 環境変数を上書き - Automatorと同様

    - StartInterval: 定期実行 - ~/Library/LaunchAgents/に保存 launchctl load実行でplist読み込み