2021年8月29日日曜日

Tanaka Corpus をオレオレ改良した

日英対訳コーパスの Tanaka Corpus を改良したものを GitHub で配布し始めました。 だいぶ前に作って「誰も使わんしええやろ」と思って記事にし忘れていたんですが、記事にしておいたほうが良い情勢になってきたので、書いておきます。

tanaka-corpus-plus

まず機械翻訳や英語アプリを作るにあたって、対訳コーパスは大切です。 今なら C4 がデータセットとして一番有名ですが、 私のような一般人には「 HDD に入らないっす」となりがちです。 そこで中規模の使いやすい日英対訳コーパスとして、Tanaka Corpus を使うのは良い選択肢です。

しかし Tanaka Corpus は結構扱いに困るところもあります。 まず 1年前はあまり更新されない静的な形式のデータがダウンロードできたのですが、 一時期ダウンロードできない時期があって、 その後気付いたらデータが自動更新されるようになっていました。 データは Tatoeba と同期しているのだと理解しています。 Tatoeba は Tanaka Corpus のデータセットを引き継ぎ、多言語化したデータセットです。 じゃあ Tatoeba や自動更新されるデータを使えば良いんじゃないか? そうでもないです。

もともとの Tanaka Corpus はややノイズがあるものの、大学生の方が頑張って作ったものです。 しかし Tatoeba は自由にユーザ投稿できるコーパスで、データチェックはしていません (と理解しています)。 そのためバージョン付きの配布形式でメンテしないと用途によっては扱いに困る部分があるような気がしました。 そこで古いデータを保存し、ベースにした上で、Tanaka Corpus を自分でノイズ除去をしようと思いました。 しかし何の目的もなくメンテするのはつらいので、いくつかの英語ゲーム (下) を作って、 遊びながらノイズのある翻訳を削除しています。



遊んでいたら割と気楽にノイズが削れたので、 ノイズを除去した日英対訳コーパスを配布することにしました。 ちなみに明らかにノイズなものは、手間を考えて再翻訳ではなく削除してます。 名前を保持したほうがわかりやすいと思い、安直に Tanaka Corpus Plus としました。 改変内容を確認しながら共有したほうが良いと思うので、そこをきちんと残しつつ CC-BY で配布しています。 データが欲しい人はここからどうぞ。 もちろん大学生の方が頑張って作ったオリジナルのものも含まれています。

フリゲ紹介: 銀竜奥義伝

今年も ウディコン受賞作品 を上位 20 件+α をプレイしてみました。 ランキングが出る前から色々プレイしていたのですが、 どれも手堅く同じくらい面白かったので、そんな中でどういった内容が好まれるのかは、気になっていました。 ゲームを作る人にとっても参考になる情報が詰まったコンテストだったような気がします。

たくさんプレイして私が真っ先に思ったのは、 適度な難易度で遊びやすく、シンプルかつコンパクトにまとまっていると、印象に残りやすく良いということです。 銀竜奥義伝独立理想国家アヴァロン終末の案内人ゴルガン が上位にくる予感はありました。 他にも私はパズルが割と好きなので、 ALICE IN ANOTHER WORLD -鏡の国のアリス-HopefulW・ワドルーの冒険雨宿りのパズル などを真っ先にプレイしました。 どれも面白いと思いましたが、合計となると物語性に加点が難しかったかな。 上位に食い込むのは難しかったようですが、シンプルなので中堅に多く入っていたのが印象的でした。

ECO2黄昏の時に巡り会うもの などもランキングが出る前にプレイしていて面白かったのですが、総合順位で見ると圏外でした。 ランキング上位に入るのは本当に大変ですね。 技術的には非常に高くても順位の伸びきらなかった作品も多かった気がします。 これはシステムの複雑さの排除や、適切な難易度調整などが、昨今はとても重要ということを意味しているのだと思います。 ウディコン審査期間終了後、ふりーむのDL数を見ていると、また少し違った印象も受けます。 実況のしやすさもそれなりに影響がありそうなのと、ホラーや尖った作品、ノンフィールド RPG が強い印象です。 様々な作品の評価をよく見ていくと、ユーザが求めていることが色々とわかり、とても参考になりました。 もっともどの作品も面白く、気にしすぎる必要はないと思います。



さて今年一番は、私も 銀竜奥義伝 と思いました。

地元の格闘大会で優勝した少女メイメイが、同年代のリンに敗れたことにより、 銀竜谷にある超闘技場への挑戦をすることになりました。 銀竜奥義伝 は超闘技場で優勝するまでを描いた物語です (下)。 クリアまで 2時間くらいで、適度な難易度で遊びやすく、シンプルかつコンパクトにまとまっている上、 グラフィック、チュートリアル、動作の軽さなど、基本部分が突出していたのが、高評価に繋がった気がしています。 昨年は Sebastian and Little lady Butler of Love で上位受賞されている作者様で、 昨年もグラフィックが凄かったですが、今年もすごい。 企業のゲームと言ってもまったく遜色ないです。 ADV から SRPG にギアチェンジして出してくるのも芸風が広いなあと思いました。



