JJUG CCC 2022 Spring でリモートワークについて発表するよ〜

fortee.jp

久しぶりに JJUG のイベントで発表します! 内容はリモートワークの働き方についてです。 というのもデブサミの GitLab さんの発表がすごく良くて気づきが多かったんですよね。

learn.gitlab.com

もちろん社員の数とか売上とか全然違うので違う部分もあるのですが実は結構共通な部分も多くてなんか嬉しかったんですよね。
で、嬉しかったと同時に「これ、いろいろな会社がもっとこういうの発表して共通点とか分かってくるともっと良い世の中になるのでは?」とか思ったので今回発表しようと思った感じです。

というわけで、2022/06/19 12:30〜なのですが、裏がJDKコミッタだったりきしださんなんであんまり俺の方にこなそうだなぁとか思ったので宣伝です!! ぜひ聞きに来てね!!!

Springの@Async先にSecurityContextを引き継ぐ

DelegatingSecurityContextAsyncTaskExecutor (Spring Security 4.0.4.RELEASE API) を使えば実現できるっぽい。 ので AsyncConfigurer を実装したらちゃんと動いた。

import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.security.task.DelegatingSecurityContextAsyncTaskExecutor;

@Configuration
public class AsyncConfig implements AsyncConfigurer {
  private final ThreadPoolTaskExecutor defaultSpringBootThreadPoolTaskExecutor;

  public AsyncConfig(ThreadPoolTaskExecutor defaultSpringBootThreadPoolTaskExecutor) {
    this.defaultSpringBootThreadPoolTaskExecutor = defaultSpringBootThreadPoolTaskExecutor;
  }

  @Override
  public Executor getAsyncExecutor() {
    return new DelegatingSecurityContextAsyncTaskExecutor(defaultSpringBootThreadPoolTaskExecutor);
  }
}

1Password のロック解除をYubiKeyでやる

f:id:Yoshiori:20220217170745j:plain

絶対やり方忘れるので history 新鮮なうちにメモ書きしておきます。 僕は指紋認証もしたかったので YubiKey Bio シリーズにしたので本家サイトで購入した。

www.yubico.com

まぁぶっちゃけ NFC のやつのほうが便利なんじゃないかなぁとかも思ってる。そっちは Amazon で買えます

基本的には Universal 2nd Factor - ArchWiki に丁寧に説明があるのでそれでOK。 Arch じゃなくてもだいたい一緒だと思う(pam-u2f つかう)

$ yay -S pam-u2f
$ mkdir ~/.config/Yubico
$ pamu2fcfg -o pam://#{hostname} -i pam://#{hostname} > ~/.config/Yubico/u2f_keys

Arch のドキュメントに「ホスト名指定しておいたほうが良いよ」って書いてあったのでそれに従ってます。

で、僕は sudo と polkit だけ指紋認証(というかu2f)に変更してます。 ディスク暗号化してるとログインのときの認証はめんどくさいのでな。

ファイルはそれぞれ /etc/pam.d/sudo/etc/pam.d/polkit-1 です。その auth の先頭に下記を追加するだけ

auth       sufficient   pam_u2f.so nouserok origin=pam://#{hostname}  appid=pam://#{hostname} 

で、1Password のお話、設定で認証を system のものを使うように設定する。

f:id:Yoshiori:20220217172455p:plain

で、そうするとOSのパスワード入力画面が出てくる。 これを YubiKey で入力したいんだけど何を変更したら良いか調べたら polkit だった。

ja.wikipedia.org

ので上記設定で 1Password 起動すると初回起動時はマスターパスワード求められるけど次からは YubiKey 光るので触るだけで解除できます!

首元ヨレヨレになったTシャツの捨てるタイミングで悩むのをやめた

基本的に何かを考え始めるとどうでも良いことでも結構時間を使ってしまう人間なのでどうでも良いことは考えずに決断出来る様にしておきたい。 で、昔から出す時としまう時の衣替えの時期に無駄に考え込んでいた「このTシャツ若干ヨレヨレだけどお気に入りだから捨てるのも忍びない」的な感情をどうにかして6年位たった。 マイノリティなのは自覚しつつ他にも「決定で悩むことは1つでも減らしたい」性癖の持ち主はいると思うので僕のやり方を書いておく。

Tシャツとかトレーナーとかの捨て時

すごく簡単だけど悩まなくなってスッキリした1個目がコレ。やるのはすごく簡単で服を買ったらその日のうちにラベルに買った年を書いておく。で衣替えのタイミングで2年経ってたら問答無用で捨てる。 f:id:Yoshiori:20220125224545j:plain

