ziguzagu.org

Netlify にこのブログを移すタイミングで、ドメインレジストラを Google に移行して、DNS は Apex 使っている関係もあって Netlify の DNS を使っていたけど、両方とも Cloudflare に移行した。

以前使っていたドメインがもうすぐ更新で、なんとなく Google ではないどこかないかなぁ、Netlify がAレコード直指定サポートしてくれてるとはいえあんまりやりたくないしなぁ(実際この期間にアドレス一度変わってる)、とか思いながらぼんやり Netlify のドキュメントを眺めていたら、Cloudflare の DNS で CNAME Flattening というのがサポートされていて、CNAME に Apex ドメインが設定できるというのを知り、レジストラもやってて値段はドメイン原価のみというのもあってシュッと移行した。

使い勝手としては通常のドメインレジストラとはちょっと違って、Cloudflare にサイト(ドメイン)を登録して NS レコードを Cloudflare に向けるところまでやって「Cloudflare をエッジとして使う準備ができたドメイン」についてのみ移管できる、という感じの流れになってた。ドメインの価格を原価のみに設定するというのは、つまりはそういうことだろうなとは思ってはいたし、Netlify の CDN が日本に Edge がなくてさして速くはないというのもあってうっかり速くできたら儲けもんくらいのノリもあったので、これは支障にならなかった。

実際移行して Cloudflare の無料機能も使ってみるといろいろ面白い。キャッシュヒット数が可視化されてるのはもちろんのこと、帯域幅やDNS のレスポンスタイムの可視化、HTTP/TLS バージョン別のトラフィック統計とかとか、エッジ周りのいろんなイベントが可視化されて見える。Netlify でもできる JavaScript/CSS の Minify に加え、Brotli 化するのもできて、Cloudflare でどれだけ帯域節約・速度向上させたかの可視化なんていうのもある。

レイテンシーについては Netlify CDN と比較するとそこまで改善していなさそうな気配。Netlify はエッジが日本になく Cloudflare は東京と大阪にあるようなのでちょっと期待してたけど、無料プランだしそもそもたかが知れたアクセス数というのもあってかキャッシュミスヒットも多くて、でも DSA 的な部分でちょっと速いくらいの感じ。

とはいえ、Apex 使うために DNS 的制約があった部分が払拭できたのに加え、エッジのもろもろな機能をおまけで使えるのは大変良いので、しばらくこれで安泰。

【2021-04-14 追記】 どうも Cloudflare の Proxy (CDN) を有効にしてしまうと Netlify 側が正常動作しないっぽく警告が消えないのと証明書の更新ができならしい。フォーラムでも警告されてたりした。残念ながら DNS のみ使うことに。まぁ、料金は安くなったからいいか…。

3月からフリーランスとして仕事を始めて1ヶ月がたった。

いまのところ週4日勤務で、1社は火〜木曜の3日、もう1社が金曜という感じで始めてみている。

メインにしてる週3勤務の方は Rails 中心のサービス開発で、開発が始まって数年のサービスだけどコードベースでは過去経験した中ではすでに一番大きい規模感。関わってるエンジニアの人数も多いし、社全体のエンジニア人数も多くて、いろいろ目新しいものや仕組みがいっぱいな感じで、その辺りは望んでいた通りで大変良い。

勤務としては中4日間隔があくせいか、少しのブランクのせいか、衰え(?)のせいか、コードベースや業務知識について理解を深めるスピードがとても遅く感じていた。もちろん参加した時にはすでに一人で全部理解するのは難しいサイズになってるし、そもそも結構複雑なことをやっているサービスでもあるので、単純にキャッチアップが難しいのかもしれないけど、毎日書くコード量があまり増えていかないし精神的にはちょっときつかった。

ただそれは、頼まれてもないのに基準を厳しく設定していて自分を追い詰めていただけのようで、3月最終日に簡単なフィードバックをもらい「いい動きしている」「安定感があって安心」といった風に言ってもらえて、ほっとしたというか、あぁまたやってしまう寸前だったかぁ、と思った。性格なのだろうけど。

もう1社は、契約前の面談では、技術的に大きな課題感があるものの週1日なので技術全体のディレクションとかを中心に、みたいな希望を聞いていた。ただ、それだけで1日使うかなぁ?というのと、どうであれやれることはいっぱいありそうなのでとりあえず入ってからタスク決めましょという形で始めさせてもらった。

初日に最新の内情を聞きつつも、ちょうどひとりイキのいいエンジニアが入って現状の運用とか開発体制改善みたいなのは着手し始めてる、という感じだったので、当初話にあったような業務はその方にお任せしつつ見守りつつとして、自分のタスクは、重要度・難易度は高いけど緊急ではない(あるいは時すでに遅しなのでとにかく終わらせることの方が大事な)技術的な業務に集中させてもらうことにした。

こちらも Rails でサービス開発していて、Ruby と Rails どちらもバージョンアップが必要な状況の中、まずは Ruby のバージョンアップを優先してやることに。ドメイン知識の獲得がそれほど必要なく、前職での経験もあって調査もコミットもどんどんできるし、Ruby と Rails について掘り下げる機会にもなって大変ありがたい。

