過去に作ったソフトウェアのメモ-第一弾-したらば巡回くん(1)

 したらば掲示板では誰でも掲示板を作ることができます。1つ掲示板を作ったとしましょう。その掲示板は18のカテゴリーのどれかに属し、さらにそのカテゴリーの中で1から順番に数字が割り当てられていきます。例えばカテゴリー名internetで100番目に作られた掲示板ならinternetの番号100が割り当てられられます。番号はカテゴリーごとに独立して数え上げられていきます。URLはhttps://jbbs.shitaraba.net/カテゴリー名/番号/の規則で作られています。上の例ではhttps://jbbs.shitaraba.net/internet/100/になります。

 

上の仕様に則って、したらば掲示板を巡回するソフトウェアをかんたんに作ることができました。最初はseleniumの存在を知って、pythonで下書きして、クラスで整理したくなってjavaで書き直すという感じでした。

 

このソフトウェアを使ってすべての板を巡回するのは2回ほどやったことがあります。どちらもアスキーアートに関連がありそうな板をリストアップするためです。PCが壊れてブックマークが消えてしまったので…。

 

○今後の変更点

何を扱えばいいのかがわかってくるにつれて、見えてきたこと。実験的な活動なのでフィードバックを考慮しないとだめだめですよね。まあそれなりに安定して動いているので、変更する気力があまりないのが大きな問題点ですね。

 

・logの洗練

例えばlogを保存したのは良いものの、いつの記録なのかがわからないと不便。思いつきで書いたconsole.logをそのまま出力させているため、機械的に処理しやすい形になっていない場合がある。logを処理する時、数が多いのでプログラムを組んで処理しようとしますが、前文のようでは面倒。

 

・役割の明確化

ソースコードでは、巡回するソフトウェアの部分が1つのクラスに収まっている。まあ設計の時点で適当だったから仕方ないです。これは直したいです。

 

・AA関連板をどう判定するか

巡回はうまくいくとしましょう。となると巡回とは別にどういう板ならリストに上げるか?というのが問題になります。ある板がAAの関連板かの判定は、あるレスがアスキーアートであるかの判定に大きく依存する形となっています。ここの判定もある種の実験的な統計値を設定して、閾値を超えたらリストアップする、という形をとっています。統計値と言ってもあくまでも実験的であり、全く裏付けはありません。ここはどうにかスッキリさせたいです。

 

seleniumからHTTPクライアントへの変更

巡回時にはbrowserを起動して、それをドライバーからアクセスするという設計です。そういった設計が生み出す過程は、必ずしも自動巡回と目的の板のリストアップという目的にフィットするものではありませんでした。javascriptが好き勝手に動いたり、browserとdriverのコネクションがうまくつかなかったりして、エラーで停止…代替案を模索していました。HTTPクライアントならAPIにてリクエストとレスポンスを繰り返すだけなのでうまくいきそうです。ただ前回(1年くらい前)HTTPクライアントで動かした時、ロケールの設定を弄らないと全然反応しなかったのです。pythonからjavaに環境を変えたことで、うまく動くことを祈ります。実際にbrowserを起動するというのは、開発途中は視覚的なフィードバックがたくさんあってよかったです。

 

次回はこのソフトを動かしてみた結果を中心にメモを書いていきたいと思います。