「Mifuminator」に関する日記(2)

<前 次>

Qiitaとアンパンマン関連

Qiita

昨日のことですが、Qiitaに登録してみました。
mifumi323 - Qiita

単にプログラミングの知識を置いておく場所としては、自分のサイトで事足りていたのですが、細かい単発ネタとかをぼちぼち投稿していこうかなと。

アンパンマンDB

コメントの重複チェックを入れました。
今まではあとから管理画面で処理していたのですが、今回からは投稿前に止めます。
ただ、コメントが重複するシチュエーションを考えると、エラーで止まるのはよくないんじゃないかな、という気もしています。

アンパンマン紹介bot

管理側ですが、スケジュール表を任意を日付で出せるようにしました。
1年先の投稿をあらかじめ作っておくこともあるので、これまでの向こう1か月間の表示では足りなかったのです。

Anpanator

似ているキャラ似てないキャラ(または質問)を判定するのは勝手な基準で計算した類似度より、相関係数のほうがいいんじゃないか。
1に近ければよく似ていて、-1に近ければほぼ反対、0に近ければ無関係となるわけです。

1に近すぎるキャラは、同じキャラかもしれない、または差別化できておらず見分けがつかないことを意味します。
-1に近すぎるキャラは、どちらかが不適切な回答結果かもしれないことを意味します(本来は「いいえ」が多くなるのでみんな多少は正の相関を持つはず)。
質問についても極端な相関関係は問題がある可能性がありますが、逆に0に近いものは、独立性が高く良質な質問と言えます。

アンパンマンDBとアンパネイター

内部動作を中心に、もっと具体的に言うと、表示モード関連でいろいろ手を加えました。

まず、表向きには一つしか選択肢がなく実質無意味だった「表示モード」オプションの非表示化。
本来はPCモードと携帯モードを切り替えるつもりで作ったオプションだったのですが、テンプレートを別々に作るのが大変すぎたのと、ワンソースで両対応できたので、切り替える意味がなくなりました。
では他に何の意味があったのかというと、隠しオプションで、JSON形式やXML形式に切り替えることができるようになっていたのでした。
隠しオプション用に存在している以上、オプション自体を廃止することはできませんが、ユーザーが使う意味はないので、非表示化したのです。

2つ目が、表示モード切替オプションの指定方法の追加。
実は、表示モードの隠しオプションは、URLに指定することで有効化可能でした。
それが、若干回りくどい書き方だったので、拡張子と同じ形式で指定できるようにしました。
リクエストの処理の段階で昔の方式に書き換えることで実装しているので、昔の方式もまだ有効です。

3つ目が、アンパネイターのAPIのURL変更。
上記の表示モード切替オプションを最も積極的に使っているのがアンパネイターで、データをJSON形式で要求するリクエストを送っていたのでした。
これが、若干回りくどかったので、わかりやすい形にしたというわけです。

4つ目が、表示モードに応じて適切なContent-Typeを送信するようにしたこと。
元々の目的が表示の切り替えだったので、全部text/htmlで送信しちゃってたんですね。
でも、JSONやXMLはtext/htmlじゃないわけです。
JSONはJSONの、XMLはXMLのContent-Typeを送信するようにしました。

表示モードと関わらない部分では、検索キャッシュ機構の無効化。
今の仕組みじゃやっぱりキャッシュヒット率悪すぎなので、当面は使わないことにしました。
あと、キャッシュを使うかどうかの判定部分にバグがあったので、今となっては無意味ですが、直しておきました。

CocosSharpとMarkdownとWordPressとアクセス統計とMifuminator

CocosSharpとか使えるかなーとか思ったり。
サンプルがビルドできないけど。
funyakのフロントエンド開発には何を使うかいまだに決まってないんですよね。
一応WPFでそれっぽいものは作っているけれど。

各コンテンツで使っているマークアップ言語についても検討中。
アンパンマンDBははてな記法に似せて作ったTGWS_Wiki構文を使っているけど、手早く自作したものだから、機能不足なんですよね。
Markdownが最近ははやっているらしいけど、あまり私の理想には合わないような…。
段落を自動で入れてくれて、テーブルを簡単に作れて、柔軟なリンク指定ができて、普通の文章でマークアップが誤爆しにくく、カスタマイズ性が高い、というのが欲しいんですよね。
やっぱりTGWS_Wikiを改良するかな…。

