2020-08-03

月曜日。今日から思いついたことややらないといけないことを手元の付箋に書き出すようにした。初日だから思いついた度に書いていったら10枚以上になってしまって、これは絶対終わらんぞとなったりしたのだが、まぁ優先順位の低いものも全部書いているのでこんなもんだろう。

タスクの難易度は様々あるものの、仕事のパフォーマンスを上げるというのはスループットを上げるということだと考えているので、タスクの出入りを記録していこうと思う。今日は、追加が15で完了が5。これはひどい。

そういえば、在宅勤務になってから家でカフェインレスコーヒーを飲むようになった。最初は辻元珈琲のドリップバッグのものをAmazonから買っていたのだけど、挽きたての珈琲も飲んでみたくなったので猫廼舎さんから買ってみた。(といっても挽いた状態を買ったのだが)

入れ方や豆の違いでの味の違いがわかるようにはなってきたので面白くなってきたのでしばらく続けてみようと思う。

なお、辻元珈琲のドリップバッグは3種類あるのだけど、コロンビアが一番好みだった。自分は薄目のほうが好みだと思っていたのだけど、3種類の中では一番味がしっかりしていたと思う。

2020-08-02

息子と夏休みのカンバンを作った。今年はコロナの影響で夏休みが2週間しかないので課題も少なめ。とはいえ、毎年最終週に色々発覚したりするのでそういうことがないようにしていくぞ…せっかくなので、自分のプライベートのタスク(読書とか)もカンバンに書き出してみた。

レーンは「やること」「今日やること」「やったこと」の3つ。朝、「やること」の中から「今日やること」に移動させて、終わったら「やったこと」に移動させる。毎年完了条件が甘くて終わらないことが多々あるので、今年は「完了条件を決める」「文章でかく」あたりを少しだけ意識付けした。

そんなこんなで始めたのだけど、初日からいきなり「終わった付箋を捨てる」という事件が起きてしまい、前途多難である…

2020-08-01

8月になってしまった。

今日から息子は夏休みなのだが、今年はコロナでの休校などもあり夏休み期間は2週間とのことだった。宿題はそれほど多くないので、恒例のカンバンをつくったのだけど、これは明日の日記に。

昼間は買い物に出て、夜は恒例の猫の動物病院。今日から新しいアイテム、バックパックタイプのキャリーバックを導入した。というのも、先週の通院中にバッグの中で盛大におしっこをしてしまい、ペットシートを敷いていなかったので前のものは廃棄するしかなくなってしまったのだった。

買ったのは下の商品。

このタイプのバックは、硬めの素材でしっかりしてるものと布&メッシュ素材のものがある。硬いのを背負うのも嫌だなぁと柔らかめのものしたのだけど、これが結構背負うのが大変。手で持つよりは遥かにいいのだけど、重心が後ろ側にあるので肩の後ろのところがかなり空いてしまい、バックパックの背負い方の悪い見本みたいな感じになってしまうのだった。ちなみに、この子は外を見るのが好きなので、今までよりもよく見えるから満足していたようだ。

肝心の病状の方は特に変化がないが、体重が増加しないので次回も一週間後。今週は少しご飯を多めにあげたり、おやつにちょっとご飯をだしたりして様子を見ましょうとのこと。2週間や1ヶ月に一回くらいになるといいんだけどねぇ。もうしばらく辛抱。

2020-07-19

昨日は気分が乗らずに掃除ができなかったので、今日は水回りとリビング、ネコ部屋の掃除。

ネコのおしっこが飛んだところの匂いをどうにかしたかったので調べてみると、クエン酸でいいという記事を見つけたのでやってみたら完璧だった。アンモニアを中和すればいいのでお酢でもいいっぽい。

あとは、本を積むスペースとなっているスチールシェルフの中身を全部出して、電子工作用品を入れるところを作ったり、不要な本をメルカリに出したり。しかし、読んだ本と積読を分類してみたら直視できないような現実を突きつけられたので、まずは積読を分類して上から読んでいこう。積読はキューではなくてスタックにするのがコツだという説もあり…(つまり、一番下の本は………)

あわよくばデスクトップPCを置くスペースくらい確保できないかと思ったのだけど、そんなスペースはどこにもないのであった。ばたり。

自宅でのネコの糖尿病ケア

うちの猫が糖尿病と診断されて、自宅でのケアを始めて2週間になった。

しばらくは毎週通院が必要とのことで行って来たのだけど、経過は良好とのことだった。とは言え、完治するような病気でもないので、容態が安定しているから大丈夫というだけなんだよな。