SRPG といってもステージは割とあっさりで (左下)、育成型のパズルに近いのではないかと思いました。 高得点を狙おうとすると「どのステータスをどこまで上げて、どの必殺技を覚えて、どのように動けば高得点で勝てる」かを考える必要がありそうです (右下)。 実は魔法の塔とかなり近い部類のパズルゲームなのではないかと私は思いました。 モードを選べるようにしてノーマルモードの難易度を大きく抑える代わりに、 量を抑えてやりこみ要素+ランキングを用意したのは、コンテストを活かして戦略的だったかも知れません。



私はノーマルモードでさっくりクリアしたのですが、ストーリーのほうもすっきり感があって良かったです。 前作と同様、コメディ+あっさりお色気 (前作より控えめ) を入れて、飽きにくい内容になっていたのが印象的でした。 昨今のライトゲームの作り方として、学ぶことの多い作品だったように思います。 2時間とあっさりめの作品なので、ハードモードからが本番かもしれません。

2021年8月14日土曜日

GitHub の personal access token で苦労した

今日から GitHub の personal access token の設定が必要になり、下のエラーが出るようになりました。 これ対応に苦労したのは私だけなんだろうか。
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: unable to access 'https://github.com/[user]/[repo]/': The requested URL returned error: 403


ちなみにリポジトリごとの remote url を以下のように変えれば動くのはわかってます。 ただこの方法だとリポジトリが死ぬほどたくさんあると、頻繁に書き換えないといけないので死にます。 Grep & Replace で対応してるといつかやらかしそうなので、もっと簡単に一括管理できる方法が必要。
# from
https://github.com/[user]/[repo]
# to
https://[user]:[token]@github.com/[user]/[repo]


最初は credential 設定だけでいけるんじゃないかと思いました。でも駄目。
# from command
git config --global credential.helper store
# or edit ~/.gitconfig
[credential]
  helper = store
上記を設定した後に、参照先である ~/.git-credentials に URL設定 (下) を記載すればいけるやろと思ったら、変わらずアクセストークン必要と怒られて困りました。 Windows だとイケるよみたいなサイトがたくさんあるんですが、Linux でまったく動かないのは何なのだろう。 自分の公開リポジトリに対してチェックしているので少し状況は違うかも知れないけど、とりあえず駄目。
https://[user]:[token]@github.com


次に、URL を書き換えればいけるかなと思ったのですが、これも駄目でした。
# from command
git config --global \
  url."https://github.com/".insteadOf \
  https://[user]:[token]@github.com/
# or edit ~/.gitconfig
[url "https://github.com/"]
  insteadOf = https://[user]:[token]@github.com/
怪しげなテクは許してくれないみたいです。


解決策がまったくわからず、仕方ないので SSH 経由でアクセスしたらいけました。
# from command
git remote set-url origin git@github.com[user]/[repo].git
# or edit ~/.gitconfig
[remote "origin"]
  url = git@github.com:[user]/[repo].git
まあ SSH 経由ならトークンいらないと書いてあるのでそりゃそうなのですが、 HTTPS 経由の根本的な解決にはなってない気がする。 まあリポジトリの URL を書き換えさえすればいいので、楽と言えば楽です。

うーん、公式ドキュメントはちょっと説明不足かも? それとも何か設定を見落としているのかな。

2021年8月13日金曜日

フリゲ紹介: 氷水火山SOKOBAN

氷水火山SOKOBAN は、VIPRPG 2021夏の陣 に投稿されていた倉庫番ゲーム。 ただし普通の倉庫番ではなく、魔法具現化たちの力を活かしたパズルゲームになっています。 あまり正確に測ってませんが、一応のクリアでも 4-5時間くらい掛かったかも知れません。 かなり頭を使うパズルゲームです。



主人公のアイスⅢが水氷系の具現化のサポートを得ながら、キャラ切り替えを駆使してクリアを目指します。 階段にたどり着けばクリアで、まんま倉庫番のステージもあれば、よりパズル的なステージもあります。 ステージをクリアするにつれルールがじょじょに増えていき、操作できない味方なども出てきます (左下)。

火系の具現化が敵として登場し、触れると味方は解けます。 例えばアイスⅢがファイアⅠなどに触れるとアイスⅡとウォーターⅠに分裂します。 ウォーターⅠがファイアⅠに触れると消滅してしまいます。 アイス系は柵を越えられない一方で排水溝の上を歩けますが、 ウォーター系は柵を通り抜けられる一方で排水溝を滑り落ちて消滅してしまいます。

他にもいくつかルールはありますが、直感的なルールでわかりやすく、 またパズルを解いていくたびに少しずつ説明してくれるのでわかりやすい。 UI も何度でもやり直しがしやすく作られていて、リトライ性が高くて良かったです。 よく練られたパズルゲームで非常に面白いです。

パズルゲームにしては珍しいボス戦も (右下)。 ボス戦では上下左右からボスを同時攻撃すると倒すことができます。 分裂を活かしながら戦っていくのが新鮮で面白かった。



