2021年9月21日火曜日

フリゲ紹介: まどか☆マギカ -Try Another Story-

まどか☆マギカ -Try Another Story- は、まどか☆マギカのメインキャラクター、暁美ほむらを主人公とし、 時間遡行からワルプルギス襲来までの一ヶ月を原作を踏襲しつつも異なるストーリーで RPG 化した作品です。 制作 10 年とのことで、ボリュームもクオリティも一級品。 クリアまで約 25時間くらいの長編作品でした。



まどマギを少しでも知っている人なら大いに楽しめる作品です。 時間遡行をくり返す暁美ほむらを操り、今までとは大きく異なる状況で立ち回り、ワルプルギスを乗り切るのが目標となります (下)。



ストーリー重視の RPG で、ストーリーの作り方がとても上手い作品。 最初は魔女の結界を攻略して、グリーフシードを集めながら味方を集めることが目標になります。 非常に多くの魔法少女と出会い、時には戦闘、時には仲間にもなってくれます (下)。 1日が朝昼夕晩に分かれて様々なイベントがあり、時間ごとに出会えるキャラクターが異なります。 イベントも豊富で飽きさせない仕組みが整っていて、また選択肢に応じて進行分岐があり、やり込み要素もあります。 まったく飽きさせることなく、スルスルとストーリーが進むのが、特にすごいと思いました。



魔女結界の探索は、シンボルエンカウントの割とシンプルなものです。 ただギミック満載の結界もあって、探索だけでもかなり楽しめました。 戦闘はサイドビューで、キャラが駆け巡り、非常に凝ったものになっています。 必殺技を放った時のアクションがすごい! こういうアクションを作るのってすごく大変。 しかもキャラクターがたくさんいるので、作るのは本当に大変そう…。



ちなみに作者様の紹介動画はこちら。



序盤・中盤・終盤、あらゆるところに隙がなく、とても面白かったです。 また 1週プレイしただけでも、かなりやり込み要素を感じています。 たとえば、
  • 中盤で唐突に死んでしまった味方を救えるのか?
  • 仲間のページに意外と空白が多い
  • 敵として出てきたままのキャラを救えるのか?
などは気になっています。沼かも知れない。

2021年9月18日土曜日

Tensorflow.js でモデルを学習する

JavaScript (Node.js / Deno / on Browser) でもモデルの学習もやりやすくなってきました。 以前は推論だけならいける状態だったのですが、学習方面まで伸びてきたということです。 今のところ Node.js と on Browser では Tensorflow.js が GPU なしならほぼすべての機能が使えて、 モデルによっては GPU 付きで動く時も出てきて、Deno も WebGPU 付きでそのうち動くかも?みたいな状態です。

私は Node.js より Deno を開発に使う機会が増えてきていますが、深層学習したい場合は Node.js はわかりやすい気がしてます。 何もしてないのに勝手に動かなくなる深層学習では、Node.js のようにバージョンが明確に管理されているほうが良いかも知れません。 ちなみに公式には既にいい感じのサンプルはたくさんあります。

深層学習と言えば Python な昨今ですが、JavaScript で開発する利点は以下と思います。
  • 言語を統一できる
  • 依存性の問題が起きにくい


Python だとすぐ依存性が壊れるので、依存性の問題が起きにくいのは大きいです。 あとフロントエンドに関わる技術をすべて JavaScript に統一できるのはロマンです。 なお以下のような欠点もあります。
  • 情報が少ない
  • Keras や Python の資産を使いにくい
  • on Browser ではモデル保存がしにくい
  • すこし遅い→将来に期待


情報量が少ないのは仕方ありません。 Keras のような気軽に使える仕組みがないのも欠点ですが、Tensorflow が強力なのでだいぶ使いやすくはなってます。 ブラウザだとモデル保存がしにくいので学習は Node.js を使うのが自然です。

巷の実行速度の情報はあまり当てにならないので、いい加減にベンチマークしてみると、real / user / sys は以下のようになりました。 MNIST をありがちな 2層の CNN で、しょぼ CPU で、10 epochs 学習させたときの実行時間です。 上掲の Node.js のサンプルのモデルと epochs を変えただけ。

  • Keras 2.3.1 (Python 3.6.13): 14m / 53m / 53s
  • Tensorflow.js 3.7.0 (Node.js 16.9.1, V8 9.3): 27m / 83m / 120s
  • Tensorflow.js 3.7.0 (Node.js 16.2.0, V8 9.0): 28m / 81m / 155s
  • Tensorflow.js 3.7.0 (Node.js 12.22.6, V8 7.8): 29m / 91m / 34s