自宅でのケアの内容は、フードを病院から買う糖質ケアのものにすること、朝晩にインスリンの注射をすること、2日に一回以上尿検査でケトン体のチェックをすることの3つ。注射は全然嫌がらないのでよいのだけど、尿検査が1番大変かな。システムトイレでの尿検査は、トイレに行ったタイミングを見計らって、ペットシートを外すか裏返して尿を溜めて、それをリトマス試験紙みたいなやつに付けるという手順。猫が1匹なら外しとけばいいんだけど、複数いるとかなり大変。そこで、トイレ中に股の下に直接試験紙を持っていく技を編み出した。これはシートの出し入れや裏返しが必要ないので、かなりのライフチェンジだった。

聞くところでは、上手く付き合っていければ普通に何年も生き続ける病気のようなので、もういい年(11才)ではあるけど元気に天命を全うしてほしいものである。

2020-07-08

最近、寝付きが悪くて睡眠サイクルが破滅している。夜ゲームをするのがいけないんだろうなと思ってやめてみたけどあんまり効果なかった。そして今日はビールを開けてしまったのでこれもまた良くない。

今日の盆栽ワークはpepabo/colormeshop-wp-plugin: A WordPress plugin to integrate Colorme Shop.のdepandabotのGitHub版への変更などなど。いろいろあってv2が出せる状況になかったのだけど、ようやく一番のボトルネックを潰したので、あとは細々としたissueを倒していって来週くらいには出してしまいたいぞ。

2020-07-07

今日は七夕とのこと。

連日、九州の豪雨のニュースが続いている(九州豪雨 熊本中心に57人死亡 2人心肺停止 12人不明 捜索続く | NHKニュース)。今日は福岡の方も被害が出始めたということで、いつまで続くのだという感じ。募金やふるさと納税で応援していこう。

夜は盆栽いじりでブログのアップデート。AMPページの画像のアスペクト比がおかしくなってしまうのを力技で直すなど。ついでにdependabotをGitHub版にアップデートするためにconfigを生成してもらってマージしたり。

盆栽といえば、hitode999さんのチーム開発で活躍するために、自分の庭を作れると良い - hitode909の日記がとても良い内容だった。「金脈」というスラングはペパボでもよく使われているように思う。あげられているようなシチュエーションだけでなく、パフォーマンスチューニングやコストカットの文脈でよく出てきそう。(コストカットでは文字通りだ)。

最近の経験だと、パフォーマンスが悪化して障害になったようなときに、メトリクスから金脈を見つけて、それがバシっと決まって改善すると仕事した感じになるよね。夜間や休日のエスカレだったりすると、そこから日常モードに戻るのがつらいのだけどw

自分の気持ちを正しく表現する

私、自分から積極的に調べることはないんですが、若者言葉やネットスラングって大好きなんですよね。そもそも西暦2020年において、全く新しい言葉が必要になることって殆どないと思うんですよ。新しい物質や惑星が見つかったとか、世紀の大発見でもない限り、今までの言葉で表現できないものってないじゃないですか。にもかかわらず、毎月、毎週、下手したら毎日新しい若者言葉やネットスラングが生まれていて一体どういうことなんだろうって。

ところでみなさん「ぴえん」って知ってますか?まぁ知ってると思うんですが、では「ぱおん」って知ってますか?

ぱおんをはじめたきいたときの反応

これをきいたときに、自分は「象?象なの?」と思ったわけです。そう思った人、他にもいますよね?先生怒らないから手を上げてこらん?

どうやら「ぴえんを超えてぱおん」という言葉が生まれていたらしく、「ぴえん」の強い版(?)らしいんです。

「ぱおん」のことはちょっとおいておいて、「ぴえん」って言葉、「悲しい」や「つらい」「泣きそう」とは明らかに受けるニュアンスが違いますよね。「深刻じゃないけど泣きそうだよ(泣かないけど)」って感じでしょうか。

さて、ここで2つの例文を見てみましょう。

  • 「今日は仕事つらかった。ぴえん。」
  • 「今日は仕事つからった。泣きそう。」

もし、親しい友人がこんな文章をプライベートなスペースに書いていたとしたら、あなたは(私は)どういう行動をとるでしょうか。「ぴえん」と「泣きそう」で行動は変わりますか?

「社会人1年目は自分の気持ちが正しく表現できたら十分」 というのを前職の2,3年目くらいに言われたのを覚えています(多分 @kakutani か @koic あたりだと思うんですが記憶がある人は教えてください)。それ以来、自分がメンターやサポートについた若い人には必ず伝えてい(ると思い)ます。

「自分の気持ちを正しく表現する」ための最初のステップは、辛いときは辛いと言う、嬉しいときは嬉しいと言う、嫌なときは嫌と言うこと。自分の感情は自分しかわからないので、それに向き合い、言葉にする訓練が必要です。ポジティブな人はネガティブな感情を言葉にするのが苦手なことがありますし、その逆もあるでしょう。ただいずれの場合も、自分の感情の動きを言葉にする訓練をすることで、その感情を表現することができるようになると考えています。

