サイト更新ツール
携帯投票ツール


サイト更新ツール

現在、アニメ最萌トーナメントの毎日の試合後、サイトの試合結果のページを自動で更新するスクリプトを開発しています。
スクリプトのファイルにアクセスすることにより、htmlファイルを書き換えさせる予定です。
「ある程度」は進んでおり、現在のところ以下のような動作をしています。
予選時のためのスクリプトも作成していますが、より動作が複雑な本選トーナメント用の物を紹介します。
(試験段階ですので、元々のHTMLが適当です
このページ自体も、HTMLの標準には準拠していません)


更新前のHTML

Aブロック1回戦2回戦
宮野まゆ
(B型H系)
A01

8/03
(火)
A21

9/14
(火)
B21

9/16
(木)
B01

8/03
(火)
なずな
(ひだまりスケッチ×☆☆☆)
墨埜谷暮羽(クレハ)
(ソ・ラ・ノ・ヲ・ト)
明石さん
(四畳半神話大系)
巫女集団の中で中心の巫女(神代小蒔)
(咲-Saki-)
水野楓
(にゃんこい!)
草壁美鈴
(11eyes)
木山春生
(とある科学の超電磁砲)
野田ミキ(ノダミキ)
(GA 芸術科アートデザインクラス)
白藤杏子
(WORKING!!)
A01

8/04
(水)

(はなまる幼稚園)
右代宮真里亞
(うみねこのなく頃に)
轟八千代
(WORKING!!)
吉田一美
(灼眼のシャナS)
A01

8/05
(木)
入江
(Angel Beats!)
ゆの
(ひだまりスケッチ×☆☆☆)
御子神リム
(あにゃまる探偵 キルミンずぅ)


codereszのURL(と現在は実際の開期中ではないので日付)をリテラルで与え、スクリプトを動作させた出力結果

Aブロック1回戦2回戦
宮野まゆ
(B型H系)
79 A01

8/03
(火)
野田ミキ(ノダミキ)
A21

9/14
(火)
B21

9/16
(木)
B01

8/03
(火)
なずな
288なずな
(ひだまりスケッチ×☆☆☆)
墨埜谷暮羽(クレハ)
(ソ・ラ・ノ・ヲ・ト)
173 57明石さん
(四畳半神話大系)
巫女集団の中で中心の巫女(神代小蒔)
(咲-Saki-)
99 256水野楓
(にゃんこい!)
草壁美鈴
(11eyes)
91 124木山春生
(とある科学の超電磁砲)
野田ミキ(ノダミキ)
(GA 芸術科アートデザインクラス)
267
白藤杏子
(WORKING!!)
A01

8/04
(水)

(はなまる幼稚園)
右代宮真里亞
(うみねこのなく頃に)
轟八千代
(WORKING!!)
吉田一美
(灼眼のシャナS)
A01

8/05
(木)
入江
(Angel Beats!)
ゆの
(ひだまりスケッチ×☆☆☆)
御子神リム
(あにゃまる探偵 キルミンずぅ)


仕組みとしましては、あらかじめHTMLの各td要素にidを付しておき、codereszから各キャラの票数と順位を取得し、idのマッチによりtd要素の内容を置換しています。
ただし、いくつか問題があります。
現在のところ明らかになっている問題は、以下の通りです。
  1. 開発者が付け焼き刃程度のプログラミング能力しかないため、不具合が発生する可能性、悪意のある者によって誤動作を引き起こされる可能性、
    開発協力者がコードを読めない・再利用できない可能性、などが存在する。
  2. 現状では、
    開発言語にPHPを用いているため、PHPが利用できるサーバーでしか動作しない。
    Windows上での動作しか確認していないため、Linux上で正常に動作するかはわからない。
  3. 名前が長いキャラクターの場合、勝ち抜いた先のブロックでの表記を考慮する必要がある。
    上の例では、A01グループ勝者の名前が長めだが、さらに長い名前のキャラクターが勝利した場合、見た目にかなり問題が出る。
1、2についてはそのままなので、これといった解決方法があるものではありません。
1位のキャラクターを判定した段階でデータを一時的にファイルに書き出しておき、人間が表記を入力した後続きから動作させることによりすべての欠点を塞げるはずです。
ただし、この場合は悪意のある人間が不正な表記を入力する可能性があるため、スクリプトを動作させるのは運営人だけにするべきです。(後述)

