Trelloの特定カラムのカードタイトルとURLを取得するコード

これは何か

現在ブラウザ上で開いているTrelloボードの、特定カラム上にあるカードのタイトルとURLを取得するJavaScriptコード。Consoleで使う。

パフォーマンスとか難しいことをできるだけ考えない。

以前似たようなことをしたときのコード↓

wifeofvillon.hatenablog.com

f:id:wifeofvillon:20200623122850j:plain
左みたいなTrelloのカラム内容をコンソールにワーッて出す

コード(Gist)

gist.github.com

余談

  • 人に使ってもらう場合はwindow.prompt()とかと組み合わせてカラム名指定できるといいかも
  • 人に使ってもらう場合は結果をクリップボードに保存できるようにするといいかも
  • 出力形式はTSVにしているけど適宜改造してCSVとかJSONにもできるはず
  • 頑張ればカードが内部的に持ってるボード内ID(trello.com/c/${id}/XXX-card-titleのXXX部分)やラベルのリストも取得できるはず
  • あくまで参考画像です

Android端末×カスタムキャスト×Mac×Google Hangoutsでバーチャル受肉ミーティングする

これは何か

現在の職場のミーティングは9割がGoogle Hangoutsで残りがZoomって感じなんだけど、家のMac miniにはカメラがついていないので3Dの美少女に口パクしてもらいたいなと思って試した。

結論から言うと、以下のことが確認できた/できていない。

  • MacAndroidの画面をミラーリングしてHangoutsで共有することはできた
  • 自分がミラーリング画面を共有している間、相手も自分のPC画面・アプリケーションウィンドウを共有することはできた
  • ミラーリング画面をGoogle Chromeにカメラとして認識させるには別のツール・プラグインを噛ませる必要があり確認できていない
  • 3人以上のHangouts通話になったときどう見えるのかは確認できていない
  • Android端末がかなりぽっかぽっかになる。通知が来たらそのまま相手に見えてしまう

カスタムキャストで自分が使いたい3Dモデルを用意する

play.google.com

まずかぶりたい美少女・美少年を用意する。Androidアプリのカスタムキャストはゲストモードでも(実際に配信しなくても)自分の声に合わせて口パクしてくれる。

キャラクターを作成したら[配信]>[キャラクター選択]>[背景選択]>[リップシンク設定]>[フリック設定]……で3Dキャラ+背景の状態にできる。

f:id:wifeofvillon:20200306190135j:plain
大きめのグラスにPixel2を突っ込んだらちょうどよかった

ApowerMirrorのインストールと設定

MacAndroid端末にそれぞれApowerMirrorのアプリをインストールする。

www.apowersoft.jp

play.google.com

Android端末をUSBでMacに接続してそれぞれでApowerMirrorを起動する。

f:id:wifeofvillon:20200306185818p:plain
Mac上ではこう見える

Google Hangoutsでプレゼンテーションする

Google Hangoutsには画面共有機能があるので「画面を共有」とか「Presentation」みたいなメニューからApowerMirrorのウィンドウを選ぶ。

自分が資料を共有したいときは共有するウィンドウを切り替える。他の人が資料を共有しているときはそのプレゼンテーションにピンを打てばいいと思う(未確認)。

f:id:wifeofvillon:20200306193324p:plain
ApowerMirrorのウィンドウを選ぶ

f:id:wifeofvillon:20200306190754p:plain
艦これしている画面を共有している相手からの見え方

1対1の場合はこれで良さそう。3人に増えた状態を確認したかったけどできてない。

余談) 画面をいい感じに切り取ってカメラとして扱いたい(未実現)

ミラーリング画面をいい感じに切り取るにはOBS Studioを使うのが主流っぽい気がした。

obsproject.com

f:id:wifeofvillon:20200306191722p:plain
切り取ってみた様子

これをGoogle Hangoutsのカメラとして認識させられれば最高なんだけどできてない。

f:id:wifeofvillon:20200306192001p:plain
カメラの設定を変えたい

OBS VirtualCamというプラグインでできそうなんだけどOBSのフォーラムにあるのはWindows版だけっぽい。

obsproject.com

Android端末をそのままミラーリングするときの注意

