Androidアプリ「発音チェッカー」でスピーキング練習

スマホには音声入力機能がついていて、例えば「湯布院の温泉に行きたい」なんて話しかけるだけで現在地からの経路が表示されたりします。すごい時代ですよね!

アプリ開発者としても、そんなすごい機能を使ったアプリを試してみたくなり、試しに音声入力機能と音声読み上げ機能を組み合わせただけのサンプルアプリを作ってみました。

するとどうでしょう・・・

煙草はよくないですよね(Nexus7(2013)にて)
煙草はよくないですよね(Nexus7(2013)にて)

それだけで英語の発音練習アプリになってしまいました。

というわけで本当にそれだけのアプリですが、ここ半年くらいちょこちょこ使って便利だったので、無料アプリ(広告付き)としてリリースしてしまいました。

ありとあらゆる言語を選択できます。
ありとあらゆる言語を選択できます。

英語にかぎらず、フランス語でも中国語でもスペイン語でも、イタリア語でも韓国語でもドイツ語でも、ヒンズー語でもラテン語でもガリシア語でも、スウェーデン語でもアラビア語でもタイ語でも、とにかくなんでもこいです(端末のAndroidバージョンによる)。

テキストの読み上げはAndroid4.4でも日本語が未対応ですが、N2 TTSという日本語読み上げアプリをインストールしておくと日本語も読み上げてくれます。


Android アプリ「発音チェッカー」
Android アプリ「発音チェッカー」
Google playでダウンロード


ちなみに私は、いまだに英語の「First」を認識させることが出来ずにいます。
パートナーに教えてもらいながらいろいろ矯正してみたのですが、「Frost」とか「Fast」なんて流暢な英語で読み上げてくれる・・・(TT)

めっちゃ強いじゃんけんアプリを作ってしまった。

じゃんけんポイポイ
~
「じゃんけん 勝ち方」なんて検索すると、いろいろとノウハウが出てきますよね。
つい昨日も、ギズモードで「じゃんけんに勝つ方法ついに判明?」なんていう記事が出ていました。
~

中国の大学の共同研究グループが、人海戦術で学生に死ぬほどじゃんけんをやらせて勝利の法則を調べてみたそうです。その結果、じゃんけんには勝つ方法が本当にあるっぽいことが判明し、世界中で答え合わせのじゃんけんが流行ってます。
じゃんけんに勝つ方法ついに判明? – GIZMODO

~
法則があるといっても相手のある話ですので、結局のところ勝負は時の運、
・・・ですが、じゃんけんポイポイの場合は違います。
~

じゃんけんポイポイ(ビームフラッシュ)について

じゃんけんポイポイってご存知ですか?
子供の頃に遊んだ人も多いと思いますが、「じゃんけんポイポイ どっちひくの~ こっちひくの~」というゆるい掛け声とともに、両手でじゃんけんを出し合って、最後にこっちが勝ちそうと思う手を残す遊びです。

地域によって呼び名は「じゃんけんホイホイ」とか「ビームフラッシュ」と呼ばれており、掛け声もかなりバリエーションがあるようです(→ ビームフラッシュ – Wikipedia)。

このじゃんけんポイポイ、普通の片手じゃんけんと違ってかなりゲーム性が強く、運以上に戦略と相手をだますスキルが求められます。

ん、ということは、ゲームに出来るんじゃないかと思いつき、Androidアプリとして作ってしまいました。
~

じゃんけんポイポイを世界で初めてAndroidアプリ化!

~~
・・・しょうもない、と思われたかもしれませんが(まあ実際ナンセンスなアプリではありますが)、このコンピュータがめっちゃ強いのです。

自分で作っておいて、対戦するとあっという間に負けます。
何度かやっていると、何となく性格のようなものが見えてくるのですが、それでも負けます。
開発の後半には、対戦すると負けてイライラするので、あまり遊ばなくなりました。

なんでこんなに強いのかをあらためて考えてみたところ、どうも次の2つの要因にあるようです。

1. コンピュータは正確に記憶できる

このアプリのコンピュータは、自分の手と対戦相手(つまりユーザー)の出した手の組み合わせを勝率計算し、勝つ可能性のより高い方を出してきます。
ちなみにズル、後出しのたぐいは一切ありません。

