「アンパンマンDB」に関する日記(67)

アンパンマンDBの、主に開発に関する日記。

<前 次>

無題

アンパンマンDB3開発中。
コメントまわりをつくっています。
TGscriptのユーザー情報と結びつける構想もありますが、当面は連携なして運用します。

無題

アンパンマンDB3開発。
詳細ページがそれなりに表示できるようになりました。
まだスタイルがろくに適用されていなかったり、外部リンクが処理されていなかったり、Wiki記法が適用されていなかったり、そもそも全く未実装の部分もあったりと、充分な状態には程遠いのですが、とにかく形にはなってきました。

無題

アンパンマンDB3の詳細ページを実装中です。
基本ロジックは一覧ページと変わりませんが、表示場所がいろいろ変わるのでそのあたりも調整しています。

無題

アンパンマンDB(現行)のトップページに今月の仲間へのリンクをつけました。
内容はとっくの昔に実装済みでしたが、さらに拡張するかもしれないと思ってこれまでトップに載せないでいました。
アンパンマンDB3では更なる拡張版を出すつもりですが、今のアンパンマンDB2ではそういう予定は無いので、今更ですがトップに載せたわけです。

無題

アンパンマンDB3、変装とかの、2つ1組になるリストを実装しました。
これでコメント以外のデータ取得はほぼできるようになったので、そろそろ一覧だけでなく詳細ページの開発も始められそうです。

無題

アンパンマンDB3の一覧ページにおけるページ送り機能を実装しました。
これも以前のものよりパワーアップしていて、一度に複数ページ送れるようになっています。
このへんは後ほど送るページ数をオプションで指定できるようにしたいと考えています。

モンハン3Gで、ラギアクルスを倒しました。
今度こそ撃退ではなく決着が付きました。
本当に勝てる気がしない戦いでしたが、どうにもクロノヒツギの毒が地味に効いていたようで、気付いたころにはラギアクルスのほうがずいぶん弱っていました。
で、勝てたのはいいのですが、チャチャがいなくなりました。
弟が3をやっていたので、途中でチャチャがいなくなることは知っていましたが、もうちょっと先だと思っていました。

無題

アンパンマンDB3のfunction形式のデータ表示を作りました。
特殊な形式での表示なので、他のとはちょっと違う処理を入れています。

無題

アンパンマンDB3のタイトルジェネレータを作りました。
具体的な使用は現行のタイトルジェネレータと全く同じです。
生成速度の改善と、Tweetボタンをアイコンに変更したのが主な変更点です。

無題

これまでのAmazonアフィリエイトの売り上げをまとめてみました(Aはアンパンマンの商品)。

年月個数売上額紹介料A個数A率
2009年8月110003000%
2009年10月811709411563%
2009年11月1012410434440%
2009年12月102399684010100%
2010年1月318990665267%
2010年2月13277759711185%
2010年3月917522613333%
2010年4月514362503360%
2010年5月915309538667%
2010年6月1022938765990%
2010年7月193881813411789%
2010年8月14245368581286%
2010年9月614477508467%
2010年10月1017112599770%
2010年11月514743516480%
2010年12月16445421562850%
2011年1月386948127782463%
2011年2月16388181008850%
2011年3月19335821083842%
2011年4月255105617651768%
2011年5月1825723902739%
2011年6月1417098557857%
2011年7月1116390574327%
2011年8月215420619001467%
2011年9月18248348151267%
2011年10月253432412061352%
2011年11月243994013981354%
2011年12月327067828281134%
合計4097963692796824359%
受け取れる紹介料は全体的に小学生の小遣い程度なのでお世辞にも儲かっているとはいえませんが、ちょっとでもアンパンマンを見る手助けになっていれば嬉しい限りです。

無題

初登場キャラの強調表示にも対応しました。
昨日までの実装ではページIDとページ名までを特定していました。そうすると、日付を取得するにはページIDで検索するだけなのでたいした負荷にはならないって寸法なのです。ページIDの特定が一番厄介な問題だったのです。
ただ、アンパンマンDB1のころと同じく日付のみで判定しているため、Aパートで登場し、Bパートでも引き続き登場した場合、両方で強調表示されます。
まあ、こういうことがあるのは初期の話だけだし、その日に初登場という意味で問題なかろうと思います。

