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

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

<前 次>

無題

アンパンマンDBバージョン3のデータベース自動構築プログラムを作っています。
「アンパンマンDBとしての」データベース構造を設定すると、SQLiteのデータベースに自動的にテーブルやら何やらを作るという代物です。
ただ、自動構築のタイミングを誤ると、予期せぬ結果、最悪データベース構造が壊れることもあるので、なるべく慎重にいきたいところです。
とりあえず、自動更新のタイミングを自由に制御できるローカルでは随時更新、公開サーバーではローカル環境での変更結果を一気に適用、という形でやっていこうと思います。
今のところ、全データベースの共通項を作成するところまでできています。

無題

アンパンマンDBバージョン3開発中。
管理画面のDB構築フォームの機能を一通り実装し終えました。

無題

アンパンマンDBバージョン3の管理画面のうち、データベース構造編集画面が出来上がりました。
これでやっとデータベースをいじれるスタートラインに立ったことになります。

無題

タイトルジェネレータ直しました。
特殊パターンでしか出ない症状だったのでなかなか見つけられませんでしたが、逆に言って特殊パターンでは必ず発生するバグでした。
タイトルジェネレータは基本的に「AとB」というパターンを生成するようにできていて、名前を指定して生成すると、このAとBどちらかに指定した名前が入るようになります。
通常は多少の変則パターンでもAとB両方を使うので、バグが発現することはありません。
しかし、Aしか使わない特殊パターンというのがあって、そのときはAがパターンそのものになります。
その場合、指定した名前はBにしか入らないにもかかわらず、Bを使わずにタイトルを作るため、指定した名前が出ないという現象が起こるのです。
特殊パターンでは、Bを使わない代わりに置換パターンを使っているので、置換パターンのところにBを入れる処理を入れるようにしました。

無題

アンパンマンDBのタイトルジェネレータで名前を指定して生成するとたまに指定した名前が出ないバグがあるようです。
特殊なパターンのときにしか出ないようなので調べるのが大変そうですが、なんとか調べてみます。

無題

TGWS共通のデータベース処理を作成中。
アンパンマンDBバージョン3ではエラーが起きたら自動的にデータベース構造を修正するので、データベース構造を調べたりテーブル構造をいじるプログラムを作っていました。

無題

管理画面のデザインは大体できてきました。
ええ、これにロジックをねじ込むのです。
・・・・・軽く気が遠くなります。

無題

アンパンマンDBバージョン3の管理画面作っています。
とにかくデータベース構造の編集画面を作ってしまわないことにはなかなか身動きが取れないのです。

無題

カタカナをローマ字表記にするプログラムを作っていました。
アンパンマンDBでのページ名作成に補助的に使えそうです。
とりあえず、「完璧」より「それなり」を目指す方向性です。

無題

アンパンマンDBバージョン3構築中。
まだまだ管理画面もできていません。
しかしここができると一気にいろいろできるようになるのです。

無題

アンパンマンDBバージョン3開発。
管理画面のDB構成など。
デバッグ周りなども強化しました。

無題

複雑な検索条件を構文解析するPHPプログラムを作成中です。
アンパンマンDBバージョン3用ですが、構文木まで作れればアンパンマンDBに限らずいろいろ応用が利きそうです。
PHPにはyaccとかlexみたいなのが見当たらないけど、少なくとも字句解析は正規表現でなんとかできそうです。
構文解析については、これも正規表現で頑張るか、昔頓挫した言語作成の延長線上でやるか、どちらかで頑張ることになりそうです。

無題

アンパンマンDBのカテゴリやシリーズで、そのカテゴリに最もよく合うエピソードやキャラクターを優先表示とか、そういうのやってみようかな、って思っています。
たとえば「バトルもの」シリーズであれば、『アンパンマンとバイキン黒騎士』のように。
ただ、どのように表示するのかまでは特に考えていないのです。

無題

アンパンマンDBバージョン3、DB構成フォーム作成中。
以前のDB設定ファイルは持ち込んでいるのですがそのままでは使い物にならないのです。

無題

やっぱりSmarty使うことにしました。
変数の割り当てやヘルパー関数の用意などを考えると、新規に自分でテンプレートエンジンを作っていると時間がかかってしまいそうなのです。
私が作りたいのは「スマートな設計のプログラム」ではなくて、「しっかり動くプログラム」なのです。
理想を追うあまりいつまでたっても何も動かなくては何の意味もないのです。

無題

早速テンプレートをPHPコードに書き換え始めたわけですが、変数とか関数の扱いをあまり考えていませんでした。
テンプレートは関数を使って呼び出すことになるのでグローバル変数は使用不可。
テンプレートに変数を渡す方法を考える必要あり。
関数は常にグローバルスコープなので呼び出しに関しては何の問題もなし。
逆に、テンプレート用関数の定義をするときにどうするのかが問題。
このへんを充実させれば扱いやすくはなるかもしれないけど、今度は普通のテンプレートエンジンと何が違うのかってことになりかねない…。

無題

アンパンマンDBバージョン3で、デザインとロジックの分離、デザインを複数用意したいという希望からテンプレートエンジンのSmartyを導入していたのですが、どうにも今回はSmartyにあまり利点がないような気がしてきました。
Smartyは高速なテンプレートエンジンですが、その高速化の根拠はテンプレートをPHPコードにコンパイルして、ほとんどの場合単にPHPファイルをインクルードするだけで済ませてしまいところにあります。
それだったらむしろSmartyなど間に介さず直接インクルードすればもっと速くて手っ取り早いわけです。
Smartyはデザインとロジックの分離のため、テンプレートファイル中では極力PHPコードを実行できないようにしてあります。
これはデザイナーが余計なコードを書いてプログラムをバグらせるのを防ぐという点では素晴らしいのですが、個人開発では単に自分一人が気をつければ済むだけの話です。
そもそも、PHPそのものが最初からテンプレート的な使い方をできるように設計されていて、Smartyはそのテンプレート的な使用法に特化したものに過ぎないのです。
そう考えると、Smartyはただのインクルードより設定が大変なだけでメリットがあまりないなぁ…と。

無題

アンパンマンDBのコメント機能を映画公開に合わせて一部復活させようかと思います。
あくまで映画を見た感想などを書けるようにするための復活であり、情報提供などは基本的に受け付けません。
時期は7月2日正午から。
「すくえ!ココリンと奇跡の星」「うたっててあそび!アンパンマンともりのたから」の2ページに限って復活させます。
システム的な準備が整ったら改めて告知します。

無題

アンパンマンDBバージョン3開発中。
基本的なナビゲーション周り。
まだまだ表に出る部分には手が回っていません。

<前 次>