こちらに書くのも微妙な内容だけど、マジック関連だしやっぱりここでメモ。
本日は仕事の都合で新製品の機能紹介のセミナーに参加。
まあ大体資料貰って聞き流す感じなので、
ネットブックに暇つぶしにPHPとMySQLを入れていって
デッキレシピ作成ロジックをちょっといじる。
一応簡単なカードの検索はできることを確認し、
PHP経由でPDFを作成する方法も確認。
後は細かいロジックを詰めるだけですな。
ここで少し問題になるのがカードの検索方法。
1行に適当に書いても大体認識できるようにする為に、
以下の手順で解析していくことに。
まずは空白及びタブで区切って1行を複数の要素に展開。
次に英語、日本語、数字に仕分けを行う。
英語と数字の区別が微妙につきにくそうだったけど、
幸いというか、カードの英語名でアラビアン数字が使われているのは、
《十万本の矢集め/Borrowing 100,000 Arrows》
《関羽の千里行/Guan Yu’s 1,000-Li March》
の2枚だけ。
しかも区切りのカンマが入っているので、
数字:枚数
半角:英語名
全角:日本語名
と判断して各々マッチングすると上手くいきそう。
ちなみに「《」と「》」と「/」は解析前に半角スペースに変換する方向で。
ただ、半角は区切りのスペースと混ざってしまうので、
別の要素が出てくるまでは順番に半角スペースで接続してやると、
何とかなりそうですね。
例:
入力
《悪斬の天使/Baneslayer Angel》 1
文字列置き換え
悪斬の天使 Baneslayer Angel 1
悪斬の天使:日本語 Baneslayer:英語 Angel:英語 1:数値
悪斬の天使:
日本語として検索
Baneslayer&Angel:
出てきた順番に「Baneslayer[半角スペース]Angel」として英語名で検索
1:
数字のみなので枚数として認識
といった感じかな。
日本語の場合、ひらがなのみの場合は読みとして検索するのもあり。
ただ何も考えずに日本語名で見つからなかったらルビ検索に回す、
と言う考え方もアリだな~
まあ余計な負荷がかかりそうなので、普通に[あ-ん]+で検索して、
マッチングしたときのみルビ検索すればOKか。
一応上のロジックを仮組みして動くことは確認。
サイドボードの認識ができないけど、
現状でもMOのデッキリストの解析程度はできそう。
ここで問題となるのがカードを1つに絞りきれなかった場合。
単純に「アクローマ」とだけ入力された場合、
アクローマの祝福
アクローマに仕える者
アクローマの記念碑
アクローマの復讐
憤怒の天使アクローマ
怒りの天使アクローマ
と6枚マッチングしてしまう。
これに関しては一旦上記の結果をドロップダウンコンボで出力して、
ユーザー側に1枚選択して貰う方法を採用予定。
この当たりのUIって意外と面倒なんだよな~
ま、ボチボチ作ればいいか。
これ以上の曖昧検索は面倒なのでやらない方向で。
愛称とかまで入力できる様にしたらきりがなくなる…
デッキリストさえできればPDFに変換するのは単なる力仕事なので楽。
ま、今年中ぐらいを目処にある程度仕上げる方向で。
本日は仕事の都合で新製品の機能紹介のセミナーに参加。
まあ大体資料貰って聞き流す感じなので、
ネットブックに暇つぶしにPHPとMySQLを入れていって
デッキレシピ作成ロジックをちょっといじる。
一応簡単なカードの検索はできることを確認し、
PHP経由でPDFを作成する方法も確認。
後は細かいロジックを詰めるだけですな。
ここで少し問題になるのがカードの検索方法。
1行に適当に書いても大体認識できるようにする為に、
以下の手順で解析していくことに。
まずは空白及びタブで区切って1行を複数の要素に展開。
次に英語、日本語、数字に仕分けを行う。
英語と数字の区別が微妙につきにくそうだったけど、
幸いというか、カードの英語名でアラビアン数字が使われているのは、
《十万本の矢集め/Borrowing 100,000 Arrows》
《関羽の千里行/Guan Yu’s 1,000-Li March》
の2枚だけ。
しかも区切りのカンマが入っているので、
数字:枚数
半角:英語名
全角:日本語名
と判断して各々マッチングすると上手くいきそう。
ちなみに「《」と「》」と「/」は解析前に半角スペースに変換する方向で。
ただ、半角は区切りのスペースと混ざってしまうので、
別の要素が出てくるまでは順番に半角スペースで接続してやると、
何とかなりそうですね。
例:
入力
《悪斬の天使/Baneslayer Angel》 1
文字列置き換え
悪斬の天使 Baneslayer Angel 1
悪斬の天使:日本語 Baneslayer:英語 Angel:英語 1:数値
悪斬の天使:
日本語として検索
Baneslayer&Angel:
出てきた順番に「Baneslayer[半角スペース]Angel」として英語名で検索
1:
数字のみなので枚数として認識
といった感じかな。
日本語の場合、ひらがなのみの場合は読みとして検索するのもあり。
ただ何も考えずに日本語名で見つからなかったらルビ検索に回す、
と言う考え方もアリだな~
まあ余計な負荷がかかりそうなので、普通に[あ-ん]+で検索して、
マッチングしたときのみルビ検索すればOKか。
一応上のロジックを仮組みして動くことは確認。
サイドボードの認識ができないけど、
現状でもMOのデッキリストの解析程度はできそう。
ここで問題となるのがカードを1つに絞りきれなかった場合。
単純に「アクローマ」とだけ入力された場合、
アクローマの祝福
アクローマに仕える者
アクローマの記念碑
アクローマの復讐
憤怒の天使アクローマ
怒りの天使アクローマ
と6枚マッチングしてしまう。
これに関しては一旦上記の結果をドロップダウンコンボで出力して、
ユーザー側に1枚選択して貰う方法を採用予定。
この当たりのUIって意外と面倒なんだよな~
ま、ボチボチ作ればいいか。
これ以上の曖昧検索は面倒なのでやらない方向で。
愛称とかまで入力できる様にしたらきりがなくなる…
デッキリストさえできればPDFに変換するのは単なる力仕事なので楽。
ま、今年中ぐらいを目処にある程度仕上げる方向で。
コメント