vscodeにMetals拡張を入れてScala+PlayFrameworkの開発をしている。
import play.api.db.Database
がエラー扱いになるが、コンパイルは通るし動く。play.api.db
はplayそのものには存在せず、プラグインに追加によってインポート可能になるからだろうか。よくわからん。
ずーっとエラーと格闘してなんとなく回避法を見つけつつ結局よくわからんになるの、実に個人開発みがあって良い。
教えちゃお
vscodeにMetals拡張を入れてScala+PlayFrameworkの開発をしている。
import play.api.db.Database
がエラー扱いになるが、コンパイルは通るし動く。play.api.db
はplayそのものには存在せず、プラグインに追加によってインポート可能になるからだろうか。よくわからん。
ずーっとエラーと格闘してなんとなく回避法を見つけつつ結局よくわからんになるの、実に個人開発みがあって良い。
日曜なので意識的に在宅していた。
Dota2のTI9がアツい。FnaticがVPに勝つ番狂わせが起きるかと思いきや起きなかった。Dota2の試合時間はだいたい30分から40分くらいだ。ヒーローは大まかにスキルで戦うヒーローと通常攻撃で戦うヒーローに分類される。前者の方が早熟だが、金を稼いでアイテムが揃うにつれて後者の方が強くなる(基本的に時間が経てば金は貯まる)。金を横軸・強さを縦軸に取ると当然右上がりのグラフになるが、グラフの形はヒーローごとに様々だ。たとえば特定のアイテムを持つことで格段に強くなるということがある。プロレベルの試合では味方のヒーローに重要アイテムが入り、かつ敵のヒーローがまだ重要アイテムを手に入れていない絶妙なタイミングで戦いを仕掛けに行くということもある。そこで勝てば金が手に入り、また有利になる。
しかしこうして有利を拡大していっても決めきれなければ大器晩成型のヒーローによって逆転されることもある。たとえばMedusaは通常攻撃が4体攻撃になるスキルを持つ。単純に考えて通常攻撃を強化するアイテムのもたらす恩恵は4倍だ。だから強力なアイテムを揃える前に勝ちきらなければならない。
以前vscodeでScala開発を試みたときはまともに使える拡張機能がなく補完が効かなかったのだが、今はMetalsを入れるだけでいい。補完があるとプログラミングは楽だ。ミスに気づくのは早ければ早いほどいい。
今はActivityPubの実装に挑戦している。仕様が固まっているものなのでTDDしている。ActivityPubではObjectはTypeという属性を持つことを定めているが、これは予約語なので`type`
と表現する必要がありややこしい。ScalaTestの機能と思っていたmatcherが実はPlayの機能だったりして難しい。フレームワーク周りの知識がない。
素人丸出しのアレだが、package hogeはそのファイルの内容をhogeに所属させるために使うことを知った。つまり他のファイルからhoge.fugaという呼び出しができるようになる。ファイルでもオブジェクトでもクラスでもなく「パッケージに所属させる」という操作の感覚が新しかった。
今日はもうひとつ、droneのデプロイもした。droneはCIの一種でgitリポジトリにpushしたときに.drone.ymlを読んで自動でテストやビルドを行う。1回毎にdockerコンテナを作って捨てることでクリーンな環境でテストできるのがdroneの特徴だが、1回毎にsbtの初期化を行うせいで(貧弱なサーバーでは)1時間以上かかってしまい、タイムアウトしてしまった。
口内の傷が嫌な感じに痛み出していて口内炎になりそうで嫌だ。口内炎は食事が楽しめないのが辛い。ただ、火曜に右上の親知らずを抜くのでどうせ1週間くらいはろくな食事ができない。
3日目は法事だった。と言っても自宅に和尚が来て10分程度読経してもらうだけだ。例年朝一番なのだが、今年は順番を逆順にしたとのことで午後3時だった。
法事が終わったらすぐ鈍行に乗って東京に出発した。あまり座れなくてしんどかったし、DDD本を読んでも何もわからなくて辛かった。概念も具体例も全部難しい。開発の経験が先にあって初めてわかる本なのかもしれない。今は「こういう概念が存在する」ということだけを覚えておいて、また必要になったときに読むことにしよう(撤退)。
明日仕事マジ?
※この記事は『のどごし生』を飲んで書かれた。
なんとなくデカい遊びをしたくてActivityPubの仕様を読んでる。Mastodonを代表とする分散型サービスには自由があるので(ホンマか?)興味がある。自分が生きた証をネットのいろいろなサービスにバラバラに残すよりは、統一的なフォーマットで自分中心に発信したい。なんてね。
明日は土曜日。土曜日は活動的な休日にする。まだ何をするかはあまり決まってない。嘘。映画見てオフィスで使う小物を買ってプレゼントを見繕う。くらいまでできれば上等かな。日曜日は家から出ないぞ。
久々にDota2で勝ち星が偏ってAncient3に昇格した。と言っても1種類のヒーローをスパムしているのでメタヒーローを取られると結構キツい。が、1stピックのサポートをメタられたところでチームとしてはどうということはない。味方の他のヒーローがメタり返せばいいのだ。
チームワークが重要なゲームなので味方と煽り合いが始まるとまず負ける。そういうときはミュートに限る。
いつまでやってんだという話だが、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でも普通に押せる。自宅と家でキーバインドを変えると脳が混乱しそうなのでやりたくない。
今日は理想の日曜日だった。昨日は出かけて疲れたが、今日は自宅にこもって洗濯してひたすらアニメ見てシェルスクリプト書いて銭湯行って、日曜日かくあるべしという感じだった。
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の加湿器は治安が悪い(上手い言い方が見つからないんだが、機能をやたらと商品名に並べていて、商品紹介の日本語が怪しく、低評価レビューに信じられないような事象が書かれているものが多い)ので怖い。どこか加湿器を置いている電気屋はないものか。