歯バトル・ファイナル8/20

いつまでやってんだという話だが、4月から続いている歯とのバトルは8月20日に右上親知らずの抜歯が決まったことによってひとまず決着しそうだ。なんで長引いたかと言うと右上の親知らずを抜くべきか抜かざるべきか、かかりつけ医とデカい病院の口腔外科医の意見が微妙に異なり(対立というほどではない)、そこに僕自身の迷いが重なったからだ。

いよいよ夏が来ている。僕の通勤ルートは徒歩の割合が大きい。早く歩けば歩くほど発汗は増えるだろうが、ゆっくり歩いて日差しに当たる時間が伸びてもやはり発汗は増える。つまりどこかに最適な歩行速度があるはずなのだ。発汗のことはともかく、歩行には最適な速度がある。伸ばした足が直線であると仮定すると(ホンマか?)、その足を半径として体が円弧を描く遠心力と重力が釣り合うのが2.5m/sだという。つまりこれより早く歩行しようとすると無理な体勢を強いられ、エネルギー効率が悪化する。このモデルは大雑把だが実測した歩行→走行の移行ポインともだいたい一致するようだ。詳しくはAlexandar(1984)に書いてあると思う。僕は直接読んでなくて教科書で紹介されてるの読んだだけだけど(学問的に不誠実な発言)。

京都アニメーション放火殺人事件の犠牲者の遺族を自称するツイッターアカウントがにわかに出現し、マスコミの強引な取材を「告発」し20万RTを超えている。「ウソをウソだと見抜ける人でないと難しい」はどこに行ったのか。本当の遺族は遺族じゃない人に比べてああいうツイートをする確率は確かに高いだろうが、そうは言っても遺族じゃない人の方が世界には圧倒的に多い。つまりあのツイートの主が本当の遺族である確率は非常に低いことになる。ベイズの定理というやつだ(詳しくない)(これ読んで)。

2連続で大学の知識の残滓を披露してしまって辛い。じゃあ新しいことを勉強できているかと言うと、まあできてなくもない。DDDを簡単に説明した同人誌をそろそろ読み終わるので本格的な本を読み始めたい。しかし、有名な教科書がKindle Cloud Readerで読めない。辛い。紙の本で買うと値段が倍になる。辛い。

またちょっとしたシェルスクリプトを書いた

書いた中身は見せられないんだが、tmuxのペイン分割がとても便利だった。左上・左下・右の3つに分割し、それぞれvim, スクリプトを起動して標準出力を確認, その他必要な情報を集める汎用ペインとして使った。ペイン間の移動をvim式のキーバインディングにしているのも良い。

ただし、prefixキーをCtrl+Tにしているのがちょっとしんどい。自宅で使っているキーボードではCtrlは左下の端にあるので手を結構広げないとCtrl+Tが押せない。一方で会社で使っているMBPはCtrl+Tでも普通に押せる。自宅と家でキーバインドを変えると脳が混乱しそうなのでやりたくない。

今日は理想の日曜日だった。昨日は出かけて疲れたが、今日は自宅にこもって洗濯してひたすらアニメ見てシェルスクリプト書いて銭湯行って、日曜日かくあるべしという感じだった。

DDDDDDDDDD

DDD(ドメイン駆動設計)について『わかる!ドメイン駆動設計 ~もちこちゃんの大冒険~』を読みながら勉強している。言葉からはどういうものかイメージがつかなかったが、ビジネスをプログラムに落とし込むための考え方のようだ。エヴァンズの原典は長大でどのレビューを読んでも「他の本である程度理解してから」と書いてあったし、Kindle Cloud Readerで読めなかったので後回しにした。

抽象的な設計論の勉強と具体的な手を動かすタイプの勉強はどうやって進めていけばいいんだろう。一つずつ倒すのか、平行していくのか。

暑かったり寒かったり

気温は着実に上がりつつある。夏だ。一方でオフィスの僕の席は半袖だと少し寒い。空調が効きすぎるエリアだ。一度出勤したら退勤までオフィスを出ないので寒暖差が辛いということはないが、空調が効きすぎるせいでドライアイが促進されている可能性はありそうだ。

ちょっとしたシェルスクリプトを書いている。他人のプルリクエストをレビューするときに、PRをレビュー用のブランチにcheckoutするのがちょっとした手間になっている。エンジニアはちょっとした手間を放置せず楽になるように頑張る(?)べきだ。

PRのURLからPR番号を抽出さえできればいいのだが、シェルスクリプトは全然わかんないのでクソ酷いことになっている。正規表現もよくわかんない…

ディスプレイを足したい

※この記事は『キリン 新・一番搾り』を飲んで書かれた。

自宅はFHDとWQHDが1枚ずつ。前者は液タブで、後者は入力切替でテレビを見るためにも使っている。この構成だとテレビを見ているときは画面がFHD1枚しか使えない。それではあまりにも貧弱なのでFHDをもう1枚増やしたい。

今日ツクモを見てきた。FHDなら1万円代だ。EIZOのスーパーハイスペックでも4万いかない。だが問題はむしろ机だ。2枚のディスプレイにキーボード・マウスで机の大部分が占領されていて新しいデバイスを置くスペースがない。つまりまずこちらを拡張しないことには先に進めない。

最初は今の机を捨てて巨大な机に入れ替えようかと思ったが、高さの同じ小さい机を買い足して横に並べるという手もある。

問題はもう一つあって、僕は液晶のドット抜けが絶対許せない。WQHDを買ったときはツクモのドット抜け交換保証で1度交換している(店まで持参するのがしんどい)。またそういうガチャをやらなきゃいけないと思うと気が重い。それならいっそのことドット抜けがないことが保証されているEIZOの高級品でもいいかもしれない。EIZOはなんかすごい技術で目に優しいらしい(?)のでドライアイにも優しいかもしれないし。