ApowerMirrorはAndroid端末の画面をそのままミラーリングしている(PC上で操作もできる)。そのため通知がくると普通に表示されてしまう。事故を絶対に避けたいなら通知領域が見えないように切り取ったりした方がいいと思う。

あとUSB接続の場合は↓こういうケーブルを繋いだまま立てておけるスタンドがあると便利そう。

Google翻訳に色んな言語でHelloって言ってもらう

これは何か

VUIに対応しているアプリケーションで、自分が発音できない言語で動作確認をするとき、方法はいろいろあるんだけどGoogle翻訳は間違いなく便利。

f:id:wifeofvillon:20200217140629p:plain

スクショで言うと右ペインのスピーカーアイコンをクリックすると「こんにちは」って読み上げてくれる。

translate.google.com

このページはGETパラメータを直で入力すればそれに応じた文言・言語で表示してくれる。「フランス語とドイツ語とマンダリンとヒンディー語でそれぞれ"Hello"に相当する言葉を発音して欲しい」みたいなシチュエーションに陥ったときに便利だったのでメモする。

Google翻訳のGETパラメータ

上のスクショは下のURLで再現できる。

https://translate.google.com/?hl=ja#view=home&op=translate&sl=en&tl=ja&text=Hello
key value sample
sl 翻訳元の言語 en
tl 翻訳する言語 ja
text 翻訳する文字列 Hello

ブラウザで一言二言発音が聞きたいみたいな用途ならこれで十分だと思う。

別のやり方

wifeofvillon.hatenablog.com

新しいMacを使い始める・古いMacを返却するときにやることの個人的まとめ

これは何か

このエントリは次の項目の個人的なまとめ

  • 新しいMacを使い始めるときにインストールすべきアプリケーション、設定すべき項目
  • 古いMacを返却する際に実施すること

新しい端末を使い始めるときは最低限のデータしか引き継ぎたくないマンなので白紙から始める前提

新しいMacを使い始めるときにやること

インストールするアプリケーション

必須

あった方が便利

どうせそのうち必要になる

セットアップ項目

トラックパッド

Git/GitHub

$ cd ~
$ mkdir GitHub
$ cd GitHub
$ git version

