2020年12月31日木曜日

フリゲ紹介: SPOLOUS

SPOLOUS はグラディウスによく似た横スクロール型2Dシューティングゲームです。 グラディウスと同様、敵を倒すとカプセルが出現するので強化しながらクリアを目指します。 体感的な難易度はグラディウスのハードモードより難しい。



まずはグラフィックの凄さに驚かされますが、意表を付いた攻撃が多く歯ごたえがある作品です (左下)。 グラディウスによく似た UI ですが、異なる点はあります。 まずは様々な種類の攻撃タイプが選べます (右下)。 クリアする度にクレジットが溜まってさらに選べる種類が増える仕組みになっており、やり込み要素が強いです。

また自機がやられてしまった時にステージの最初からコンティニューになるのではなく、 やられた場所からオプションがステージ上にバラ撒かれた状態で復活します。 すばやくオプションを回収すれば、やられてもすぐに復帰できます。 さらにイージーモードだと自機がやられてもオプションは残ったままになります。 グラディウスは一度やられてしまうとステージのやり直しが大変でしたが、これはすごく良い改善。



とはいえ弾幕が結構濃いので、必ずしもオプション復活ができない場面は多いと思う。 スクロールが早めのステージは特に要注意だし、 弾幕が濃いところで死んでしまうとなかなかうまくいかない。 オプションを失わないようにシールドを温存しながら守り重視のプレイをするといい感じ。 ただ私くらいの腕だと完全クリアは難しそう。



弾幕の激しさは画像でも何となくわかるのではないかと思います (左下)。 ただステージは弾幕が激しい一方、ボス戦はそこまででもない (右下)。 しかしどのグラフィックも凄いなあ…。 このグラフィックを見るためにプレイしても良いくらい。

歯ごたえのある横シューティングを求めている人はぜひプレイしてみて欲しい作品です。

2020年12月30日水曜日

Tablacus Explorer を使い始めた

Windows のエクスプローラの不安定さにはげんなりすることが多いです。 最近は様々なタスクを、圧縮ファイルのまま操作することが増えていたのですが、 Windows のエクスプローラはスペックが良くてもコロコロ落ちます。

仕方なく安定動作の2画面ファイラーを使って対処していたのですが、 同時にたくさんのタスクをこなしていると、2画面ファイラーはディレクトリ移動が大変になってくる。 2画面ファイラーは同時作業数が増えると対処しにくいのが弱点ですね。 そんな時も Linux だとターミナルを気軽に開いて対処しやすいのですが、Windows だとターミナルとの親和性がどうにも低い。 そこで PC の年末大掃除ついでにタブ型ファイラーを色々と試してみました。



その時に見付けた Tablacus Explorer がめちゃくちゃ使いやすかったです。 タブで画面をまとめられるし、UI が簡潔だし、キーバインドも結構効くし、メモリ消費量も小さいし、 プラグインでいくらでも拡張できるし、開いていたディレクトリを保存できるし、圧縮ファイルをそのまま操作できる。 おまけにファイルをタブにドロップするとコピーもできて最高。 とにかく使いやすくて欠点が何一つ見つからず、即採用に至りました。 まさに欲しかった要件が詰め込まれた、感動もののファイラーでした。 ターミナルファイラーでもこんな感じの動作を再現できないかな?

たぶん今年一番の作業効率改善。 2011 年からあったんだなあ。おすすめです。

2020年12月20日日曜日

フリゲ紹介: ウィズメルクリウス -perficio-

ウィズメルクリウス -perficio- は華麗なグラフィックの育成シューティング。

若き錬金術士である主人公の元にやってきた人精霊の子を育て、絆を育みながら共に古代の錬金術に挑む 「育成シミュレーション+錬金シューティング」ゲームとのことです。 人工精霊メルクリウスは育て方次第で様々な容姿、性格に変化しながら成長し、その能力も刻々と変化してゆきます。

メルクリウスは錬金したマテリアルをあげるとステータスアップします (左下)。 武器防具を錬金することもでき、シューティングの武器防具になります。 非常に種類も豊富で、好きなものを自由に選べます。 メルクリウスを色々と育成しながら、イニティウムの書の解読を試みるのが本作の目的となります (右下)。 私は育成していったら美女に成長しましたが、育て方次第では紳士になったりするのかな。

錬金というとガチャを想像しますが、武器防具の錬金も、イニティウムの書の解読も、 すべてシューティングを介して行われるのは、地味に新鮮でした。 スマホゲーは勝手にアイテムが降ってくるけど、解読=シューティングは面白い発想だし、他にも活かせそう。



肝心のシューティング画面がこちら (下)。 操作はすべてマウスです。 マウスで操作するシューティングは ぶる〜むふぁんたじあⅡ がありますが、やはり誤動作を起こさないような精密動作が必要です。 マサムネゲエムスさんの作るゲームはどれもグラフィックが凄い。 ボスはどれも魔法石版 (?) で、これは解読対象ということなのかな。



自由錬金 (武器防具生成) だとレベル20くらいまでは適当でもクリアできるくらいの難易度です。 レベル50くらいになると歯ごたえが出てきて、装備やレベルが微妙だと苦労するくらいの難易度になってきます。 YouTube などを見ていると、レベルを MAX まで上げるとかなり難しそうだけど、 普通にストーリークリアするぶんには十分な育成すれば簡単に感じるかも知れない。 どちらかと言えばハイスコアを競うイメージのゲームかも。 ステージのレベルを上げ、支配率 (たくさん敵を倒す) を高めて、スターを集めれば集めるほど点数が上がるようです。 支配率 100% にするのはさすがになかなか難しい。

2015年には既にあったんだなあ。とても楽しめる良作です。

2020年12月11日金曜日

タッチ50音ドリル、タッチABCドリルを作った

最近は自動採点付きの漢字ドリルをたくさん作ってきましたが、50音 や ABC は作ってなかったなあと思い、作ってみました。 あまりひねりはないので、単純にきちんと覚えているかどうかの確認に使うのが良いかと思います。



特色が何もないとつまらないので、発音確認できるようにしてみました。 同じようなもので手書きできない系の市販品のガジェットが 3,000〜6,000円で売られてるので、地味に使いやすいと思う。 最近は Web Speech API という便利なものがあるので、簡単に作れました。 念のため結構色々な Deep Learning モデルも試してみたのですが、英語だったらどれを使ってもイケてます。 ただ日本語は Deep Learning モデルも Web Speech API も単独音だと駄目駄目です。 そこで UTAU 音源を利用させてもらいました。


英語の書き順について

50音はやはり書き順を重視しますが、アルファベットは書き順を強要しない作りにしました。 日本だとアルファベットも書き順を強要させたがるけど、本来アルファベットには書き順がありません。 複雑な形状の漢字は綺麗に書くためのコツが必要と思いますが、アルファベットは形状も簡単なので書き順はいらないと思ってます。 筆記体にすると書き順とかぐちゃぐちゃになるしなあ。

他にも理由はあります。 AI 文字認識の観点から語ると、ひらがな/カタカナ/漢字/簡体字/繁体字 は極めて高い認識率を誇ります。 ひらがな/カタカナは98%以上、簡体字は 96% 以上 (人間は 96.13%) 出ることがわかっています。 文字種の多さから考えるとこれはかなり高い数字です。 さらに「くずし字」のような現代人では読めない文字でさえ、同じくらいの精度が出るのです。 くずし字は一見ぐちゃぐちゃに見えても、読める人が読めば見分けられるということで、地味に驚くべきことだったりします。