感情が表現できるようになったら、次のステップは言葉(文章)の解像度を上げることです。つまり、「泣きそう」と「ぴえん」を使い分けるということです。言葉の解像度を上げるというのは、いくつかのやり方があると思いますが、基本的なアプローチは次の2つでしょうか。

  • 語彙を増やす
  • 表現力を磨く

早く成果がでるのは「語彙を増やす」方だと考えています。「泣きそう」という状態を 

  • 悲しくて泣きそう
  • 悔しくて泣きそう
  • 怒りで泣きそう

というふうに区別して表現できるようになるということです。表現力を磨くというのは「ぴえん」を生み出すのに近いかもしれないですね。あるいは、前後の文脈で表現するといった方法も「表現力を磨く」ことになるでしょう。

語彙を増やし、言葉の解像度を上げることで、自分の感情をより正しく表現できるようになります。「泣きそう」と「ぴえん」と「ぱおん」を使い分けることで、より正しく自分の感情を受け取ってもらうことができるようになるでしょう。(ただ、自分は未だに「ぱおん」をどう受け止めればいいかわからないので、これは今後の検討課題とします)

社内ではそろそろ新卒10期生が配属になるという話があり、それを聞いて考えていたことをだらだら書いてみました。いかがでしたか?

※ 若者言葉やネットスラングを積極的に使いましょうという話ではありません。

2020-07-05

特に用事もなかったので、掃除や買い物に出て休日らしい過ごし方だった。

買い物ついでに子とマックにいって一休み。誕生日に@hideackに送ってもらったMore Effective Agileを30ページくらい読んだのだけど、これはとてもよいものだ。

夜は、母の誕生日なので実家に電話したり、都知事選の結果を見て、なるほどとなっておしまい。月曜からもがんばりましょう。 

2020-07-04

二ヶ月くらい前から続いていた猫の通院生活。糖尿病ということで一週間入院し、今日から自宅でインスリンの注射生活が始まった。年始の健康診断では大きな異常はなかったのだけど、もういい年(11歳)なので半年で悪化することもあるんだろう。

今日は、朝に注射の練習で動物病院に行って、夕方にももう一度練習に行き、そのまま退院となった。インスリンの注射は注射器じゃなくてもっと便利なあるらしいのだけど、その機材では量が合わないのでしばらくは注射器とのこと。いろいろあるのだなぁ。

うまくいけば元気に数年生き続けることも十分にあるそうなのでお互いがんばりましょう。

2020-07-03

せんごくネット通販 で注文した静音レバーと静音ボタンが届いたので換装した。静音じゃないやつにして8角ガイドにしようか迷ったのだけど、やる時間は夜が多いので音重視ということで。

ガイドはOTTO V5、ボタンはGamerFingerがよいんだろうけど、OTTO V5は手に入らないし、GamerFingerのボタンは高すぎなので今回はこれで。かなり静かになったので満足。

夜は、入院している猫の面会と、家でのケアの練習に動物病院へ。明日には退院できそうということでなにより。

2020-07-02

またこっちで日記を書こうと思いリハビリ。何度リハビリしているのだろう。

先月読んだ アンガーマネジメント実践講座 - kenchan をscrapboxに書いた。内容の通り、特に目新しいものはなかったのだけど、いくつか語彙を増やせたので良かった。

社のブログでポストコロナの商売を支えるカラーミーショップのアーキテクチャ - ペパボテックブログを公開した。今までは、ほとんど発表原稿を書いていなかったのだけど、最近はほぼ全部書いている。言うことを整理できるというメリットが非常に大きいし、最近のリモート開催のカンファレンスは録画前提なので、その場のアドリブのリスクが高すぎるというのもある。

2020-07-01

下期が始まった!

本日辞令が出て、チーフテクニカルリードという職種はシニアエンジニアリングリードというものになった。名前が変わっただけでなく、社内規定上の職務が増えていたり、評価においてマネジメント領域(主にヒューマンマネジメント)が含まれるようになった。つまり、技術的なリーダーシップは今まで通りエンジニア専門職としての期待があり、それに加えてマネジメント職としても期待される部分が明確になったという感じ。引き続きがんばります。

そんな中、明日公開する予定の社のブログの記事をmasterブランチのレビューなしでpushしてしまい、失敗であった。そんなことをしてしまうSELがいるペパボを今後ともよろしくおねがいします。

生誕祭

本日6/21は、ミッフィーとウィリアム王子と私と息子の誕生日ですね!ちなみにウィリアム王子と私は同い年で、18歳と240ヶ月になりました。

今年は状況もあるのと、猫の体調がよくないのもあり、自分は動物病院、息子と奥さんは買い物をして、夜は家で過ごした。たまにはこういうのも良いかと思ったのだけど去年もほぼ同じだったw

息子はゲームのポケモン期が終わり、あつ森期に突入したらしく、ついに我が家にも森がきてしまった……あつ森、青いバラを作るゲームということしか知らないんだよなぁ……

