このページの本文へ

前へ 1 2 次へ

日曜プログラマーのための「Clovaスキルつくり隊!」 ― 第2回

普通の1日を特別な1日に!「世界が変わるおみくじ」

1日が楽しくなる「おみくじ」スキルをスマートスピーカー用につくってみよう

2019年05月08日 11時00分更新

文● ASCII編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

スキルづくりのワンポイントテク
おみくじや占いは乱数の取得がキーポイント

 今回のスキルのワンポイントは、乱数取得の方法です。占いやおみくじは、用意された選択肢の中から、ランダムで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に設定された一言コメントをオリジナルの文言に書き換えること。もっと面白い占いを思いついた!という方はぜひチャレンジしてみてください。

 もうひとつは、今あるアイデアを生かして、取得する一言コメントをさらに増やしていくこと。乱数取得する数が多いほど、紛れも多く、何度も繰り返し遊べるものにできます。

 この連載では、これからも面白いスキルをジャンジャンつくっていくので、みんなもぜひ挑戦してみてくださいね!

前へ 1 2 次へ

この特集の記事