なぜかというとアルファベットは 92% しか認識できず、数字が混ざると 75% しか認識できない文字だからです (EMNIST で検証)。 筆記体のせいで形状変化が大きかったり、形の似た文字が多いので、コンテキストを利用しないと文字認識できないんですよねえ。 ちなみにコンテキストを利用すると OCR では 98% の認識精度が出ます。 まあ手書き認識と微妙に差異があるので一緒にするのはよくないかも知れないけど、とにかく手書き文字の認識精度が本質的に低いことは間違いない。

つまり、ひらがな/カタカナ/漢字/簡体字/繁体字は文字単体が読み取れることが大事であるのに対し、 アルファベットは本質的に文字単体の綺麗さが重視されず、おそらくコンテキストベースでの見分けやすさが重要ということです。 このような技術的知見からも、書き順を強要する意味はあまりないように思います。

筆記体について

筆記体は複数文字を一緒に書くからこそ意味があると思うので、今回は作りませんでした。 あと筆記体のなぞり練習を作るのはけっこう難しいです。 だいたいの原因は、フォントの仕様がバラバラなところにあります。 大きさが一定なら横幅を取得してセンタリングすれば良いですし、それは実際にやってます。

ただ筆記体は文字の大きさがバラバラ、立幅も横幅も位置もバラバラだったりします。 推定はできるけど正方形に収めるのが難しい。 レンダリングを繰り返してサイズを調整するか、フォントごとに調整するか。 ついでに言えば a,h,g みたく文字ごとに表示位置が異なる問題があるため、なんか意外と面倒くさい。 初学者用のアプリなので、そこまでしなくてもいいかなあと思いました。 まずはゴシック体で綺麗に書くところからですね。

2020年11月23日月曜日

DXWnd で古の名作アクションをプレイしよう

Freem! で時々見かけるアクションエディター作品。 特にアクションエディター+ で作られた作品は動かないのでプレイできていなかったのですが、最近、解決方法があると知りました。 以下の記事で紹介されている DxWnd です。
アクションエディター+ 作品は、昨今の Windows 環境では全画面で表示される上に互換性の問題で猛烈に動作が遅くなってしまいます。 しかし DxWnd を導入すると、アクションエディター+ 作品を自由なウィンドウサイズでスムーズにプレイできます。 詳しい導入方法は上記事を参照してください。 自分のために画像で設定の要点だけまとめておくと、だいたい以下のような感じ。 Edit → Add で Path に起動したい exe ファイルを登録し、あとはダブルクリックでゲームを起動できます。



最近ひそかに様々な作品をプレイしていたのですが、どの作品も非常に面白かったです。 古めの作品は難しいのが多いけど、中にはサクサク系のもあります。 アクションエディター+ の名作って結構たくさんあって、特におすすめの作品は以下です。 以前紹介したこともある VampunishX の前作品もアクションエディター+ だったのですね。 Vampunish は Direct3D だと DxWnd を使わなくても動作するので、DirectShow 回りが良くないみたいです。


古の名作は、今プレイしてもまったく色褪せない完成度です。 特に 血の鎮魂歌 青の勇者+ の作者様であるまくろじゃさんは、非常に多くの作品 (18作品!) を公開しています。 昔の悪魔城ドラキュラくらいの難易度の作品をがっつり楽しめます。

2020年11月21日土曜日

形態素解析辞書の使用感まとめ

最近、自然言語処理でよく利用される辞書やコーパスを利用して、ニ文字熟語や三文字熟語、用例の生成を試みてきました。 三文字熟語が少し強敵で、これまでたくさんの辞書を利用して実験しています。 たくさんアプリを作ってクロスチェックできるようになり、バグも減り知見も溜まってきたので、結論をまとめておきます。

成果物

ちなみに熟語生成の成果物はこちら。 以下のライブラリを利用して 12こくらい アプリを作ったりもしてます
また熟語生成やゲーム制作を通じて、既存の自然言語処理には様々な問題があると改めてわかりました。 そこで痒いところに手が届く、ライブラリも色々と作りました。 作る気はまったくなかったのですが、既存のライブラリではできないことが多すぎて作らざるを得なかったものたちです。 コンセプトは O(1) で検索できて省メモリです。

自然言語処理によく使われる辞書まとめ

熟語生成について語る前に、良い機会なので自然言語処理においてよく使われる形態素解析辞書や語彙辞書についてまとめておきます。 形態素解析辞書や語彙辞書を使うと、簡単に熟語生成ができます。 JMDictFurigana は有名ではないけど、かなりたくさんの語彙が登録されています。 有料では BCCWJ などありますが、利用が限定されているので扱いません。 有用な辞書はすべて入れたつもりですが、他にもあるでしょうか。

名称語彙数ライセンス
Juman (dic) ver 7.0141,434BSD 3-Clause
JMdictFurigana ver 2.2.1195,098CC-BY SA
Juman (all) ver 7.01215,838BSD 3-Clause
IPADic ver 2.7.0334,221IPADic License
NAIST-jdic ver 2010-07-30485,863BSD 3-Clause
JMndictFurigana ver 2.2.1581,408CC-BY SA
SudachiDict (small) ver 2020-07-02768,030Apache Licence 2.0
UniDic (cwj) ver 2.1.2872,831GPL / LGPL / BSD 3-Clause
UniDic (csj) ver 3.0.1.1875,923GPL / LGPL / BSD 3-Clause
SudachiDict (+core) ver 2020-07-021,619,350Apache License 2.0
SudachiDict (+full) ver 2020-07-022,927,811Apache License 2.0
mecab-unidic-neologd ver 2020-09-103,384,963Apache License 2.0
mecab-ipadic-neologd ver 2020-09-105,572,307Apache License 2.0


ちなみに語彙量が多ければそれで良いかというと、そうでもないと思います。 たとえば neologd にはほとんど同じ語彙で「〜」の数だけ違うものが大量に登録されています。 これはなぜかというと、既存の形態素解析器は「やゔぁあああい」「わーーーーーい」といった文字列は本質的に解析が難しいからなんですよね。 おそらくこの問題を少しでも改善しようと統計的に出現頻度の高いパターンを語句として登録しているのだと思います。 ただ形態素解析以外でこれが使えるかというと、ほとんどのケースで使えないでしょう。 よって用途に応じた選択こそが大事なのだと思います。 実際にいろいろ触って気付いたこともメモとしてまとめておきます。


熟語や用例の生成に一番良いのは形態素 N-gram

では熟語を生成するのに一番良いのはどれでしょうか。 結論を先に言ってしまうと、語彙辞書からではなく Web から抽出した N-gram からの抽出が最も適していると思います (爆)。 成果物たる marmooo/ngram-idioms では、NWC 2010 という形態素 N-gram コーパスを利用しています。 いきなりちゃぶ台返しのような結論ですが、実際にやってみてわかった事実なのでどうしようもない。 N-gram は実際に使う言葉の頻度分布をそのまま反映するので、自然な熟語が生成できます。 N-gram 以外の形態素解析辞書には読みデータが付いている利点があるのですが、分布の利点はどうしても捨てられませんでした。 ちなみに N-gram 以外の方法では、私が作った熟語生成ライブラリの紹介順で生成結果が良かったです。 Juman 辞書では熟語生成をしていませんが、これは単にやる気の問題です。 固有名詞が扱いにくく、ふりがなも一部にしかないので、やる気が出なかった。

