k3kaimu
12/11/2014 - 3:08 PM

TUT休講・補講botについて

TUT休講・補講botについて

TUT休講botの紹介

この記事は、TUT Advent Calendarの12日目の記事です。

TUT休講・補講情報botは、豊橋技術科学大学(TUT)の休講情報や補講情報をツイートするbotです。 今日は、なぜこのbotが生まれたのか、どのように開発したのか、どのように運用されているのか、どういう反響があったのかについて書いていきます。

すべてはここから始まった

一応、大学には休講・補講情報を掲載しているウェブページがあり、休講botができるまではそのページを参照していました。 しかし、そのページがすごく見づらいのです。

去年度までは補講・休講botがあったようですが、今年は動いておらず、「無いなら作るか」という感じで作り始めました。

休講bot on 学友会

大学に入った当初は、意識が高まってしまい、学友会という意識の塊の組織に入ってしまいました。 (ちなみに、水泳部には入ってません)

学友会では広報部という部門に入りましたが、ある日ミーティングで出た話が「補講情報をTwitterで知らせて欲しい」という要望(願望)。 広報部の誰も実装しなさそうだったのと、この時すでに大部分が完成していたので、僕が勝手に進めることにしました。 ですが、休講botは学友会所有のものではありませんので(ここ重要)。 あくまで僕個人での制作物です。

本格実装

休講botが本格的に稼動を始めたのは7月~8月くらいでした。 ツイートを見る限り、最初は休講情報だけだったようです。 熟してきたころには、もうそろそろ夏休みという時期で、ほとんど講義も終わってしまってbotはできたのにツイートする情報がなくて悲しかった記憶があります。

最初のころは以下の様な感じでした。

本格運用してからは新アカウントを使うことに。

休講botの今

今でも元気よく動いています。

時々、大学の休講・補講情報サイトが落ちているなどで情報を取得できない場合は失敗してしまいます。

また、僕がソースコードのメンテナンスをした後にbotのテストを走らせると、以下のように一見異常な数のツイートをしようとしますが、これで正常です。

休講botを支える技術

話は変わって、すこし技術的な内容になります。 休講botでは、以下の様なキーワードの技術を使用しています。

  • D言語
  • Twitter REST API

休講botでは、次のような処理を行っています。

  1. セーブデータを読み込む

    休講botでは、休講・補講情報からTwitterのアクセストークンまで、様々な情報をハードディスク上に保存しています。 そのため、前回保存した情報をハードディスクからロードします。 保存したい情報のバイナリ化(シリアライズ)には、MessagePackのD言語実装であるmsgpack-dを使用しています。

  1. 大学の休講・補講サイトからHTMLをgetする

    休講・補講情報が更新されていないかどうか確認するためにHTMLを取得します。 D言語では、std.net.curl.get(url)でGETした結果の文字列を得ることができます。

  1. HTMLを解析して休講・補講情報をピックアップする

    D言語にはstd.regexというモジュールがあり、簡単に正規表現を扱うことができます。 また、正規表現エンジンをコンパイル時に生成できるので、高速にHTMLを解析できます。

  1. ツイートする文字列を生成する

    D言語だと文字列操作もスクリプト言語のように簡単に扱うことができます。

  1. ツイートする

    graphiteという自作ライブラリに、Twitter APIを叩くためのモジュールgraphite.twitterがあるので、これを使ってツイートします。

    ちなみに、OAuth認証のコードはこちらの記事を参考にしました。

  2. 情報をセーブする

    MessagePackで保存します。

休講bot実行サーバ募集中

現在、休講botは僕のWindowsノートPC(VAIO)で動かしています。 そのため、僕がノートPCの電源をつけている間しか動作しません。 なので「休講botを動かしてもいいよ!」みたいなイケメンさんを募集しています。 お願いします。

明日は

明日はまだ埋まってませんので、誰か書きましょう!