今年は、津田沼に住んで20年目にして初めてル・パティシエ ヨコヤマでケーキを頼んだのだけど、晩ごはんでお腹いっぱいになってしまったのでまた明日。

いつものやつはこちら。くんさんのwishlist

新しい散髪様式

例のマスクが届き、新しい生活様式でやっていくぞという意気込みを込めて散髪に行ってきた。前回からは2ヶ月くらい。

美容院にも新しい生活様式が取り入れられており、マスクをしたままの散髪体験となった。マスクをしたままといっても、ゴムを耳にかけたままだと散髪にも支障が出てしまう。カットが始まる前にマスキングテープ的なものでほっぺたにマスクをくっつけて、ゴムを外してからカット開始という感じ。

入った瞬間は異様な光景びっくりしてしまったが、これが新しい散髪様式ということで受け入れていこうと思う。たしかに、長時間座ったままだし、人の入れ替わりが多いし、窓開けっ放しというわけにもいかないから何か対策をしないといけないんだろうな。

SCRUM BOOT CAMP THE BOOK 増補改訂版は入門書を兼ねたスクラムの基礎の本

実は、改定前の方は読んでいなかったので、ちょうどよい機会だと思って一通り目を通した。

本書は、漫画パートと文章パートを交互に繋ぎながら、はじめてスクラムマスターを経験する主人公(?)の悩みや課題、それらの解決方法や考え方を学んでいくことができる。漫画パートがおさえているポイントと文章パートの見出しが秀逸なので、これだけをざっと流し読みしてもよいと思う。

これからスクラムを始めようという人はもちろん、既にスクラムや何らかのアジャイルな開発プロセスを実践している人の頭の整理にもちょうどよいボリュームで、改めて自分たちがやっていることの意味や目的を再確認することにも役立つと感じた。

自分にとっては

  • リリーススプリントの必要性と、リリース作業としてそこに回すということは問題を先送りすることにもつながるという話
  • 開発チームのプロダクトバックログと同様に、スクラムマスターが対処する障害リストも可視化すること

の2つがあまり意識していなかったことだったのでとても勉強になった。

さて、この日記のタイトルにも書いた通り、本書は、入門書の皮を被った「スクラムの基礎」つまりスクラムというフレームワークの土台となる知識や考え方を紹介する本なんだと思う。もう既にスクラムを導入して組織にうまく適合させている人にとっても、明日からプロジェクトを少しでも良くするためのネタが手に入る素晴らしい本ではないだろうか。

最近、会社でも近くのチームでスクラムを導入してみたいという話があったので、そのチームのメンバーにおすすめしようと思う。

scrapboxの読書メモはこちら

P.S. 謝辞も更新されていてほっこりしました。

楽天でんきに切り替えて電気料金は下がったのか

こんばんは。電力自由化してますか?

去年の末に切り替えるだけでn%安くなるよという話を聞いたので、さっそく年初に申し込みをして3月2日から楽天でんきとの契約になっていた。 初月の電気料金が確定したという連絡があったのでみてみると、たまたま切り替え前後でほぼ同じ電力消費量だったのでちょうどよい機会と思い公開しておく。

  • 東京電力(2020-02)
    • 674kWh 19,102円
  • 楽天でんき(2020-03)
    • 678kWh 18,549円

(どちらも40A契約)

比べると3~5%くらい安くなっているだろうか。こんなもんかという額ではあるけど、楽天ポイントや楽天でんきを使っていることによる優遇とかを考えると、そこそこの差にはなってくるかな。

意識を高めて、クリーンエネルギーのところにお金を落とすというのが良いのだろうけど、まずは先立つものということで。

あと、これは会社概要などをみて気づいたんだけど、楽天でんきをやっているのは、会社としては楽天モバイルなんだね。結構以外だったので、見間違いかと思ってしまって利用規約など社名の出てるところを見て回ってしまった。楽天モバイルは応援したいのでちょうどよかったかもしれない。

はじめての自作キーボードとしてChoco60を作った

はじめての自作キーボードとして recompile keysさんのChoco60を作ってみた。

なぜChoco60にしたのか

私のキーボード遍歴を紹介すると、学生時代から仕事を初めてしばらくはJIS配列のMajestouchを使っていた。JIS配列だったのは、スペースの隣りに「変換・無変換」といったリマップしやすいキーがあったからだったと思う。その後、Kinesis Advantage 2を使っていた同僚の影響で、かれこれ10年くらいはKinesisを使っていることになる。

Kinesisに特に不満はないのだけど、会社の同僚で自作キーボードが盛り上がっていることもあり、自分も一度経験してみたくなったというのと、普段と違う配列やスイッチのキーボードがあってもいいかなと思ったので今回チャレンジすることにした。

自作キーボードキットは国内で買えるものでもかなりの数があるが、recompile keysは個人的にも応援したいし、HHKB配列は今まで一度も使ったことがなかったのでChoco60を作ってみることに決めた。また、一般的な配列であれば自分以外の家族が使うこともできるだろうという思いもあった。