さらに、ユーザーが予想通りの手を出してきたか、勝率の高い方で勝ったのか低い方で勝ったのかなど、データを貯めこんでいき、次の戦いの参考にします。

じゃんけんノウハウでよく述べられていることですが、「相手のくせを見抜く」ことこそがじゃんけんの極意です。
記憶・統計を一瞬で行えるコンピュータにはとても有利なんですよね。

2. コンピュータは勝ち負けに執着しない

コンピュータが行うことは、勝率計算と過去データ解析の2つだけです。
よって、下手に勝ちに行こうとしません。

人間の場合どうしても「ここ一番」と意気込んでしまいがちで、しかもこのゲームの場合 120 秒間という制約もありますので、あいこではなく勝ちを選択しがちです。

コンピュータは対戦ごとに計算とデータを見るだけで、残り時間は気にしていませんので、遠慮なく「あいこ」も選択してきます(この辺りは攻略の糸口になりそうです)。

~

その他の遊び方について

・・・とまあアプリの紹介文というより、コンピュータの負かし方みたいな話になってしまいましたが、自分の家族にプレイしてもらうと案の定コンピュータがボロ勝ちしていて、それはそれで狙い通りなのでうれしいです。

ゲームのヒントという程でもないですが、コンピュータに対して連続して勝利すると、獲得するコインが倍々に増えていきます。
通常はコイン1枚しか増えないのですが、2回連続だと2枚、3回連続だと4枚、4回連続だと8枚と、2のn乗分のコインを得られます。

10回連続勝利すると1,024枚も一気に増えるので、オンラインランキングの上位に1,000枚超えのレコードが登場する日はそう遠くないかも・・・?

私は当分遊ぶ気持ちになれないので、みなさま是非ぜひコンピュータを打ち負かしてしまってください。
よろしくお願いします。

裏技公開中!Androidアプリ 『リアル上海』

思っていた以上に好評のAndroidアプリ『リアル四川省』に背中を押されるように、
新作アプリ『リアル上海』をリリースしました!

四川省史上最も難しい?!Androidアプリ『リアル四川省』

↑リリース日、内容ともに兄貴分のリアル四川省についてはこちら

兄貴分の『リアル四川省』をリリースして1年経ちましたが、まず大きな違いは弟分『リアル上海』アプリ購入のキャンセル率が低い!
上海を期待して『リアル四川省』を購入される方がいるんですよね。きっと。
で、開いてみてなんじゃこれ!となったのでしょうけど、これからはそんな間違いをせずに『リアル上海』をダウンロードしてくださいね。

そんなことはさておき、3つの裏技を大公開~~~

【裏技その1 ・・・ 透明牌の追加】

まあこれは裏技ではないですが、全100面をクリアすると、通常選択できない「透明牌」を設定で選べるようになります。

透明牌をちょこっと公開中
透明牌をちょこっと公開中

数ある上海アプリの中でも、ある意味タブーの透明牌を搭載しているのは、「リアル上海」だけではないでしょうかっ!!(未調査)
最初は開発中のバグがきっかけだったのですが、面白いので全面クリアのボーナスとして採用することにしました。

下に隠れている牌が見えるので、手詰まり率が減る・・・かもしれません。
実際のところ、気にしすぎるとタイムもスコアも伸びません(笑)

【裏技その2 ・・・ 牌の同時押し】

スマホユーザーの方には難しいかもしれませんが、タブレットで遊んでいる方は、ぜひ両手を使ってプレイしてください。
二つの同じ絵柄の牌を選択する際、同時にタッチしてもちゃんと消すことができます。
意外に他の上海アプリではこの同時押しが出来ないようになっています。

同時押しをすることで、もちろんクリアタイムの短縮にもつながるのですが、
それ以上に同時押しは楽しい!
特に、少ない牌の面で同時押しでどんどん牌をとっていくと、
アニメーションとあいまってすごく気持ちいい!です。

近々アプリのプレイ動画をアップする予定ですが、そこではもちろん同時押しを披露したいと思います。

【裏技その3 ・・・ 連続取りでスコアアップ】

『リアル上海』には、兄貴分の『リアル四川省』にはない、スコアという概念があります。
クリアタイムももちろんランキングに登録されるのですが、スコアが高い方がランキングでは上になります。