Tensorflow.js は Node.js 内部の V8 のバージョン によって速度が変わります。 9.0 から 9.3 までにもかなりパフォーマンスの最適化が入っているので、どうなるかと思いましたが、 思ったよりは変わりませんでした。 結論としてはまだまだですかねえ。 早いと思えば早いし、遅いと思えばやや遅い。 理由としては Node.js では Tensorflow の C++ adapter を呼んでいますが、そこに結構なコストが掛かるからだと思っています。 wasm に変わるとどうなるのでしょうか。 ちなみにこの結果は wasm は効いてないのですが、効くようになればもっと早くなるかも?と書かれています。 なお現状では関数が不足していて動かなかったです。 Node.js での wasm はこのへんに書いてありますが、まだ完璧ではないようです。 最近 ONNX の推論が wasm で動くようになったので、先を越された Tensorflow.js もそのうちサポートするのではないかと思っています。 まあブラウザは WebGL で動くから十分早いんですけどね。

ちなみにいま最も参考になるベンチマーク結果は以下なのかな。 この情報とか、巷のいろいろな情報を総合的に見ると、現状では PyTorch の 3倍遅いくらいになりそう。 wasm が効いた時に 本当に 10倍早くなるなら、一気に JavaScript のほうが早くなりそうですが、どうなるでしょう。 JAX などもあるのでまだまだどうなるかわかりませんが、JavaScript が Python を置き換える時代に期待したいものです。

個人的な認識としては、すべてをサポートしている CPU 版は遅い。 Node.js 版は CPU 版の延長線上で実装されているので、ファイルシステム上の利点は得られるけど、そんなに早くない。 WebGL を使うと一番早いけど、HTTPS 経由の実装になる欠点がある。 ファイルシステム上で効率の良い学習をするには Headless GL などが必要で、そこが詰まっているのでなかなか進まない。 WebGPU も似たような立ち位置にあって、Dawn なるものがあるので期待はできるかも知れないけど、特に何もプランはされていない。 Wasm を使うとすべてに対応できて早そうで期待できるけど、ネイティブ実装よりは遅そうだし、なかなか実装は進んでいない。 そんな感じに見える。

そういや MXNet は使ったことなかったなあ。

2021年9月15日水曜日

発音練習アプリ Pronounce Talk と Pronounce Dojo を作った

Pronounce TalkPronounce Dojo を作りました。 Pronounce Talk は L/R, S/SH などの日本人が苦手な発音を練習するアプリです。 Pronounce Dojo は選択式でそれらの発音を聞き分けるアプリです。

英語教室でやってそうな発音練習を一人でできると良いなと思って作ってみました。 日本人が苦手と言われる頻出英単語はだいたい詰め込んだ気がするけど、他にも見つかったら追加していきます。



Pronounce Talk は十分使いものになるアプリだけど、 好きな子と嫌いな子は明らかに分かれるだろうと思う。 作っておいてアレですが、私なんかは嫌いなほうに分類されます。 speaking より listening と writinig のほうが遥かに日常的に使うので、英語を極めようとする人向けかな。

私は Pronounce Dojo でリスニング問題を聞き分けられれば、それで十分と思ってます。 こちらはまあまあ面白い。 Pronounce Talk は、時間が空いたらちょこっと遊ぶイメージ。 基本的には Speecha で鍛えるのが良いと思います。

2021年9月5日日曜日

小さな子に良さそうなフリゲをまとめてみた

ふと、小さな子どもがフリゲをする時に何をおすすめすれば良いんだろうと思いました。 ちょっと気を引くくらいなら、派手ではなくて、当たり障りなく、漢字が少なく、短編で、難しいルールの少ない作品が良いです。 光の刺激が強いものはてんかん的症状や、ゲーム依存性に繋がることもある、とも言われているので、派手なゲームではないほうが良いと思っています。 細かい解説なども理解しきれないことを想定して、なんとなくわかるものが良いと思う。 漢字が OK ならもっと色々ありますが、漢字のしばりを入れると、意外とおすすめしやすいものは少ない。

おすすめできそうだったのは以下の作品。 教育的によろしいものと考えると、やはりパズルゲームがおすすめしやすそうですね。 小さな子だとあっさりのほうが良いと思う。 あっさりという意味では ABA Games さんの作品が良い気も。

RPG

  • 影明かし
  • 武神の目覚め
  • ふしぎの城のヘレン
  • ぼくらの大革命!
  • 前向き勇者
  • ダーリン菊一文字
  • ネフェシエル