N-gram が一番良かったと結論を述べてしまいましたが、辞書ごとにどのような違いがあったか軽く説明したいと思います。 事前に特徴を知っていると、どのような利用シーンでどの辞書を使えば良いか、わかりやすくなります。 こちらの情報のほうがはるかに有用です。

辞書の特徴

NAIST-jdic, IPADic

熟語の生成はそれなりに安定していますが、N-gram より使われない熟語がよく出てきます。 ニ文字熟語だと問題にならないのですが、三文字熟語になると顕著です。 NAIST-jdic と IPADic はかなり近いデータではありますが、NAIST-jdic が上位互換になっています。 IPADic より語彙数も多いですし、より正確な生起コストが記載されている利点があります。 IPADic と NAIST-jdic で迷ったら、普通は NAIST-jdic で良いと思います。 NAIST-jdic は同音異義語や表記ゆれをきちんと扱っており、クオリティの高い辞書だと感じました。 ただ実際に生成してみると、三文字熟語に関しては IPADic のほうがずっと良いです。

熟語に限らない話でもいくつか気になることはあります。 どちらの辞書も、色々遊んでみると形態素の基準が怪しいことが多いし、ふりがなのデータが怪しい印象です。 精度を求めていくとやや限界があるかも。

JMndictFurigana, JMndictFurigana

JMndictFurigana, JMndictFurigana は有名ではないものの、かなり大きな辞書です。 JMndictFurigana は固有名詞を大量に含んでいるので、熟語生成に使うとしたら JMdictFurigana になります。 「気配り上手」など形態素ではなく用例がたくさん登録されている辞書なので、形態素解析には向きません。 生成される熟語は、実用上は使わなそうなものがそれなりにありますが、生成結果は N-gram, IPAdic, NAIST-jdic の次くらいにいい感じです。 熟語より用例に使える辞書ということでしょうか。 ただコスト値がないため頻出熟語のみを抽出といったことはできません。 この特徴は、熟語生成には少し使い勝手が悪いです。 あとライセンスにも注意が必要です。

SudachiDict

SudachiDict は非常に網羅性の高い辞書です。 ただ品詞 (特に固有名詞) についてはたまにノイズがある印象です。 ちなみに full は使うことがほぼないものばかりなので、生成に使ったのは small + core です。 使いやすい辞書であることは間違いありませんが、生起コストはあまり納得がいかない。 形態素に分離することで生起コストが歪むとかあるんだろうか? この問題が大きいため、熟語生成に関しては N-gram に軍配が上がります。 コスト値などを強く意識する必要がなく網羅性の重要な解析用途では、真っ先に利用を検討すべき辞書だと思います。 実例としては、こども漢字辞書 です。 何となく作ってみた辞書ですが、常用外漢字はとにかく用例が不足するとわかりました。 N-gram では頻度順に抽出できて自然な用例を生成できる一方、頻度が下がってくると若干信頼性に不安が出てきます。 SudachiDict を使って補完すれば、常用外漢字もサポートしやすく、とてもうまく機能しています。 同音異義語や表記ゆれ、そして正規化まできちんと扱っており、クオリティの高い辞書だと感じました。

熟語生成特有の問題としては「年生」が固有名詞または接尾辞、「一年生」が固有名詞として出現するため、少し排除が難しかったりします。 IPADic や NAIST-jdic では「年生」は接尾辞、「一年生」は普通名詞です。 接尾辞・接頭辞の完璧な合成は難しい (例えば接頭辞「黒」と「年生」はどう考えてもつかない) し、一般固有名詞は会社名が大量に混ざってくるので取り扱いが難しい。 あと「千島風露」みたいな珍しい花名が普通名詞に入ってきたりもするので、色々と排除の手段を考える必要があります。

UniDic

UniDic は辞書が大きく、語句のカバー率は N-gram より高いのが利点です。 IPADic より厳格な方式で作られた辞書ですが、生成される熟語はまず使わないものばかりが上位に来てしまいます。 二文字熟語はいい感じですが、三文字熟語はとても使う気になりません。 この問題はおそらく UniDic の「短単位」基準による構築が原因となっています。 IPADic では「小学校」を語彙として登録していますが、UniDic では「小+学校」として分離するため、「学校」のみ語彙登録されています。 つまり UniDic に登録されている三文字の語彙は、短単位の考え方から漏れた例外しか登録されていません。 まず使わない熟語ばかり生成されるのは、当然とも言えます。 熟語生成には向きません。

UniDic は中身もかなり他の辞書と違うので、注意が必要です。 まず語彙素を基本単位として、それが表層形として登場するという考え方で作られています。 表層形は書字形出現形の活用を受けたものということです。 かなり注意が必要なので「以下」という言葉を例に挙げてみます。 表層形は「下」という語彙素を持ち、「シモ」という語彙読みを持ちます。 UniDic の読みデータは語彙素に付随したものになっているので、表層形に対応する読みは「シモ」になります。 しかし当然ながらそのような読み方をすることはありません。 よって「以下」の読みを知るためには、語彙素 lemma と表層形が一致しているものだけを見ないといけない。 動詞などはさらに活用があるし、表記ゆれも多発します。 「表層形に付随する読みがない」のが原因で、特定ケースでは取り扱いが難しい辞書です。 あと色々なライブラリを作って比較するとわかるけど、ちょっとノイズ多いかな。

先に例として挙げた「一年生」問題はさらに複雑で、UniDic では「一 / 年 / 生」とすべて分離して扱います。 短単位だと確かに正しい気はするのですが、熟語生成に使える辞書ではないことが、こういったところからもわかるかと思います。 SudachiDict と同様に網羅性が重要なときか、短単位で処理したいときに使う辞書ですね。

mecab-ipadic-neologd, mecab-unidic-neologd

現状で最もサイズが大きい辞書は mecab-ipadic-neologd です。 mecab-unidic-neologd もおそらく中身は一緒なのですが、UniDic に合わせて作っているので数が違うのだと思う。 これらの辞書は、普段使う語彙を蓄積した辞書というよりは、未知語や新語を蓄積した辞書です。 冒頭で述べたように neologd にはほとんど同じ語彙で「〜」の数だけ違うものが大量に登録されています。 熟語生成には向きません。


熟語の読み推定の課題

熟語の生成は N-gram が一番良いとわかったものの、N-gram には読みデータがないという致命的な問題があります。 「それなら形態素解析器を使って読み推定すれば良いのでは?」と思われる方もいるかも知れません。 しかしここまでの説明で勘の良い人は気付いたでしょうが、三字熟語の読み推定はそう簡単ではないです。 巷でよく使われる Mecab、というより形態素解析器そのものが、読み推定に主眼をおいて作られている訳ではありません。 IPADic を使えば読みのデータが不足しますし、UniDic を使っても短単位に即した読みしかできません。 熟語の推定には問題が生じやすいことがわかります。 実際に試してみると、Mecab (+IPADic / UniDic) は、あまり使えないかな…。 これは三字熟語の読みは必ずしも短単位によって決まらないものが多くあるからだと予想できます。 mecab-ipadic-neologd も短単位での登録なので、精度が上がるとは思えません。 三字熟語は読みデータ自体がないので、諦めるか手動登録しかないかな。 ちなみに諦めました。

