$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

vscodeのFiles ExplorerのショートカットをEmacs風に

vscodeを触っていて、Files Explorerを素早く操作できないことにストレスを感じていた。そこで素早く操作できるようにキーバインドを調整してみた。新しいキーバインドを覚えられないので、Emacs風になるようにセットアップしてみた。

    // Files ExplorerにC-x C-fでフォーカス
    {
        "key": "ctrl+x ctrl+f",
        "command": "workbench.explorer.fileView.focus"
    },
    // ディレクトリはEnterで開く
    {
        "key": "enter",
        "command": "list.toggleExpand",
        "when": "listFocus && !inputFocus && explorerViewletVisible && filesExplorerFocus && explorerResourceIsFolder"
    },
    // C-oするとFiles Explorerにフォーカスしたままファイルを開く
    {
        "key": "ctrl+o",
        "command": "filesExplorer.openFilePreserveFocus",
        "when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsFolder && !inputFocus"
    },
    // Files Explorerのディレクトリにフォーカスした状態でC-x C-fするとNew Fileする
    {
        "key": "ctrl+x ctrl+f",
        "command": "explorer.newFile",
        "when": "listFocus && !inputFocus && explorerViewletVisible && filesExplorerFocus && explorerResourceIsFolder"
    },
    // Enterにrenameが割り当てられていると、Enterでファイルを開けないのでRenameのキーバインドから外す
    {
        "key": "enter",
        "command": "-renameFile",
        "when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus"
    },
    // ディレクトリにフォーカスした状態でC-c C-gで、そのディレクトリ内からFindする
    {
        "key": "ctrl+c ctrl+g",
        "command": "filesExplorer.findInFolder",
        "when": "explorerResourceIsFolder && explorerViewletVisible && filesExplorerFocus && !inputFocus"
    },
    {
        "key": "shift+alt+f",
        "command": "-filesExplorer.findInFolder",
        "when": "explorerResourceIsFolder && explorerViewletVisible && filesExplorerFocus && !inputFocus"
    }

これでFiles Explorerの操作が高速になったので便利。

第二子のための4ヶ月間の半育休生活振り返り

6月の第二子の出産に伴い、1歳9ヶ月 + 0歳という子供の構成になった。これは絶対に大変だろうということで、出産と同時に4ヶ月の半育休(僕の場合は育休を取りながら週1日働く)を取ることにした。今回は育休の振り返りを書いてみる。

どんな形態の育休を取ったか

  • 第二子出産翌日から、4ヶ月半程度の育休を取得した(6月後半〜10月いっぱいまで)
  • 毎週火曜だけ、10:00-16:30の勤務をした。16:30に帰っているのは第一子を保育園に迎えに行くため

最初に言いたいこと

まず最初にこれだけは言いたいことがある。それは半育休を取るのではなく、可能なら完全育休をとるべきだったということだ。第一子ならまだしも、第二子の出産なら完全育休にするべきであった。

多少仕事を見れたという良い面はあったが、それよりも疲れや焦りを感じる辛さの方が上回った。また疲れなどの理由で、出社はしているけど結局ほぼ仕事は出来ない状態となり、むしろ周りに迷惑をかけた形になった。第一子ならともかく、第二子で二人育児になった時の体力面精神面での負担を軽く見積もりすぎた。そこは反省している。

半育休を取ってみて分かったこと

良かった点

  • 育休自体を取ったことは最高だった。第二子と遊ぶ時間も増えたし、何より第一子の保育園外の時間は必ず妻と二人がかりで育児が出来たため、第一子に寂しい思いをさせるということがなかったと思う
  • 育休をすることで、(仕事などをせずに)育児だけ毎日している大変さを身をもって味わうことができた。前回育休で一人育児は体験していたが、二人育児も同様に体験できたのは良かった。二人育児は一人育児と比べて3倍以上は大変だね...
  • 仕事を少し見れたことは良かった。育休中も、期末の評価や、月一での1on1を行えた。育休中にも多少情報をゲットできていたおかげで、復帰後にキャッチアップしなければならない量も少なかった
  • 育児給付金だけでは最大でも30万程度しかお金がもらえないが、仕事をすることで給与と給付金合計で35万程度もらえたのは経済面で助かった
  • ボーナス時期に育休を取ることで、ボーナスに社会保険料がかからないという最高体験をした
  • 第一子は2ヶ月の育休だったが、第二子は思い切って4ヶ月取ったのは良かった。4ヶ月あると、第二子も夜に寝てくれるようになり、二人育児にも慣れてきて、仕事に復帰してもまあやっていけるかな?という状態になった
  • とにかく子供はかわいい

