ちなみに

火曜日の空は僕を押しつぶした。

リモートワークのために買って良かったもの10選

この記事は Money Forward 関西拠点 Advent Calendar 2021 - Adventar の1日目の記事です。 株式会社マネーフォワード関西拠点 に所属するメンバーのテーマ自由なアドベントカレンダーです。


f:id:Sixeight:20211107122328j:plain

こんにちは。マネーフォワード関西拠点の 西村 (id:Sixeight) です。

マネーフォワードでは現在、コミュニケーションのために週一回の出社を推奨していますが、それ以外はリモートワークを選択することが可能です。 私も今年1月の入社以降、基本的にはリモートワークで自宅から勤務しています。

今回はリモートワークをするにあたって買って良かったものを紹介したいと思います。 みなさんのリモートワークをより快適にするための参考になれば幸いです。

第10位 HHKB Professional HYBRID Type-S

happyhackingkb.com

みなさんが大好きなHHKB、私もリモートワークのために新たに購入しました。

これまで自宅での仕事には Kinesis Advantage2 というエルゴノミクスキーボードを使っていたのですが、ふと思い立って新しいHHKBを購入しました。 Bluetooth接続が出来る点と、静音な点に興味を惹かれたのですが、これは大正解で場所も取らずにとても快適にタイピングが出来るようになりました。 HHKB自体は Professional2 をオフィスで使っていたのですが、これと比べてもだいぶ静かで強めにタイプしても心地良い音でした。

HHKBは東プレの静電容量無接点方式のスイッチを使っていて、心地よいタクタイル感が好みです。 タクタイル感というのはキーを押したときの押した感のことで、軽いひっかかりを感じたあとにふっと軽くなって押し込まれる感じです。

現在はキーキャップを EC HHKB PBT BLANK D&G KEYCAPS に換装して以下のような感じで使っています。

第9位 Keyboardio Atreus

Keyboardio Atreus (Automatic discount at checkout)shop.keyboard.io

しばらくHHKBに満足していたのですが、 Kinesis を使っていたところから HHKB に移ったために若干の物足りなさも感じていました。

選択肢としてメカニカルキーボードというのがあるということは知っていたのですが、自作のイメージが強くてはんだ付けしたりするのは難しそうだなと思っていました。 そんなとき id:takkan_m さんからはんだ付け不要なキットを紹介してもらうという幸運に恵まれました。

takkanm.hateblo.jp

Twitterで雑につぶやいたところ記事にまでしてもらって、これはもう買うしかとなって購入したのが Atreus でした。

スイッチについては何の知見もなくて選ぶ基準が分からなかったので、 遊舎工房 さんでスイッチテスターを購入して実際に触ってみることにしました。

スイッチテスター人気スイッチ詰め合わせ 18個セットshop.yushakobo.jp

いろいろ触って思い切り悩んだ末、メカニカルキーボードと言えばメカニカルな音が良いでしょとクリッキーの Kailh BOX スイッチ 白軸 を選びました。

届いて組み立てているところです。

普段はキーが横にずれているロウスタッガードのキーボードを使っているので、とつぜん縦にずれているカラムスタッガードのキーボードになると全く入力出来ずにだいぶ苦戦しました。さらに思っていたよりもクリッキースイッチが普段使いには音も打鍵感もうるさすぎてちょっと微妙でした。

いったん諦めかけたのですが、試しにリニアスチッチの Alpaca スイッチ に交換してみたところ、これが大当たりで私の中のキーボード観がひっくり返ってしまいました。

rebuild.fm

ちなみにこのキーボードは miyagawa さんが使われているものと同じものです。

第8位 KBD67 Lite

KBD67 Lite R3 Mechanical Keyboard DIY KITkbdfans.com

リニアスイッチこそ至高と気付いてしまったので、慣れているロウスタッガードのキーボードも欲しくなってきました。 そこで id:takkan_m さんが記事に書いてくださっていた KBD67 Lite を購入してみることにしました。

初めての光るキーボードで喜んでいるところです。この頃は写真の撮り方もだいぶひどい。今もよくはなっていないです。

talpkeyboard.net

スイッチは新しいのを試そうと DUROCK L2、キーキャップは Pitta Studio DSA Bluebird Keycaps Set を付けています。

現在は DROP + MITO GMK LASER CUSTOM KEYCAP SET を付けて、スイッチも Cobalt POM Linears に変更してこういう感じになっています。