無題

自動リンク機能、一覧表示上のみですが、実装できました。
機能的には現状のアンパンマンDB2と同等でありながら、速度は圧倒的に上です。
ただ、アンパンマンDB1に存在していた初登場キャラの強調表示は今のままでは難しそうです。

無題

自動リンク機能のためのSQLは出来上がりました。
割とシンプルで素直なSQLになって、インデックスさえ利いていれば速度も申し分無しです。
ただ、表示用データにリンク情報も含めなければいけないので、そのあたりである程度改造が必要そうです。

無題

アンパンマンDBの自動リンク機能、現状はページ名完全一致、別名完全一致、ページ名曖昧一致、別名曖昧一致の最大4回検索が行われ、表示速度の低下に繋がっていました。
アンパンマンDB3ではこのあたりをひとつのSQLに統合して高速化しようと思っていたのですが、この4回の処理はSQL化が面倒なので、なんとか工夫して、SQLは複雑化させずにうまく1回の検索で済むようにしたいところです。

無題

アンパンマンDB3の自動リンクつきリストを充分な速度で処理するためのテーブルを作っていました。
単純なサブクエリやJOINに帰着するのが一番簡単なので、JOINしやすさを第一に考えて。
あと、逆に検索で使わない重複データなんかは関数で算出することにして、省略するようにしました。

無題

プログラミングコーナーの当たり判定補助クラスにミスがあったので修正しました。
報告してくださったtetさんに感謝します。

アンパンマンDBは、登録するデータの重複を一部省略してデータサイズを削減したり、リンク機能無しのリスト表示など。
自動リンクを入れると結構骨が折れるのですが、それさえなければただの単純なサブクエリなのです。

無題

最大の難関であろうカテゴリ表示は達成したので、気分を変えてタイトルジェネレータを移植中です。
あと、カテゴリ以外の表示も少しずつ作ってはいます。

無題

アンパンマンDB3のアニメDBの登場キャラクターとかに代表される、関連項目のリストを実装しているのですが、なかなか難しいです。
こういったリストには自動的にリンクを作っているのですが、今回はそれをSQLでやろうとしています。
しかしこれ、単にサブクエリやJOINをすればいいというものでもないのです。
というのも、リンク先は一種類のDBに固定されているわけではなく、異なるDBにリンクされていることもあるのです。
例を挙げていえば、音楽の関連項目には、関連性の深い楽曲もリンクしていますが、その曲を題材にした話にもリンクしていることがあるのです。
そのあたりの振り分けをどうするか思案中です。

無題

アンパンマンDB3のカテゴリ表示、うまくいったと昨日いいましたが、キャラDBで表示確認してみたところ、とても実用に堪えない速度であることがわかりました。
というわけで、快適な表示を実現するべく、SQLを見直しました。
カテゴリは読みでソートしたかったのですが、これをSQLだけで行おうとすると集約関数に渡す前にソートしなければならなくて、それを実現するためにはソートするためだけに全件ソートするサブクエリを作らなければいけなくて、ということをやっていると重くなってしまいました。
最新版のSQLiteでは余計なサブクエリを作らなくて良いみたいなのですが、バージョンアップできない環境なので、SQLだけで高速化は無理そうでした。
そこで、SQLではカテゴリのソートは行わず、ソートのヒントまで作っておいて、実際のソートはPHPプログラムで行うことにしました。
これで5秒が0.05秒になりました。

無題

アンパンマンDB3のカテゴリ表示うまくいきました。
サブクエリの中で使っていたパラメータを外に引っ張り出してきて外側で評価することでスコープの問題を回避。
ただ、単純な列挙なのでこれで済みましたが、将来的にはもっと複雑なことをしたいのでもっと研究が必要そうです。

モンハン3G、チャナガブル討伐しました。
これで★★★★にいけます。
★★★★といえばギギネブラが出てきたはず…。

無題

アンパンマンDB3のカテゴリ表示うまくいかないです。
どうにも入れ子にしたサブクエリの中まで外側の値が入っていかないようで。
ローカル環境では動いていたのでちょっと困惑気味です。

<前 次>