VSCode 1.53.0 便利情報

code.visualstudio.com

読んでて便利そうだったのでメモ。

Search: Mode Controls where new Search: Find in Files and Find in Folder operations occur: either in the sidebar's search view, or in a search editor

VSCode 1.53.0 で search.mode という設定が増えている。この設定を変えると、フォルダ内検索実行時にサイドバーやパネルでなく、検索エディターで検索できるようになった。検索エディターでの検索だと、場所を広く取れたり、コードの周りの行も表示できて結構便利。

設定値として選択できるのは以下のとおり

  • view
    • 今まで通りパネルやサイドバーでの検索
  • reuseEditor
    • 検索用のタブが一つ開く。このタブは使い回される。
  • newEditor
    • 検索用のタブが毎度新規に開かれる。

Transform to Snake Case

コマンドが増えている 。読んだ通り選択したcamelCaseな文字列をsnake_caseにしてくれるくん。OpenAPIの定義からRubyに落とし込むときとかクラス名をファイル名に落とし込むときとかに使えそうかな。逆はまだないみたい。

Apdex の復習

仕事で運用しているアプリケーションの監視に New Relic を使っている。 以前監視NRQLとか書いたりしてたけどそこそこ抜けてしまっているのと、真面目にApdexに対して向き合うときがきたので自分のためにまとめる。

Apdex てなに

Apdex:ユーザー満足度の測定 | New Relicのドキュメント ドキュメントがあるのでこれを見ると良い。

Application Performance Index の略で、レスポンスに対する満足度を示す割合のこと。New Relic 独自の用語ではなく、 The Apdex Users Group という団体があってそこが大本。

あらかじめ許容できるレスポンスタイムの閾値Tを設定しておいて以下の3つにレスポンスタイムの評価を分類する

  • 満足
    • レスポンスタイム >= T
  • 許容
    • T < レスポンスタイム <= 4T
  • 不満
    • 4T < レスポンスタイム

そしてある期間の間にやってきたリクエストに対して以下の式を適用してある期間に対するApdexを設定する

Apdex = (満足の件数 + 許容の件数/2) / リクエスト総数

すべて満足なら最高の1, すべて不満なら0となる。

どのようにして値を決めるとよいか

しきい値TについてはApdex T: How to Set the Right Value New Relic が出しているブログの「What should I set T to?」にそのまま書いてあるので参考にすると良さそう。最初は24時間のリクエストのdurationの90%タイルをNRQLで取ると良いと書かれている。また、実際の監視では特定の期間内のApdexがnを下回ったらアラートを上げるといった使い方をする。特定の期間(n分)についてはサービスのリクエスト数によって調整する必要はある。リクエスト数が少ないと、不満と判断されたリクエストを外れ値としてうまく弾くことができない。


なんとなく眺めていた値だったので、式を理解できたこと、Apdex が New Relic 独自の値ではないことを知ったのが学びであった。

参考

iLoud micro monitor を買った + 2020年買ってよかったもの

みんなやってるので。だいたい机周り。

iLoud micro monitor

iLoud Micro Monitor - IK Multimedia | Hookup, Inc.

PC用のスピーカー。実は買ってた。まだ書いてなかったのでついでに色々書いちゃう。 PCで使うスピーカーとして、 Bose の Companion 2 Series III を使っていたのだけれども、もうちょっといいものに変えて良さそう〜というのを考えていた。

変える前の構成

[PC(Mac,Windows)] ----- [USBDAC(GameDac)] -TRS- [BOSE Companion 2 Series III]
[Raspi(Volumio)] ------- [DAC] ┘

Volumio は Raspberry Pi 4 + DAC + Volumio で音楽を聴けるようになるまで - Re: 醤油の一升瓶じゃあ戦えない で組んだやつ。PCがWin,Mac両方あるのはKVMがついているディスプレイにUSBDACをつないでどちらからも使えるようにしているから。

課題

  • もうちょっと音いいものにしたいー
  • USBDACがPCの電源依存なのでraspiから音出すためにPC起動していないといけないのが面倒ー

考えた案

  • 2入力持ってるスピーカーかシンプルなアンプを使う
  • ミキサー買っちゃう

相談

社のSlackに #kaden というチャンネルがあって、スピーカーも広義の家電でしょう〜という気持ちで相談してみたら、社のCDOである @kotarok さんに iLoud micro monitor を激アツ丁寧な文章とともにおすすめしてもらえた。その節はありがとうございました。

