全力で怠けたい

怠けるために全力を尽くしたいブログ。

西暦と和暦を変換する wareki コマンドが新元号「令和」に対応しました。

元号「令和」への対応

wareki コマンド が新元号「令和」に対応しました。

2019年5月1日以降は令和を返すようになりました。

$ wareki 2019/04/30
H31

$ wareki 2019/05/01
R1

あと --reiwa オプションと -R オプションが追加されています。

$ wareki --reiwa 1
2019

$ wareki -R 1
2019

アップデート方法

brew でインストールしているなら brew upgrade wareki するだけ。

$ brew upgrade wareki

インストール方法

まだインストールしていない人向け。Homebrew でのインストールがおすすめ。

$ brew tap ebc-2in2crc/wareki
$ brew install wareki

使い方

ebc-2in2crc.hatenablog.jp

XVim2 で使える機能のメモ。

ebc-2in2crc.hatenablog.jp

XVim2 でどんな機能が使えるかを調べたメモ。 とりあえず自分が使うものだけ。

モーション

b, B, f, F, gg, G, h, j, k, l, w, W, t, T, 0, $, ^, %, +, -, {, }, (, ), n, N, ', `, M, H, L

自分が使うものはだいたい使えるみたい。カンマとセミコロンも使える *1

マーク

ma とかでマークしておいて 'a でマークしておいたところにジャンプできる。

スクロール

C-d, C-f, C-e, C-u, C-b, C-y, zz, zb, zt

ジャンプ

C-o, C-i, gd

C-iXcodeEditor-Structure-Re Indent 機能に割り当てられていたので Preference > Key bindings から Editor-Structure-Re Indent 機能への割り当てを解除した。

インサートモード

a, A, i, I, o, O

ナビゲーション

C-], C-t

C-]XcodeJump To Definition 機能にマッピングされていて、 C-tXcodeGo Back 機能にマッピングされているとのこと。

ヤンク、ペースト、変更

d, dd(d), D, y, yy(y), Y, c, cc(c_), C, r, s, S, x, X

行結合

J

シフトブロック

, >>, <, <<

大文字と小文字の変換

Visual mode: u, U, ~, gu, gU

ノーマルモードではサポートされていないみたい。 自分は主にビジュアルモードで使うから問題なさそう。

元に戻す、やり直し

u, C-r

ビジュアルモード

v, V, C-v

C-v + Shift-i は動かないと書いてあるけど動くっぽい。

検索と置換

/, ?, #, , g, g#, :s, n, N

Vim ライクな検索は本当に便利。

テキストオブジェクト

ib, iB, i(, i), i{, i}, i[, i], i>, i<, i", i', iw, iW ab, aB, a(, a), a{, a}, a[, a], a>, a<, a", a', aw, aW

とても便利。

Recording

q, @

自分の環境ではうまく動かなかった。

ドットコマンド (.)

自分が使う範囲では十分に使える。

その他

Ex コマンドも結構使えるようで XVim オリジナルの Ex コマンドもあるよう。 まだ XVim をインストールして間もないのだけど「Xcode 使いにくいなー」と思っていたことの結構な部分が Vim キーバインドが使えないことだったかもしれない。

*1:むしろ M, H, L とか使わなすぎて忘れてた

Xcode に XVim2 をインストールしたメモ。

XcodeXVim2 をインストールしたときのメモ。

環境

  • macOS Mojave (10.14.3)
  • Xcode 10.1
  • XVim2 5c7aaa56e2d39ed2dd9ad42b7f14e4c91ee59218

インストール手順

README どおりの手順でインストールできた。

自己署名証明書の作成と Xcode の再署名

https://github.com/XVimProject/XVim2/blob/master/SIGNING_Xcode.md を参考に自己署名証明書を作成して Xcode を再署名した。
証明書の名前は XcodeSigner にした。

XVim2 のブランチ

master: for the lastest GM Xcode.

と書いてあったので master で。

Xcode を再起動して

あれだけ使いにくかった Xcode が手足のように感じられた。感動した。

1人で始めた職場での改善活動の1年をふりかえってみたメモ。

職場で勝手にやっている改善活動のメモを取り出してから1年たったのでふりかえってみたメモ。

書くこと

  • #俺俺改善活動 ツイートで追うカイゼン
  • 変わったこと
  • 実際にやっていたこと
  • まとめ

ハッシュタグ #俺俺改善活動 ツイートで追うカイゼン

メモはハッシュタグ #俺俺改善活動 を付けて Twitter へツイートしていた。*1

1月: 新しい環境へ

新しい環境でのカイゼンへ意気込む。

2月から7月: 空白期間

通常業務があまりにも大変で表に出せるカイゼンは何もできなかった。
ただ、あらためてふりかえると水面下ではカイゼンを推し進めていく要素が少しずつ育っていたように思う。

8月から年が明けて2月まで








変わったこと

  • 定期的な知識共有の場ができた
  • ドキュメントを書く人が増えた
  • ドキュメントの内容も「知っている人なら読める」から「知らない人を助ける」ものへ
  • メンバーが自分用に書いたシェルスクリプトワンライナーを周りに公開してくれるように