これ、やってみたら本当に良くて衣替えの時、何も悩まずに捨てるものとしまうものを判断できる。2年にしたのはお気に入りの服はだいたいそのくらいでヨレヨレになってくるしそうじゃ無い服はどうせ着ないので要らない。という感じ。だいたい普段着的なのは5着あれば回せるのでそれで回している。

ラベルに記載するペンは普通の油性ペンだとすぐに洗濯で落ちてしまうのでお名前ペンを使ってる。

ヒートテックの替え時

ヒートテック、近年の夏から冬にかけての気温の変化速度的にノーマルヒートテックは要らないと判断した。半袖から少し肌寒くなってきた長袖着て上着着てもまだ寒い的な時期になったらもう極暖で良い。逆に超極暖は雪山とか行かないのであれば必要無いと判断。 ヒートテックは古くなると機能落ちるとか言われてるしそのくせ破けないのでベロベロになるまで着ちゃったりするんだけどコレはもう毎年買い換えることにした。 ポイントは極暖を5枚、お正月に買うこと。だいたい毎年見てると年末にヒートテックセールやった後、年明けが1番安くなってる気がする。極暖でも千円以下で買える。なのでお正月になったら極暖を5枚買う。届いたら古いのは全て捨てるという運用にしてる。

靴下の替え時

靴下はもう右と左っていうペアがある時点でだいぶ難易度の高い衣服なので変える時は全く同じものを5足買って古いのは全部捨てて入れ替える。 去年と同じのを買い増せば良いとか思ってた時期もあったけど実際やってみると企業努力が邪魔をして微妙に去年のと違ったりする。どれとどれがペアとか悩みたくなくて同じもの買ってるのにその企業努力は邪魔にしかならないので全部いっぺんに交換してる。

夏用の短い靴下と冬用のヒートテック靴下の2種類10足だけ持ってる。コレはそこまで細かくは決まってないけど残り3.5足になったら買い替えるようにしてる。

パンツの替え時

コレが実はまだ決まっていない。UNIQLOとかGU のボクサーパンツ履いてるんだけどまぁ、コレが丈夫。5年履いても破れないので鬼のパンツより強いと思う。コレも同じように購入年を書こうかなぁと考えながらこの2年新しいのを買ったないのでやってない。書いてた思ったけどそろそろ総取り替えしてローテーション組むべきなのかも。

まとめ

おしゃれ好きな人からは蛇蝎の如く嫌われるかもしれないけど僕の最近の洋服事情はこんな感じです。 僕と同じように無限にカンファレンスTシャツとグレーのパーカーが溜まっていく人で決定であまり悩みたく無い人にオススメです。

Git で会社のリポジトリとかは自動で別のメアドを使うようにする

仕事でGit使うときとか普段とは違う会社のメアドでコミットとかしたいんだけど、cloneするたびに git config user.email とかするのメンドイよね〜 というかもうだいぶ有名な設定だと思うんだけどたまに知らない人いるので書いておくと includeif 使うと特定のディレクトリ以下のときに読み込む設定を変更できるので便利です。

で、ここまでは普通にGitのマニュアルにも書いてあるんだけど ghq と組み合わせると最高便利になるのでそのへんの設定を書いておきます。 といっても普通に設定するだけだけど

.gitconfig には下記のように書いておいて

[ghq]
  root = ~/src
[includeIf "gitdir:~/src/github.com/launchableinc/"]
  path = ~/.config/git/launchable.inc

~/.config/git/launchable.inc には

[user]
  email = yshoji@launchableinc.com
  signingkey = 8B44C987D44775F6

な感じで書いておくと launchableinc のディレクトリ以下では会社のメアドとGPG使われて便利!!つまり ghq 使ってれば github.com/launchableinc 以下のリポジトリは会社の設定になって最高便利!ってなる感じです。

2021 年のふりかえり

Keep

英語の勉強

去年に引き続き英語の勉強は続けているのでそのまま続けたい。結局続いているのはDMM英会話とDuolingo。

f:id:Yoshiori:20211231215817p:plain

あと夏くらいから同僚に「俺の英語勉強のために週1で15分1on1してくれ!」ってお願いしている。これが思ったよりも良くてなんとなく15分くらいだとふんわり話せる。まだ英語ネイティブが複数人いるミーティングとかだと何言ってるか理解するの難しいけど、なんとなくコミュニケーションは取れるようになっている気はする。結構Duolingoで何回も同じような問題を解いているのが効いている気がしていて、よく聞くセンテンスの単語一個だけ変えて話すみたいなのをしている。

ギター

11月末に買ったんだけど少しづつ練習している。適当な音鳴らしたりおとぴぴアコースティックギターのレッスンをエレキでやってる。「Eから弾きな。」に書いてあったので最初から立って練習してるけどコードチェンジ難しいとか8ビートのジャンジャカカジャカってやりながら歌うの難しいとか思いながら楽しんでる。

 

