あぼぼーぼ・ぼーぼぼ

のんびり生きたい

坂道グループの中からもうすぐ誕生日を迎えるメンバーを教えてくれるLINE Clovaスキルをつくった

『さかたん』というLINE Clovaスキルをだいぶ前に公開しました。

clova.line.me

さかたんは、乃木坂46欅坂46、日向坂46のメンバーの中で、次に誕生日を迎えるメンバーを教えてくれます。

※noteに書いた記事の移植 坂道グループの中からもうすぐ誕生日を迎えるメンバーを教えてくれるLINE Clovaスキルをつくった|あぼぼ|note

使い方

😲「ねぇClova、さかたんを起動して」
🤖「グループ名か、坂道と言ってください」
😲「乃木坂」
🤖「8月20日に、乃木坂の秋元真夏さんが26歳、乃木坂の白石麻衣さんが27歳を迎えます。」

グループ名は「坂」を省略することが可能です。グループを絞らない場合は「全部」とか「坂道」と言ってください。該当するメンバーが複数いる場合は↑のように全員喋ります。

あとは、当日なら

🤖「本日8月10日に、乃木坂の齋藤飛鳥さんが21歳になりました。」

と喋ります。

つくった理由

・特定のメンバーの誕生日ならググればすぐ知れるけど、つぎ誰が何歳になるかはすぐにはわからないなーと思ったから ・Clovaスキル(と乃木坂46が昔コラボしてたので)つくりたかった

技術について

言語はSwiftを使いました。LINEがSwift用のSDKを用意してくれてるのと、ぼくが一番書き慣れている言語なので。Swift以外にNode.jsとかPythonとかKotlinとかgoもありますよ👶

github.com

あとは動かすためにDockerとHerokuを使いました。SDKに組み込まれてるので、楽チン!Herokuのssl対応は別途必要です。

Swiftは型名や変数名に日本語が使えます。

enum 坂道: String {
    case 乃木坂 = "のぎざか"
    case 欅坂 = "けやきざか"
    case 日向坂 = "ひなたざか"
}

struct Member {
    let name: String
    let kana: String
    let birthday: Date
    let group: 坂道
}

今回一番時間がかかったところは、メンバーのデータを作るところですかね。欅坂46のサイトはコピペできないようになってて大変でした🙄

// MARK: - 乃木坂46
let nogizakaMembers: [Member] = [
    // MARK: 1期生
    Member("秋元 真夏", "あきもと まなつ", "1993年8月20日", .乃木坂),
    Member("生田 絵梨花", "いくた えりか", "1997年1月22日", .乃木坂),
    Member("井上 小百合", "いのうえ さゆり", "1994年12月14日", .乃木坂),
    Member("齋藤 飛鳥", "さいとう あすか", "1998年8月10日", .乃木坂),
    ...
]

ほかには、ローカルとheroku上とでタイムゾーンが違うことによるDateFormatterの扱いとかは少し悩みました。

そしてClovaの発話のための処理と、汎用的な坂道グループのデータを分離したので、今後何かしらに応用できるかもしれないし、できないかもしれません。

Clovaスキルの審査について

LINE Clovaスキルストアに自作スキルを公開するには、LINEによる審査に合格する必要があります。さかたんは1回落ちました。

指摘箇所は6箇所で、パッと見結構多いな・・・と思ったんですが、指摘理由が明確で、且つ修正例も載せてくれたりと、どう直せば良いか分かりやすくて助かりました。

審査のスピード感ですが、さかたんの場合、初回の審査結果は申請してから38時間後、2回目は40時間後に返ってきました。つまりそれぞれ2営業日内で審査していただきました。

Clova Developer Centerでスキルごとに統計も見れます。今回の審査員はClova DeskとClova Friends miniの2台でテストしてた、というのがログ見ると分かったりします。

今後の懸念

メンバーが卒業するたびに泣きながらメンテする必要があり、メンタルがもつか心配です。

メンバーの更新だけならLINEの再審査なしで行えるので