# agree to the Xcode license
$ sudo xcodebuild -license
[Password:
agree

$ git version

# Settings
$ git config --list
$ git config --global user.name "${ユーザー名}"
$ git config --global user.email "${メールアドレス}"

# create `.netrc`
$ vim ~/.netrc

.netrcの内容

machine github.com
login ${ユーザー名}
password ${personal_access_token}
protocol https

参考

古いMacを返すときにやること

support.apple.com

余談

Touch Barの指紋認証便利だけどESCをッターン!できないのが悲しい

Amazon EchoシリーズとSwitchBotシリーズとNature Remoで家の家電の音声操作

今週のお題「2019年買ってよかったもの」

NOTE: 商品紹介にAmazonアソシエイトを使っています

これは何か

この前のサイバーマンデーAmazon Echo Show 5を買ってリビングと自室の家電操作系統を変更したらよかったのでメモする。

前提

サイバーマンデー以前は以下の通り

リビング

機器 役割
Amazon Echo Dot 1 音声操作
Nature Remo 赤外線リモコンハブ・温湿度照度計
エアコン(富士通) 一般的な家庭用エアコン

シーリングライトが2箇所あって片方はリモコン操作できるようになっていたんだけどLED電球に変えたらリモコン操作を受け付けなくなった。

Nature スマートリモコン Nature Remo Remo-1W2(2nd Generation)

Nature スマートリモコン Nature Remo Remo-1W2(2nd Generation)

  • 出版社/メーカー: Nature 株式会社
  • メディア: エレクトロニクス

自室

MEMO: 生活時間が3〜4時間ずれているので夫婦別室です

機器 役割
SwitchBot Hub 赤外線リモコンハブ
SwitchBot 壁スイッチ物理操作
SwitchBot 温湿度計 温湿度計
エアコン(Panasonic) 一般的な家庭用エアコン

部屋の中央にシーリングライトがあるんだけど引っ張って点灯・消灯するための紐がないのでSwitchBotでスマホで壁スイッチを操作するようにしたら色々と増えた。

別に全部スマホ(Android)か古いKindleの画面でも操作できるんだけどそのためにアプリを切り替えるの面倒だな〜と思ったり真っ暗な中で機器操作するのにスマホのスクリーンロック解除してSwitchBot/Hubの疎通待って……っていうのがVUIに慣れるとすごくだるい(し目が痛い)ので音声操作にしたいな〜と思ったりしていた。

Echo Show 5を使った感想

ニュースが普通に映像も流れるのがいい。画質はいいけど音質はちょっと微妙。
ランダムで使い方を提案してくるので(例: 「〜と言ってみてください」)文字が読めるようになったお子様は楽しいと思う。

スキル開発者目線で言うと画面がついていると音声コマンド入力のどこで失敗したのかわかるのがいい。

Echo Show 5導入後

リビングにEcho Showを置いて自室にEcho Dotを移動した。

リビング

機器 役割
Amazon Echo Show 5 音声操作
Nature Remo 赤外線リモコンハブ・温湿度照度計
エアコン(富士通) 一般的な家庭用エアコン

自室

機器 役割
Amazon Echo Dot 音声操作
SwitchBot Hub 赤外線リモコンハブ
SwitchBot 壁スイッチ物理操作
SwitchBot 温湿度計 温湿度計
エアコン(Panasonic) 一般的な家庭用エアコン

もともとベッドがヘッドボードにコンセント2口とLEDライトがついているやつだったんだけど、Echo Dotのためにベッド後ろに余っていた延長コードを引いたので快適になった。
あとちょっと前にスマホタブレット用のアームをヘッドボードに設置していたので充電しながらゲームしながらアプリを切り替えることなくエアコンと壁スイッチを操作できるようになった。超便利だけど人間としてあかん気がする1

ハマりどころ

リビングと自室のエアコンは同じAmazonアカウントでコントロールされるけど、「エアコン消して」だとリビングのエアコンが消える。これを避けるために「<室名><機器名>」が推奨されるけどうちは寝室がふたつある。

「なまくびのエアコン消して」に設定していたらAlexaは音声を「生首」と解釈するので期待通りの動作をしない。かといって「生首のエアコン」とアプリ上で表示されるのは可愛くないので今のところ「寝室エアコン」にしている。

が、夫がSwitchBot Hub miniを買うつもりらしいのでさらなる混乱が見込まれる。

Nature RemoとSwitchBotどっちがいいのか問題

テレビ・エアコン・照明全部赤外線リモコンで操作できるご家庭ならNature Remo1台でいいんじゃないかなと思う。アプリはこっちのほうが見やすいしわかりやすい。

物理スイッチが多くて配線を自分の意思で変更しにくい古めの賃貸の場合、SwitchBotは結構いいんじゃないかと思う。タイマーのついていないコーヒーメーカーも立派なスマート家電になる。

ただSwitchBotは物理スイッチをアームと強力両面テープで押したり引っ張ったりする仕様上スイッチカバーが外れる事故はあるので多分あまり軽い機器には向いていない。

個人的にはSwitchBotの加湿器とカーテンユニットもほしい。

www.kickstarter.com


  1. たぶん第2世代

  2. 主に腹這いになってFGO特異点F〜LB4までクリアした80日間で首と背中が死ぬかと思ったのでそれよりはマシになった

開発タスク管理フローに便乗してテスト関連タスク管理を(精神的に)楽にしたかった

これはソフトウェアテスト Advent Calendar 2019 - Qiita 4日目のエントリです。

@wifeofvillonです。Drivemodeという会社で自社プロダクトのE2Eテストを主業務としており、最近はいい感じのテストマネジメントを模索しています。 このエントリでは現在進行形で体験・実行している「開発タスクマネジメントにQAチームとして便乗するための取り組み」について書きます。

何が起こっているか

現在Drivemodeとは別のアプリの開発プロジェクトが走っています1

ほとんど総力戦のような状態になっているため、既に開発に組み込まれていたメンバーとは別にCertified Scrum Professional®を取得しているメンバーが開発タスクのマネジメントをしてくれる体制になりました。とはいえ要件が決まりきらない箇所が多く、きっちりスプリント計画を立てるのが難しいため、小規模なウォーターフォール開発にアジャイル開発のプラクティスを持ち込んだような変則的な運用になっています。

この体制の中にQAチームもまぎれ込んで、同時にマネジメントしてもらうための取り組みを行いました。今回はその泥臭い取り組みの内容を撮って出し2で書きます。

開発タスク管理フローについて

前提として、今回の開発タスク管理フローは以下のようになっています。

  1. 開発タスクをGitHub Issuesに切り出す
  2. 切り出したIssueをGitHub Projectsのカンバンで管理する
  3. カンバンとバーンダウンチャートを元に振り返りを行う

カンバンのカラムは以下のようになっています。

  • Waiting Design
  • To do
  • In progress
  • Review in progress
  • Reviewer approved
  • Done

各Issueは開発状況に応じたカラムに開発者によって移動されますが、デザイナーの作業が必要であったり、コンポーネントテストのダブルチェックが必要であったりする場合にはそれぞれ「needs UX design」「ready for QA」のラベルを付けます。

基本的にコンポーネント開発のIssueはダブルチェックを経て完了扱いになります3

また、カンバン上のカードタイトル=Issueタイトル内に(相対)作業見積が記載されています。開発者同士のプランニングポーカーで算出されたもので、これを元にGoogleスプレッドシートでリリースまでのバーンダウンチャートを作成しています4

f:id:wifeofvillon:20191202151331p:plain
開発Issueの例

やったこと

前項をふまえQA側は、QAのタスクを開発タスクと同じカンバン上で管理できるようにしました。

  1. QAのタスクを分解してGitHub Issuesに切り出す
  2. Issueごとに(相対)作業見積を行いIssueタイトルもしくはDescription内に記載する
  3. 開発者のレビューが必要なIssueに「needs Developers eyes」のラベルをつける
  4. 作業見積を元にGoogleスプレッドシートでバーンダウンチャートを作成する

タスク分解はまず「要件把握」「テスト仕様書作成」「コンポーネントテスト実行」「統合テスト実行」に分け、そこから機能単位で子Issueを切り出しました。(コンポーネントテスト実行は開発Issueのダブルチェックがそれに当たるので自分では切り出していません。)

作業見積も開発者がプランニングポーカーを用いた相対見積をしていることに合わせてフィボナッチ数の相対見積にしました。自分で切り出したIssueに関しては開発Issue同様タイトル部分に、開発Issueに関してはテスト仕様書・報告書へのリンクの横に記載しました。

今回開発者と一緒に管理されたかった理由の一部として

  • 要件が決まりきっていない箇所がある
  • ユースケースの組み合わせが多くカバーできているか自信がない
  • これを機にもっとテスト仕様書もレビューしてもらいやすくしたい

という気持ちがあったので、開発者がデザイナー・QAに対してそうしているように、開発者のレビューが必要だと感じたIssueに「needs Developers eyes」のラベルをつけるようにしました。

作業見積を元にGoogleスプレッドシートでバーンダウンチャートを作成するところは開発タスクと同じですが、現状では別シートに分けています。

f:id:wifeofvillon:20191202151436p:plain
QAIssueの例

やりたかったけどやれなかったこと

本来は作業見積は開発者と一緒にやれることが理想ですし、実際プランニングポーカーの場にも呼んでもらいました。しかし、開発IssueがQAの作業単位より細かく切り出されていたこと、その時点ではプロジェクトの概要把握もおぼつかず基準として提示されたIssueについて作業量をイメージできていなかったこと5から、作業見積はひととおりのQAタスクをIssueに切り出してからひとりで行いました。

開発IssueがQAの作業単位より細かく切り出されていたというのは、例えば電話の待ち受けモードを変更する機能があったとすると、開発は「電話の着信を無視する」「着信を知らせる」という粒度まで分解されています。これについては別に何もおかしくはないのですが、統合テストで使えるテスト仕様書を作る(そしてテストを実施する)ことをゴールとしているQAの場合、電話の待ち受けモード全体をひとつのタスクにしたほうが条件組み合わせによる結果の違いがわかりやすく、テスト仕様書が書きやすくなると感じました。

バーンダウンチャートも開発・QAをまとめてプロジェクト全体で1枚にできると美しいと思うのですが、今回は作業見積自体別々に行ったのでそれぞれ別シートで管理しています。

(現状)よかったこと

プロジェクト運用に口と手を出したことによって、既存プロジェクトではTrelloでやっていたこととほぼ同じことをGitHub Projectsでもやれるようになったので、私の作業負担が大きくなったとは感じません。

むしろ私が何をどんなペースでやっているかが他のメンバーから見えやすくなったことにより、安心感が得られ、進捗を出していくぞ!という緊張感が生まれてよかったと思います。

あと、これはいいことだとは言い切れないのですが、作業負担が大きくならなかった理由として、テスト仕様書を書くのもダブルチェックを実行するのも全部自分なので作業見積やIssueの書き方に迷いがないというものがあります。

ここで例えば新しくメンバーを追加してテスト仕様書作成を分担したり、テスト実行を任せたりする場合は別途QAチーム内で作業見積をする必要がある6でしょうし、GitHub Actionsというかカンバン系式に慣れていない人と一緒に作業する場合はそのサポートも作業のうちに入ってくるのでこれこの短期間に限ってはひとりでよかったなと思います7

次のリリースでは理想にもう少し近づけるといいですね……

普遍的な問題として

今回の取り組みはあくまで開発者主体のプロジェクトで自分も心理的に楽になるためのものなので、どこのチーム・どこのプロジェクトにも普遍的にあるであろう

  • 見えている作業・想定できる作業しか具体的な見積もりができない
  • リリース直前に新しい仕様が降ってくる・仕様が変わると対応しきれない

という問題が解決されるわけではないです。

進捗どうですか?

この運用にしてから最初のリリースはまだ終わっていません(12/4現在)。なので、実際にどうなったか知りたい人は飲み会とかで訊いてください。

ソフトウェアテストの小ネタ Advent Calendar 2019ではもっと気楽なことを書くと思います


  1. 新規アプリの開発は私がチームに加わってからも、手堅いものからチャレンジングなものまで何度かありました。その度に副産物として開発・QA体制がブラッシュアップされてきたように思います。

  2. まさか本当に撮って出しになるとは先月の時点では想定していなかった……

  3. 余談ですが、Pull RequestがmergeされるとGitHub ActionsでCIが実行され、Firebase App Distributionで新しいリビジョンが各試験端末に配布されるようになっており、これを用いてダブルチェックを行います。

  4. どうしてこういう体制になったかを書き始めると脱線するのでここでは書きません。このタスクマネジメントの話は@KAKKA_Blogがいつか書いてくれるかもしれません。知らんけど。

  5. これは完全に私の落ち度

  6. そして作業見積についても学習してもらう必要がある可能性がある

  7. 今後についてはその限りではない。私よりつよいQAエンジニアがハンドリングしてくれないかな〜とはずっと思っている

Alexaスキル「[非公式]DQB1 ビルダーの書」がストアで公開されました

商品紹介はAmazonアソシエイトを使っているのでそういうの好きじゃない人はアソシエイトコード抜いてね

公開されたスキルについて

f:id:wifeofvillon:20191030141716p:plain

Alexaスキル「[非公式]DQB1 ビルダーの書」がストアで公開されました。

[非公式]DQB1 ビルダーの書

[非公式]DQB1 ビルダーの書

ドラゴンクエストビルダーズ1(DQB1)の部屋レシピを教えてくれるスキルです。

【スキルの使い方】 「アレクサ、ビルダーズワンのレシピ集を開いて」で起動し、 「〇〇のレシピを教えて」「〇〇の作り方を調べて」と訊いてみてください。 あなたの知りたい部屋のレシピを読み上げます。(現在アイテムのレシピには対応していません。)

「アレクサ、ビルダーズワンのレシピ集を開いて〇〇のレシピを教えて」と訊くこともできます。

※利用するにあたって特別なアクセス権を必要としません。

Amazon Echo系デバイスを持っていなくてもAndroid/iOSバイスにAlexaアプリをインストールすれば利用できます。

play.google.com

Amazon Alexa

Amazon Alexa

  • AMZN Mobile LLC
  • ミュージック
  • 無料
apps.apple.com

部屋の名前を知らないとそもそも使えないので、既に一度クリアして周回プレイをしている人・公式ガイドブックを持っている人向けです。

原作ゲームおよび公式ガイドブック

開発について

開発環境について

今回バックエンドの処理は自分のAWSアカウントのLambdaではなく、Alexaが無料枠内でホストしてくれるLambdaで、Node.jsで書いた。

f:id:wifeofvillon:20191030130031p:plain
Alexa Developer Console

実質3ファイルくらいしか触ってないので、Alexa Developer Consoleでコーディング&デバッグしてローカルファイルにコピペしてGitHubにpushするというあまりお利口ではない作業をしていた。ログを見たいときはコードエディタの左下から毎回CloudWatchを開く。

f:id:wifeofvillon:20191030131315p:plain
コードエディタ左ペインより

開発人数が多かったり触るコードが多かったりログをがっつり見たかったりという場合は自分でLambda用意したほうがいいと思う。

実装について

github.com

ウェイクワードとスロットタイプ

ウェイクワードは当初ビルダーズ1のビルダーの書にしたかったんだけどあまり平易な日本語とはいえずAlexaが解釈できなかったのでビルダーズワンの レシピ集になった。

あとスロットタイプに部屋名を全部含めているんだけど、日本語だと漢字の変換揺れがあるのでぱっと思いつくあり得そうな変換候補はあらかじめ含めておくことにした。作業自体は辞書データを作っていたGoogleスプレッドシートCSVを取得してコンソールにアップロードすればいいのでそんなに大変ではない。

f:id:wifeofvillon:20191030133044p:plain
スロットタイプエディタより

ただVUIの音声入力は斜め上の文字列解釈をしてくることがままあるので完全に全てのケースをカバーしたかったらDialogFlow的なものを挟むとか失敗したケースを収集して都度追加するとかしないといけない。

See: dqb-recipe-alexa/ja-JP.json at master · wifeofvillon/dqb-recipe-alexa

カスタムインテントについて

スロットに渡ってきた値はAlexa.getSlotValueで取れるんだけどこれで取れる値はユーザーが発話してAlexaアプリが解釈した文字列なので変換揺れがあるため、モデルが解釈した文字列で辞書内を検索してあったらそれを表示、なかったらユーザーの発話そのままを返すようにしてある。

See: dqb-recipe-alexa/index.js at master · wifeofvillon/dqb-recipe-alexa

アイコンについて

Alexa Icon Builderを使ってサクッと作った。

申請について

モノ自体は辞書作成も含め7時間くらいでできたんだけど申請作業とサポートデスクとのやりとりに3時間くらいかかった。3回目の申請でスクエニが出しているコンテンツガイドラインの解釈根拠と既に公開されてて評判の良いFF14の類似スキルのURLを添えたものの、我ながら苦しいな〜〜〜と思ってダメだったら諦めようと思っていた。

申請が通るまでの登録データの変更ログに興味がある人は下のファイルの差分を追ってみてください。

dqb-recipe-alexa/STORE.md at master · wifeofvillon/dqb-recipe-alexa

あとFF14のこちらのスキルが大変参考になりました。

【非公式】FF14 Buddy

【非公式】FF14 Buddy

著作権・商標権的な是非について

このスキルに部屋検索機能を実装しなかったのは出版部を持っているスクエニの権益を損ないたくない、あくまで自分みたいな重周回ユーザーが楽になるだけのスキルにしたいというのがあったためで、一度ゲーム内で特定の部屋を成立させるか公式ガイドブックや第三者攻略サイトを見ない限りほとんど無力なスキルになっている。

が、上で挙げたFF14と違って今後公式ガイドブック以上の情報が出るということは多分ないので「あかんな」と思ったら配信を停止するつもりでいる。

あとライセンスを今のところMITにしてるけど辞書データだけは再利用不可に変更しようと思っている(のであとでREADMEを直す)。

DQB2版について

そもそもDQB1版はDQB2版を作っているときに辞書のデータの持ち方がややこしい(「ろうか」のレシピだけで8種類ある)ので叩き台として作ったということもあって、DQB2版は確実に作るけど前項の著作権・商標権的な是非を考えると、作っても公開を半年くらい待つか、ストアに公開しないでソースだけ公開して自分のアカウントにコピペして使ってくれーということにするかもしれない。

余談

とか言ってDQB2めっちゃ面白いのでDQ11SのためにSwitch買った勢におすすめ。一緒にかいたく島ビルドしよ……

あと全然関係ないけどリングフィットアドベンチャーがガチ筋トレさせてくるのめっちゃ良い。筋肉は一生の相棒。

リングフィット アドベンチャー -Switch

リングフィット アドベンチャー -Switch