ACT

  • ミクものがたり ~ユメとたいせつなもの~
  • Sacrifice -サクリファイス-
  • ぽんこつポン子の小冒険
  • ぶきあつめ ~なんでも武器になるRPG~
  • ロストアルター
  • 真夏の島の宝船
  • 妖精とゴーレム
  • Clean Out The House
  • 斬るビル
  • 納豆
  • いかちゃん
  • モノリスフィア
  • Wind I Upgrade
  • Trial Windy

パズル

  • ネコトパズル
  • 雨宿りのパズル
  • スターダスト ディフェンス -Extension-
  • REC
  • ボムっと発掘!とれじゃーはんたぁ
  • デュラハンさんの頭をお持ち帰りする
  • 氷水火山SOKOBAN (すこし難しいかな)
  • Stick Robot
  • BLOCKSUM
  • Hopeful
  • 銀竜奥義伝
  • ねずみてくてく
  • 常闇を翔る一筋の閃光
  • 魔法使いの倉庫
  • サーモンの鍵
  • みすてぃっく☆ばる〜ん (Circus は難しい)

アクションパズル

  • LittleFrame
  • Win' Wind' Windy
  • しろくろシンドローム
  • 算盤の鍵 (難しい)
  • Windy Possetion (難しい)

シューティング

  • DAY:0
  • Noiz2sa
  • GENETOS
  • クゥるべーだー
  • Trial Windy
  • Super Depth

その他

  • マリィと賢者の森
  • 上原テトリス
  • とつげき!ダンジョン
  • QWOP
  • 出過杉くん

パッと思い付いたものを書き留めただけなので、他にも良いものはあると思う。 そういえば私が最初に遊んだゲームは、すごいシンプルなシューティングでした。 今ってシンプルなシューティングはあんまないですね。

2021年9月2日木曜日

フォニックス×手書き練習アプリ Tegaki Phonics を作った

Tegaki Phonics を作りました。 小学生のための英単語アプリです。

小学校の英語は学習内容がきちんと決まってないので、 適当な学校と真面目な学校で格差が広がります。 特に英単語をどれだけ覚えているかは大きな差になりそうです。 そこをなんとかするための英単語アプリです。



小学生が覚えやすい英単語とは?

これまでにも効率的な英単語アプリとして Vocabee を作ってきました。 Vocabee は英単語を覚えることに慣れており、中学生以上の文法を考慮した学習には最適ですが、英単語をおぼえたことのない小学生にはつらい部分もありそうです。 文法を考慮しない基礎力としての英単語を、もう少しきちんとチェックしたいと思いました。 これは book とか fox みたいな統計から外れた超簡単な英単語を指します。

そんな時、どんな英単語をチェックすれば効率が良さそうかという話があります。 小学生用の参考書をいろいろ見てみたのですが、本当に効率が良いかは少し怪しいところがあります。 大人が見ても「へー知らなかったわ」みたいな単語、しかも覚えにくいものがたまーに入っていたりします。 思ったのですが、小学生はフォニックスの英単語でチェックするのがわかりやすそうです。 フォニックスの英単語は 20こぐらいずつに区切られている上に、音素が少なく、意味もわかりやすく、 これ以上覚えやすいものはないと思います。 ということで、フォニックスの英単語をまとめた英単語アプリを作りました。

作ってみた

フォニックスの英単語を四択問題でおぼえるのはあまり良い方法に思えません。 意味がわかりやすいなら画像を付けるべきだし、文字数が少ないなら書いて覚えるのも有効です。 ということで、手書きで覚えるようにしてみました。

発音が決まってる=一部のアルファベットは固定される=日本語から英語の変換が重視されるということで、 通常の英単語のような出題形式でテストするのが良さそうです。 EASY モードはおぼえる専用ですが、HARD モードではテストもできます。

2021年9月1日水曜日

フォニックスタイピングを作った

フォニックスタイピング を作りました。



海外のフォニックス事情

作るに当たっては、フォニックスについて割といろいろ考えました。 海外で英語を習うとき、5-7歳 (幼稚園から小2) で まずフォニックスを習って、並行してサイトワーズを習います。 その時に習うのは ABC くらいで、つまり 英単語の ABC が読めないけど、会話ができる状態とのことです。 このような順序になるのは、アルファベットが 26 種類しかないのに対し、フォニックスなどの発音パターンは100種類近くあり、覚えるのが大変だから。 漢字は一つ一つ順番に覚えればスムーズに覚えられるけど、 英単語は実のところ漢字より前提ルールが多いのは、注目ポイントのように思います。 このような事情があり音から入るため、海外では文字を書いて理解するまでにはかなり時間が掛かる。 たまに海外では文字を書くのはいい加減でいいのに日本ではなぜみたいな記事を見かけるのですが、日本とは学習価値が異なるからで、話半分に聞くべきな気がする。

