2022-01-28

朝の散歩はrebuild.fmを聴きながら。@Nさんの仕事の話を聞くのは新鮮な感じ。コーディング試験のスコアを明確に定めてるのとてもいいなと思った。もしやるならそういうかんじでやってみたいなぁ。

今日もミーティングの合間はずっとPHPを。テストのないところにテストを書いて、考慮漏れをみつけては直すという日々。伸び代ばかりでやりがいがある!一緒にテストを書いてくれる仲間を募集中です!また、夕方は同僚と一緒に不具合の原因調査をしていたのだけど、これだけ長くやってるサービスの不具合の原因なんてそう簡単にはわかないんですよね。なので、今あるログや情報ではここまでしかわからないので、次に起きたときに今回よりも一歩でも根本原因に近づくためにはどういうログをだせばいいかを考えてほしい旨を伝えて解散。時には推測も大事だけど、わからんことはわからんと認めることも大事なのだ。わからないということがわかったなら、それは伸び代や。「伸び代」っていう単語は本当に便利で、Keisuke Hondaとじゅんいちダビットソンには感謝してる。

そういえば、昨日は英語の進捗を書いてなかったのだけど、今日で金のフレーズの最初の400語、600点レベルのところまでを一度通しでやったことになる。ただ、正直ボロボロなので明日明後日でなんとか8、9割正解できるようになりたいな。がんばろう。

WSL2の中からWindows側のブラウザを開く

GitHub CLIやHeroku CLIなど、ブラウザを自動で開いて認証させるタイプのCLIが最近増えています。

普通に使う分には便利なのですが、WindowsのGUIアプリ+WSL2という環境では、WSL2の中からWindows側のブラウザを開くことができなくて一手間かかることがあります。

最近はWSLgを使ってすべてをWSL側で完結させるという手もあるでしょうが、今の自分の開発のスタイルでは、CLIのツールはすべてWSL2、GUIツールはWindows側に入れるようにしています。そのため、上記のような問題がおきることが度々あり困っていました。

今はこれを解決するために

xdg-openを入れる Windows側のブラウザを開くデスクトップエントリを作る xdg-openのdefault-web-browserに2で作ったデスクトップエントリを登録する

という方法を使っています。

1. xdg-openを入れる

WindowsでいうstartやMacOSでのopenのように、引数に応じていいかんじにデスクトップアプリケーションを起動するためのエントリポイントとなるツールがxdg-openです。(実際にはシェルスクリプト)

xdg-openまたはxdg-utilsというパッケージに入っていることが多いのでこれをインストールします。Gentooならemerge xdg-utilsでOKです。

2. Windows側のブラウザを開くデスクトップエントリを作る

デスクトップエントリというのは、Linuxにおけるアプリケーションやディレクトリへのショートカットのことです。

詳しくは信頼と実績のArchWiki デスクトップエントリ - ArchWiki をどうぞ。Linuxデスクトップであれば、デスクトップの画面上にならぶアプリケーションの起動ショートカットの実態がこれになります。

ユーザ単位のデスクトップエントリは ~/.local/share/applications/に置くことになっているので、ここにWindowsのEdgeを起動するデスクトップエントリを作成します。中身はこんなかんじ。

[Desktop Entry] Encoding=UTF-8 Version=1.0 Type=Application NoDisplay=true Exec=/mnt/c/Users/kenchan/AppData/Local/Microsoft/WindowsApps/MicrosoftEdge.exe Name=Edge Comment=Microsoft Edge

Execに指定するパスは、which MicrosoftEdge.exe などで調べればよいです。

さて、だったらここでstartやexplorer.exeを指定すれば、Windows側のデフォルトブラウザの変更を反映していいかんじになるんじゃないの?と思った人、鋭いですね。

ただ、以下のような理由でそれではうまくいきません。

startはアプリケーションではなくWindowsのコマンド(?)なので、WSL側から実行するにはcmd.exeを経由したりしないといけない explorer.exeはアプリケーションを開けても終了コードが0(正常)にならないため、xdg-openとの相性が悪い。

xdg-openでブラウザを判定して開く処理は scripts/xdg-open.in · master · xdg / xdg-utils · GitLab にあります、この関数の呼出元を見てもらうとわかるのですが、ざっと説明すると「ブラウザっぽいコマンドを優先順位を決めて並べて、それを順番に叩いて正常終了したらそこでおわり」という大味な実装になっています。

そのため、explorer.exeを指定したデスクトップエントリを作った場合、たしかにブラウザは開くのですが、警告のメッセージが大量にでてきたり、同じページをブラウザで何回も開かれたりということがおきます。