Problem

体重があまり落ちていない

去年は全然体重増えなかったのでコロナ禍でも別に大丈夫なんだなと思って油断してたんだけど、ふと気がついたら5kg太ってた。ビックリして運動始めたりしている。あと朝ごはんはプロテインスムージーにするようにした。適当な冷凍フルーツと冷凍ほうれん草とプロテインと牛乳。それなりに腹持ちするし良い。少しづつ減ってたんだけど12月でまた少し上向いてきてしまっている。

f:id:Yoshiori:20211231221728j:plain

あまり本を読めていない

もともと本を読むのは好きなんだけど読むスピードは遅い人なので冊数をたくさん読めるわけではない。出社をしていた時は電車の中とかお昼に喫茶店でとか本を読む時間が作れたんだけど今はずっと家にいるしなかなかそういった時間が作れていない。あと子供が生まれる前とかは旅行先とかで本読んでたんだけどそういったのも無くなったので読めてない感がある。

Try

Spartan Race 参加

コロナ禍になってから参加出来てないので久しぶりに参加したい。レースに出たいというより目標あるとそのために運動するようになるのでそっちが目的かな。でもやっぱり出ると楽しいのでまた出たいと思ってる。

国内旅行に行く

コロナ禍になってから奥さんの実家くらいしか行っていないのでそろそろ国内旅行くらいはしたいなと思ってる。みんな沖縄行きすぎてて沖縄大変そうって思いながら沖縄行きたいなぁと漠然と思ってる。

もっとブログ書く

ここ数年ブログとかあまり書いていなかったんだけど仕事とか英語とか子育てとかインプットが増えた割にアウトプット増えてないのなんかフン詰まりみたいな感覚になってるなって気がついたのでもっと書いていきたいと思っている。

Linuxデスクトップ組む

15年以上前にラップトップでサスペンドがしっかりしているunix系マシンがほしくてMacにしたんだけどコロナ禍で全然移動しなくなったしもうラップトップにこだわる必要ないじゃんって思って来ている。結構前から「おんなじCPUでもガンガン電圧かけれてガンガンファン回せるデスクトップの方が性能出せるよなぁ」とか漠然と考えてた。転職もして在宅勤務になって最初は気晴らしにコワーキングスペースとか行くからラップトップにしておこうとか思ってたんだけど子供の送り迎えとか考えるとなかなかコワーキングスペース行くタイミングもない。あと家の環境をちゃんと整えたら快適すぎて他で仕事したくなくなった。ということでミドルタワーくらいで組もうかなと考え中。

雑感

ニコニコカレンダー的なノリで今年にマークをつけるならスマイルマークだなぁと思う。仕事は純粋に楽しい。西海岸のスタートアップでシードラウンドからシリーズAになる経験を出来るってなかなか無いことだと思うしエキサイティングで楽しい。去年は「早くお金を稼ぐためのものを作らねば」って焦る気持ちがだいぶ大きかったけど今年はとりあえず動くものは出来たので少し気持ちが楽になった。あとは優秀な人がどんどん入ってきていて環境もすごく楽しい。エンジニアもマジかと思うような人ばかり入って来ていて凄い刺激になっている。また正式にマネージャ職的な感じになった。僕はマネージャもエンジニアもどっちも楽しめる人で「俺はコレしかやらない」的な思いは別に無い。あ、「俺はマネジメントしない」と言っている人を責めてるとか否定しているわけじゃなくて個人的にはなんかとりあえず色々してみる方が飽きなくて面白いと思っている。じゃないと人事部長とかまでやらないしね。この先どんな道に進むのか自分でもわかってない方が楽しめるのでこのまま楽しんでいこうと思ってます。

プライベートの方は子供の成長が早すぎてなんか何も追いついていない感じ。まぁでもこれもすごく楽しい。

 

kubernetes-client/java で context を切り替える

Javaからk8s扱ってたんだけどcontextの切り替えが良くわからなくて結局コード読んで調べた。

正解は config 作ってそこでsetContextするだった。 kubectl config だとcontext切り替え時はset-contextは罠でuse-context使うんだけどプログラムからはsetContextでしたね〜 難しい

var kubeConfigPath = System.getenv("HOME") + "/.kube/config";
var config = KubeConfig.loadKubeConfig(new FileReader(kubeConfigPath));

// Staging 用のContext にして API 作成
config.setContext("staging");
var stagingApi = new CoreV1Api(ClientBuilder.kubeconfig(config).build());

// production 用のContext にして API 作成
config.setContext("production");
var productionApi = new CoreV1Api(ClientBuilder.kubeconfig(config).build());