日曜プログラマーのための「Clovaスキルつくり隊!」 第2回
普通の1日を特別な1日に!「世界が変わるおみくじ」
1日が楽しくなる「おみくじ」スキルをスマートスピーカー用につくってみよう
2019年05月08日 11時00分更新
スキルづくりのワンポイントテク
おみくじや占いは乱数の取得がキーポイント
今回のスキルのワンポイントは、乱数取得の方法です。占いやおみくじは、用意された選択肢の中から、ランダムで1つを取り出すプログラム、と言い換えてもいいかもしれません。
ここでは、プログラムソースコード内のコメント番号①~⑤について説明していきます。
①おみくじ結果用の配列
おみくじの結果「fortune」7種類と、結果毎の一言「word」を5種類を配列で用意します。
【抜粋】
fortune:'大吉',
word:[
'今日はあなたのことを好きな子が1人増えます。',
'今日は道にとてつもないパワーを秘めた石が落ちています。見つけられるかな?',
'今日、会う友達の中に、将来海賊王になる人がいます。仲間になりましょう。',
'今日はあなたの親友が1日だけスーパーパワーを授かっています。',
'今日は世界のどこかで正義の味方が誕生します。'
]
ここでの注意点は、設定されている文字。fortuneの文字が「ちゅうきち」や「末きち」となっているのは発話が正しく読まれないためです。「中吉」が「なかよし」と発話されたり、「末吉」が「すえよし」と発話されたりしてしまうため、わざわざひらがなを使って設定しています。
また、wordも「悪(あく)の改造人間」が「ワルの改造人間」と読まれたり、イントネーションを調整するために句読点を入れています。
②おみくじ結果用にランダムで番号を取得する。
この部分が今回のキモ。乱数取得のプログラムです。
JavaScriptのMathオブジェクトのrandom()、floor()というメソッドを使い、ランダムの数(乱数)を作ります。おみくじ結果配列の要素数(fortuneList.length)7をセットして0~6の乱数を取得しています。
const fortuneRandom = Math.floor(Math.random() * Object.keys(fortuneList).length);
③一言もランダムで番号を取得する。
こちらは一言コメントの乱数取得。②で決定したおみくじ結果(配列番号)内の一言(word)の配列要素数の5をセットして0~4の乱数を取得しています。
const wordRandom = Math.floor(Math.random() * Object.keys(fortuneList[fortuneRandom]['word']).length);
④おみくじ結果を返す。
value: fortuneList[fortuneRandom]['fortune'] + 'です。'
→例:大吉です
⑤一言を返す。
value: fortuneList[fortuneRandom]['word'][wordRandom]
→例:今日は世界のどこかで正義の味方が誕生します。
Clovaデベロッパーセンターのテストがリニューアル
Clovaデベロッパーセンターのテストがリニューアルされました。主な変更内容は次のとおり。
・対話テストモードが追加され、スキルの起動、終了ができるようになった。
・対話内容がトーク(チャット)形式で表示されるようになった。
今回のスキルの改造ポイント
プログラミングの習得は、既存プログラムの改造からはじめると理解が早いものです。というわけで、今回のプログラムの改造ポイントを挙げておきましょう。
最も手軽なのは、今あるwordに設定された一言コメントをオリジナルの文言に書き換えること。もっと面白い占いを思いついた!という方はぜひチャレンジしてみてください。
もうひとつは、今あるアイデアを生かして、取得する一言コメントをさらに増やしていくこと。乱数取得する数が多いほど、紛れも多く、何度も繰り返し遊べるものにできます。
この連載では、これからも面白いスキルをジャンジャンつくっていくので、みんなもぜひ挑戦してみてくださいね!
この連載の記事
-
第6回
デジタル
鳴った音の音階を当てる「絶対音感ゲーム」スキルをつくってみよう -
第5回
デジタル
読み手をClovaにやってもらう「江戸いろはかるた」スキルをつくってみよう -
第4回
デジタル
子供も一緒に楽しめるゲーム「椅子取りゲーム」スキルをスマートスピーカー用につくってみよう -
第3回
デジタル
パーティーゲームの定番「ビンゴ」スキルをスマートスピーカー用につくってみよう -
第1回
デジタル
むかしの時刻を返す、スマートスピーカー用スキルをつくってみよう - この連載の一覧へ