そのような調査をしている時に、形態素解析器だととにかく遅いことに気付きました。 単純な熟語の読み推定は案外利用シーンが多い気がして、形態素解析器を使わないほうが良いのではと思いました。 短単位の問題以外にも、「おととい」「いっさくじつ」のように複数の読み方がありながら、無視されてしまう問題もあります。 たかだか数文字の語彙に形態素解析器で読み推定するのはあまり効率が良いとは思えません。 色々考えた結果、パターンマッチングで上記の辞書のふりがなを O(1) で検索できるふりがな辞書を作りました。 辞書は marmooo/yomi-dict で配布しています。 今回はふりがな辞書として公開していますが、ほんの少しコードを書き換えれば IME 用の辞書もすぐに作れます。 真面目に説明すると話が長くなるので、詳しくはこちらのページを見てください

他にもデータチェックやデータ生成のために色々なライブラリを作っています。 熟語生成に興味のある人がいるかわかりませんが、興味があれば使ってみてください。

2020年11月17日火曜日

タッチ書道ドリルを作った

タッチ書道ドリル を作りました。 タッチ漢字ドリルタッチ習字ドリル では王道たる教科書体・明朝体を学びますが、 タッチ書道ドリル は一味違います。 プロの書道家の文字を、手軽にドリルで学べます。 書道もデジタル化の時代ですね。



ちなみにどんな文字が学べるかと言うと、特に格好良いのがこちら。もちろん他にもたくさんの文字種があります。 いざ作って表示させてみると、プロの文字は子供が真似るのに良いものもあれば、教育には向かないものもあり、玉石混交です。 ただいずれにしても、プロが書く字をゲーム感覚で学べるのって結構面白いんじゃないかな。



遊ぶときは タッチ書道ドリル と同様、芯先の細いスタイラスペンをおすすめします。 凝り始めるとキリがないので、安くて対応機種の多いものをまとめてみました。



様々なフォントに対応するために、技術的には面白い処理をしています。 フォントの太さは作者に委ねられており、毛筆・楷書・行書フォントは太さがかなりバラバラです。 また bold などの weight が存在しないフォントのほうが多いです。 バラバラの仕様のフォントに対して統一的な処理で解答を作るのは、それなりに頭を使います。 対応するアルゴリズムとしては、線の太さを推定して、擬似的な bold を canvas で実現することで、統一的に処理できる解答を内部で生成しています。 最初はまさかそのような画像処理が必要とは思っていなかったので、なかなか面白かったです。

処理の統一化はできたけど、書き順がないため完璧は難しく、採点は少し甘いかも。

2020年11月12日木曜日

タッチ習字ドリルを作った

タッチ習字ドリル を作りました。 基本機能はタッチ漢字ドリルと一緒ですが、 筆圧まで考慮するのでタブレットで習字ができます。



指でもできますが、おとなしく芯先の細いスタイラスペンやタッチペンを買ったほうが良いです。 芯先の太いタッチペンだと最初の反応までに時間が掛かりやすいこともあって、あまりうまく書けません。 芯先の細いスタイラスペンはやや割高ですが、習字セット+お絵描きセットを揃える気持ちで購入する必要があります。

ただ芯先の細いスタイラスペンって選び方が難しいです。 まずは対応機種をよく見て購入しないとまったく動かないで涙目になります (1敗)。 対応機種が広いものを選べば、のちのち書い直す必要がなくて良いんじゃないかな。 安くて良さげなものをまとめておきます。



スタイラスペンは凝り始めるとキリがなくて、筆圧感知の感度によって値段がとにかくブレるし、方式によって対応機種がどんどん減っていきます。 高いものによっては 1万円くらいする。 私はコスパの良いものが好きなので、上記をおすすめしときます。 ただ書き味は、ふつー…でしょうか。 芯先の太いタッチペンよりかは明らかに書き味は良いものの、 アプリの使い勝手としては「ちょっと筆ペンっぽいかな」くらいの精度です。 もっと高いペンだと凄いのかも知れませんが、試してません。 スタイラスペンはもちろんのこと、タブレットのほうも筆圧感知の方法がバラバラなので、確認していたらお金が溶ける。

リアルな習字感を求めている人は、 現時点ではやや高価なタブレットとスタイラスペンが必要になりそうです。 現状では若干お手軽感がないかも知れないアプリですが、 何年後かに手頃な値段でできると嬉しいな。

2020年11月1日日曜日

タッチ漢字ドリルを作った

タッチ漢字ドリル を作りました。 小さなアプリの割には、珍しく時間の掛かった作品です。 色々思いはありますが重要なことを最初に言うと、 統計的な出る順で覚え、自動採点をしてくれるドリルです。

採点はかなり真面目に作っていて、文字の大きさや書き順、書く位置、綺麗さをすべて考慮します。 手書き認識だと、文字が綺麗かどうかの判定は不安定であまり使えません。 自画自賛ながら割とよくできた採点システムになってると思います。 ちなみにトメハネは綺麗さの点では評価しますが、重視していません。 トメハネは元来それほど重視されておらず、文化庁も重視していませんが、現代の教師だけが重視しているのが現状です



なぜ作ったか=手書き指導は重要だけど大変

まずは文字を綺麗に書くという作業も、怠れば学力に大きく影響があると私は思っています。 色々な子を見ていると、勉強が苦手な子ほどこの基礎からできていないことが多い。 しかし文字を綺麗に「書かせる」のは思ってるより大変です。 書き順を見張るのは大変だし、口うるさくいうのもストレスを溜めるだけです。 先生が対処するのは思ってるよりずっと大変ではないでしょうか。 考えれば考えるほど、各自の努力が必要な領域だと思っています。 できるまでやるシステムこそが必要ではないでしょうか。

改善のために必要な力は、多くの場合は注意力と集中力であるように思います。 勉強が苦手な子や文字が汚い子ほど、文字を写す作業そのものに問題があることが多い。 なんでそんな右端に文字を書くんやとか、大きさがバラバラやんけ、みたいな。 私はこれ、文字を写すゲームのルールの勘違いによって起きている問題だと思っています。

とはいえ「幼児期の手先の器用さに個人差が大きい」問題があるし、 最近はパワハラとかも大変だろうから、口の出し過ぎにはやはり気を付ける必要がある。 真面目に何十人も見てたら大変だろうなあと思ったので、自動化してみました。 手先の器用さは強く要求しない一方、注意力/集中力は要求する採点をしています。

今後の予定

課題がない訳でもありません。 文章で問題を出題していないので、同音異義語や難問は出題しにくいです。 この辺の実装はかなり迷いましたが、今回作ったアプリは漢字を綺麗に書いて覚えることに主眼を置きました。 漢字単位で覚えるのと、熟語単位で覚えるのは少し違うと思い、難問の出題はしませんでした。

漢字の理解度にも色々あって、たとえば「家」に付随する漢字を綺麗に書けるようになっても、 テストをしてみると「家族」の漢字が書けないことは高頻度で起きそうです。 UI もごちゃごちゃになりそうで、漢字と熟語の練習は切り分けようと思いました。 一つのアプリに組み込み過ぎないほうが、実装的にも楽です。 今回のアプリには実装してませんが、実のところ検討に 99% くらいの時間が掛かってます。 そのうち追加アプリを公開したい。