あとは組織課題に関しての相談なんかも。昨日のミーティングの最後に「体調のいい時の酒井さんやっぱピカイチだわ」と、本当に褒められてるのかよくわからない言葉ももらったけど、他人からそう見えてるのであれば体調はやはりよくなっているのかもしれない(前日にメインのところのフィードバックもらって精神的に少し楽にはなっていたのもある)。

なんとか大丈夫っぽいので今後はもう少しリラックスして挑みたい。

人生初のモニターを買った。買ったのはタイトルの通り Dell の P2219H という21.5インチのもの。

条件として、

  • 設置する机のサイズは幅100cm、奥行き55cm
  • 見た目のインパクトを小さくしたい(机が寝室内でベッドのすぐ横なので)
  • なるだけ薄い方がいい(机の奥行きがない)

というのがあり21.5インチか24インチかというところで探した。ただ、でかくて失敗するとどうしようもないので24インチは候補としてはすぐに脱落。21.5インチものでしばらく物色してたところ、ちょうどセールで値下げ中、かつさらにいまなら20%オフみたいな状況でトータル6,000円引き、仕事再開する前のこのタイミングで少し慣れたい、だめだったら奥さんが使うというバックアッププランも含めて、えいやと買った。

あわせて、MacBook にケーブル2本も刺さってるのは抜き差し面倒だしなんか美しくないので、Power Delivery 対応してるUSBハブを、ということで Anker PowerExpand+ 7-in-1 USB-C PD イーサネットハブ(長い)というのも買った。それら設置して2週間ほど使ってみた感想。

P2219H on the desk

奥行き的にはこれ以上大きいと画面端をみるのに首をふる勢いになりそうなので事前に計測していたとおりちょうどよかった。もう少し壁にくっつけれると良いのだけど、モニターアームでもモニターに取り付ける部分は8cmくらいあるやつが多いっぽいのでこれが限界かもしれない。

画質はどうやったって Retina な MacBook に比べるとしょぼいのは当たり前で、かつ FHD どうしで比較するようなものも持ってないのけど特に困っていない。とはいえ、広い画面はやはり正義であり1画面で表示できる行数も増えるし、tmux や Emacs の window 横2分割したまま使ってても狭さを感じないので快適。

問題は MacBook 含めた位置関係で、今は写真のとおり前後配置でおいて重ならないように両方みる感じでおき、用途はモニターのほうがターミナル、それ以外は MacBook の画面という形で使い分け。ただ、この配置だとモニターをみるときには少し顔をあげている感じになる。そのせいか、それとも20年近くノートPCばかり使っていて下を覗き込むような姿勢で体が最適化されてしまっているせいかはわからないけどどうにも首が疲れる。それに釣られて肩もこりがち。

ちょっとこのまま1日8時間勤務はじまるときついかなぁという状況なのだけど、モニターの高さを下げることになるとすると、画面が重なるので MacBook を手前に置くわけにはいかず、モニターの横に並べるか、クラムシェルモードで使うかに。どちらにせよキーボード買わないといけないが、横に並べるスペースはちょっと厳しそう。となるとクラムシェルモードだけど、そうなるとスタンド的なものとビデオ会議用にカメラがないと、机はガチャガチャするし会議のたびに環境変更とか面倒くさくて嫌。Touch ID 使えないのもちょっと。とかなどでぐるぐるしている。

いずれにしてもこれはきっと沼の入り口に立っているのは間違いないかなという感じ。

お金で健康を買うのは大事なのだけど、そのお金がちょっと寂しい状況なので、しばらく様子をみてから改善策を考える。

去年12月からの無職期間の活動を記録しておくただのメモ。

手続き

保育園は退職に伴う求職中扱いに変更で時短保育(9:00 - 17:00)になり、かつ3ヶ月以内に就労しないと退園ということを知って無職の洗礼を受けた。その条件あるなら失業保険の給付手続きしてもほとんど貰える期間ないなぁ、と思い手続きはしなかった。とはいえ少しでも足しになるのでやっとけばよかったという後の祭り。

健康保険はトスラブ行きたいがためだけに関東ITSを任意継続することにしたので国民年金への切り替えのみ手続き。としたのだが、2回目の保険料支払い期日を忘れてしまい2月11日で資格喪失しましたという案内がやってきて結局国民健康保険に切り替えとあいなった…。こんな馬鹿みたいなこと繰り返したくないので口座振替にしようとしたのだけど使ってる銀行が対応してなくて終了。不便。年金はクレジットカード払いできるようなのでそれだけでもなんとかしときたい。

11月退職だと年末調整されないので確定申告はいつものふるさと納税のにくわえて所得控除ものをのせる作業。住宅ローン控除の部分はちょい手間だけど、無職なのでシュッと終わらせた。

家事&育児

出勤してたころは朝担当(保育園とご飯)、去年2月のフルリモート勤務開始以降はお迎え or 晩ごはんのどちらかを追加。で、無職になり時短保育になったので早めお迎えと晩ごはんを常時担当するようになったくらい。と簡単に書いたけど家事の7〜8割は自分がやってたことにはなる。えらい。