実際にやっていたこと

  • 暗黙知を探し出して自分の知識にする
  • 自分の知識になった暗黙知形式知に変換する
  • 新たにその領域に入ってきた人に形式知を共有する
  • 間違えやすい作業は、注意深くやる→マニュアル化→自動化へ変えていく

基本的には「自分が味わった苦労は他の人、特にあとからその領域に入ってきた人には味わってほしくない」を行動基準の軸にしている。

まとめ

新しい環境に移ってから1年以上がたっているが、まだカイゼンは始まったばかりだと感じている。
自分たちのチームはもっともっとカイゼンできるはずだし、カイゼンすることによって新たにカイゼンできることがさらに増えていき、なにより業務そのものの質を高めていける、そう思っている。

自分たちのカイゼンは始まったばかりだしカイゼンに終わりはない。
また1年後にそれまでの1年間をはてなブログに書きたい。

*1:あとで検索するのが楽なので

在宅での仕事で作業に集中するために効果があった工夫のメモ。

ここ1ヶ月くらい在宅で仕事をすることが多かったので、自宅でも安定して仕事に集中するために効果があった工夫をメモ。

工夫を一言でいうと

工夫を一言でいってしまうと「作業環境を会社でのそれに近づける」これに尽きる。
本来はプライベートモードであるのが当然の空間である自宅を、仕事モードに入っている時の環境 = 会社での作業環境に近づけることによって自然と仕事モードに入ることができ、それを持続することができる。

工夫の具体的なところ

ラジオをかける

自分の会社では常にラジオがかかっているので、在宅で仕事するときにもラジオをかけるようにしている。
会社では常に J-Wave がかかっているので、当然自宅でも常に J-Wave をかけている。
J-Wave は平日の帯番組が決まっているため、そのときにかかっている番組でだいたいの時間帯が肌感覚で分かるのだが、この「肌感覚でだいたいの時間帯が分かる」というのも会社と自宅とで同じ体験となるため、仕事に集中しやすくなるのに一役買っているようだ。

食事

普段は就業開始時間の少し前に出社して、コンビニで買ってきたおにぎりやサンドイッチを自分の席で食べている。
在宅での仕事を始めた頃は朝食を自炊していたのだが、それをやめて普段と同じような時間帯にコンビニで食事を買い、普段と同じような時間帯に食べるようにしたところ、とても仕事モードに入りやすくなった。
当然、コンビニで買うのも普段と同じようにおにぎりやサンドイッチだ。

飲み物

普段はコンビニで朝食と一緒にコーヒーを買ってきてそれを飲みながら仕事をしている。
そこで、在宅での仕事でも同じようにコンビニで朝食と一緒にコーヒーを買ってきて飲むようにしたところ、とても仕事モードに入りやすくなった。
熱いコーヒーの香りが部屋に漂っているとリラックスするとともに仕事に向き合う気力も湧いてくる。

小道具

普段はちょっとしたタスクを管理したりアイデアをかき混ぜるために筆記用具を使っている。
実際に使っているのはコンビニで売っている大学ノートをサイズ違いで2冊と万年筆 *1 なのだが、在宅で作業するときは会社から持ち帰って自宅でも使うようにした。
仕事そのものをしているときは how つまり「どうやって仕様を実現するか」といったことに意識が向いているが、筆記用具を使っているときは why や what つまり「なぜその作業をしているのか」「何の作業をしているのか」ということに意識が向くようで、それが仕事モードを持続することにつながっているようだ。

在宅での仕事で作業に集中するためにどれくらい効果があったのか

今の作業環境を作ったことで会社と完全に同じか、ときによって会社よりも作業に集中できるようになった。
会社ではどうしてもノイズが発生してしまうところが自宅では発生しないのでより集中しやすいのかもしれない。というか、自宅で仕事をしていると集中しすぎて定時が過ぎたころにはぐったりしていることが多い。

今後

さらにいろいろ試してみて、より作業に集中しやすい工夫を見つけていきたい。

*1:といっても高いものではなく実用性重視のもの

ipa ファイルからプロビジョニングプロファイルの期限を確認するメモ。

ipa ファイルからプロビジョニングプロファイルの期限を確認するメモ。

したいこと

ipa ファイル (iOS のアプリ) しかない状態でプロビジョニングプロファイルの有効期限を確認したい。
中間ファイルとかは作りたくない。

確認する方法

プロビジョニングプロファイルの情報は ipa ファイルのなかの Payload/<アプリ>.app/embedded.mobileprovision に記述されているので、それを確認すればよい。
embedded.mobileprovision の中身は XMLExpirationDate の次に現れる 要素がプロビジョニングプロファイルの有効期限を示している。

実際の確認

ざっくりと確認

こんな感じで確認できた *1