今の構成

f:id:uvb_76:20201231122920j:plain

[PC(Mac,Windows)] ----- [USBDAC(GameDac)] -TRS- [iLoud micro monitor]
[Raspi(Volumio)] ------- [DAC] ---------------------RCA-┘         │
[iPad Air]---------------------------------------------Bluetooth--┘

こうなった。んだけど、あろうことか Volumio が起動しなくなったので今はお休み中…

かんそう

素人でも明らかに低音の響きが良くなったのがわかった。もこもこせずにズバっと飛んでくる感じ。そして、全入力入れても排他にならずに全部Mixされて鳴ってくれる。自分の理想的な環境ができたので満足満足。


以下買ってよかったのものを並べるコーナー。

MiniMetro TOKYO Custom

www.instagram.com

www.instagram.com

CHROME MINI METRO を カスタムオーダー | ikaruga.org 詳しくはこちら。 他人とぜっっったい被らないものというものはいいものです。Mini BURUN と比べて底が広くなったので、カメラのインナーケースも入れやすくなって最高。

リープチェア

いい椅子はいい。ヘッドレストをつけると、ハンガーつけなくてもサコッシュとか掛けることができて便利(最悪)。リープに特筆したこと書くと、可動域が異様に広い実用的なアームレストが付いてるのはかなり良い。

ViewSonic VP2785-4K

VP2785-4Kを買った + 在宅状況近況 - Re: 醤油の一升瓶じゃあ戦えない

快適〜。仕事Mac, 趣味Winの状況でKVMがめちゃくちゃハマってくれている。

Blue Snowball Ice

4月近況 | ikaruga.org に書いた。かわいい。

Krisp

Krisp | ノイズキャンセリングアプリケーション | Beyond テレワーク | Web会議・テレビ会議(TV会議)ブイキューブ

買ったというか契約だけど、ノイズキャンセルのアプリケーションを使っている。Snowballがめちゃくちゃ音拾うのだけれども、こいつのおかげで声以外をバッサリ落としてくれて助かってる。これについては自分で評価できないので、自分と喋ってる他の人達がどう感じているかだけど…

iPad Air

あると便利でしょ、って雑な理由で買ったけど、最近増えたライブ配信を食卓でさっと観たり、オンライン飲みのチャットアプリケーションのリソースをiPadに回せるのがかなり良い。最近PDFをたくさん受領してあれこれ〜ということが増えて、それに書き込んだり横になって眺めたりというのができるのも良い。あとこれ買ったのでグルミクを真面目にやれてるところはある。

HD60 S

HD60 S | elgato.com

キャプチャーカード。4K録画なんて使わんしょ。という気持ちで捨てた結果がこちら。Switchの画面とかDiscordに流したり。ラズパイの画面とかディスプレイに移すまでもないけど画面みたい〜とか言うときに使える。配信周りの需要は確実にあるはずなので、来年以降は軽く嗜んで行こうかというところ。

D4DJ GroovyMix のリザルトを Scrapbox のページにまとめやすくする iOS ショートカットを作った

この記事は GMOペパボエンジニア Advent Calendar 2020 - Adventar 21日目の記事です。 昨日20日目は Tatsumi0000 くんの App Store Connect APIからアプリのダウンロード数を取得する時にハマったポイントとその解決法 でした。


動機

D4DJ Groovy Mixとかいうスマホ音ゲーをちょっと真面目に触ってる。スコアモチベを上げるためにグルミク1日1PFCアドベントカレンダー を作りたくなった。Twitter以外のストックできる場所にまとめたいと考え、Scrapbox を採用したが、都度都度iOSでページを作るのが面倒だった。

作ったもの

グルミクスコアをスクラップ

D4DJ GroovyMix のエキスパートスコアのクリアリザルトに対して

  • スコアキャプチャを保存する
  • リザルトテキストを本文、曲名をタイトルにしてScrapboxのページを作成する
    • 追加するScrapboxのアカウントは簡単に設定できる

という要件を満たすiOSのショートカットを作った。

ScrapboxのページにしたいEXPERTのリザルトが出たときにショートカットを実行すると、曲名をタイトルにしたページを作ってくれる。画像アップロードまでは自動でできないので、そこは手動で。iOSで上記リンクに飛ぶことで実際に端末のショートカットとして使用することができる。

手法

Scrapboxにページを追加する