17:00 お迎えはやはり1日があっという間に感じる。小3の上の子はフルリモート定着した夏には子供ルームも解約してしまったのだけど、17:00までは外で遊んできてよしとしていて親離れ少し進んだ感。帰宅後は二人で遊んでくれはするものの10分もすればいざこざが始まるので結局何某かの対応をしたり、そういうのが面倒なので下の子連れてスーパーに出かけたりする作戦でやり過ごすなどして、まぁ対応時間は増加。

土日は相変わらずそんなお子様対応してるので自分だけのための時間はあまりない。

健康

この無職期間で一番大事だったのはとにかく健康の維持・向上だった。

まずは慢性化してしまった腰痛。

整体は引き続き2週に1回いって骨盤を中心に全身整えつつ、週1日だけやっていたランニングを2、3日に増やした。それらに加えて、仕事してない分座り続けてる時間も減ったせいか、日常的にずっと痛いというのは少なくなってきた。ただ、30〜40分かけてご飯作るのに立ってたりすると腰カチコチでその後柔軟しないと座るのつらいみたいなのはある。実際体は昔にくらべて随分硬くなったし整体でも指摘され続けているので柔軟体操はもっと必要かも。

あと、元旦から体重計にのるようにしていて、1ヶ月半ほどで約2kg絞れたのが観測できてる。太ってるわけではないけどたるんできた感じはあったので、腰痛ケアに加えて引き締め効果というサブ目的は一定達成した感じ。継続したい。

そして適応障害。

いろいろ調べれば調べるほど通ってた心療内科の対応ポンコツだったのでは???という感じもある。とはいえ、この期間中は朝起きれないほどの虚脱感や頭痛はかなり減って2回程度という感じ。よくなってきたということにして過去は忘れたいけど、原因を特定できて排除したわけではないので仕事再開したらまたなんかおかしくなってしまうのでは?という不安はゼロではない。

ただ、最初に書いた通り、保育園に通わせ続けるには3ヶ月しか無職でいられないという事実があるので働くしかない。

生活

おととしの休職期間中くらい何にも考えずに休む期間を作ろう、と思っていたけど実際にそんなことできたのは2週間もない。

結局転職活動に時間もエネルギーもだいぶもっていかれたし、以前とは家庭事情も違うし(0歳と2歳では手間が全然違う)、子供の冬休みも良かれと思って少し長めにとって子守期間も長かった。加えてどこにもいけないので転職の都度やっていた一人旅は今回はナシ。残念無念だがどうしようもないので次の機会に。

そんななので自由時間にやることといえば、運動時間増やした以外は普段と何ら変わりなく、本読む、Netflix みるという変わらない感じだった。旅行を封じられると無趣味が露呈する。

とりあえず金銭的には3ヶ月なら何とかなる(する)、と奥さんに言ってもらって休めただけでも感謝しないといけない。

転職活動

また別途書く。

Rails のプロジェクトを作る、つまり rails new 実行するためだけに rails gem をグローバス にいれていたりもするのだけど、継続的にバージョンアップしたりしないし、rbenv で新しい ruby を入れるたびにインストールし直すのはやはりだるい(というか実行できなくてようやくきずく)。

のでグローバルに rails gem なしで rails new する雑スクリプトを用意しておいて dotfiles に入れておく。

#!/usr/bin/env ruby
#
# rails-new: Run `rails new` with no rails gem
#

require 'optparse'
require 'pathname'

opt = OptionParser.new
opt.banner = 'Usage: rails-new <app_path> [-h] [options]'
opt.on('-h', '--help', 'Print this help') do
  puts opt
  exit
end

app_path = Pathname.new(ARGV.first)

rails_new_options = []
begin
  opt.parse!
rescue OptionParser::InvalidOption => e
  rails_new_options << e.args[0]
  retry
end

abort "#{app_path} directory exists." if app_path.exist?
app_path.mkpath
Dir.chdir(app_path)

File.open('Gemfile', 'w') do |f|
  f << <<~EOF
    source "https://rubygems.org"
    gem "rails"
  EOF
end

def msg(str)
  puts "\e[1;38;5;215m⚡ #{str}\e[0m"
end

msg 'Prepare to run rails new...'
system('bundle', 'install', '--quiet', exception: true)

msg "rails new #{rails_new_options.join(' ')}"
system('bundle', 'exec', 'rails', 'new', '.', '--force', *rails_new_options, exception: true)

rails new に渡すオプションはこのスクリプトでは処理せずに pass through して渡すようにして、このスクリプト自体をいじらなくても最新のオプションが使えるようにしておく。

➜ rails-new test-app --minimal
⚡ Prepare to run rails new...
⚡ rails new --minimal
       exist
      create  README.md
      create  Rakefile
      create  .ruby-version
      create  config.ru
      create  .gitignore
      create  .gitattributes
       force  Gemfile
         run  git init from "."
  .
  .

Ruby の OptionParser は pass through するオプションがないので rails new に任せるオプションは InvalidOption を拾い集める必要があるのがちょっとあれなのだけど、ググる限りこういうやり方が多いっぽい。