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

AndroidアプリQAテスターが職場でやってよかった取り組み(2019年3Q)

2019年7月〜9月の間にぼっちQA teamとして職場でやってよかったっぽい取り組みについて書く。

テスト用Googleアカウントの作成

いつかやらなきゃいけないけど勝手にやっていいのか?と思っていたタスクについて、許可を取り付けて進めた。

テスト用デバイスが増え続けている割に、テスト用Googleアカウントは少数を使いまわしている状態だったので増やした。

今後アカウントを作る人によってレギュレーションが変わるのをどうにかしようという話になったので、多分大体の国で通じそうで連続性のある、必要数より項目数多めのリストを作成した。

Category:名数 - Wikipedia

連絡先のインポート作業

地味なんだけど新しく作ったGoogleアカウントそれぞれに社内テスト用SIMカードの電話番号をインポートした。一気にやると後々手間が省けるので……

wifeofvillon.hatenablog.com

ドキュメント共有のための取り組み

現在ドキュメントをGitHub Wikiで管理しているんだけど、それをミラーリングできないかと画策していた。

結局「できそうだけど作業コストが見合わなそう」と見送ったものや途中のものもあるけど、これまで書いたことのない言語・ツールを使う機会ができてよかった。いつか使うかもしれないし。

*.mdファイルをHTMLファイルにしてGoogleドライブで共有する