キーの配列を変更したり、レイヤを使った入力の快適さを知ったのもこのキーボードで、このキーボードを買ってさえいなければこんなことにはならなかったと言える。 今はちょうど R3 をやっているのでみんな買いましょう。

第7位 Drop + OLKB Planck

drop.com

全てのキーが格子状に並んでいるオーソリニアという配列があるということを知って購入してみました。

キーキャップは NP PBT Crayon KEYCAPS SET、スイッチは DUROCK L2 で組んでいます。

実際にオーソリニアを触ってみるとこれもだいぶ慣れなくて苦戦しました。いまだに慣れてないのですが見た目がいいので時折引っ張り出しては練習しています。

現在は TALP KEYBOARD さんで買った名前を忘れたキーキャップに変更してこういう感じの装いになています。 長方形でキーとキーの間が綺麗に整列しているので、もらったステッカーを立てる台としても活躍しています。

スイッチとプレートの相性が悪いのか、なかなか外れなくて無理やり外したところトップハウジングが外れてばらばらになってしまった事件から、スイッチの分解に抵抗がなくなって Lube に踏み出せたのも Planck のおかげです。

第6位 D65 E-COATING GRAY

D65 E-Coating Gray Mechanical Keyboard KITkbdfans.com

重たものが欲しくなって購入したキーボード。HHKBと配列が近いので親近感もあります。

これはかなり手に馴染んだのもあってしばらく常用していたのですが、スイッチをいろいろ試せたのも良かったです。

現在はこういう感じになっていてキャップは WINMIX Cherry Profile 9009 KEYCAPS SETEverglide Aqua King キースイッチ で落ち着いています。一時期は Aqua King こそエンドゲームスイッチだと思っていたのですが、沼はまだまだ深かった。

第5位 The Mark: 65

boardsource.xyz

なんだかんだでサブキーボードとして常用している65%キーボード。見た目よりは軽い。

シルバーのケースに GMK HENNESSEY をのせていて、飽きがこない見た目なのも気に入っています。

スイッチはD65と同様に Aqua King をのせていて、なぜかというと以下のように疑似セパレートで使っていたから。

この使わない縦ラインが現在はアルチザンキーキャップ置き場になっています。

第4位 Casasagi O-ring mount

5z6p.com

ガレージセールで放出されたものを購入しました。

Casasagi は日本の自作キーボードコミュニティで設計されているキーボードで、その基板に3Dプリントのケースを付けたキットです。オーソリニアかつセパレートでO-ringマウントというのがおもしろい。

始めてスイッチをはんだ付けしたキーボードで思い入れがあります。(マクロパッドはあったけど)

ビルドログはこういう感じです。

blog.nishimu.land

真っ黒なケースに GMK WoB を乗せてオタクブラックをキメています。 真っ黒なくせにスイッチは透明で綺麗な色の Everglide Tourmaline Blue Cyan を選んでいるのもポイント。 いま出回っているのは V2.5 でハウジングの色が透明じゃなくなったので少し残念。

第3位 Acperience12

booth.pm

初めてのマクロパッド。とにかく見た目がかっこういいA12です。

blog.nishimu.land

リモートワークではよくZoomなんかでミーティングするわけですが、マウスでクリックしてミュートしたり解除したりするの面倒ですよね。 そういうときにはこういったマクロパッドを使って、ボタン一発で操作できるととってもべんりです。 ここに来てやっとリモートワークに役に立つキーボードが紹介できました。

最初に買った Kailh BOX スイッチ 白軸 を使っています。こういうマクロパッドだとクリッキーも合う気がします。このあと 3Dプリントのケース も付けて完全体になりました。

第2位 M0ii0 / +十

booth.pm

booth.pm

かわいい。とにかくかわいい M0ii0 と +十 です。+十 がマクロパッドの方。

キーの数が極端に少ないので僕には常用は無理なのですが、机に飾っていていつも目の保養になっています。 どちらも実用はしていないものの、スイッチは MMK Frog KeySwitch、キーキャップはPBT Notion で統一しているのがお気に入りポイントです。

ありがたいことに #KEEB_PD でも1位をゲットしました。このとき Something Comforting を聴いていたので名前がよく分からない感じに。 (Spotifyで聴いている曲を表示名にするスクリプトを動かしているため。)

+十 はいまはマクロパッドとしては使っていないのですが、手の届くところに置いてあって考え事をしているときなどにカチャカチャやっています。

第1位 Cornelius

[GB] Corneliusshop.yushakobo.jp