このスコアというのは、牌をとる時間の間隔が短くなるほど高い点数が付くようになっています。
表にまとめると、このようになります。

|~時間の間隔|~点数|
|0.3秒以内|20点|
|0.6秒以内|10点|
|1秒以内|5点|
|3秒以内|2点|
|それ以上|1点|

なので、一つ取って考えて、また一つ取って考えてというスタイルではなく、
3手、4手先まで考えておいてから一気に取った方が、スコアが断然高くなります。
少なくとも2手先までは決めておいてから、同時押しでトントントーンと取ってください!

もう少し詳しい情報を欲しい方や、他のスクリーンショットを見たい方は、「Lucプログラム&デザイン リアル上海 – Androidアプリ」へ、
すぐに遊びたい!という方は「Google play リアル上海」へGO!


他にもこんな機能が欲しいよーという人は、smilkobuta@gmail.comまでお気軽にご連絡くださいね。

子どもの証明写真

以前、1歳の子どものパスポートを作るとき、デジカメで撮った写真をトリミングして作ったことがあります。
写真をパスポートサイズにトリミングするブラウザツールを作って、無事パスポート用の証明写真を作ることができました。
パスポートの申請もばっちりOKでした。

その後、そのWebツールを使いやすくして公開しようと思っていたのですが、ずるずると3年間もほったらかしにしたままにしてました(子どもも4歳に)。

そのWebツールはインターネットのどこかで、風に吹かれて転がっているかもしれませんが、
それはなかったことにしてAndroidアプリとして作り直しました!

iD Shoot
Androidアプリ「iD Shoot – 証明写真」


99円の有料アプリです

Webツールはタダで公開しようと思っていたのでAndroidアプリもタダでいいじゃないかという気もしますが、Androidスマホって色々種類が多すぎて、すべての機種できちんと動かすのは難しいんですよ!
特にカメラアプリは鬼門のようで、試した機種ほとんどすべてで新たな問題が発生するという・・・
なので、今後もメンテナンスをし続けますという意思表示として、99円の有料アプリにしました。

自分の機種で動かない!というかたは、お気軽にご連絡ください。(smilkobuta@gmail.com)

ブラウザツールと違って、スマホやタブレットには最初からカメラが内蔵されていますので、Webツール版よりも一貫性が出た気がします。
それに合わせて、ウィザード形式(流れ作業方式)で証明写真を作成できるようにしました。

プリントについて

もちろん自宅のプリンターや近所のコンビニ、DTPショップ、ネット依頼できる5円プリントなどで、印刷がちゃんとできるのかテストしたのですが、意外に差があるものですね。

一番きれいに印刷できたのが、近所のスーパーの中に入っていたDTPショップ
色合いやサイズもばっちり印刷できました。

次によかったのが、ネット依頼できる「5円プリント」というサービス。
Androidアプリから印刷を依頼できますので、お手軽なうえにプリントもいい感じでした。
色合いは気持ち明るめになってしまいましたが、サイズはここが一番ぴったりでした。

残念だったのがコンビニのカラープリントで、画質も荒く、写真のサイズは数ミリ大きく印刷されてしまいました。
パスポートの写真はすごく規定がうるさく、45mmx35mmという全体の大きさだけではなく、頭の大きさや位置もミリ単位で指定がありますので、この数ミリの違いは大きい・・・
ネット注文できるアプリもあって、便利でよいのですが、公的書類に添付する写真としては選ばないほうが無難です。

DTPショップなどで注文するときは、「証明写真なので、リサイズやトリミングなしでお願いします」と伝えた方が安心かもしれません。

テストプリント写真の山
テストプリント写真の山



まあこれで、証明写真ボックスの700円を払わずに済むようになったので、自分的には満足です。
もう少ししたら子どものパスポートも期限が切れるので、その時はこのアプリで撮ろうっと 🙂

iD Shoot
ダウンロード

AndroidのSpinner用Key-Value簡易アダプター

Androidのアプリを作っていて、単純な「キー=値」構造のプルダウンメニューを一つ作ろうとすると、その都度 XXXAdapter extends ArrayAdapter<String> を作るハメになります。
毎回面倒ですので、どんなオブジェクトでも簡単にSpinner化できるようなKeyValueAdapterクラス+KeyValueItemインターフェースを作りました。
HTMLの<select>タグのような感じで使えますよ。

