将棋界には多くの?な風習があります。

中でも疑問なのはインターネット上での情報発信では掲示板が未だに使われていることです。
そしてその掲示板の多くがteacupを利用しています。
http://6515.teacup.com/tetuhaha/bbs
http://9318.teacup.com/shinano2014/bbs

インターネット老人にとっては掲示板は使いやすいものではありますが、
若い人にとってはとっつきにくいものです。
若い人への情報発信を考えるなら、twitterなどに移行すべきでしょう。

そこでteacupの掲示板をハッキングし、投稿された内容をtwitter(@NaganoShogiNews)に
自動で転記するツールを開発しました。

ハッキング方法としては以下の方法を用いました。

teacup掲示板はHTMLというマークアップ言語を用いて記述されています。
まずHTMLを解析しその中から掲示板に投稿された内容を抽出します。
抽出にはpythonと呼ばれる特殊なプログラミング言語を利用します。

pythonには任意のURLにアクセスした時にレスポンスを取得してくれる機能が備わっています。
その機能を利用します。

37




これでレスポンス内容が取得できます。
teacup掲示板は特殊な書き方がされているので、
取得したレスポンスは二重テーブル構造になっています。
そのため解析には二重ループを用います。

二重ループは使用方法によってはプログラムが停止しなかったり、 
計算量が膨大になり、解析できなくなることもありますので使用する際にはご注意ください。

30




二重ループをうまく使いこなすコツが上記のコードです。
HTMLに埋め込まれているクラスと呼ばれるキーワードを検索し、その情報をハッキングします。
このクラスからハッキングした情報の中に取得したい情報が存在しています。
ここまでできれば進捗50%です。

続いて投稿日時のハッキング方法です。
投稿日時はHTML上で表現されているので取得は簡単ですが、
pythonが利用している日時形式と違った形式で保存されています。
そのためツール側でフォーマット変換が必要になります。

フォーマットの変更には正規表現と呼ばれるハッキングにはなくてはならない手法を用います。
文字列の取得は¥sで。数字の取得は¥dを使います。

13


これで投稿日時のフォーマット変換 は完了です。
投稿日時はすでにtwitterへの投稿が終わったかどうかの判断に利用します。

続いて投稿内容の取得です。
投稿内容をそのまま取得してもいいのですが、
ハッキングツール対策でURLを投稿されたり特定の記号文字列を記載されることもあります。
そう言った余計な文字列が含まれていた場合を考えてより深くハッキングを行う必要があります。
 
ここではその手法は開かせませんが、先ほど使用した正規表現を応用したような手法を用いています。
 

こう言ったハッキングの手法を構文解析、または スクレイピングと言います。
pythonはスクレイピングによく用いられる言語です。

続いてtwitterへの投稿です。
twitterへの自動投稿はAPIと呼ばれる ハッキングツールを利用します。
pythonでAPIの利用は別のハッカーが開発したTwitterAPIを使えば簡単にできます。

またこのツールを自動で動かすために、クーロンと 呼ばれるツールを利用します。
クーロンはハッカー御用達のUNIXLINUX に付属しているツールで、自動化の手助けをしてくれます。

以上の流れでteacup掲示板へのハッキングを行いました。
teacup掲示板もハッキング対策でHTMLの変更を頻繁に行っているので
細かい点での修正は不可欠です。teacup掲示板との戦いはこれからも続きます。

ハッキングするならUNIX搭載のPC使いましょう。