圧倒的な一位は Corne Cherry を開発した id:foostan さんの新作であるところの Cornelius

www.youtube.com

この動画の音を聴いて僕の求めていたものはこれだと確信して争奪戦を勝ち抜きゲットしました。

コルネリ、とにかく打鍵感と音の良さが圧倒的で新しいキーボードを買うモチベーションが下がってしまっているくらいです。

常用するためにいろいろ試してみたのですが、トップハウジングとステムがUHMWPEでものすごく滑らかな打鍵感の Diamond Linear スイッチ とMGプロファイルのキーキャップで落ち着いています。背が高めのキーキャップが音が良くて気に入っています。

よく見るとファンクション列だけでなくて数字列もなくなっているのですが、レイヤを組み合わせることで全く困ることなく常用できています。 逆に数字列があるキーボードに戻ると数字を入力するのが遠くてもどかしく感じるほどに。

Alfred で主要アプリのトグルにショートカットを追加して、レイヤ3に各種ショートカットキーを当てることでマクロパッドすら捨てられて、もうこのキーボードなしでは仕事するのが億劫です。

今のキーマップは こういう感じ です。


2021年は完全にキーボード沼に沈められた年で、おかげさまでリモートワークがとても快適でした。 買ったけど届いていないキーボードやキーキャップがまだまだあるので来年も楽しみです。

本記事を読んでキーボードに興味を持っていただいた方は是非以下の記事や本も読んでみてください。

salicylic-acid3.hatenablog.com keys.recompile.net

あと大好きな :3ildcat さんの YouTube も観てください。

www.youtube.com

残念ながらGroup Buyで販売されていたものは、すでに新品では手に入らないのですがエクストラやR2の可能性もあるので是非探してみてください。


Money Forward 関西拠点 Advent Calendar 2021 - Adventar 、明日は akaneppi🐱採用広報 さんです。採用広報の話楽しみですね。

株式会社マネーフォワード 関西拠点では仲間を募集中です。 いまは転職を考えていないという人でも少しでも興味を持ってもらえたらカジュアル面談で実際にどういう感じなのかを紹介出来るので気軽に連絡ください。

社内用の Slack には #keyboard_playground というチャネルがあり日々キーボードについての情報が垂れ流されているのでキーボードが好きな人の応募もお待ちしております。


この記事は Cornelius (Diamond Linear Switch GPL205g0 lubed / MelGeek MG Ember) で書きました。

Ruby / Ruby on Rails のつまずきポイントを募集しています

さいきんは仕事で Ruby on Rails を使った開発をしているのですが、チームに新しくきてくれた人たちで初めて Ruby on Rails に触れるという人が増えている印象です。 そういった人たちが最初にバリューが出せずに苦悩されているのを見ていて、なんとかキャッチアップの助けになれればと思っています。

どこに何があって、どう調べていいかが分かれば自学習が出来るようになると思っているのですが、それまではサポートがあった方が速そうです。 しかし、自分自信もまだまだ学ぶべきことが多く、どういったポイントを押さえると自学習を後押し出来るのかを的確に示せません。

そこで、初学者の方がどこにつまずくのか、学んでいくなかでどういったポイントが難しかったのかといった話を募集しております。 もしくは有識者の方からのこういった教材が有益だという情報もお待ちしています。

事例を集めて、初学者の人が Ruby / Ruby on Rails を自学習出来るようになるサポートが出来る何かを提供出来るのがゴールです。

コミュニティと飽き性

kyotorb.doorkeeper.jp

今年に入ってからほぼ毎月、月初の日曜日に Kyoto.rb の集まりをやっていて、今日も11月の分を開催した。 最初は id:onk さんと2人だったので、この会を今度どうしますけねみたいな話をしたりしていたが、あとから人が増えて雑談に花が咲いて良い感じになっていた。

Kyoto.rb はもともと Spporo RubyKaigi 2012 に 参加して何かをやりたい気持ちが溢れてしまった僕が作ったコミュニティなんだけれど、頑張りすぎて息切れしてしまって他の人に運用を任せるようになっていった。 その後だんだんぶっちゃけ飽きてきてしまって、はてなに転職してRubyを仕事で触らなくなったの期に完全に離れてしまった。

2つ問題があって、頑張ってやるにはモチベーションが足りなくて継続出来なかったこと。そもそも自分が飽き性でその時々でやりたいことが変わってしまうこと。