買ったもの

買ったもの一覧

キットは、遊舎工房でChoco60キットを買った。

キースイッチについては、新型コロナ前に遊舎工房でスイッチを触った結果、リニアの静音が良いなと思ったのでGateron Silent RedをMKzealots Storeで買った。65個入を買ったら66個入っていてラッキー(?)だった。

キーキャップはKBDfansでPBT XDA 143keys Keycap setというのを買った。recompile keysにサイトにはChoco60のキーキャップを選ぶ際のポイントが挙げられているので、これを見ながら色々なサイトを見て回った。ただ、1万円未満ですべての条件を満たすものは見つけられなかったので、比較的キー数が多くて好みのデザインのものとしてこれにした。

また、XDAプロファイルのスペースキーがKPREPUBLICでバラ売りされているのを見つけたのでこれも買っておいた。

その他、電子工作用品やルブのための道具は、練習としてmeishiキットを作ったときに揃えておいたので今回のために買ったものはなかった。スイッチオープナーはDMM.makeで公開されているものを購入して使っている。

ビルド!

まず、キットを組み立てる前にすることはルブとモゲマイクロ対策。ルブのやりかたはキースイッチ ベストプラクティス – recompile keysの通りにやれば良いと思う。また、meishiキットにはなかったスタビライザーというパーツがあることに気づき、スタビライザーのルブの話 - 自作キーボード温泉街の歩き方を参考にルブをした。何度か外して組み直すを繰り返しながらパーツがぶつかる部分を把握して、少し多めにルブをした。この記事ではかなりベタベタにしているのだけど、これよりはかなり控えめに仕上げた。

作る過程は 分割HHKB配列が実現できる自作キーボードキットChoco60を買った - ぽよメモが丁寧にまとめてくれているので、ほぼこの通りに仕上げた。

なお、スタビライザーの下に絆創膏のテープ部分を貼ることで音対策になるというのを見かけたのでそれもやってみた。

スタビライザーの下にテーブを貼る

制作時間は計5時間くらい。前半は向きや方向があっているかを確認しながらだったので結構時間がかかってたと思う。

  • ルブが2時間ちょっと(名探偵ピカチュウを通しでみおわるくらい)
  • ダイオードのはんだ付けなどスイッチ以外をつける前まで2時間くらい
  • スイッチのはんだ付けから動作確認までが1時間ちょっと

完成!

この投稿をInstagramで見る

choco60 完成

Kenichi TAKAHASHI(@_kenchan)がシェアした投稿 -

まず、普段の仕事道具であるキーボードを作るという体験はとても良い。ファームウェアを書き込んで、恐る恐るPCにつなぎ、全てのキーが反応することを確認できたときの達成感はすごかった。作る過程で、少しではあるけどキーボードのしくみを知ることができるし、形や配列、キースイッチやキーキャップを選ぶということは、それらの違いを知ることにつながる。知らなかったことを知る機会と考えても作って良かったと思う。

ただ、この記事は完成したChoco60で書いているが、まだ慣れずにタイピングにかなり時間がかかってしまっている。ラップトップのキーボードとKinesisを切り替えても頭は混乱しないが、肩を開いてキーボードに手を置くと自然とKinesisの指使いになってしまうようだ。キーマップを考えるのも自作キーボードの醍醐味だと思うので、この形と自分にあったキーマップを考えていきたい。

最後に、素晴らしいキーボードを設計してくれたrecompile keysさん、それを販売している遊舎工房さんありがとうございました。

KinesisのWindowsモードにおけるWindowsキーは右Winのキーコードが割り当てられている

だから何?という話なんだけど、どうもこの違いによってWindowsのスナップ機能またはPowerToysに入っているFancyZonesの挙動がおかしくなる気がしている。

キーイベントについては、 https://w3c.github.io/uievents/tools/key-event-viewer.html を使って確認したのだけど、こんな感じでになっていた。92となっているところがKinesisのWinキーを押したときのキーコードで、91[Meta]となっているのが、ラップトップのWinキーを押したときのキーコード。

FancyZonesの詳細については、また別途書くつもりだが、とにかくこの機能が右Winキーのキーコードだとうまく動かない。

というわけで、どうにかKinesisから左Winのキーコードを入れれないかとマニュアルを見ていたら、Macモードにすると左右にCommandキーが割り当てられることに気付く。これなら左Winキーを入力できるのではないかと思いやってみたらビンゴ。自分は、親指のエリア両方にWinキーをリマップしているのだけど、両方とも左Winキーにすることで問題解決。よかったよかった。

Google Nest WifiをやめてASUS RT-AX3000 にした

Nest Wifiをmy new gear...したのが5/2で、10日後の5/12にRT-AX3000をmy new gear...した。間取りの都合上、Nest Wifi1台では家全体をカバーすることができなかったというのが一番大きな理由なんだけど、元々解決したかった問題なども記録しておく。