ページを作る - Scrapbox ヘルプ にあるように、ページタイトルとURLエンコードされた本文があれば、ページを作ることができる。

iOSショートカット

コンテンツの中身を確認する

ショートカットの入力を「コンテンツグラフを表示」にわたすと、入力内容の詳細を確認できる。例えばグルミクのリザルトをショートカットの入力にしてコンテンツグラフを表示にわたすと、 [イメージ, テキスト, テキスト] という複数のコンテンツタイプのリストになってる事がわかる。最後のテキストは空っぽなので、よくわからないけど。

なにか決まった入力に対してショートカットを作りたいと考えたのならば、まずは入力を解析するのにコンテンツグラフを表示させると良さそうと思った。

f:id:uvb_76:20201221065030j:plain
スコアリザルトの入力リスト

コンテンツグラフ

「ショートカット」のコンテンツ・グラフ・エンジン - Apple サポート

「ショートカット」の能力の多くは、コンテンツ・グラフ・エンジンによるものであり、iOSおよびiPadOSの機能やAppからショートカットアクションへのデータをその場でインテリジェントに変換します。アクションがある種類のコンテンツを想定しているのに別の種類のコンテンツが渡された場合、コンテンツグラフがそのコンテンツを適切な種類へ自動的に変換します。

この仕組のおかげで、ある程度のコンテンツの種類の違いを許容して色々と変換してくれる。たとえばテキストに対して「写真に保存」をすると、テキストを画像に変換して保存する。逆に画像をテキストとして表示すると [イメージ] というテキストになって表示される。ショートカットの入力を確認するには「コンテンツグラフの表示」を使う。ショートカットの入力に対して変換できるコンテンツの種類をグラフにして表示してれる。

f:id:uvb_76:20201221064141j:plain
イメージのコンテンツグラフ

リストから項目を取得

ショートカットの入力はリストの形で入ってくる。「スクリプティング/リストから項目を取得」で、イメージ、テキストそれぞれ個別に指定して処理を行うことができる。

f:id:uvb_76:20201221064132j:plain
リストからイメージを取得するところ

本文のURLエンコード

Scrapboxでページを作る際、本文はURLエンコードされている必要がある。これも「スクリプティング/ URLエンコード」で実現できる。エンコードの他にもオプションでデコードもできるので有能。

f:id:uvb_76:20201221064128j:plain
ページの本文を作るところ

曲名を抽出してURLを組み立てる

スコアリザルトから正規表現で抽出する。 [EXPERT]{曲名}をクリア のようなフォーマットのテキストを拾ってグループをタイトルにすると良い。これは「一致するテキスト」と「一致したテキストからグループを取得」で実現できる。

HTTPリクエス

curlも使えるけど、ブラウザでひらいて画像アップロードしたかったのでそうした。

曲名抽出からHTTPリクエストまでをつなげると以下の処理になった。

f:id:uvb_76:20201221064123j:plain
ページタイトルを作ってリクエストするまで

Scrapboxアカウントの設定

ショートカットはiCloudへエクスポートできる。エクスポートされたショートカットのURLにアクセスすると誰でもショートカットを使うことができる。

アカウント名の設定などショートカットを使用する前に設定しないといけない項目があるときは「ショートカット詳細」の「質問を読み込む」を使うことで、URLからショートカットを追加する際にウィザート形式で値を設定することができる。今回はページを追加するScrapboxのアカウントを設定できるようにした。

f:id:uvb_76:20201221064137j:plain
ショートカット時にユーザーに対して尋ねる質問

学び

  • 意外とショートカットでできることは多いことに気がついた
  • iCloudiOSショートカットをエクスポートできること
  • 複数のコンテンツが含まれる入力をショートカットで個別に処理する方法

これから

  • アドベントカレンダーのネタはもう揃ったので、これを直すモチベはあまりない…
  • 自分用にエキスパ限定にしてたけど、難易度不問にして良さそうとは思う
  • 本文と画像をrequest body にしてAPIリクエストすると、なにか記録をストックしてくれるAPI側を作ってそこに溜め込めるようにしてみる
  • リザルト画像のOCRかけたくなったので、Cloud Vision API とか使ってテキストに落とし込めないか考える

とかぱっと出てきたので気が向いたらやろうと思う。


明日はひかりさんの レビューを分析してみる2020 - 補習ほぼ確 です。

VS Codeでパネルの最大化をするショートカット

前提

