はじめに
2年前 (2018年10月) に LINE Clova スキル「575メーカー」を enebular で実装し公開しましたが、とうとうリファインする時がやってきました。
当時、なかなか審査に通らず何度も公開を諦めようとしたことを思い出しました。
enebular developer meetup vol.4 で 発表した時の登壇資料に詳細を記載していますので、Clova スキルを公開する際の参考にしてみてください。
575メーカーとは
俳句(575)を自動で作成するサービスで、上5(3,107語)、中7(3,361語)、下5(3,090語)の中から組み合わせて作成します。
「俳句を作って」と言うと、俳句を作ることができます。
「送って」と言うと、連携したLINEに俳句を送ることができます。
公開するために審査を通す必要があり、審査で指摘された事項に対応するため多くの機能を実装したことにより巨大なフローになっています。フローは enebular で公開 (publish) していますので、気になる方は参考にしてみてください。
経緯
リファインすることになった理由は大きく 3 つあります。
① Clova CEK の対話エンジンが新しくなった
② enebular が Node-RED 1.0 に対応した
③ デプロイ先の Heroku 環境の MongoDB が利用停止になった
① Clova CEK の対話エンジンに対応
2019年6月に対話エンジンが新しくなって対話モデルを再ビルドする必要があったのですが、最悪、運営側で強制的に再ビルドすると書かれていたので、そのままにしてありました。
今回、③の理由で Heroku 環境が停止になったことで運営から連絡を受けたため、②の対応と合わせて①の対話モデルを再ビルドして再申請することにしました。
結果的に、対話モデルの再ビルドで動作は問題ありませんでした。
② enebular が Node-RED 1.0 に対応
2020年7月に enebular で使用している Node-RED のバージョンが 0.18.6 から 1.0.5 にメジャーバージョンアップされました。Heroku 環境にデプロイされている enebular には影響が無いため、そのままにしてありました。
今回、③の理由で Heroku 環境が停止になったことで、Node-RED 1.0 で再デプロイが必要になり、フローを開いたところエラーが表示されフローに大量の不明ノードが出現し、一瞬唖然となりました。
原因は enebular で使用されている Firebase ノードが
node-red-contrib-firebase
から
node-red-contrib-firebase-data
に変更になったことでした。
Firebase ノードの移行
firebase.config は設定情報で、firebase.once と firebase.modify ノードを Add Firebase ノードへ移行します。
- firebase.config ノード
Firebase の URL を入力し、Auth Type に JSON Web Token を指定します。
トークンは Firebase Admin SDK を使用して作成します。作成したトークンの中で client_email と private_key を設定します。
- firebase.once ノード
Firebase からデータを取得するノードです。Method に get を指定します。
- firebase.modify ノード
Firebase へデータを追加・変更するノードです。Method にそれぞれ push と set を指定します。
③ Heroku 環境の再構築
2020年11月10日までに環境を移行するよう、Heroku と enebular からそれぞれお知らせメールが届いていました。
しばらくは大丈夫だろうと高を括っていたら、予定とおり2020年11月10日に Heroku 環境が停止され、2020年11月13日に LINE の運営からスキルが使用できない旨のメールが届きました。
一定期間改善されない場合はスキルの公開を停止すると警告され、結果的にこのメールがリファインするトリガーとなりました。
Heroku 環境の再構築手順は enebular 公式のドキュメントとおりでした。
https://docs.enebular.com/ja/deploy/deployflow/heroku/
https://docs.enebular.com/ja/deploy/deployflow/heroku/recreating-by-postgres-addon.html
まとめ
小まめにフローをメンテナンスしないと、いざ急に停止した際に対応するのが大変ですね。
ほとんどの方は問題無く Node-RED 1.0 と 新 Heroku 環境に移行できていると思いますが、もし躓いた方がいれば少しでもお役に立てたら幸いです。
では、良き enebular ライフを!