全体的にとても完成度が高いですが、序盤から時たま難しい問題が混じっています。 たとえば私は No.18 がいまだに解けてません。 No.7 とかも最初は飛ばしてました。 それ以外は No.27 くらいまで割とサクサク解けているので、 苦手な問題があったらスキップ機能を使用してプレイしても良いかも知れません。

No.28 以降は状態変化しやすくなり、扉も増え、さらに厄介なルールも追加されてかなり歯ごたえがありますが、 ここでもスキップ機能を連打してしまえばクリア自体は簡単になってます。 またチート機能として Ctrl キーを押すとどこでも歩けるので、他にもいろいろな救済措置 (?) があります。

合間時間に少しずつプレイしやすい作品で、とても面白かったです。 こういった具現化系のパズルってどれも面白いですよね。

2021年8月7日土曜日

ABC の手書き練習アプリ Tegaki ABC を作った

以前作った手書きのアルファベット認識がバグっていたようで、 直してみたら MNIST より少し低いくらいの精度が得られました。 お手製のデータだから比較のしようがないけど、 EMNIST のアルファベットよりずっと実用的で、データ量も結構あるので、 クラス数を考えれば十二分に使い物になると思う。

精度は肌で感じるくらい高くなっていて、誤認識はほぼしなくなりました。かなりいい感じ。 せっかく精度が上がったので、新たに Tegaki ABC を作りました。 手書きで ABC をテストするゲームです。

シンプル過ぎてあまり説明することもないアプリだけど、 最近の子は文字を書いてないことが多いので、最初の練習用になかなか良いと思う。



以前アルファベット認識のサンプルアプリとして作った 英単語クイズ も、 かなり改良を加えた上で直しておきました。

2021年8月2日月曜日

英会話アプリ Speecha を作った

ネコでもできる英会話アプリ Speecha を作りました。 なお簡単とは言ってない。 マスコットがネコというだけだったりします。



英会話アプリって、英文と文章正規化アルゴリズムを用意すれば、実は作れてしまいます。 ササッと作ってみたら案外うまくできました。 英会話というよりはセンテンスリピーティングですが、練習としては十二分に価値があります。 英会話は高いし、そもそも英会話をするより前に、短文くらいはサクサク話せるようになっておいたほうが良いはずです。 Speecha はそんな時の練習アプリとしてはなかなか良い出来だと思う。

認識精度はかなり良いです。 下手くそな発音だと駄目出ししてくれるのも良い感じで、練習になります。 ただ発音が難しいっぽいものが少しあって、たぶん日本の人名とか地名の判定が難しいです。 英語に最適化されているので仕方ないかな。 やたら難しいのがあったらスキップできるようにしておきました。

ちょっとした練習アプリとしてはなかなかいい感じ。 低学年の例文はもう少し改善できそうな気がするので、今後も改良してみたい。 作ってみて思うけど、やっぱ発音練習って難しいわ。 一文を練習するのにすごく時間が掛かるので、しゃべるのが苦手な子はやらなくていいと思う。 英会話の前に国語と算数ができないと話にならないし、 英会話をやるより前にやるべきことがたくさんあるのではと、私は思いました。 あくまで得意な人がさらに得意になるための道具。

作ってみて改めて思うけど、最近流行りの話して覚える英語はかなり人を選ぶと思います。 一方でなんとなく覚える英語教育はすごく良いと思ってて、そのためのツールを色々遊びで作ってみてます。 話すのが面倒な人はタイピングとかでガーッと覚えるほうが気持ちも楽でいいんじゃないかな。

2021年8月1日日曜日

あいうえおタイピングを作った

あいうえおタイピング を作りました。 以前作った ABCタイピング で ABC をマスターした後に、あいうえおをマスターするアプリです。 このアプリで慣れれば、巷のタイピングゲームはいくらでも遊べるようになるはずです。



ABCタイピング は最初にやるタイピングとして最良のアプリと思っているのですが、その次にやるものが難しいです。 巷のタイピングゲームは小さな子にとってギャップが大き過ぎて、先に「あいうえお」の入力の慣れないと、なかなか大変です。 そこで小さな子でもタイピングを飽きずに学べる あいうえおタイピング を作りました。

コンセプトは ABCタイピング と同様に、説明ゼロの UI です。 そもそも、あいうえおの配列を一つ一つ説明するのって面倒だし、子供も退屈と思います。 そこで一切の説明をなくして時間内にあいうえおをひたすら打ち込むアプリにしました。 シンプルですが、1分単位で自分の成長を見れるので、飽きやすい小さな子には遊びやすいと思ってます。

普通のタイピングゲームはだいたい 2分単位でゲームをやりますが、小1くらいの小さな子に 2分は長いんですよね。 その点、ABC は小さな子でも慣れれば 15秒、あいうえおは 50秒くらいで入力できます。 飽きる前に自分の成長が見れるため、これくらいシンプルなほうが受けがいいのではと思いました。 あ~んの入力中に集中力が切れてしまう子もいると思ったので、25秒くらいで練習できるモードも作っておきました。