また、問題点ではありませんが、仕様制定の上で決めかねているところがあります。
  1. スクリプトはどのように起動するか。
    リンクの貼られたphpファイルを開くことによって誰でも動作させられるようにするか、保護を掛け運営人だけが動作させられるようにするか。
  2. どのタイミングで更新するか。
    準確定後か、確定後か。

その他。
グラフのデータはどっからどう持ってきていたのかよく覚えていないので探してきます。
1位が複数人いる場合については、現段階では票数の着色のみをし、先のブロックは変更しないようにしています。
後で手で必要に応じてrowspanなりで修正するのが良策でしょう。(それをプログラムで組むのはさすがに複雑すぎます)
誰でもスクリプトを起動できるようにする場合、codereszに擬態した不正なデータのURLを入力される可能性がありますが、
「結果発表のレスのURLを入力させる」ようにし、そのレス中のcodereszのURLを使用するようにすれば、
2chスレのURLであること、名前に集計人のトリップが含まれていることを判定するようにすれば、
トリップキーが破られない限りは不正なcodereszを掴まされることはなくなるはずです。(現在未実装、今後実装予定)

元々このツールはサイト管理者の負担(試合結果を見る、適切なtd要素を探し出し書き換える、FTPでアップロードする)を減らすためのもので、
HTMLがわからない人でもサイト管理ができるように、と言うものではありません
そのため、確認の意味も含め、サイト管理者のみかもしくは運営人のみが更新できるようにすれば十分だという結論に達しました。


携帯用予選投票ツール

従来、携帯からの投票は、テキストエリアからキャラクター名をコピーしての投票でしたが、特に予選では人数が多く、大変な作業でした。
また、携帯は多くの場合JavaScript(などのローカルサイドのスクリプト)が動作しないため、それを利用した選択ツールが利用できませんでした。
そこで、PHP(サーバーサイド)を利用し、チェックボックスを使い投票先を選択できるツールを開発しています。
もちろん、PCからも利用できます。


初回アクセス(または選択キャラがいない)時の出力の例

一次予選01組(162名)

ミップル@プリキュアオールスターズDX2 希望の光☆レインボージュエルを守れ!
星村眞姫那@屍姫 玄
神宮寺弥子@ちゅーぶら!!
岩沢@Angel Beats!
胡桃沢梅@君に届け
園崎魅音@ひぐらしのなく頃に礼
鳳水蘭@れでぃ×ばと!
中野梓@けいおん!!
貂蝉キュベレイ@SDガンダム三国伝 Brave Battle Warriors
にゃさん@くるねこ
ここまで10名

(略)

ランファン@鋼の錬金術師 FULLMETAL ALCHEMIST
山本真弓@はなまる幼稚園
ここまで162名



最上と最下のキャラクターを選択して「確認」した例

一次予選01組

2名選択しました。
これで確定なら、コード・萌え文を添えて全体をコピーし、投票所へGO!規制中はこちら

選択しなおす場合は、下のボタンから行ってください。
チェック状況は記憶されています。また、チェックしていたキャラは分かりやすいように赤く表示されます。
※上のリストから削除しても、記憶からは削除されません。移動先のページで除外してください。


「再選択」後

一次予選01組
(計162名、2名選択済)

ミップル@プリキュアオールスターズDX2 希望の光☆レインボージュエルを守れ!
星村眞姫那@屍姫 玄
神宮寺弥子@ちゅーぶら!!
岩沢@Angel Beats!
胡桃沢梅@君に届け
園崎魅音@ひぐらしのなく頃に礼
鳳水蘭@れでぃ×ばと!
中野梓@けいおん!!
貂蝉キュベレイ@SDガンダム三国伝 Brave Battle Warriors
にゃさん@くるねこ
ここまで10名

(略)

ランファン@鋼の錬金術師 FULLMETAL ALCHEMIST
山本真弓@はなまる幼稚園
ここまで162名



キャラリストを読み込み、「@」の文字の存在する行をキャラ名として判定、「@」が存在せずかつ「組」が存在する行を試合名として判定し、キャラ名をinput checkboxとともに出力します。
チェックしてsubmitすると、$_POSTに”charax”が存在するか確認し、存在した場合はテキストエリアに書き込みinput hiddenを設定しつつ、数を集計します。
再選択した場合も同様で、存在する場合はchecked属性をつけ、さらに赤に着色しています。
input hidden値はユーザーエージェント(ブラウザ)側で改竄可能ですが、今回の利用方法では改竄されても問題ないはずなので、最も簡単な方法として用いています。
元々携帯用なので、非推奨要素・属性を使っています。





inserted by FC2 system