ドライアイ対策といえば加湿器も欲しくてビックカメラを見たのだが、シーズンが外れているらしくほとんど置いてなかった。しかしオフィスに置くためには効果範囲や稼働音を見極めておきたいのと、amazonの加湿器は治安が悪い(上手い言い方が見つからないんだが、機能をやたらと商品名に並べていて、商品紹介の日本語が怪しく、低評価レビューに信じられないような事象が書かれているものが多い)ので怖い。どこか加湿器を置いている電気屋はないものか。

シャイな皆様

昨日の記事はだいたい2000PV。旬の話題で関係者の僕が書いているのでこのくらいの数字は予期していた。面白いのは、多くの人があの記事を読んでくれたのに、他の記事や僕のプロフィールを読んでくれた人はほとんどいないし、コメントに至っては0件ということだ。バズとはそういうものらしい。

皆様シャイでいらっしゃる。サクラを雇って最初に1つコメントを付けておけば大量にコメントがついていたのかも知れない。

最近は面白い技術遊びをしているのだが色々な事情があって表沙汰にできないのが残念。

散髪ガチャ

近所に安い床屋があることに気づいたのでそこで散髪をした。随分大胆に切られた気がする。1050円。順番待ちエリアにマンガがたくさん置いてあって、高校の帰りに古本屋でマンガを立ち読みしていたことを思い出した。そしてこち亀は圧倒的に面白い。

帰りにスーパーで焼きそばの材料を買ってきた。『おいしい焼きそば』を自称する焼きそばをカゴに入れながら、この商品名によって売上はどのくらい上がるのだろうかと考えていた。『おいしくない焼きそば』よりは売れるだろうか、いや、物珍しさの効果で『おいしくない』方が売れるだろうか。あるいは、おいしくない商品なら『おいしい』の方が売れるというような交互作用が存在するのだろうか。

その後は『30日でできる! OS自作入門』を読み始めた。フランクな文章で読みやすいのだが、実践を重視しているくせにWindowsでフロッピーディスクに焼いて動かすという地獄のような実行方法で、Ubuntuでやるならそこを適宜読み替えていかねばならないのが手間だ。幸い先人は多くいる。

ゆく人くる人

※この記事はビールを2本飲んで書かれた。

という気分になっているのだなあ。

mesoさんには2017年のインターンのときに初めてお会いした。中間発表会に遅れてきたとき、席は用意してあったのに入り口の近くの床に座っていた。当時人事部長という立場にありながら偉ぶらず人を緊張させない振る舞いとしてとても印象に残った。フランクな人柄と組織の中核としての毅然とした態度の両方を尊敬している。

kmizuさんは新卒Scala研修の講師だった。Scalaのことなら何でも知っている。言語の第一人者から教わることで、細かな仕様にも妥当性や事情があることがわかった。動けばいいやのアマチュアではなく、隅々まで理解し尽くしたプロとしての仕事を求められることを実感した。

お二人とも新天地でのご活躍を祈っています。

くる人は誰かって?それは僕です。

houseTemperatureプロジェクトの大詰め

自分の家の天気(気温・湿度・気圧)をRaspberry Piから5分ごとにサーバに送り、それを使っていろいろ遊ぶプロジェクト(github)もそろそろ大詰めだ。使用技術はScala + Play Framework。開発環境にもデプロイにもDockerを利用している。サーバはこのブログと同じさくらのVPSで、nginx-proxyによってサブドメインgyokuroへのアクセスを振り分けている。

ドキュメント

ベースURLはhttps://gyokuro.chao.tokyoで、現状公開しているリソースは以下のとおりだ。

例:
{"status":"200","data":{"time":"00:25:00","temperature":27.7,"humidity":76.7,"pressure":1001.6}}
例:
{"status":"200","data":[{"time":"00:00:00","temperature":27.6,"humidity":76.8,"pressure":1001.7},{"time":"00:05:00","temperature":27.6,"humidity":77,"pressure":1002},{"time":"00:10:00","temperature":27.8,"humidity":76.3,"pressure":1001.9},{"time":"00:20:00","temperature":27.8,"humidity":76.5,"pressure":1001.7},{"time":"00:25:00","temperature":27.7,"humidity":76.7,"pressure":1001.6}]}

iframe化の苦労

WordPressは自由なhtmlをウィジェットに追加できるので、iframeを使って/temperature/nowを常に表示しようと思った。しかしPlay FrameworkはデフォルトでX-Frame-Options: denyが設定されているのでiframeに表示されない。これはクリックジャッキング防止のためだ。クリックジャッキングというのは僕のサイトを透明なiframeにして他のサイトの上に重ねて表示させることで、僕のサイトの任意の箇所を不正にクリックさせる手口だ。

MDNにしたがってX-Frame-Options: allow-from https://example.com/を登録しようと思ったのだが、なんとChromeは対応していない。ブチギレてる。対応してないということで無視されているのでとりあえず動いてはいる。ユーザーがクリックできる箇所はないのでたぶんオッケー(ホンマか?)。

iframeが表示されるようになったはいいが、黒背景に黒文字で表示されていて読めなかった。WordPress側からiframe内のstyleを操作するのは無理っぽかったので上記の通りクエリパラメータで白文字化できるようにして対応した。

頑張って作ったので適当にAPIで遊んでみてください。グラフ化するやつ作ってほしい。

ちなみに現在の状況は27.8 ℃、76.1 %、1001.4 hPa。肌がべたつきやや不快だ。今夜から明朝にかけてすごい降るらしい。通勤はできるかな?