悪かった点

  • 週1勤務で会社に行ってはいるけど、結局あまり仕事にならず、周りに迷惑をかけた
    • 正直週1 & 短時間だとほとんど仕事にならないと思う。なぜなら、休んでいると1週間分の情報量が溜まっていて消化しきれない、1週間前の仕事を思い出すまで時間がかかる、仕事が他の人ボールになったときに(例えばコードレビュー待ちとか)次に対応するのが1週間後になってしまうなどの理由からだ
  • ただでさえ育休中は周りに置いていかれていると感じるのに、週1回会社に行って周りの状況が見えることで、より焦りが増した
  • 育休をしていると、保育園に預けられる時間が短時間になる。もともとは8:30-17:30で預けていたのが、9:00-17:00になった。育休中に仕事はするなと言われているようで辛かった
  • 育休中少しはプログラムを書いたり、学習したりできるかな?と期待していたが、全く出来なかった。育児で疲れている & ずっと子供を抱っこしているので、その状態でストレスなく出来ることがゲームしかなく、ひたすらゲームをし続けるという状態だった
    • バランスボールがなかったらゲームすら出来ず死んでたと思う
  • 育児給付金の支給タイミングが遅いため、経済面で少し不安になることはある
    • 貯金はあったので全く問題はなかったのだけど、貯金口座から生活口座に何回かお金を移した

まとめ

今回は育休の振り返りを書いてみた。

育休自体は大満足。子供は本当にかわいいし、二人いると子供同士のやりとりが行われたりして、第一子だけのときよりかわいさが増した。子供二人で添い寝していたりすると本当にかわいい。

一方で半育休を取ったのは失敗。今やっている仕事の関係上、完全育休するのも大変だったけど、それでもうまく引き継いで完全育休にしたほうが良かったなと思う。

というわけで、男性が育休を取るのは最高 & 可能なら完全育休がおすすめ、という振り返りでした。

git commit時に自動perltidy & emacsからperltidy実行

最近業務で久々にPerlを書いている。最近社内ではperltidyをちゃんと使っているようで、自分の開発環境が追いついてなかったので、git commit時に自動perltidy & emacsから手動でperltidyを実行できる環境を整えてみた。

git commit時に自動perltidy

git pre-commit時に自動的にPerltidyを実行する | blog.fukata.org をほとんどパクらせてもらった。

.git/hooks/pre-commit

#!/bin/bash

# 自動perltidy
CURRENT_DIR="$(pwd)/$(dirname $0)"
PJ="${CURRENT_DIR%/.}/../.."

ORIG_IFS=$IFS
IFS=$'\n'
for f in $(git diff --cached --name-only --diff-filter=AM)
do
  # file is perl and exits
  if [[ "$f" =~ ^.+\.(pl|pm|t)$ && -e "$PJ/$f" ]]; then
    carton exec -- perltidy -pro="$PJ/.perltidyrc" -q -b "$PJ/$f"
    if [ $? -eq 0 ]; then
      git add "$PJ/$f"
      rm -f "$PJ/$f.bak"
    fi
  fi
done

IFS=$ORIG_IFS

emacsから手動でperltidyを実行

上記設定でgit commit時に自動でperltidyしてくれるんだけど、そうは言ってもemacsで手動でも実行したい時はあるよなと思って、便利関数を用意した。

(defun run-perltidy ()
  (interactive)
  (let* ((topdir (magit-toplevel))
         (file (buffer-file-name (current-buffer))))
    (quickrun :source `((:command . "carton exec -- perltidy")
                        (:default-directory . ,topdir)
                        (:exec . (,(concat "%c -b -bext=/ " file)))))))

quickrunだけでは現在編集中のファイルの絶対パスは取れないので、現在編集中のファイルの絶対パスを取るために少しだけ工夫している。