GeekFactory

int128.hatenablog.com

二回目の育休日記(生後8ヶ月)

娘3歳半、息子8ヶ月になりました。

int128.hatenablog.com

int128.hatenablog.com

近況

最近は以下のようなスケジュールで生活しています。

  • 7:00 起床
  • 8:40 保育園に送る
  • 9:00-11:30 パパの自由時間
  • 昼食
  • ママの自由時間
  • 15:40 保育園にお迎え
  • 21:30 就寝

3ヶ月の頃と比べると生活サイクルがだいぶ安定してきましたが、依然として夜は息子があまり寝ない問題があります。そのため、まだ娘&パパと息子&ママで別々の部屋で寝ています。ベビーベッドを卒業したら同じ部屋に移行する予定です。

息子は午前中はだいたい布団で寝ています。午後は抱っこ紐じゃないと寝ないので大変です(ママの場合は布団でも寝るみたい)。

食料品などは以下から調達しています。

西友ネットスーパーとパルシステムはZaimに対応しているので便利です。生活費の精算や支出計画を省力化できます。あと、パルシステムの牛乳は美味しいですね。

昼食は近くの弁当屋さん、もしくはインドカレー屋さんが多いです。ランチはパパとママで一緒にとることで、情報共有の時間を作るようにしています。また、ルンバは毎日(外出する方がセット)、水回り掃除は毎週水曜、食料品発注も毎週月/水曜に固定して分担しています。この辺はScrum Masterの経験が生きている気がします。

自由時間は近くのカフェやコワーキングスペースで作業しています。ちょっと費用がかかるのが悩みです。

www.facebook.com

娘はだいぶ落ち着いて手が掛からなくなってきました。3歳特有の難しさはありますが、一緒に小旅行に出かけたりできるようになったので楽しいです。だんだんと息子が動き出したのでこれから大変そうです。

保育園のママ友ネットワークにも随分と馴染んできました。3月末で引越しする子のお別れ会に顔を出したりもしました(パパは私しかいませんでしたが)。

今後の課題

計画では育休を4月下旬まで取得する予定でしたが、保育園の送り迎えを考慮して5月下旬までに延伸しました。1歳前であれば育児休業給付金も問題なく支給されるようです(まだ延伸分の振込を確認できていませんが)。

娘の保育園は自宅から少し離れているので、送り迎えは自転車が必須です。息子を自転車に乗せられるのは早くても6月になるので、5月下旬に復帰して当面はリモートワークもしくは休みにしようと考えています。

復帰後の生活サイクルがどうなるか分からない不安はあります。徐々にフルタイムに戻れるように調整していくつもりです。

育休中の活動

拙作のkubectl pluginがKrewでインストールできるようになりました。あとはLayered Architectureに移行したり、雑なエラーハンドリングを見直したりといったリファクタリングを進めていました。

github.com

拙作のGradle PluginがGradle 5に対応しました。SSH PluginについてはCircleCI 1.0から2.0への移行をずっと放置していたのでとても大変でした。

github.com

github.com

あとはRelease Engineeringのツールを作ったりしていました。

github.com

github.com

github.com

まだ試行錯誤中ですが、Yahooの雨雲レーダーを補完するサービスも作っています。保育園の送り迎えの時に雨雲の隙間を狙って出たいというのがモチベーションです。天候はコロコロ変わるので難しいですね。

github.com

以上、育休8ヶ月目の近況でした。

GitHub APIでリポジトリにファイルをコミットするコマンドを作った

GitHub APIを利用してリポジトリにファイルをコミットするコマンド ghcp を作りました。シングルバイナリでgitコマンドに依存しないため、リリースなどでCIからリポジトリのファイルを書き換えたい場合に便利です。

github.com

使い方

GitHub ReleasesもしくはHomebrewからインストールできます。

# GitHub Releases
curl -L -o /usr/local/bin/ghcp https://github.com/int128/ghcp/releases/download/v1.3.0/ghcp_linux_amd64

# Homebrew
brew tap int128/ghcp
brew install ghcp

# Go
go get github.com/int128/ghcp

あらかじめGitHubの設定ページからトークンを取得して $GITHUB_TOKEN に設定しておく必要があります。

基本的な使い方は以下になります。

デフォルトブランチ(通常はmaster)にファイルをコミットする:

ghcp -u YOUR -r REPO -m MESSAGE files

指定したブランチにファイルをコミットする:

ghcp -u YOUR -r REPO -b BRANCH -m MESSAGE files

デフォルトブランチから新しいブランチを作成して、ファイルをコミットする:

ghcp -u YOUR -r REPO -B BRANCH -m MESSAGE files

指定した親ブランチから新しいブランチを作成して、ファイルをコミットする:

ghcp -u YOUR -r REPO -B BRANCH --parent PARENT -m MESSAGE files

応用例

GitHub Pagesへのリリース

CIでビルドしたファイルをGitHub Pagesにリリースする場合、これまでは git commitgit push を駆使したスクリプトを書く必要がありましたが、ghcpを使うと以下の1コマンドでリリースできます。

ghcp -u int128 -r sandbox -b gh-pages -m "Example commit" index.html

Homebrew tapリポジトリへのリリース

tapリポジトリにformulaをリリースする場合もghcpを使うと簡単に実現できます。

# formulaを生成する
cat > hello.rb <<EOF
class Hello < Formula
  desc "Your awesome application"
  homepage "https://github.com/YOUR/hello"
  url "https://github.com/YOUR/hello/releases/download/v1.0.0/hello_darwin_amd64"
  version "v1.0.0"
  sha256 "$(shasum -a 256 -b hello | cut -f1 -d' ')"

  def install
    bin.install "hello_darwin_amd64" => "hello"
  end

  test do
    system "#{bin}/hello -h"
  end
end
EOF

# tapリポジトリにコピー
ghcp -u int128 -r homebrew-sandbox -m v1.0.0 hello.rb

バージョン文字列を書き換える

READMEやビルドスクリプトなどのバージョン文字列を書き換える用途にも使えます。CIで新バージョンをテストする場合に便利ですね。

# substitute version string in files
sed -i -e "s/version '[0-9.]*'/version '$TAG'/g" README.md build.gradle

# commit the changes to a new branch
ghcp -u YOUR -r REPO -B bump-v1.1.0 -m v1.1.0 README.md build.gradle

まとめ

詳しい使い方は https://github.com/int128/ghcp を参照してください。

Zaimからスプレッドシートへの転記に使えるChrome Extension

Zaimの履歴をGoogleスプレッドシートExcelなどに転記するためのChrome Extension「zaimsheet」を作りました。

chrome.google.com

zaimsheetをインストールすると、Zaim Web版の履歴画面に「スプレッドシート形式」というボタンが追加されます。このボタンをクリックすると以下のような表が表示されます。

f:id:int128:20190214143942p:plain
スクリーンショット

表を選択してコピーすると、GoogleスプレッドシートExcelなどに貼り付けられます。

f:id:int128:20190214144340p:plain
スプレッドシートの例

まだ初版なのでアイコンや説明文などもちゃんと設定していないのですが、そのうち直します。ソースコードhttps://github.com/int128/zaimsheet で公開しています。

我が家は独立採算制を採用しているため、Zaimに入力した履歴から家庭内共通費を月次で集計しています。Zaimに社内取引のような概念があるとよいのですが、今のところスプレッドシートで集計しています。