ネット環境

我が家の環境としては、J:COMのネットパックの1Gコースを契約している。ネットパックというプランだけど、ケーブルテレビの契約は無しで、回線とプロバイダのみの契約。ただ、このプランはインターネットには載っていなくて、よくわからんという感じ。機器込で月額5000円未満くらい。

J:COMの回線は、インターネットではすこぶる評判が悪い。しかし、自分の環境ではそれほど困ったことはなく、メールで問い合わせたらすぐに返事は来るし、故障や障害の対応についても不満はなく、そこそこ満足している。

ちなみに、我が家でJ:COMのネット回線を使っている一番の理由は、J:COMの回線がテレビのケーブルを使っているため、ルーターをテレビの近くに置けて便利というところ。光ケーブルの出てくるところが、間取り的にあまりよいところではないし、テレビの近くならゲーム機を有線でつなぎやすい。

肝心の速度については、日中は下りが400Mbpsで上りが80Mbpsくらい。レイテンシは20msecくらい出るので若干遅い方だと思う。夜のピークでもそれほど変わらず、家族がストリーミングしたりしてると下りが100Mbpsで上りが30Mbpsくらいまで落ちることがある。ただ、これくらい出れば日常生活やdocker pullで困ることはない。

調子がよいときは500Mbpsくらいでる

そうだ、ルーターを変えよう

今までは、J:COMの終端装置的なものがルーター機能もついているものだったのでそれをそのまま使っていた。しかし、今年の1月から在宅勤務が本格的に始まり、ビデオチャットなど動画をストリーミングする機会が増えると、途中で切れてしまったり明らかに品質が落ちるのが気になるようになった。この現象は、MeetでもZoomでも、奥さんのニコ生でも起きていたので、自宅の環境の問題だなと思い、まずはすぐに変えられそうなルーターを変えることにした。

そこで、たまたま奥さんのPixel 4を買ったときのクーポンの使いみちがなかったことから、とりあえずNest Wifiを買ってみるかと買ってみたのだった。

Nest Wifi、通信は安定するけど壁を挟むとすぐ2.4GHzになる問題

Nest Wifiが届いたので使ってみると、まず初期設定やスマホアプリの素晴らしさに感動し、さらにストリーミングで切れることはなくなって一時は優勝かと思ったけど、壁や扉を挟むとすぐに2.4GHzに切り替わってしまうという問題発生した。また、電波の届き具合も最初にあったルーターよりも弱く感じたので初期不良なども疑ったのだけど、Google Wifiをマンションで使った感想とオススメしない理由 - Koichiro, Sumi - Medium を見たら自分と同じ状況だったので、こういうものかと納得した。

こんにちは「RT-AX3000」

で、今使っているのがASUS RT-AX3000というやつ。これは、自分の用途と家の間取り的には不満がないという状況。良いところと良くないところを上げるとするとこんな感じ。見た目以外は満足している。

  • 良い点
    • 最初の不満であったストリーミングで切れなくなった
    • Nest Wifiの不満であった寝室や風呂場でも十分な速度がでるようになった
    • Wifi 6とWPA 3に対応してる
  • 良くない点
    • アンテナがのびてるデザインが好みじゃない

Wifi 6対応とかはあまり興味がなかったのだけど、ようやくエントリーモデルがで始めたところらしいので、価格.comなどで比較してこれにした。選んだポイントとしては、発売年月が新しいことと、WPA3対応くらい。あとはもちろん値段。

おわりに

というわけで、ここ最近のmy new gear...である無線ルーターについてまとめた。Nest Wifiでメッシュを組む手もあったのだけど、都会のマンションで壁を超えるためだけにメッシュ組むのかと思うとつらい気持ちになったので、思い切って買い替えたのであった。

ペパボテックフライデーでWordPressプラグイン開発について動画発表した

毎月第2金曜はペパボテックフライデー。今回は最近取り組んでいるカラーミーショップWPプラグインについて、開発環境周りの話をした。動画はこちら。

カラーミーショップWordPressプラグイン開発における最近の改善 - ペパボテックフライデー2020-05-08 - YouTube

ここ数日お仕事が立て込んでいたので、ゆっくり発表する余裕がないかもしれないと思い、事前に動画を撮っておいた。なんとか顔を出すくらいはできそうだったのでmeetを繋いだのだけど、「自分のPCから自分のYouTube動画を画面共有する」という今まで体験したこと無い発表体験ができたのでよかった。

撮影の環境などについては、こなれて来たらまとめようと思う。

GitHub ActionsでRailsアプリをロリポップマネージドクラウドにデプロイする