WordPressのアカウントを管理者アカウントと投稿用アカウントに分割。
管理者アカウントは表に見せたくないものでね…。
いざWordPressを設置してみると、他のサイトで間に合うことが多くてなかなか最初の記事作成に着手できないですね…。

恐らく私以外誰も見ていないであろうアクセス統計のページを微修正。
ランク外に出たものは統計の対象外になってしまうために、再びランクインしたときに、ランクアップしてきたのか、全く新規の項目なのか区別がつきませんでした。
ランク外に出て見えなくなってしまった項目も、内部的には記録するようにして、正確なランク変動がわかるようになりました。

Anpanatorの実装のMifuminator、Packagistに公開しました。
mifumi323/mifuminator - Packagist
使い方とか全然書いてないし、requireしただけでは何も動かないので、まだ一般には使い物にはならないとか思いますが、Packagistの練習も兼ねて。

応答速度計測とWordPressとAnpanator

応答速度の計測にバグがあって、問題のあるページのURLが記録されていませんでした。
遅かったのが私一人しか使わない画面だけだったのでよかった。
手っ取り早く直しておきました。

んで、時間計測をアンパンマンDBにも仕込み中。
時間計測機能自体は実はかなり前から搭載済みで、ユーザーも設定で出すことができるのですが、それとは別に毎回やるやつです。

WordPress導入。
いろんなコンテンツやるうえで、どこのコーナーにも当てはまらないようなのって結構あるんです。
そういうコンテンツって、日記でちびちび書いていたり、はてなダイアリーに書いたりしていたのですが、内容を考えると、日付を重んじる日記は不適格かなって思うんです。
また、日付を重んじないとはいっても、書こうと思ったタイミングでさっと書ける軽快さも欲しいと思ったのです。
既存のコーナーのやり方は、基本的にはインターネット黎明期と変わらない、HTMLソースを書いてアップロードという流れで、軽快さには欠けます。
プログラミングコーナーみたいに、ある程度まとまった内容でないと話にならないようなものならともかく、こんなこと思ったよ、ここ行ったよ、みたいなのは、勢いのあるうちに書いてなんぼだと思うのです。
長々しくなったけど、要するに、日記じゃないコンテンツをさっさと書きたいからCMS導入することにしたということなのです。
内容についてはもう少し検討が必要になりそうなので、WordPressのページを公開するのはもう少し先になるかと思います。

で、今日はAnpanatorを正式版として公開。
プログラムの修正がほぼなくなってきたとか、ベータ版でいつまでも引っ張る意味もないと考えたので。
正式版にするにあたって、テキストと、ユーザーインターフェースあたりを少し修正しました。
ルールも微妙に変わっていますが、今まで大丈夫だったことが即NGになるようなことはないので、気が向いたときにでも見ていただければと思います。

Anpanator

エイプリルフールに何か楽しいことをするわけでもなく。
Anpanatorそろそろ正式版にしたいんで、最後の調整をしていました。

Anpanator

相関係数を用いた自動ブラックリストを実装。
ひとまず基準は甘めにしているので、すでにブラックリスト入りしている人しか自動ブラックリストには入りませんが。
これからは様子を見ながらパラメータを調整していきます。

Anpanator

ユーザーの回答履歴の妥当性を検査する仕組みを開発。
単純に、そのユーザー以外の人の回答と比較して相関係数を見ているだけですけどね。
あからさまにおかしいのはこれでわかるはずなのです。

Anpanator

キャラクター同士、質問同士の類似度を計算するプログラムを開発。
共通する回答・キャラクターごとの回答スコアの差の絶対値の平均で類似度を計算しています。
Anpanator開発室にそれぞれのトップ100を掲載しているのでよろしければどうぞ。

Anpanator

