みんなのちからになりたい

コピペでブログラムつくっていきたい

まいにち詰将棋を毎日slackにポストする方法

1日1詰将棋

昔は将棋やってたんですが、最近はもう時間がないのと、今はいい時代でニコ生やabemaで将棋中継やってくれるので観る将がすごい捗ります。

指す時間はもうないですが、頭の体操も兼ねて詰将棋を可能な限り毎日やっていきたい機運となったため、slackにポストするようにしてみました。

毎日詰将棋が掲載されてるそんな都合の良いサイトがあるのか、ということですが、将棋連盟がまいにち詰将棋で出題してくれるので安心ですね。

www.shogi.or.jp

とはいっても、ぼくの気力では簡単な7手詰めならギリというレベルのため、9手とか11手とか出されても解けないんですが、そんなときは適当にフィルタかけてください。

今回は何も考えず、1日1回slackにポストします。

slackはヤダという方は、ポスト先をLineなりtwitterなりメールなりに変えてください。

用意するもの

slackのアカウントとチャンネル

アカウントがある方は次に飛んでください。

無い方は下から作成してください。

Slack を始める | Slack

SlackのAPIトーク

こちらをみながら作成してください。

qiita.com

Googleアカウント

Google Apps Script(GAS)を使うので、Googleのアカウントが必要です。

www.google.co.jp

f:id:ginzanomama:20181226214424p:plain

GASでスクリプト作成

GoogleドライブからGASを作成します。

ほんとはGASだけ使えれば良いんですが、将来的に詰将棋を解いたことをリアクションでトリガーにしてスプレッドシートに記録したいので、今回はスプレッドシートを作成します。

ドライブから新規でスプレッドシートを作成し、まいにち詰将棋と名前をつけます(なんでもいいです)

f:id:ginzanomama:20181226214507p:plain

ツール→スクリプトエディタをクリックしてスクリプトを作成します。

f:id:ginzanomama:20181226214539p:plain

スクリプトをコピペする

以下のスクリプトをコピペします。

function myFunction() {
  var url = 'https://www.shogi.or.jp/tsume_shogi/everyday/';
  var response = UrlFetchApp.fetch(url);
  var html = response.getContentText('UTF-8');

  const $ = Cheerio.load(html);
  var a = $('.floatListA01Col3-30 li a').first();
  var img = a.find('img');
  slack(img.attr('alt'), a.attr('href'), img.attr('src'));
}

function slack(title, link, image) {
  var url        = 'https://slack.com/api/chat.postMessage';
  var token      = 'SlackのAPIトークン';
  var channel    = 'チャンネル名(#付き)';
  var text       = "まいにち詰将棋";
  
  var username   = 'bot';
 
  var icon_emoji = ':cop:';
  var method     = 'post';
  
 var payload = {
    'token'      : token,
    'channel'    : channel,
    'text'       : text,
    'username'   : username,
    'icon_emoji' : icon_emoji,
    "attachments": JSON.stringify([
      {
        "color": "#2eb886",
        "title": title,
        "title_link": link,
        "image_url": image,
      }
    ])
 };

  var params = {
    'method' : method,
    'payload' : payload,
  };
  
  var response = UrlFetchApp.fetch(url, params);
}

必ず変える箇所は14,15行目です。

18,20行目はボットの名前とアイコンになるので、好きなものに変えてください。

あと、cheerioのGAS版を使ってるので、これをライブラリ登録してください。

github.com

この状態でちゃんとslackにポストされるかテストします。

投稿テスト

ツールバーに再生ボタンがあるので、それを押してslackにポストされるか確認します。

f:id:ginzanomama:20181226214815p:plain

成功するとこんな感じでポストされます。

f:id:ginzanomama:20181226214831p:plain

この表示に仕方は変えられるので、変えたい方は29行目から変えてください。

ここが参考になるかと思います。

qiita.com

スケジュールで1日1回に設定する

まいにち詰将棋ですが、監視してるわけではないので何時頃更新されてるのか不明ですが、だいたいお昼前くらいには更新されてるようなので、その時間にポストするように設定します。

ツールバーにストップウォッチみたいなボタンがあるので、それを押します。

f:id:ginzanomama:20181226214907p:plain

そうするとトリガーの画面が表示されるので、右下の「トリガーを追加」をクリックして以下のように設定します。

f:id:ginzanomama:20181226214954p:plain

時間を変更したい場合は時刻を選択を任意の時間に変更してください。

以上で設定は完了です。

まとめ

みんなで詰将棋しよう!

ちなみに、もっと詰将棋解きたい方は以下の本がオススメです。

ぼくも持ってますが、3手詰めでもむずいですし、やりごたえあります。

5手詰めはぼくも持ってないので今度買います。