頑張ってしまうことについてはだんだん学んできたので最近は何事も出来るだけ省力でやって継続を優先するようにしている。 1月からまた仕事で Ruby を書くようになったので、急にモチベーションが復活して停滞していた Kyoto.rb の復活させた。 そこからは出来るだけ継続することを目標に、毎月もくもく会をやってきて、たまに元気があるときは特別会をやるという運用にしている。 一番の難関はイベントサイトを作ることで、これもコピペで作っているので簡単なはずなんだけれど、なんだかサボりがち。

飽き性なのはこれは仕方なくてもう変えられないとは思っている。飽き性というより興味が移ろい易すぎるんだよなあ。 一番盛り上がるのは何かを決めるまでで、決まったあとは興味を失ってしまうことも多々ある。 最近もあることを手伝うことにしていろいろ調整して方針を決めたら、その途端に正直興味を失ってしまって気が重くなっていたりする。 興味が移ろうことを前提に動いていきたい。

そういう感じでコミュニティを作った本人の性格が出てしまっているのか、 Kyoto.rb もなんども姿を変えては失速してを繰り返している。 コミュニティというはそういう有機的なもので、その時々の姿があっていいとは思うのだけれど、まあなんか続いては欲しいですね。

飽き性のせいにしたけど、自分が内向的で人間関係を閉じがちなのもコミュニティに向いていないところなのかもしれない。

次回は 12月5日(日) です。忘年会LT的なものも計画中。

kyotorb.doorkeeper.jp

京都市内で会議室として使える古民家・寺情報

仕事で必要になって聞いてみたところたくさん情報をいただきました。 良さそうなところばかりなのでしばらく合宿先には困らなさそう。 ありがたや。

細かくリリースする

合計すると7ヶ月分くらいのブランチをビッグバンリリースするという経験をしました。 サービスのリリース時以外だといままでで一番長く生存したブランチかも。

当初の想定だとシュッとリリース出来るつもりで少数で作っていたのが、どんどん膨らんで全員が関わることになって、結果的にこういう感じになったのだけれど、最初から細かくリリース出来るように意識していれば途中でもリリースしてしまうことが出来たはずなので悔やむことが多い。

いまのチームでは、機能単位でブランチを切っておいて、そこにいったん全ての変更を溜めてからまとめて master にマージする風習がある。 変更を確実にテストしてから、masterにマージしたいのでこういうことをしているのだけれど、デメリットも多い気がしている。 ここでいうテストは結合テストと、POによるレビューを指していて、手順に従って人間がポチポチしている。もちろんユニットテストなどの自動テストは書いた上で。

では、実際にどういうデメリットがあるのだろうか。

  • 確認に使う時間の無駄
    • 見る範囲が莫大になるので見落とさないようにするのは至難のわざ
    • プルリクで一度見ているはずなのにまた全体で確認している無駄
  • 問題が起きたときの原因調査にかかる時間の無駄
    • 各プルリクを細かくリリースしていたら、壊れる前にリリースしたものが原因とすぐに分かる
    • 7ヶ月分のブランチをリリースしても、どの差分が問題だったのかぱっと分からない
  • ブランチ管理の無駄
    • 当然、7ヶ月もあればmasterはどんどん進んでいく
    • たびたびコンフリクトするブランチを直すてまが無駄
    • しかもどんどん難易度は上がっていく
  • 開発時のオーバーヘッドの増加
    • ブランチ管理と近いけれど、masterと乖離しまくっているブランチに切り替えるのは大変
    • 今回は特に開発環境への変更が入ったりしていたのでブランチを切り替える毎に環境の再構築が必要だった
    • いくらDocker化していても毎回やるのはつらい
    • コンテキストスイッチも大変になる

こういう悲劇を起こさないように、フィーチャートグルなんかが使えるのだけれど、なかなか導入が進まない。 一因としてはフィーチャトグルを導入することでの、開発の複雑さが増加するのではという漠然とした不安をチームがもっていることが挙げられる。 複雑さが増すことで、開発速度が落ちたり、分岐を間違えて見せてはいけないものが見えてしまうことへの恐怖がありそう。

しかし、よく考えてみると我々は7ヶ月分の巨大なブランチをリリースしたのだ。 この(不要な)偉業を越える難しさはそうそうないのではないだろうか。

巨大なブランチを扱う方が複雑だし、結局リリースまでに起きた問題の対処や、これから起きる不具合への対応を考えると開発速度も遅くなってないだろうか。

いまこそこまめなリリースに取り組むべき時ではないだろうか。