上記の理由から、今のところ私はデフォフトブラウザとして使っているEdgeを直接開くデスクトップエントリを使っています。

3. default-web-browserとして設定する

xdg-openにURLを渡したときに開くアプリケーションを指定する方法は2つあります。

環境変数 BROWSER にコマンドを指定する xdg-settingsでdefault-web-browserにデスクトップエントリを指定する

今回は下の方法を使います。上の方法を使うのであれば実は今書いているようなことは一切必要なく、BROWSER=MicrosoftEdge.exeで終わりです。しかし、dotfilesを他環境と統一している場合は分岐を入いれるか、/etc/environments.dをいじるかになり、ちょっと嫌だなと思って、こちらの方法にしています。

xdg-settingsで設定するには以下のようなコマンドを打てばOKです。edge.desktopの部分は、2でつくったデスクトップエントリのファイル名を指定します。

# setで設定 $ xdg-settings set default-web-browser edge.desktop # getで確認 $ xdg-settings get default-web-browser

設定ができたらxdg-open https://google.comなどでWindows側のブラウザが開くことを確認しましょう。

これで、CLIの中からいきなりブラウザが起動されることがあっても大丈夫です。よかったですね。

おまけ

こんなことをしなくても、 4U6U57/wsl-open: Open files with xdg-open on Bash for Windows in Windows applications. Read only mirror from GitLab, see link を入れればよかろうというのはそうです。はい。

2022-01-26

朝起きたら、机の上に謎のキーホルダーがおいてあった。

この投稿をInstagramで見る

髙橋 健一(@_kenchan)がシェアした投稿

さて、Habitifyというマルチプラットフォームな習慣化アプリを2年くらい使っているのだが、最近のアップデートで「チャレンジ」という複数人で目標を共有しながら習慣化をしていくという機能が追加されていたので、さっそく「日記を書く」というチャレンジを作って共有してみたのが昨日。

明日から1ヶ月間日記を書く仲間を募集しています!!! https://t.co/MIsXacRrjD

— くんさん (@kenchan) January 24, 2022

同僚が2名くらい参加してくれたのだけど、さらに新しい機能っぽい「友達」というのにならないとお互いの進捗がわからないようだ。そちらのほうがまだよくわかっていないので、とりあえず今日からStreakを途切れさせないようにやっていこうと思う。この機会に書いてみようという気になった人はぜひ一緒にやりましょう。

今日は、社内で「辻1on1」と呼ばれている普段1on1しない人とやるという取り組みで、たまたま2名と1on1する機会をもらったので嬉しかった。最近の仕事の話から、読んだ本の話とか、技術の話とか、エンタメの話とか、とても楽し時間ではあったのだけど、正直自分の話題をふるスキルとか、話を膨らませるスキルってのはかなり低いと自覚しているので、そのあたりも上手にできるようになりたいなぁ。podcastか?

英語の勉強は金のフレーズの251~300。今回の絶対覚えられない単語は以下の2つ。

confident - 確信がある hesitate - ためらう

hesitateは音としても覚えにくくて、なかなか悩ましい。がんばろう。

2022-01-25

出社の火曜日。

移動中は ep93 Web3 | mozaic.fmを聞いていたのだけど、先日聞いた#64 The Liquidity Wars on Web3 | resize.fmを補完するような内容で、とても面白くきくことができた。まだ半分くらいなのだけど、ブロックチェーンを使ったアプリケーションというものを少しだけ理解できた気がする。聞き終えたらDEV Tokenを買ってみよう。

お昼は、数年ぶりに会社のカフェのランチの権利を得ることができたので、会社の窓際でいただいた。フクラスができたときにランチもグレードアップしたようで、今日はおでん風の煮物と炊き込みごはん、サラダという3品。おいしゅうございました。

夕方から少し時間がきたのでコードを書いていたら、VSCode Vimでは期待する操作がしにくいところがあったのでVSCode Neovimに切り替えた。ついでにNeovimの環境をちょっと見直したり。Neovim単体で開発をすることはほぼないので、init.vimからプラグインや細かい設定をばっさり削除してすっきりさせた。

今日の英語は金のフレーズ201~250。claimという単語がでてきたのだが、k8sのpersistentvolumeclaimを見たときにどういう意味だろうと調べたのを思いだした。そのあと、日本語の「クレーム」はclaimじゃなくてcomplaintだよというのがでてきて、ついでに一緒に覚えられたのでよかった。

2022-01-23

朝は金のフレーズ101-150までを。representativeとpropertyが覚えれてない。後者は不動産、real estateと同じ意味。他にも覚えにくいのはあったのだけど、類義語で覚えるというのがちょっとわかってきた感じ。