$ unzip -p <ipa ファイル> Payload/<アプリ>.app/embedded.mobileprovision \
	 | strings \
	 | LC_ALL=C sed -n -e '/ExpirationDate/ {n;p;}' \
	 | sed -e 's/<\/*date>//g'
2019-12-14T00:00:00Z

embedded.mobileprovision を XML として確認

embedded.mobileprovision の中身は XML なので XML として扱っても同じように確認できる。

$ unzip -p <ipa ファイル> Payload/<アプリ>.app/embedded.mobileprovision \
	| strings \
	| LC_ALL=C sed -n -e '/^<data/d' -e '/^<?xml/,/^<\/plist>/p' \
	| xmllint --xpath '//key[text()="ExpirationDate"]//following-sibling::date[1]/text()' -
2019-12-14T00:00:00Z

利用できる iOS シミュレーターをざっくり確認するときのメモ。

利用できる iOS シミュレーターをざっくり確認するときのメモ。

Xcode の Devices & Simulators から確認できるけど、普段 Xcode を使わないのでコマンドラインからざっくり確認したい。

こんなときは Xcodeコマンドラインツールである simctl コマンドを使うと簡単に確認できる。

$ xcrun simctl list devices
== Devices ==
-- iOS 11.2 --
    iPhone 5s (C367044F-AF26-47DE-8444-9F22416C2525) (Shutdown)
    iPhone 6 (2E19BDBE-A762-4115-9582-DAC66FD9B106) (Shutdown)
    iPhone 6 Plus (E08573CC-0879-4312-BC06-E6D40989EB40) (Shutdown)
    iPhone 6s (C2CF2C3B-D776-4D72-B564-E59BD7527058) (Shutdown)
    iPhone 6s Plus (B24A7481-2E12-40DF-85B4-F657E7A7BD3E) (Shutdown)
    iPhone 7 (81425B8B-E722-4BFB-B467-7FF0A87F0151) (Shutdown)
    iPhone 7 Plus (F55C9029-7330-454A-9661-D65FB131F40F) (Shutdown)
    iPhone 8 (1C7D47A9-7E21-41BF-8AB2-8BB2DE28A846) (Shutdown)
    iPhone 8 Plus (65084E57-278A-4268-B37E-CA149D9FE1CB) (Shutdown)
    iPhone SE (80BC4B09-1E76-455A-BC28-125A2C1DBC59) (Shutdown)
    iPhone X (06E64320-B050-44BC-9D59-97B3B0860C43) (Shutdown)
# 省略
-- Unavailable: com.apple.CoreSimulator.SimRuntime.iOS-11-0 --
    iPhone 5s (547BCCDF-AED5-4284-BF4D-4FA20DBB09A1) (Shutdown) (unavailable, runtime profile not found)
    iPhone 6 (B348CE31-10CD-4D92-AB5E-2784BF65C751) (Shutdown) (unavailable, runtime profile not found)
    iPhone 6 Plus (AA4EECE5-BDCD-4B73-84A6-ADEEFF95EC9C) (Shutdown) (unavailable, runtime profile not found)
    iPhone 6s (956995BD-35FB-476D-B17F-F750065EF012) (Shutdown) (unavailable, runtime profile not found)
    iPhone 6s Plus (09FD128D-C32E-488A-81BB-EC4F134A0EE6) (Shutdown) (unavailable, runtime profile not found)
    iPhone 7 (6D0D76B6-57E9-4292-A420-4738E9022EBF) (Shutdown) (unavailable, runtime profile not found)

こんな感じでぞろぞろと出力されるのだが、ランタイムがないなどで利用できないデバイスも出力されるし、自分は iOS 以外のシミュレーターは必要としていないので、このあたりをフィルタリングすると見やすくなりそう。--json オプションを使うと JSON で出力できるので、それを jq コマンドでフィルタしてみる。

$ xcrun simctl list --json devices |
	jq --raw-output '.devices |
		to_entries[] |
		select(.key | startswith("iOS")) |
		.key as $key | .value[] |
		select(.availability == "(available)") |
		.name + ", " + $key'

iPhone 5s, iOS 11.2
iPhone 6, iOS 11.2
iPhone 6 Plus, iOS 11.2
iPhone 6s, iOS 11.2
iPhone 6s Plus, iOS 11.2
iPhone 7, iOS 11.2
iPhone 7 Plus, iOS 11.2
iPhone 8, iOS 11.2
iPhone 8 Plus, iOS 11.2
iPhone SE, iOS 11.2
iPhone X, iOS 11.2
iPad Air, iOS 11.2
iPad Air 2, iOS 11.2
iPad (5th generation), iOS 11.2
iPad Pro (9.7-inch), iOS 11.2
iPad Pro (12.9-inch), iOS 11.2
iPad Pro (12.9-inch) (2nd generation), iOS 11.2
iPad Pro (10.5-inch), iOS 11.2

いい感じ。

カンマから前がデバイスの名前になる *1

Xcode は 9.2、jq は1.5 で確認 *2

*1:simctl はじめいろんなコマンドで指定できる

*2:Xcode は 10.0 とかでも大丈夫