タッチ漢字ドリル は、文字を綺麗に書く練習として復習気味に使うのがおすすめです。 今のところドリルの重要性が高い中学生まで対応しています。 ぜひ使ってみてください。

Tips

手書きアプリは画面のへんなところを触って誤爆する問題が起きがちですが、タッチ漢字ドリル はだいたい対処済みです。 ただ iOS は 4本指 / 5本指で触るとアプリを切り替える機能を OS が提供しています。 これだけは防ぐことができません。 気になる人は、[設定] → [一般] → [マルチタスクとDock] → [ジェスチャ] を無効にしてください。

高価なタッチペンやスタイラスペンは必要ありません。 芯先はなるべく細いもののほうが見やすくて良いですが、例えば以下で十分です。



2020年10月19日月曜日

漢字のよみがな辞書 yomi-dict / homonym-ja を作った

最近、形態素解析器に読み推定をさせて遊んでいました。 しかし遅い! 熟語や成語のよみがなを調べるだけならパターンマッチングのほうが良いのではと思い、 O(1) で検索できる漢字のよみがな辞書 yomi-dict を作ってみました。

Mecab と比較したベンチマーク結果はこちら。 形態素 N-gram コーパス から抽出した、ひらがな + 漢字の頻出成語 (ex: 走る, 赤い などの原形品詞) を対象とし、11,730 件を読み推定させています。 Mecab より早いことは自明なので、オーダーだけ見れば良いです。

ライブラリ速度精度
yomi-dict20.967ms99.92%
Mecab (IPADic)148,606ms99.94%


だいたい 7,000 倍くらい違うけど、思ったよりは Mecab も早いんだなと思いました。 形態素解析器の中で最速と言われるだけのことはあります。 yomi-dict の読みミスは単純に登録されているかどうかです。 登録されてなくても仕方ないかな、というものしかありません。 Mecab は読み登録されていない成語をすべて正しく読めていましたが、多少の推定ミスがありました。 「ず」と「づ」を間違えたり、変な間違いを結構してます。

上記の結果は IPADic で読み推定させており、ずるいと感じる人もいるかも知れません。 もちろん mecab-ipadic-NEologd などを利用してもいいと思います。 ただ上記の結果で重要だと思うのは、頻出成語の推定ならパターンマッチングでほぼ完璧に処理でき、多少のエラー処理で対処できるということだと思います。 このほんのわずかな手間と比較して、mecab-ipadic-NEologd はメモリ使用量が大きすぎる (1.2GB) のですよね。 一方の yomi-dict は 14MB しかメモリを消費しません。

ところで語句の読みではなく、読みに対応する語句を取得したい場合もあると思います。 IME があれば困ることは少ないと考えられるので、homonym-ja (同音異義語の辞書) も作ってみました。 こちらも O(1) で検索できる省メモリな辞書になっています。 「ぶっちゃけ同音異義語ってどれくらいあるんよ?」という疑問を持って作ってみましたが、想像以上に多かった。Web版 もあります。



追記: ついでに spelling-variants-ja (表記ゆれの辞書) も作ってみました (Web版)。

2020年10月13日火曜日

魔法の塔 2020 まとめ

最近、魔法の塔のようなパズル系 RPG (通称: WWA) がたくさん出てきています。 2020 年は豊作で、WWA Wing 以外でも、おそらく 8 つもありました。

魔法の塔のようなパズル系 RPG はかなりの量をプレイしていますが、どれも操作性も良く面白かったです。 みんな違ってみんな良い。 終盤にかけてダレることがほぼ起きないので、息抜きに最適のゲームと思っています。

感想…となるとなかなか難しいジャンルなので、代わりにまとめページを作ってみました。 ノーマルモードのプレイ難易度を順番に並べると、以下になるでしょうか。


新春ビッグチャレンジ!GOGO初詣

新春ビッグチャレンジ!GOGO初詣 は 主人公を 6人選べますが、いずれも高難易度です。 かなりうまくやらないとクリアは難しい。歯ごたえを求めている人に向いています。


魔塔のマリスの最後のトレジャーハント

魔塔の国のアリス

魔塔のマリスの最後のトレジャーハント魔塔の国のアリス は直感と少し違うところに正解ルートが多いイメージで、他の作品より難易度が高いです。取捨選択をしっかりしないと、なかなか難しい。


ALICE IN WONDER WORLD

新春! レヴィアたんの挑戦状

魔塔のマリスと神のカギ

ALICE IN WONDER WORLD新春! レヴィアたんの挑戦状魔塔のマリスと神のカギ はバランスの良い作品です。 序盤でゲームの方針を掴むことが大事で、ポイントさえ掴んでしまえばあまりハマらず、サクサクいける難易度です。


リリムルワールドへようこそ!

魔塔の悪夢のマリス

リリムルワールドへようこそ!魔塔の悪夢のマリス はさらに難易度が低めです。 変なことをせず直感通りに進めれば、サクサクとクリアできます。 ロジックで詰めるというよりは、敵をなぎ倒しながらクリアしたい人向けです。


どの作品もハードモードとやりこみ要素が用意されているので、初心者から上級者まで楽しみやすいです。 魔塔シリーズのハードモードはかなり難しく、上級者でも苦労すると思う。 ボリュームを楽しむなら リリムルワールドへようこそ!新春ビッグチャレンジ!GOGO初詣 でしょうね。 ALICE IN WONDER WORLD新春! レヴィアたんの挑戦状魔塔のマリスと神のカギ も結構ボリュームがあります。

どれが一番好きかは「人による」と思うので、ぜひ全部プレイしてみましょう!

2020年10月2日金曜日

Google Spreadsheet をブックマークシステムにしたら最高だった

今さらですが、Google Spreadsheet がブックマーク管理に良いかもと思いました。 これまで Google Bookmarks やはてなブックマーク、その他たいていのブックマークサービスを使ってきました。 しかし読んでる量が多くなると、どんなサービスでも必ず破綻するんですよね。 何が問題だったかまとめると、だいたい以下になります。



ヘビーユースを想定していない既存サービス

そもそも私がブックマークをたくさんする理由は、後からその月のことを俯瞰するためです。 情報を俯瞰すると見えてくることがたくさんあります。 しかしそのようなユースケースを、ほぼすべてのサービスが想定していません。

(1) まずは視認性の問題があります。 保存する量が多くなると、タイトル文字を敷き詰めないと、とても処理できなくなってきます。 最近のナウな UI は余白だらけで相性が最悪でした。 古めの UI だとまあまあ使えるのですが、もっと大きな問題が色々あります。

(2) どれも再利用性の問題がありました。私はだいたい月単位で物事を思い出しています。 この月に確かこんな便利なライブラリが紹介されていたな、この月には良いアイディアがあったなと思い出します。 最近はググっても良いものが見つからないことが多いので、これが最も効率的な情報検索手段でした。 しかし月単位でブックマークを表示ができるサービスはほぼありません。 また少しタグ付けをミスしたり、管理構造を変えようと修正し始めると、もう大変。 既存サービスはとても管理できる代物ではありません。