ロリポップ!マネージドクラウド(以下マネクラ)へのRails(Ruby)アプリケーションのデプロイは、Herokuと同じようにgit pushをすることでbundle installやDBのマイグレーションなどが自動で行われるようになっている。このウェブ日記もRailsで作っていて、そのデプロイをGitHub Actionsで自動化したのでそのやり方や試行錯誤の過程を記録しておく。

2020-05-02時点で利用している完全なYAML

「結論ははじめに」ということで、以下ようなYAMLと2つのsecrets(SSH_PRIVATE_KEYとLOLIPOP_REPOSITORY_URL)を用意すれば、masterへのpushをトリガーにしてマネクラにRailsアプリケーションがデプロイされる。

name: deploy

on: 
  push:
    branches:
      - master

jobs:
  deploy_to_lolipop_mc:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
      with:
        fetch-depth: 0

    - uses: webfactory/ssh-agent@v0.2.0
      with:
          ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
    
    - name: add known_hosts
      run: cat .github/workflows/known_hosts >> ~/.ssh/known_hosts
    
    - name: git remote add
      run: git remote add lolipop ${{ secrets.LOLIPOP_REPOSITORY_URL}}

    - name: git remote update
      run: git remote update

    - name: deploy
      run: git push lolipop HEAD:master

各stepを簡単に解説する。

  • checkout@v2にfetch-depth: 0を設定する。デフォルトでは1となっていてgitの履歴をとってこない設定になっているため、マネクラ側にpushする際にnon-fast-forwardと判定されてしまう。デフォルトのままにしてgit push -fとする手もあると思う。
  • webfactory/ssh-agentを使ってsshの秘密鍵を使えるようにする。(後述)
  • webfactory/ssh-agentはknown_hostsの管理はやってくれないので、リポジトリ上にknown_hostsをコミットしておいてそれを書き込む。(後述)
  • マネクラのgitリポジトリをremoteに追加する。
  • git pushのためには一度fetchしてくる必要があるのでremote updateする。
  • マネクラのgitリポジトリにpushする。

今回は、テストの実行などはステップに含めていない。デプロイだけであればこれくらいのステップ簡単にできる。

webfactory/ssh-agent でsshの秘密鍵をメモリ上で管理する

SSHの鍵認証しか許していないサーバにGitHub Actionsの中からアクセスするためには、GitHub Actionsが動作している環境に秘密鍵を置く必要がある。 GitHub Marketplace · Actions to improve your workflowをsshで検索するといくつかsshができるようにするActionsがあることがわかるが今回はwebfactory/ssh-agentを利用した。

sshとその秘密鍵を利用可能にするActionsは大別すると以下の2種類がある。

  • ssh-agentを実行する(webfactory/ssh-agent)
  • ~/.ssh に秘密鍵を書き込む

GitHub Actionsの実行モデルはよく理解できていないが、実行環境のローカルファイルシステム上に秘密鍵を書き込むよりはメモリ内に留められる方法のほうがよかろうと思い、このActionsを使うことにした。なお、公式のactions/checkoutでも秘密鍵を扱う仕組みはあって、ファイル名をランダムにして書き込むということをしている。

https://github.com/actions/checkout/blob/94c2de77cccf605d74201a8aec6dd8fc0717ad66/src/git-auth-helper.ts#L186-L197

Secretsに登録する秘密鍵とURLを準備する

デプロイに使う秘密鍵は、GitHub Actions専用のものを用意したほうが安全だろう。マネクラではキーペアを簡単に作成・登録できる仕組みがあるので、この機能を使ってデプロイ用のキーペアを作っておく。Ed25519の鍵ができるので強度も安心。

マネクラのコンパネでSSHのキーペアを作成する

ここで作成してダウンロードされた秘密鍵の中身をそのまま、GitHub側に SSH_PRIVATE_KEYというsecretsに登録すればOK。

GitHub側でのsecretsの登録

また、LOLIPOP_REPOSITORY_URLという名前で、マネクラのコンパネに書かれているリポジトリ「ssh://xxxxxx@yyyy.lolipop.jp:port/」を追加しておく。

マネクラでの接続先情報

Actionsの実行に必要な秘匿情報の追加はこれでおわり。

known_hostsをリポジトリに入れる

sshで初めて接続しようとしたときにプロンプトが出てくるアレのこと。何らかの方法でマネクラサーバのホストキーをknown_hostsにいれないとgit pushができないのだ。webfactory/ssh-agentのREADMEでは、actionsの中でssh-keyscanを使って書き込むか、この内容は秘匿情報ではないのでリポジトリにコミットするとよいと書かれている。このファイルの目的は、READMEにもあるとおり接続先のサーバが正しいものか、MITM攻撃にあっていないか、を検証するためのものなので、Actionsの中で毎回取得するよりは同じものを使ったほうが良いだろうと思い、コミットすることにした。

マネクラのコンパネからリモートリポジトリの情報を元に、以下のコマンドで実行することでホストキーを取得することができる。しかし、マネクラ側のSSHコンテナが起動していないと鍵がうまく取れないことがあるので、事前に別のターミナルなどでSSHをつないでおいたほうがいい。