Go言語を使ってサクッと変換からアップロードまで実行できそうだったんだけど、Googleドライブだとハイパーリンクの管理が大変だということでこの方法はやめる。[[こういう形式]]のリンクだと大変というだけなので[こういう形式](https://example.com)のリンクしかないファイルであれば使いまわせそうな気がする。

wifeofvillon.hatenablog.com

GitHub Actionsのgollumイベントでミラーリングする

GitHub Wikiが更新されたタイミングで何かしたいときに、GitHub Actionsでgollumイベントを取ってあれこれできるらしいので自分のアカウントで試していた。

最終的にストアで配布できるものを作りたかったんだけど、リポジトリの公開範囲(private/public)とかOrganizationアカウントかどうかとかまだ未検証な部分が多い。

qiita.com

社外イベントに参加する

DeNA QA Night #3に参加した。色々考えることがあって行ってよかったけど、名刺があったらもっと他社の人と話しやすかっただろうなと思った。

前Qまでのエントリ

wifeofvillon.hatenablog.com

wifeofvillon.hatenablog.com

近況

f:id:wifeofvillon:20191003131800j:plain

待望の名刺ができたので技術イベントの度に会場入り口で運転免許証見せなくてもよくなったのが地味にうれしい。新旧どっちの姓で申し込んでるのか忘れていることも多いので

CLIでMarkdownファイルをHTMLに変換してGoogle Driveにアップロードした

これは何か

コマンドラインツールでMarkdownファイルをHTMLファイルに変換してGoogle Driveにアップロードした。

GitHub Wiki向けに*.md形式で記述しているファイルをGoogle Driveミラーリングして拠点越えてドキュメントをシェアできるかという実験だったけど、結果は「Wiki内のハイパーリンクを解決しないとあんまり意味がない」だった。

やる(やった)こと

実行環境: MacOS 10.14.6, Homebrew 2.1.11

  1. Goをインストールする
  2. gdrive-org/gdriveGoogle Driveを触れるようにする
  3. russross/blackfriday-tool*.md*.htmlに変換する
  4. *.htmlファイルをアップロードする

Goをインストールする

HomebrewでGoをインストールする。

$ brew install go
$ go version

これだけだとgo getしたパッケージを実行できなかったのでGOPATHを通す。

export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

参考:

gdrive-org/gdriveGoogle Driveを触れるようにする

github.com

$ brew install gdrive
$ gdrive list

gdrive listすると認証用のURLが提示されるのでそれをブラウザ上で開く。認証用のkeyが返ってくるのでそれをコピペする。

特定のディレクトリにファイルをアップロードする場合は以下の画像の白線部分で隠したIDを--parentで指定する。

f:id:wifeofvillon:20190903182322p:plain

$ gdrive upload --parent XXXXXXXXXXX sample.txt

参考:

russross/blackfriday-tool*.md*.htmlに変換する

github.com

$ go get -v github.com/russross/blackfriday-tool
$ blackfriday-tool help
$ blackfriday-tool -page -xhtml=false myrepo.wiki/_Sidebar.md > myrepo.wiki.mirror/_Sidebar.html

参考:

*.htmlファイルをgdriveで(mime指定なしで)アップロードするとGoogle Drive上ではGoogle Docsで開けるファイルになる。

f:id:wifeofvillon:20190903183557p:plain

ただ予想はしていたけど画像のように[[こういう]]Wikiのリンクは何かしらの方法でGoogle DriveのIDに変換しなければいけないのでだったらWebサイトとしてディレクトリ構成そのままアップロードできるようにした方がよくない?と思った。

いつかの自分にやってもらうメモ

  • gollumあたりを調べてください

【追記あり】JSTQB Foundation Level試験を受けてきたメモ

これは何か

JSTQB認定テスト技術者資格 Foundation Level試験(以下、JSTQB-FL)の8月試験を受験した。申し込みから試験対策、試験当日までの受験者視点の情報を書いた比較的新しいブログ記事が少ないと感じたためメモを残す。

結果はまだ出ていないので合格したかどうかはわからない。

受験申し込みについて

開催実績を見る限り、JSTQB-FLは毎年3月と8月の第3土曜日あたりに実施されている。日程開示と受験受付開始(個人)の日程は、JSTQB-FL第27回のケースでは以下の通りだった。

  • 試験日程開示: 2019年4月24日
  • 受験受付開始: 2019年5月8日〜6月25日
  • 試験実施: 2019年8月24日
  • 合格発表: 2019年10月16日【2019/10/17 12:55追記】

jstqb.jp

www.juse.or.jp

試験勉強について

教材

公式シラバス・用語集

公式サイトからそれぞれ無料でダウンロードできる(PDF形式)。シラバス、用語集の他にアジャイルテスト向けのシラバスのExtensionもあるけどこっちはテスト範囲ではない。

ちなみに今年(第27回)までは2011年版のシラバスが試験の下地になっていたが、来年(第28回)からは2018年版が基準になる。

jstqb.jp

ソフトウェアテスト教科書 JSTQB Foundation』(翔泳社)

知り合いの検証系部門にいる人はだいたい持っている青い鈍器。たまたま家に遊びに来た職業を知らない友人まで持っていたので社内で借りたりもらったりできるかもしれない。Kindleで買ってもいい。

ただ今から買うなら前述の通り2018年版シラバスを元にした改訂版(第4版)が出るのを待ったほうがいいかもしれない。

技術系文書特有の読みにくさはシラバスとそんなに変わらない気がするけど、章に応じた練習問題や用語集、模試が含まれている。

ソフトウェアテスト教科書 JSTQB Foundation 第3版

ソフトウェアテスト教科書 JSTQB Foundation 第3版

  • 作者: 大西建児,勝亦匡秀,佐々木方規,鈴木三紀夫,中野直樹,町田欣史,湯本剛,吉澤智美
  • 出版社/メーカー: 翔泳社
  • 発売日: 2011/11/12
  • メディア: 単行本(ソフトカバー)
  • 購入: 5人 クリック: 85回
  • この商品を含むブログ (12件) を見る

2019/09/02 14:15追記

第4版は2019年09月17日発売だそうです(@shoeisha_booksさんより)

www.shoeisha.co.jp

練習問題

公式サンプル問題

公式サイトにサンプル問題がある。ただ

  1. 問題文
  2. 正解の選択肢
  3. 間違った選択肢
  4. 解説

という記述順序になっているので全く役に立たないとは言わないけど、それこそ自分でランダム出題するアプリケーションを作りでもしないと使いにくいと思った。

『ソフトウェア教科書』の練習問題・模試

前掲の教科書の中に練習問題と模試がある。私は本文を読むのがしんどかったので問題を解いてから当該する本文箇所を読んでいた。

無料de試験(Web)

id:dentakurou さんの「無料de試験」には直前にお世話になった。WebアプリケーションだけどスマホとPCでUIと出題数が変わる。出題はランダム。スマホでやるのがおすすめ。

hp.vector.co.jp

テス友(Android, iOS)

Qbookが出しているスマホアプリ。アカウント登録が必要で、仮URLを送るメールが届かないと思っていたらおそらく迷惑メールフォルダに入っていた。アカウント登録時の入力項目がやたらと多いので使わなかったが紹介しておく。

play.google.com

apps.apple.com

試験当日について

私はTOC有明の会場だった(東京)。試験会場に時計がなかったらつらいと思って隣のTFTの中の100円ショップでアナログ時計を買ったけど、会場内に基準時計があったので別になくてもよかった。

あと受験票に写真の貼り付けが必要。スマホで送った画像を200円でコンビニでプリントアウトしてくれるサービスがあるからそれを使った。

pic-chan.net

試験開始から30分経つと問題用紙、回答用紙、アンケート用紙を提出して帰ってもいい。

試験結果の発表について

試験結果は試験後3ヶ月以内に発表されるらしい。当日配布される注意事項を記載したプリントに個々の受験番号も印刷されているのでそれをなくさないようにすること。

【2019/10/17 12:55追記】

昨日(10月16日)合格者の受験番号が発表された。私の見間違いでなければ受かっているっぽい。

おまけ

直前になってCacooで図表をガリガリ描いてはTwitterに投げるという勉強をしていたんだけど嘘をついている画像があるかもしれない。

複数のGoogleアカウントに同じ連絡先をインポートする方法

これは何か

複数のGoogleアカウントのContactsに同じ連絡先をインポートするときたぶん手軽だと思う方法のメモ

前提

  • PCでやる
  • Google Chromeが使える
  • 連絡先をインポートしたいGoogleアカウントをChromeに追加してもいい

Steps

f:id:wifeofvillon:20190830175709j:plain

アカウントについて

使用するアカウントを以下のように扱う。

  • アカウントA: 今Google Chromeにログインしているアカウント
  • アカウントX, Y: 連絡先をインポートしたいGoogleアカウント

f:id:wifeofvillon:20190830181101p:plain

上はGoogle ChromeGoogle コンタクトを開いたときのページヘッダのスクリーンショットで、右上のユーザアイコンをクリックすると別のGoogleアカウントを追加したり切り替えたりできる。

実際にやること

  1. アカウントAとしてGoogle Chromeで[Google コンタクト]を開き、連絡先情報を登録する
  2. [エクスポート] > [Google CSV]でCSVファイル(以下contacts.csv)を取得する
  3. アカウントXを追加する
  4. アカウントXとしてログインし[Google コンタクト]を開く
  5. アカウントXとして[インポート]をクリックしcontacts.csvをアップロードする
  6. アカウントYを追加する(以下略)

公式ドキュメント

AndroidアプリQAテスターが職場でやってよかった取り組み(2019年2Q)

2019年4月〜6月の間にぼっちQA teamとして職場でやってよかったっぽい取り組みについて書く。

Android端末とSIMカードが増えた

前QのエントリでAndroid端末の管理について書いたけどそこからさらに端末が増えた。多分10台くらい増えた。SIMカードもこれまで複数のサービスを利用していたが、国内用SIMはひとつのサービスに一本化した。

Android端末・SIMカード受け入れ時にやることリストの作成

最近は新しい端末やSIMカードが届くととりあえず私の席に積まれるようになってきたので、普段私がやっている受け入れ時の作業を明文化した。

これで私がやらなくても誰かがやれるようになっただけでなく、とりあえず開けて使ってみたかったメンバーがGoogle Docsのドキュメントを開いて「2-aまでやってある」みたいに伝えてくれるようになった。

Android端末の物理管理状況向上

端末数が増えたので物理的に管理しきれなくなったというか「これは1台でもバッテリーが発火したらやばいな」という状態になっていたので、アプリ開発に携わらない事務担当のメンバーに「こういうことができたらな〜」と言ったらサクッと100円ショップのアイテムと既存のACアダプタでいい感じのドックを作ってくれた。

f:id:wifeofvillon:20190625164314j:plain
ボックスの中に100円均一の皿立てを並べてある

かなり快適になったので、いろんな意味でメンバーを巻き込んでよかったと思っている。

RTL言語を意識してやっていく

すでにサポートしているRTL言語(アラビア語ヘブライ語)をもうちょっと手厚くテストしていきたいな〜という話を新大久保の焼肉屋でランチのハラミを焼きながらしたような気がする。

音声入力

前Qで英語の発音がアレすぎるのをサポートするMac用shellを書いたけどそれのアラビア語版を作った。

RTL言語でテストするとわりと思ってもない初歩的な実装漏れが見つかる印象がある。

参考: Macのsayコマンドを使ってアラビア語・ヘブライ語を読み上げる - びよーんのつま。

各種ドキュメントをSlackのカスタムレスポンスに登録する

前QでSlackにopen sesameって打ったらTrelloのカードテンプレを呼べるようにしたって書いたけど、ついでに他にもいくつか登録しておいた。デバイス&SIMの管理リストを呼ぶコマンドは他のメンバーにも定着しつつあるような気がする。

前Qのエントリ

wifeofvillon.hatenablog.com


そんな感じで私は多分元気です。

SOYJOY全部入りパックをおやつリストに入れてみたけどアーモンドチョコが一番好きだな

Macのsayコマンドを使ってアラビア語・ヘブライ語を読み上げる

概要

MacOSの「say」コマンドを使ってアラビア語ヘブライ語の合成音声読み上げを行う方法のメモ。

(V)UIテストでの音声入力にMacの合成音声を使う話は以下の記事でも書いた。

wifeofvillon.hatenablog.com

sayコマンドについて

say -v ${voice} ${text}

${voice}に音声の名前(人名)、${text}に読み上げてもらいたいテキストを入力する。

say -c Alex "Hello"

Terminalを立ち上げて上のコマンドをコピペすると男性の声で「ハロー」と読み上げられるはず。

このとき${voice}で使える音声(キャラクター?)は/System/Library/Speech/Voices/下にあるものである。

このキャラクター名は「システム環境設定」>「アクセシビリティ」>「スピーチ」の「システムの声」の中にリストされているものと同じなので、ここであたりをつけておくといい。

f:id:wifeofvillon:20190603153915p:plain

アラビア語ヘブライ語の音声指定

sayコマンドでアラビア語を使うときはLailaMagedTarikあたり、ヘブライ語を使うときはCarmitを使うっぽい。

say -v Maged "سلام" #アラビア語
say -v Carmit "שלום" #ヘブライ語

「ぽい」というのはアラビア語にバリエーションがありすぎてどれが何準拠なのかわからないからである。

tl;dr

音声入力で操作する画面のUIテストを無理矢理アラビア語でやるためのshellを書いてたんだけど、コード中にアラビア文字が表れると入力カーソルがどっちに動くのかわからないのでドキドキする