(3) ブックマークの削除も大変です。 指でポチポチ消すか、まとめて全部消すか。 面倒だからといって掃除を怠ると、最終的にはブックマークが溢れかえり、破綻します。 何十回もの破綻を経て、ブックマークは「後から振り返った時に重要になるもの」だけにしていますが、それでも既存サービスでは管理不可能でした。

上記の問題を解決する方法がなくて、仕方なくHTMLにブックマークをベタ打ちするようになりました。 自分用に調整しやすいため、これはすこぶる使いやすかったです。

しかし今度は置く場所が問題になりました。 気軽な更新もしにくくなりました。 使いやすいのでブログに載せていたのですが、たいていの人はあまりニュース見てないはず。 これでも保存したい量の 1/5 くらいまで圧縮してるんですが、やはり多くの人には邪魔かなと思っていました。 GitHub に保存したり、Netlify に上げることも考えたんですが、あまりにも使い勝手が悪い。 Twitter でふぁぼっている人もたくさんいるけど、再利用性が最悪で、なおかつ凄い見にくくなるのでブログのほうがまだ穏やかだと思う。

割と困っていたのですが、ふと Google Spreadsheet に書いたらどうなるだろうと思いました。 実際にやってみたら、なかなか良かったです。


おすすめの使い方

Google Spreadsheet をブックマークシステムにするとき、まずはオートフィルタでカテゴリごとに検索できるのが良いですね。 カテゴリの付け方も、何十回もの破綻を経た結果、せいぜい10こにするのが良いと思ってます。 タブ機能を使えば月ごとにも管理できますし、どの月にあったかあやふやになった時も、すべてのタブから検索する機能があるので、非常に使い勝手が良いです。

ということで直近数ヶ月のニュース関連をパパっと移行してブログをサッパリさせました。 まだ新しいものしか反映させてませんが、少しずつ移行する予定です。 ついにブックマークの完璧な管理方法を見つけたかも?

2020年10月1日木曜日

手書き100マス計算、タイプ100マス計算を作った

手書き100マス計算タイプ100マス計算を作りました。 自動採点機能が付いており、子供 1人でも遊びやすい 100マス計算です。



最近、数字認識を少し頑張ってみたのですが、その結果、AI もほとんど完璧な認識をしてくれるようになりました。 精度については Zenn にまとめたので、興味がある人は読んでみてください。 これだけ精度が良ければ今までより踏み込んだ UI のゲームが作れそうと思い、またゲームを作ってみることにしました。

小学生の算数ゲームとして一番有名なのは 100マス計算なので、作ってみました。 100マス計算は私も小さい頃は学校でよくやった (ただの100問計算だったかも) のですが、最近の子はそのような計算練習をしたことがない子のほうが多いようです。 でもねえ、やってると明らかに計算速度が変わるので、私はやったほうが良いと思ってます。

100 マス計算には良いところが色々あるのですが、一番良いのは、早く解くためにほんの少しだけ短期記憶を利用するところです。 短期記憶をほとんど使ってない子は結構な割合でいるので、かなり良い訓練になります。 現代社会では思考力も重要なのですが、まずはこのようなほんの少しの脳のトレーニングから始めて、 頭の回転速度を高くしないことには思考力も活かせません。 あと 100 マス計算は 3 分間もあればできる勉強なのですが、その 3 分間の集中が持たない子も結構います。 やると決めた時にスイッチを入れる訓練にもなるのではと思ってます。

学校で 100マス計算をやらなくなった要因は 3つくらい考えられて、1つは競争教育をやめたことによるものだと思います。 2つめは教科書の内容が変わったことです。 少し昔より範囲が少し増えたことで練習が減ったので、計算練習に取り組む時間が減ったと言われています。 ただもっと昔は範囲がずっと多かったはずなので、関連性は不明ですね。 3つめは採点が面倒ということです。3年生くらいになると少し時間が掛かるので、面倒でやらなくなってしまったかも知れません。

1, 2 はともかく 3 の採点が面倒という部分に関しては、今回作ったアプリで完全解決です。 自動採点をしてくれるので、子供 1 人でも遊べます。 結構よくできていると思うのでおすすめ。 ついでに以前作った、手書de暗算タイプde暗算 も遊びやすく改良しました。 暗算のほうが問題としては少し難しめで頭を使うので、100マス計算のほうが導入には良いかも知れません。

あと今回作った100マス計算は、35÷3のような余りのある割り算も出てきます。 小学校高学年で算数が苦手な場合、このへんの計算が非常に遅いことが多いので、割と長く使えるアプリになってると思います。

2020年9月13日日曜日

こども漢字辞書を作った

こども漢字辞書 を作りました。 最近 Microsoft が漢字のアニメーションを公開 していたのですが、 ふと似たようなデータがあったような、と気付いたのがきっかけです。

個人的により良い漢字辞書があると良いなあとは多少思っていたので、これも夏休みの自由研究で作ったものです。 特徴は以下。
  • こどもの学習に無駄のないUI
  • SVGによる効率的なアニメーション
  • 意味調べや練習に適した用例の提示




かなり使いやすくできたと思うのですが、どうでしょうか。 利用データのライセンスを引き継いで、コードも CC BY-SA 4.0 で公開 しています。

いざ作ってみると、漢字の読みは常用漢字でさえブレが大きくて、どう対処すべきか迷いますね。 まあ国のデータのほうが正しいのでしょうと判断しましたが、頻出ケースでフィルタリングする手もあるのかも知れません。

2020年9月12日土曜日

お手軽にダークモード対応 (+処方箋)

ダークモード対応は意外と面倒なのですが、少し前に以下の記事がバズっていました。
これは素晴らしいと思ったのですが、白黒反転しただけではいくつかうまくいかないケースがあります。 その処方箋についてまとめます。

1. 色が薄くて読みにくいよ!

Bootstrap や典型的ないくつかのテンプレートでは、白黒反転しただけではわずかに読みにくいケースがあります。 そこで私が最初に思い付いたのは、以下のコードです。 配色の調整がしやすいのでほとんどのサイトでおすすめできます。
html[data-theme="dark"] {
  filter: invert(1) hue-rotate(180deg) brightness(1.5);
}
しかしこの方法ではうまくいかないケースがあることに気付きました。

2. filter 付けたくないものにも付いちゃうよ!

一番わかりやすいのは、getUserMedia などでカメラ映像を canvas に書き出す時です。 たとえば遊びで QRコードリーダーを作ってみた のですが、こういった処理をすると ホラー画像ができてしまいます。 html タグに filter を掛けると filter を付けたくないタグの調整ができなくなるため、さて困りました。

応急処置としては以下のようになるでしょうか。 復元不可能になる brightness(1.5) を諦めて、canvas だけ filter を掛け直します。
html[data-theme="dark"] { filter: invert(1) hue-rotate(180deg); }
html[data-theme="dark"] canvas { filter: invert(1) hue-rotate(180deg); }

…いかにも頭の悪いコードなのですが、簡単さを追求するとこれが一番な気がします。 色が薄くてどうしても読みにくいタグがあれば、そのタグだけ brightness(1.5) などを掛ければいいと思います。 もっと良い書き方、あるでしょうか。

3. Firefox の表示がおかしいよ!