■サンプル:MyObjectクラス
package com.lumiere_couleur.android;
 
public class MyObject implements KeyValueItem {
    private int id;
    private String name;
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    @Override
    public long getOptionValue() {
        return id;
    }
 
    @Override
    public String getOptionLabel() {
        return name;
    }

}

■KeyValueItemインターフェース
package com.lumiere_couleur.android;
 
public interface KeyValueItem {
    // 選択肢の値
    public long getOptionValue();
 
    // 選択肢の表示文字列
    public String getOptionLabel();
}

■KeyValueAdapterクラス
package com.lumiere_couleur.android;
 
import java.util.List;
 
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
 
public class KeyValueAdapter extends ArrayAdapter<String> {
 
    private List<? extends KeyValueItem> items;
 
    /**
     * コンストラクタ
     *
     * @param context
     * @param resourceId
     * @param items
     */
    public KeyValueAdapter(Context context, int resourceId,
            List<? extends KeyValueItem> items) {
        super(context, resourceId);
        this.context = context;
        this.items = items;
    }
 
    public int getCount() {
        return items.size();
    }
 
    public String getItem(int position) {
        return items.get(position).getOptionLabel();
    }
 
    public long getItemId(int position) {
        return items.get(position).getOptionValue();
    }
 
    public int getPosition(long itemId) {
        for (int i = 0; i < items.size(); i++) {
            if (items.get(i).getOptionValue() == itemId) {
                return i;
            }
        }
        return 0;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        TextView label = new TextView(context);
        label.setTextColor(Color.BLACK);
        label.setText(items.get(position).getOptionLabel());
        return label;
    }
}

これでアダプターの量産から逃れられます。

四川省史上最も難しい?!Androidアプリ『リアル四川省』

中学生の頃からゲームセンターで「四川省」や「上海」で腕を鳴らした私ですが、Androidタブレット(MotorolaのXoom)を買って最初にインストールしたアプリはもちろん「四川省」です。
以前のエントリー(Eee Top買ったよ~)でも、タッチパネルPCを買って最初に四川省をインストールしてますし、ほんと好きなんですよね。

「四川省」というのは、麻雀牌を使ったパズルゲームなんですが、別に麻雀とは全然関係なくて、同じ牌を選んで消していくだけの単純なゲームです。
ただし、最大2回まで曲がる直線で結ぶという制約があります。
似たようなゲームに「上海」っていうのがありますが、それよりも少しストイックな感じ?でしょうか。

すぐにいくつかの四川省アプリをインストールしてみたのですが、どれもこれも携帯向けのアプリばかりで、単に携帯向けの画面が拡大表示されるだけなんですね。。
タブレットの大きな画面で遊ぶには画像が粗すぎる~(T T)

というわけで作りました!タブレット向きの「四川省」を!

リアル四川省(176牌モード)
リアル四川省(176牌モード)



その名も「リアル四川省」。
牌画像はSVGというベクターグラフィックスで作成していますので、どんなに拡大してもきれいに表示されます。

リアル四川省(32牌モード)
リアル四川省(32牌モード)


出来上がって最初に遊んだ時は、心から歓喜しましたよ~!
いやほんと、四川省好きの私じゃないと作らないアプリだと思います。

中でも「176牌モード」は激ムズで、

  • スマホではおそらくクリックできないであろう、最多の176牌!
  • 限りなく高い「手詰まり」率!(すみません。牌の並びはランダムで表示しています)
  • 「春」「夏」「秋」「冬」や「菊」「蘭」「竹」「梅」などの絵柄牌も、同じ牌同士じゃないと取れません!

などの特徴を持っています。
もちろん普通のサイズのゲームモードも揃っていますので、初めての方もお気軽にお試しください~

もう少し詳しい解説は「リアル四川省 – Androidアプリ」から、さっさと試したい方は↓下のアイコンからどうぞ。

Androidマーケットで購入
リアル四川省をダウンロード

Androidタブレットをお持ちの方にはぜひとも遊んで欲しいです。
タブレットと四川省って、すごく相性がいいんですよ~。

それと、リリース前から「リアル四川省」を何度も遊んでくれたパートナーarcielと、友人のこむりん氏に謝意を表したいと思います。
おかげで大分バグがつぶれたよー(笑