ssh-keyscan -p <your port> -H <your ssh host>

上のコマンドを実行したときに、stderrに以下のような文字列が出てきたら、一度SSHしてから試してみるとうまくいく。

xxxx.mc.lolipop.jp: Connection closed by remote host

この問題のせいで、Actionsの中でssh-keyscanするのはひと手間掛かりそう。

おわりに

GitHub Actionsを使ったマネクラへのデプロイは、sshの秘密鍵をどう管理したらいいかわからずに二の足を踏んでいたのだけど、改めて学習し直して自分なりに安全な方法を考えてみた。マネクラでもこれで継続的なデプロイをGitHubだけで完結させることができるので、かなり便利ではないかと思う。

この方法でも危険な部分などあったら、是非コメントやツイッターなどで教えてください。

おまけ

テックブログでのロリポ関連の記事を読んだことで、この記事を書くモチベーションがあがりました。@antipopと@linyowsに感謝!

snapがうまく動かないのはmake 4.3とAppArmorの組み合わせのせいだった話

久しぶりにsnapで入れたmicrok8sを動かそうとしたら全然動かなくて、調べていくとAppArmorが動かなくなっていることに気付いた。

AppArmorの起動ログには、以下のようにcapabilityがおかしいというエラーがたくさんでていたのだけど、さすがに sys_admin がないというのはおかしい。

AppArmor parser error for /etc/apparmor.d/sbin.klogd in /etc/apparmor.d/sbin.klogd at line 17: Invalid capability sys_admin.

インターネットの海をさまようと、AppArmorのissue Make.rules fails to generate cap_names.h and af_names.h (#74) · Issues · AppArmor / apparmor · GitLab と、Gentoo側のissue 714158 – sys-apps/apparmor-2.13.4 -> ? fails at runtime if built with sys-devel/make-4.3をみつけて、なるほどとなった。

Gentoo側のissueの通り、make 4.3をmaskして4.2に落として、再度コンパイルしたら動くようになったのでよかったですね。

laymanからeselect-repositoryに移行した

数日前のGURUの記事に対してursmがmentionをくれたので早速移行した。

移行といっても、実際はemerge eselect-repositoryをするだけでよいので楽ちん。layman -leselect repository list -iを見比べて、有効になっているoverlayが同じだったらOK。

[11:20:33] in ~ via 💎 v2.7.1
❯ layman -l

 * dotnet                    [Git       ] (https://github.com/gentoo/dotnet.git                                              )
 * go-overlay                [Git       ] (https://github.com/Dr-Terrible/go-overlay.git                                     )
 * guru                      [Git       ] (https://anongit.gentoo.org/git/repo/proj/guru.git                                 )
 * jorgicio                  [Git       ] (https://github.com/jorgicio/jorgicio-gentoo.git                                   )
 * snapd                     [Git       ] (https://github.com/zigford/snapd.git                                              )


[11:23:36] in ~ via 💎 v2.7.1
❯ sudo eselect repository list -i
Available repositories:
  [99]  dotnet # (https://github.com/gentoo/dotnet)
  [148] gentoo * (https://gentoo.org/)
  [163] go-overlay # (https://github.com/Dr-Terrible/go-overlay)
  [168] guru # (https://wiki.gentoo.org/wiki/Project:GURU)
  [197] jorgicio # (https://github.com/jorgicio/jorgicio-gentoo)
  [276] pepabo @
  [349] snapd # (https://github.com/zigford/snapd)

eselect-repositoryの方は、privateなリポジトリもでて便利。よかったよかった。

see also: eselect/repository - Gentoo Wiki

procsのebuildをGURUにコミットした

Rustで書かれたモダンpsことdalance/procsのebuildファイルをGURUにコミットした。

Rustのツールをebuildにするのはcardoe/cargo-ebuildというコマンドを使うと一撃でできるのだけど、出来上がったebuildファイルにコメントがあるとおり、このツールではライセンスのリストがうまく出せないことがある。

cargo-ebuildが出力するebuildファイルのLICENSEの部分は、リンクする全てのライブラリのライセンスを集めてきて出してくれるのだけど、

  • 2つのライセンスが設定されている場合は両方でてくるが、実際にはどちらか一方となっているものも多い
  • portageのLICENSE名と必ずしも一致していない

という問題がある。

最終的にどういうライセンスにすればよいかは、onur/cargo-licenseというものを使えと書いてあって、これがメチャクチャ便利…すごい。これの出力をみながら、最小限のANDをとっていくとよさそう。

portageのライセンス名とのマッチングは License groups - Gentoo Wiki このあたりを見ながらマッチングしていけば良さそう。procsのebuildを作るにあたり困ったのは、BSD-3-Clauseというライセンスで、これはportage的にはBSDというライセンスだったので直したりした。