Firefox には html, body 要素に対する background-color の filter が効かない仕様があるため、 上記のプロパティを適用しても、body 以下の要素しか反転しない問題があります。 これがどういった時に問題になるかというと、ページが短く body 要素がページ全体を覆っていない時、 下側の背景が反転しておらず不格好になります。 なので、Firefox は html 要素に色指定をつける必要があります。
html[data-theme="dark"] { filter: invert(1) hue-rotate(180deg); }
@-moz-document url-prefix() { html[data-theme="dark"] { background-color:black; } }

4. prefers-color-scheme を考慮したい

以下でいけます。最初の一回だけ色が反転するくらいなら気にしないで良いかも知れません。 私は 3 + loalStorage で十分と思ってます。
html[data-theme="dark"] { filter: invert(1) hue-rotate(180deg); }
@-moz-document url-prefix() { html[data-theme="dark"] { background-color:black; } }
@media (prefers-color-scheme: dark) {
  html { filter: invert(1) hue-rotate(180deg); }
  @-moz-document url-prefix() { html { background-color:black; } }
  html[data-theme="dark"] { filter: invert(0); }
  @-moz-document url-prefix() { html[data-theme="dark"] { background-color:white; } }
}

5. body の外側を完璧にする

3, 4 で一見完璧に見えるお手軽ダークモードですが、 スマホでページを一番上/一番下まで行き、さらに上下に動かそうとした時に、 ダークモードではない時の色設定が残る問題があります。 html で全体に filter を掛けた時、body には filter が掛かるけど、 その外には掛からないみたいなそんな感じでしょうか。 body そのものに背景色を指定しないと駄目なようなので、直すのは簡単ではありません。

暫定的な解としては以下があると思います。 html ノードに属性を付与するのではなく body に theme 属性を付与します。 body 直下のテキストノードの色が変わらないなどの制約はありますが、 font-color で対応すれば一応は何とかなる。
body[data-theme="dark"] { background-color:black; }
body[data-theme="dark"] > * { filter: invert(1) hue-rotate(180deg); }

全称セレクタを使ってるのは少し気になります。 body の下は普通なら header,main,footer,template,script くらいしかないから、別に問題ないのかな。 ただ body 直下にノードを生やす系のライブラリがあると面倒なことになりそう。 3 とどちらがいいか微妙なところ。こっちのほうが良いかな。

2020年9月7日月曜日

漢字しりとり、カタカナしりとりを作った

漢字しりとりカタカナしりとり を作りました。 ゲームとしては定番中の定番ですが、真面目な漢字しりとりのゲームは、あるようでなかった気がする。 漢字の読みは IPAdic からの熟語生成 を利用しています。



これも初学者用に GitHub でコードを公開 (漢字しりとりカタカナしりとり) してます。

漢字のしりとりは、二字なら余裕なのですが、三字は私も難しく感じるくらい。 原因としては IPAdic で生成される熟語の頻度に問題があります。 三字熟語はほとんどすべてが低頻度に張り付いてしまうために、難易度調整が難しくなっています。 今のところ良い解決策は浮かんでいないので、漢字の三字モードは、上級者向けということにしておきます。 やはり熟語を調べてもらうことが重要なゲームです。

IPAdic から頻出熟語を生成してみた

以前作った熟語ジェネレーター は、n-gram ベースでした。 他の作り方として IPAdic を使った方法もわかっていたので、作ってみました。

実際に作ってみた結論としては、
  1. IPAdic には読みデータが付いているメリットがある
  2. IPAdic のほうが低頻度領域のノイズは強い
  3. その一方で頻度分布自体が不正確なので n-gram のほうが利用しやすい
  4. カタカナ熟語は IPAdic だとやや不安定
  5. カタカナ熟語は IPAdic だとインターネット語に弱い
4 はわかりにくいので例を挙げます。 例えば「カタログ」で grep を掛けると、「カタログプロシージャ」「カタログデータ」などがヒットします。 これは熟語として使えるかというと、正直使いにくいと思います。 データとかプロシージャといった言葉はあらゆる単語に連接可能だからです。 つまりカタカナ熟語の生成は IPAdic を使っても微妙で、目視できちんと排除するしかありません。 このとき頻度情報が問題で、よく使うような熟語のコスト値も 3999 (低頻度) に分類されてしまっています。 n-gram 方式のように、頻度順に目視で対処というのが難しくなってます。 よって用例も多く、正確な頻度順にまとまっている n-gram 方式のほうが扱いやすそうという結論になります。

漢字に関しては、生成されたデータを目視で確認した限り、数が多ければ IPAdic でも問題ありません。 ただ数が少なくなってくると IPAdic はあまり使わない熟語が生成されやすい傾向は見て取れ、データ量の少なさによって生じる頻度問題を感じます。 n-gram 方式のほうがより良い熟語が取れるように思います。 とはいえ IPAdic には読みが付いているメリットがあるので、読みを活用したい場合には IPAdic が良さそうです。

まー n-gram に Mecab などで読みを付与する方法もあるとは思うんですが、エラー訂正面倒なので…。 それやるともはや形態素解析器の重み計算をやり直すようなものなので、今回はパス。 ちなみに IPAdic / n-gram どちらの場合もフィルターを付けないと、熟語として使いにくいことは変わりません。 これは n-gram からの熟語生成 と同様のフィルターを流用すると、いい感じでした。

IPAdic を使った熟語生成も コードを公開 しました。

Node.jsで複数のリソースからsleepしながらfetch

Node.js の非同期処理が苦手過ぎるので、Node.js で複数のリソースから sleep しながら fetch するサンプルを載せておきます。 API を使う時によく使う割にハマりやすい。


const fetch = require('node-fetch')

function sleep(time) {
  const d1 = new Date();
  while (true) {
    const d2 = new Date();
    if (d2 - d1 > time) {
      return;
    }
  }
}

// ここで API の仕様に沿った実装をする
function fetchFromABC(id) {
  return new Promise((resolve, reject) => {
    fetch('https://hoge.com/' + id)
    .then(response => response.json())
    .then(data => {
      // process.stdout.write(id);  // 進捗表示
      sleep(1000);  // sleep しながら同期的に取得
      resolve(data);  // 取得データを返却
    });
  }));
}

// sleep しながら取得する
async function fetchFromABCMultiple(ids) {
  var info = {};
  for (var i=0; j<ids.length; i++) {
    await fetchFromABC(ids[i]).then(res) => {
      info[i] = res;
    });
  }
}

var ids = [1, 2, 3, 4, 5];
fetchFromABCMulpile(ids).then(info => {
  console.log(info);
});

書き方に慣れないとこのへん本当にハマりやすいよなあ。

2020年9月3日木曜日

フリゲ紹介: 人生オワタの大冒険2

人生オワタの大冒険2 は、一発当たったら即死の初見殺しアクションゲームです。 人生オワタの大冒険 (無印) を知ってる方も多いと思いますし、 YouTuber の食い付きがすごいので紹介するまでもないかも知れませんが、とても良い作品でした。

平成が終わり、AA も規制が付いたり、Flash も終了が予告されている中の大人気で、 人生オワタの大冒険の知名度って凄いんだなあと感じました。



相変わらずの初見殺しで死にまくるのはいつも通りでしたが (左下)、 ワンマップごとにやり直せる仕組みがあるので、あまり理不尽さを感じずにプレイできるのが良いですよね。 今回一番の難所はおそらく、やる夫&やらない夫戦だと思います (右下)。 たぶん無印の tanasinn よりずっとたくさん死んだと思う。 単純なパターン動作だけど 2 体いるだけでこんなに難しくなるとは。 ラストはどこか切なく、そして満足感の高い ED でした。