Internet Explorer のサポートを切ると何が嬉しいのか

f:id:Sixeight:20211027203958p:plain

社内勉強会向けにまとめた資料から社内特有なところを削除したものです。

ゴール

Internet Explorerとは

Chakraとは

JavaScriptエンジンとは

ECMAScriptとは

  • JavaScriptの仕様
  • 策定プロセスの歴史
    • 全ての仕様の合意が取れたらリリースしていた
      • リリースまでに膨大なリソースが必要で大変
    • 合意出来たプロポーザルからリリースする
      • 常に最新が公開されている
  • ES2015とかって?
    • 年に一回リリースされる仕様のスナップショット
    • ES6(2015)以降の仕様書のバージョン名

Web APIとは

Web標準とは

  • Webの技術を標準化する動き
    • 戦国時代を経て世界平和へ
  • W3C
    • 標準化団体
  • WHATWG
    • Living Standard

(おさらい) JavaScriptとWeb API

(余談) ES2015以降のECMAScriptの歩み

クラス 追加された機能の代表例
ES2015 クラス、let / const、Arrow Function
ES2016 Array.prototype.includes
ES2017 async/await
ES2018 オブジェクトのスプレッド構文
ES2019 Array.prototype.flatMap
ES2020 オプショナルチェイニング演算子 ?.、Null合体演算子 ??
ES2021 String.prototype.replaceAll、Logical Assignment Operators

(余談) トランスパイル / Polyfill

  • トランスパイル
    • 特定の機能を(古い)ブラウザでも動くように変換すること
  • Polyfill
    • 特定の機能を(古い)ブラウザでも動くように実装したコード

ところで

互換性をどうやって調べるのか

一部を紹介します

  • 2021/10/27時点で Internet Explorer 11 以外が対応している機能
  • なんか分かりやすいのを挙げています

JavaScript

ECMAScript 2015

Web API

Fetch API

URL API

Intersection Observer API

Resize Observer API

まとめ

JavaScript と Web API の違いが分かる

Internet Explorer のサポート終了によって何が変わるのかが分かる

  • ある機能が特定のブラウザで動くのか調べられるようになりましたか?
  • Internet Explorer のサポートを切ると出来ること
    • ECMAScript 2015 で策定された機能が使える
    • 最近のWeb APIが使える

(おまけ) TypeScript

  • JavaScriptのスーパーセット
    • 新しい仕様もどんどん取り入れている
    • TS4.5はES2022の一部を実装している
  • 出力対象のECMAScriptのバージョン
    • ECMAScript 3 以降、プロポーザルを含むES Nextまでを選択できる
    • 提供する対象によって適切なバージョンを選べる
  • 今なら何を設定すべきか
    • ES2016
    • ES2021でもいける
      • ただしSafariが以下に対応していない
        • shared memory and atomics
        • RegExp Lookbehind Assertions

参考文献

GitHub Actions の GitHub-hosted runners には gh が入っている。つまり。

GitHub Actions の GitHub-hosted runners にはいろんなソフトウェアがインストールされています。たとえば ubuntu-latest だとこういう感じ。

よく見ると GitHub CLI 2.0.0 が含まれている。つまり actions/github-script は不要だったのだ。(JSで書く方が楽な場合もあるけど)

以下のように認証して使うとだいたい何でも出来る。

echo '${{ secrets.GITHUB_TOKEN }}' | gh auth login --with-token

勘のいいみなさんなら気付いたかと思いますが、実はこれだと 権限が足りない

The minimum required scopes for the token are: "repo", "read:org". https://cli.github.com/manual/gh_auth_login

しかし、参照系ならだいたいいけるので情報取得だけならこれでよい。もうちょっと強い権限が欲しい場合は自分で PAT を用意すればいい。

さて、gh が入っていたら何が出来るのでしょうか。

答えは API で出来ることならなんでも出来ます。

なぜなら gh api サブコマンドがあるので。 REST API でも GraphQL API でも何でも実行出来るから。これで勝利したも同然。

また gh api サブコマンドには --jq オプションがあって、これを使うとAPIのレスポンスを gojq でパース出来る。よってレスポンスをごにょごにょするのもお手の物である。まじ最高。

-q, --jq string Query to select values from the response using jq syntax https://cli.github.com/manual/gh_api

しかしながら、そもそも 各種サブコマンド により、直接APIを叩かなくていいことも多々あるので、まずはドキュメント端から全部読んでみましょう。