キャラクター同士、質問同士の類似度を計算するプログラムを開発中。
時々同じキャラが2個登録されちゃったりするので、これで類似度の高いやつから見ていけば見つかるって寸法なのです。

Anpanator

内部処理を変更。
質問選択アルゴリズムを拡張しやすい形にしました。
表面上の動きは全く変わっていません。

Anpanator

ベータ7公開。
最後までキャラクターがわからなかったときの検索機能を改善しました。
同じキャラクターの表記ゆれは一つの名前に名寄せしていたのですが、今までは正式な名前でしか検索できず、表記ゆれのほうだと見つけられませんでした。
これが、表記ゆれのほうで検索しても、正式な名前のキャラクターが出てくるようになりました。

Anpanator

ベータ4。
質問追加に関してバグがあったので修正しました。
Mifuminator側のバグだったので、そちらも併せてコミットしておきました。
あとは、嘘回答対策をもっと強化したいところですね。

AnpanatorとアンパンマンDB、TGWSAdminとアンパンマン日替わり紹介bot

AnpanatorとアンパンマンDBの連携を作りました。
AnpanatorからはアンパンマンDBに飛べるように、アンパンマンDBでは、Anpanatorの回答の一部を見られるように、できましたよ。

TGWSAdminとアンパンマン日替わり紹介bot。
HSTSの関係で行った修正の関係で、TGWSAdminからログインできなくなっていました。
そのせいでアンパンマン日替わり紹介botが一部機能停止。
新ログインに対応させて、また動くようにしました。
まあ、アンパンマン日替わり紹介botは将来的には完全にTGWSAdminから独立させる予定ですけどね。

Anpanator

アンパンマンDBとの連携を作成中。
AnpanatorからはアンパンマンDBに飛べるように、アンパンマンDBでは、Anpanatorの回答の一部を見られるようにするつもりです。

Anpanator

ベータ4。
今回の更新内容は大きく2つ。

  1. 画像資料のページへのリンク
  2. ツイートボタンの設置

画像資料のページへのリンクの方が今回重要な更新です。
そもそもアンパンマンDBでは、画像は「記事内容の説明に必要だから」「引用」しているという形で用いています。
アンパネイターも例外ではなく、「提示するキャラクターを判別するのに重要な情報だから」使っています。
しかしながら、これまでの実装では、引用が認められるために重要な要件「出典の明記」が抜け落ち、ただ画像を表示しているだけでした。
これでは何か言われたときに何も言い訳できません。
そんなわけで、出典を明記できる方法が必要だったのです。

また、アンパネイターに表示される画像は、表示エリアの関係上、小さいです。
キャラクターが大写しになっている場面でもなければ、視認性はさほど良くはないです。
そのため、拡大画像を参照する手段も必要でした。

出典と拡大画像、その両方を兼ね備えているのは、画像資料ページです。
アンパネイターのページ本体に出典を記載して拡大画像へのリンクも設置するというのも考えたのですが、両方あるページがある以上、そちらを参照するだけで足ります。
であれば、アンパネイターのページにあれこれ書いてごちゃごちゃさせるよりも、シンプルに画像資料ページにリンクすればよいというわけです。
出典と拡大画像へのリンクは、画像があるときにだけページ下部に表示されます。

ツイートボタンの方は、単に宣伝目的でつけました。
たくさんの人が遊んで初めて楽しくなるものですからね。
文面は本家Akinatorを意識しています。

本当はツイートボタンの方が先にできていたのですが、画像の出典の問題が解決するまで積極的な宣伝はするべきでないと判断して、今回の画像の件と同時に公開することになりました。
後は、アンパンマンDBとの連携と、判明しているバグの修正が終われば、正式版としてリリースできそうです。

Anpanator

ベータ3。
画像の複数表示に対応させました。
印象の大きく異なる複数の姿を持つキャラクター用の機能なので、ほとんどのキャラクターには複数画像はありません。
あと、サブ画像のほうはメイン画像より小さめに表示されます。

アンパネイター

一部のキャラクターでちょっといい感じの表示になるようにしました。
ただ、この機能は無制限に使われると収拾がつかなくなるので、管理人だけの機能にしています。

<前 次>