お昼からは、今更ながら新年の挨拶もかねて奥さんの実家へ。夕方までゆっくりさせてもらって、子もなにかで遊んでいたようでよかった。

帰ってきてからは、財布の中のカードを減らせないかを見なおして、iPhoneにiAEON(アイイオン)をいれてAEON Payを使えるようにし、イオン銀行のデビットカード件WAONを財布から出した。モバイルnanacoのおかげでセブンカードも持ち歩かなくてよくなったので、これで普段の財布の中カード類は以下の5枚に。

メインバンクであるGMOあおぞら銀行のキャッシュカード件デビットカード 物理クレカ支払いしかできないとき用のVisa LINE Payカード 家族のSuicaにクレカチャージするためのビューカード 保険証 運転免許証

この中だと免許証が一番いらないのだけど、稀に写真つきの身分証明書を求められることがあり、事前に察知するのがむずかしいので入れっぱなしになっている。5枚だったら小さめの財布でもなんとかなりそうなので、次に財布を買い替えるときには小さめも検討に入れようと思う。

2022-01-20

今朝の散歩はてくてくラジオ 13。 たくさん失敗する を聞きながら。

その中で紹介されていた 日本に足りないのは「めっちゃ楽しそうにサッカーをする下手なおっさん」 欧州で目撃した、勝利(とビール)を真剣に目指す大人たち - 海外サッカー - Number Web - ナンバー という記事は、私も年末に読んでめっちゃいいと思った記事の一つだった。

この記事を読んで自分が感じたことは2つ。

自分の能力以上の結果を組織で成し遂げるには棚上げ力が必要だが、それを機能させるにはHRTの原則が欠かせない プログラミングを欧州の「サッカー」のようにするために自分には何ができるだろうか?

1つ目はまぁそうだろうということで、2つ目について少し補足しておく。少なくとも自分は、欧州のプロサッカー選手と比較できるレベルではないものの、プログラミングやエンジニアリングで給料をいただいているプロの側の人間である。私自身はプログラミングが好きなので、仕事がおわってからや休日に仕事とは関係ないコードを書いたり、関連する勉強をすることも多い。しかし、少なくとも自分の観測範囲では、プログラミングを職業としていない人が休日や夜にプログラミングをするというのは相当に珍しいように思う。スポーツや音楽、料理のような、それを趣味としている人が一定数いるものと比較すると何桁も少ないだろう。

昨今は、情報教育が小学校からはじまっていて、息子もタブレットを使った学習やビジュアルプログラミング環境をさわる機会などもあるようだ。そうやって「プログラミング」というものが世の中にあるということを子供のうちに知ることはとてもよいことだと思う。もしかしたら、そういう経験した子供達が、将来「趣味」としてプログラミングをする未来がくるのかもしれない。そうなったら最高だろうなと思う一方で、そうなるのを邪魔しないように、もしくは早めるために、自分にできることは何かあるのだろうかと考えさせられた。

その一つは、記事にあるように「楽しそうに」しているところを見せることなのかもしれない。仕事でのプログラミングやエンジニアリングは、もちろん辛いこともあるし楽しいことばかりではない。だけど、自分の余暇でやっているときは、楽しそうに、面白そうにやるのがよいのだろう。自分自身が、楽しそうにプログラミングするおっさんになるのだ。

2022-01-19

水曜日も出社の日。

昨日、自分がリファクタリングしたところでつまってる同僚がいるのを見つけたので、何か改善点があるかなぁと話を聞きにいってきた。

他人の書いたコードを読むときって、まず最初は「自分だったら」とかそういう先入観や予想を捨てて、目の前にあるコードをそのまま理解するのに努めるのが近道だと考えている。さらには、その過程で自分の理解を文字にしたり声にだしたりしていくと、「なんとなく理解した」状態で先に進むのを防げたり、こうだろうという「思い込み」を減らすことができる。ラバーダックデバッグならぬラバーダックコードリーディング。アヒルの人形は本当に便利。

そんなこんなで、一緒にコードを読んでいたのだが、その部分は良く読むとこうじゃない?とかそういうのを話しながら読んでいくと、自分が手をぬいてしまったところが見つかったのでよい時間だったと思う。

午後からは面談もりもりだったのだが、家族の体調不良&子の習い事のコンボが決まってしまったので、リスケをお願いして帰宅。調整してくれたみなさんありがとうございました。

また、今日は自分自身の2021年分の評価締めだったので、家に帰ってからちょっとだけ資料のまとめをしてgit push。ようやくこれで2021年が終わったかんじがする。おつかれさまでした。