ところで 2ch の AA ってゲームにするのがすごい簡単なんですよね。 人生オワタの大冒険クラスのものを作るのは大変としても、手頃な HTML ゲーム作成には割とおすすめだったりします。 また動く AA ってやっぱ良いよなあと思って、ファンアートと、簡単に動くブログパーツを作るための ネタ Framework (Svelke) を作ってみました。 ファンアートはボスで登場する、抜け毛のハゲしいおハゲです (なんとなく 2 匹にしてみた)。



動く AA を手軽に作れると、結構便利です。 Flash が死んでも AA は残って欲しいですね。

フリゲ紹介: DAY:0(:FIFTY)

今年もウディコン受賞作品を上位 20 件+α プレイしてみました。 83 件もエントリーがあり、レベルの高いコンテストだったように思います。

今年は、ベビーシッター2XXX や、266229 など国語や算数のゲームがあって新鮮でした。 総合 5 位の ピクロジカル (ピクロス) も算数と言えば算数だし、 君はヒの魔法使い も漢字を応用したシステムを使っています。 私もウディコンの裏で、夏休みの自由研究として平凡な国語のゲームを4つ作ったので、意外と作る人がいるんだなーと思いました。

好みもあると思いますが、私が上位 20 件で特に面白いと思ったのは、 DAY:0扉は君の鍵で開く怪異探偵委員会流星の射手 ~亜人大戦争~夢遊猫ネクロフィリア十二の願いが叶うなら の 6 つです。 扉は君の鍵で開く はたぶんありそうでなかった、完全質問型の探し物 ADV。 質問形 ADV って違和感なく作るの大変そうだけど、違和感なくプレイできてすごかった。 落ち葉の大地を走れ の作者様ですが、自力で答えを導いてくスタイルの作品作り、毎回凄いですね。

怪異探偵委員会流星の射手 ~亜人大戦争~夢遊猫ネクロフィリア十二の願いが叶うなら はシンプルに面白かったです。 無双猫シリーズはたくさん遊ばせてもらってますが、私は今までで一番ハマったかも? カードゲームはあまりやらないけど、とても遊びやすい内容でした。 十二の願いが叶うなら は見た目ゆるふわだけど、しっかりしてて面白い。

上記以外だと SeekerMemoria も面白かったけど、かなり上級者向けな気はします。 腕に自信がある人には歯ごたえがあって良さそうなシューティングです。 雰囲気という意味だと、THE CANDLE LIGHT も凄いです。 ゲーム自体はロウソクに火を灯していくというシンプルなゲームですが、これは手間暇掛かってる。


熱中度という意味だと、今回紹介する DAY:0(:FIFTY) (開発: PANO 氏) になるのかなと思います。 83 作品から選ばれただけあって、さすがの 1 位という感じがします。 DAY:0(:FIFTY) は、リアルタイム型のタワーディフェンスです。



特徴としては、10種類+のユニットと20種類のカード、スペル、地形を組み合わせてステージを攻略でき、自由度の高いところです。 反面、1プレイ中はユニットやカードの種類などの変更はできないため、タイトル画面で組み合わせを考えつつ、何度かプレイして楽しむ仕組みになっています (下)。 様々な組み合わせでプレイできますが、最初に設定されてるユニットと設定が、一番バランス良く強い気がします。



プレイしていてとても新鮮だったのは、通常のタワーディフェンスより多くのことを考えさせる仕組みです。 たとえば通常のタワーディフェンスでは敵が即死技を使ってくるのを見たことありませんが、DAY:0 では使ってくるため、回避の方法を考える必要があります。 他にも条件付きの無敵ユニットがいたり、地形破壊などの要素があり、とても新鮮です。

なぜ DAY:0 ではそのようなことができたかと言えば、ダウンした味方ユニットが数ターン後に復活できるシステムを用意したからだと思います。 この仕組みを用意したことでリカバリしやすくなり、先に述べたようなこれまでにない要素を追加できています。凄いなあと思いました。 また復活システムで少しくらいのミスがあってもリカバリできるため、30〜45分という長めのプレイ時間に通用するようにもなっている。

ボス戦が白熱するようになったのも熱中度を高める意味で大きなポイントだと思います。 初回時のラスボスは EASY でも本当にギリギリで、とても面白かったです。 初回以降も色々な組み合わせで楽しめて面白く、タワーディフェンスの未来を感じる作品でした。

2020年9月1日火曜日

三字熟語さがし、カタカナ熟語さがしを作った

三字熟語さがしカタカナ熟語さがし を作りました。 漢字のゲームとしては定番中の定番ですね。 漢字迷路カタカナ迷路熟語ジェネレーター のコアコードを利用した、夏休みの自由研究です。



重要なコードは先のアプリで書き終わっているので、すぐ作れました。 これも初学者用に GitHub でコードを公開 (三字熟語さがしカタカナ熟語さがし) してます。

語彙力不足の子はヒントなしだと迷路より探しもののほうが難しく感じる傾向があるように思います。 ただヒント機能があるので、ヒントを出しながらプレイすると、こちらのほうが圧倒的に楽になります。 プレイスタイルは自由でも、熟語を調べることが大事です。

フリゲ紹介: Dark Malice

Dark MaliceVIPRPG 2020 夏祭り で公開された、VIPRPG の世界に色々なものがたくさん混ざってる探索 RPG。 混ざりすぎて把握しきれないけど、Nepheshel、イストワール、メイジの転生録、あたりは強く混じってるように思う。 メインストーリーのクリアなら 5〜6時間でしたが、やり込むと相当楽しめそう。



突然のブレーキ音!で始まるため、ストーリーはほとんどないですが、 まずは先に召喚されて散り散りになっている仲間を探しながら、遥か北の地を目指します (左下)。 最初は 1人でスタートしますが、探索を進めていくと徐々に仲間が増えていきます (右下)。 ダンジョン探索が 90% くらいの作品でストーリーはほとんどないものの、やり込み要素などで世界の状況がおぼろげにわかる仕組みになっています。



ダンジョン探索は、シンボルエンカウント+デフォ戦 (下)です。 全体的に Nepheshel やイストワールの空気が漂っていて、プレイしたことのある人は、 どこかで見たようなトラウマボスやダンジョンを見かけることになるかと思います。 隠し宝箱はあまりない代わりにダンジョンはかなりギミックが効いている。 要所要所で雑魚も結構強く、また回復できないポイントが結構あるので、終盤はギリギリ感を味わえます。



上記類似作品に限らず、どこかで見たようなバランスブレイカーな仕組みがあったりなかったり。 物理と魔法の役割、そして職業の役割がきっちりわかれています。 耐性パズルは控えめの代わりに、役割分担をしっかり考えることが肝になっているのが、シンプルながら面白かったです。 特に重要なのが職業選択 (左下) で、強敵相手には有効なスキルを考える必要があって面白かったです。

メインストーリーのクリアは意外と早かったのですが、色々なところにやり込み要素が隠されています。 例えば、容姿端麗、頭脳明晰、高学歴な半竜なすーん (右下) や、落ちたら帰ってこれなそうな穴、などなど。



ネフェイストなオマージュ作品として、とても楽しめた作品でした。