フォニックスはアメリカとイギリスで発音が違ったり、例外も多いので、 海外では音が同じものだけまとめて、ざっくり学ぶことが多いみたいです。 ただ勉強の時間軸はかなり長くて、3年くらい徹底的にやるという記事を多く見かけます。 では日本でもそうすべきかと言うと、前提が違いすぎるよね。 海外は日常的に英語で話していていくらでも音が聞けるけど、日本は聞けない。 真似しようとするのは大変だし、本当に真似が必要なのかも怪しい。 だいたい日本人は発音より英単語の文字列を眺める機会のほうが圧倒的に多いのですから、 音素から学ぼうとしてもデッドロックになるだけです (既になってる?)。 もう少し良い学びはないものかとは前から思っています。

日本人向けのフォニックス

そんなこともあって最近はフォニックスの色々な教材を見ていました。 発音練習についてはやはり面倒くささを感じるのですが、学び方自体はとても参考になります。 そこでフォニックスの考え方だけを流用しながら、 日本人向けにアレンジしたおきらく学習アプリを考えてみました。

フォニックスでは多少の効率は無視して、 なるべくアルファベット / 音素の少ない単語で、覚えやすさを重視しています。 音素に区切るのと一回あたりに学ぶ文字量・単語量が少なくなるので、英単語チェックもしやすいです。 このへんの仕組みは子供にとってユーザーフレンドリーで、真似をしたいと思いました。

日本人にとって ABC はひらがなより簡単なので、 ほとんどの子は音と ABC の対応を一瞬で覚えられると思っています。 しかし単語になると、昔の学習法だと配列の手掛かりを知る学習が少ないため、結構なハードルがあります。 なのでその部分だけフォニックスでサックリ学び、 後はタイピングなどの英語ゲームで物量をこなせば、 勝手に音素の決まりが定着し、いい感じに英単語へ繋がっていく気がします。 あとは量をやるだけ。

作ってみた

ということで、ABC → フォニックス → 英単語のスムーズな学びができるように、 フォニックスの音素で区切って物量をこなすタイピングを作ってみました。 タイピングは反復的に作業するので割と相性がいい。 エンドレスにすると単語の種類が少なくマンネリしそうなので、 15 の単語をできるだけ高速に打ち込むゲームにしてみました。 10問だとクリアが簡単そうだし、20 は少し長そうなので、今のところ 15 が良さそう。 15 * 3〜6 = 60〜80文字くらいなので、小さな子感覚では EASY を 30〜40秒くらいでクリアすればだいたい暗記はできている。 HARD を 60秒以内にクリアできれば、十分理解していると言って良いのではないかな。 タイピングと組み合わせるのが良いのは、すぐに単語が出てくるまで理解しているかどうかわかるから。 速度が遅くなれば理解度が足りないことがすぐわかる。 またヒントを連発していると最大 75秒遅れるので、60秒以内のクリアはできない。

もう少し面白くしたり、画像などもほしいですが、まずは動くものを出すことを優先して作りました。 フォニックスタイピング だけでも 400単語くらいは覚えられるので、英単語タイピング で少しいい加減だった小1〜小3の穴は埋められた気がします。

ちなみにフォニックスのルールは別の書籍やサイトで軽く学んだ後、タイピングで物量を流して覚える。 そして単語の意味を覚えているかどうかチェックするような利用用途を想定しています。 ルール解説はたくさん良いサイトがあるので、作らなくても良いかな。

フォニックスの発音練習アプリ Talk Phonics を作った

Talk Phonics を作りました。 名前の通りフォニックスの発音練習ができるゲームです。



最近の学校とか、英語教室とか、発音練習に熱心なところもありますね。 発音練習はネイティブの人と一対一が多いけど、そのせいで完全にデッドロックになってる気がしています。 でも最近の AI は強いので、発音練習くらいなら AI 任せでどうにでもなる時代です。 しかも一度作ってしまえば AI の精度向上は Google や Apple 任せにできる。 今回作った Talk Phonics はフォニックスを一人で練習できる、とってもエコなアプリです。

英会話クイズ とまったく同じ仕組みで動いていますが、 小さな子向けに 15こだけ練習すれば良いようにしてみました。 採点は割ときびしいです。 人間の採点では「まあいっか」で済ましているところがあると思いますが、相手は AI なので、きびしく駄目出ししてくれます。 時には採点がきびしくてツライ時もあるのですが、文脈を考慮して採点がゆるくなります。 ツライ時は文章で答えてみてください。 他にもスキップできるようにしてあったり、救済措置はいろいろ入れてます。