macOS

$ code -v
1.51.0

VS Codeのターミナルを表示するまではいいんだけど、エディタのことは忘れて広い画面でターミナルを操作したい、というときのショートカット。

workbench.action.toggleMaximizedPanel がそれ。既存だとバインドされていないので別途設定が必要。

自分は統合ターミナルの表示を Ctrl Shift @ に割り当てているので、隣の Ctrl Shift [ に割り当ててみた。ドラッグして大きさを調整せずに済むのでそこそこ楽。

Swarmのチェックインをふりかえりやすくするためにやってること

ikaruga.org鳥人雑技団なんて地元にはない に月1で日常の出来事を書いてるんだけど、意外とこれに依存しているという気付きが合ったので記録する。大したことではなく、IFTTTのアプレットで楽しているという話。

チェックインをカレンダーに記録する

4sq check-ins (now Swarm) to Google Calendar - IFTTT を使っている。どこにいた、という記録がカレンダーの予定と一致するので便利。

チェックインをスプレッドシートに記録する

If Any new check-in on Foursquare, then Add row to Google Drive spreadsheet - IFTTT を使っている。今年Swarmのチェックインで何回「はい」といったか雑なスクレイピングで数えて2019年をふりかえる。 - Re: 醤油の一升瓶じゃあ戦えない で去年集計したのを楽にしたい思いがあったので。チェックインしたときにすでにスプレッドシートに記録されていればいい話。

近況を書くときは前月のカレンダーを見て予定とチェックインを確認する、休みのtwilogをみる、出来事を見出しにして適当に書き連ねる、といった感じで書いている。そうやってできた今月の近況はこちらです。

ikaruga.org

1stシーズンと2ndシーズンのリザルト

1stシーズンのリザルト、という下書きが残ってた。多分ペパボで1年仕事してたことについてのふりかえりを書こうとしてたのだろう。実は既にに2ndシーズンも過ぎていたので、やったこととかギャッと並べてみる。

1st

やった

  • フィヨルドブートキャンプでRailsの修行した
  • 情報安全確保支援士の登録した
  • builderscon 2018 tokyoに参加した
  • RubyKaigi 2019に参加した
  • Rails Developpers Meetup 2019 に参加した
  • 仕事では決済のAPIを使ってあれこれしたり、一括処理について思いを馳せていた
  • 社のイベントやブログの写真を撮るなどしてた

  • キーボード2台作った

  • キーボード作ってわかったことを未来大で話した
  • M5Stack触って作ったもの解説を書いたら同人誌になった

わかった

  • モデリングは異様にむずかしい
  • すべてを理解する必要はない
  • ふりかえり続けるとつかれるので、ある程度は捨てて前を向くほうがよい

2nd

やった

  • 税率に思いを馳せていたり、1からなにか作るということをしていた
    • 平成Ruby会議で税率について少し話した
    • Rails+Vue+TypeScriptのモノレポリポジトリの扱い方
    • 1から環境を作る、ということはしていないけどそれに乗っかってAPI、フロントエンドを書いたり
  • 社のイベントやブログの写真を撮るなどしてた
  • 仕事がフルリモートになった
  • 新卒の研修をみてすげーじゃん!とか言ったりした
  • 面倒見ているサービスの運用
    • herokuで動いているサービスの面倒見たり

わかった

  • TypeScriptは書くこと増えるけど、自分の間違いには気づきやすくなるので楽…
  • OpenAPIGeneratorでTypeScriptのAPIクライアントが生成できるのがかなり便利
  • 価格は外税で保存すると税率変更対応時に楽
  • 仕様を決めるのは大変
  • minikubeを使ったk8sの環境の作り方
  • Rackのアプリケーション構造
  • Zeitwerkでファイル読み込み方法がどう変わったか
  • リモート楽だけど、たまには出社して他職種のひとと話したくなる
    • 偶発的な会話を求めているのかもしれない
  • 人を撮るに当たり、光とレタッチを学びたくなった
  • 運動しないと体重が落ちる
  • まだ必殺する力が足りていない
    • 一時的な修正でなく、機能として落とし込む力

つぎやること

  • TypeScriptを身につくくらいには書きたい
    • テストをさっと書けるようになるといいなあ
  • ハードは一旦やらない
  • GCPAWSかどっちかで盆栽を作る

やったことわかったこと並べれば少なくとも何か学んではいる、ということなのでポジティブにいこう。