2010/06/20(Sun)逆あんみつ式ローマ打ち日本語入力

はてブ数 2010/06/21 18:24 計算機な日記::未分類 つーさ

今日は日本語を打つに当たってqwertyキーボードでも、
2キー同時押しをするようにしたらもうちょっと速くキーボードが打てるんじゃないのということを考えてました。
つまり、かとかをk,aって打つんじゃなくて、k+aを逆あんみつで打つんですよ。
逆あんみつするのにその順番が重要視されるというのがこの入力方法の痛いところですが、
もしこれになれたら、カナ打ちに近い打鍵数で日本語入力できるんじゃないのかと思ったんです。

こういうことを考え始めたのは、twitterでニコラに関するつぶやきが流れてたからです。
この手の話で僕がまず思い出すのがこの動画。障害者のための生放送字幕支援の話です。
http://www.youtube.com/watch?v=vk8ZFAM2N2s

で、フツーのqwertyキーボードでも2キー同時押しぐらいなら認識してくれるので、
この動画に倣って、もしこの「逆あんみつ式ローマ字日本語入力」をマスターしたら、
僕のタイピングももうちょっと速くなるんじゃないの?
しかも普通のごく一般的な的なqwertyキーボードで

というわけでちょっと(30分くらい)練習してみたりしました。

ミスタイプを考慮しないタイプのタイピングゲームで速度が3/4というところ。
やっぱり単に逆あんみつといえども、キー入力順が制限されるというのがきついようで、
ミスタイプが増えに増えてしまって入力効率があまりよくないという結果が出ました。

日本語タイピングをより効率的に
ni ho n go ta i pi n gu wo yo ri ko u ri tu te ki ni

と打ちたいのに、

にほんごたいいpんうgをよいrこうりうってきに
ni ho n go ta i ip n ug wo yo ir ko u ri ut te ki ni

たとえば、短い時間の同時入力をコレクトする支援ツールをさくっと開発すればいいという考えもあるのですが、
これをやっちゃうと人間側の精度が甘くなって、フツーのキーボードで使えなくなっちゃうだろうし、
練習にならなくなるのでは? と思ったので、今日のところは保留にしておきました。
ただ、CtrlとCapsLockの入れ替えじゃないですが、自分の環境でだけ使うためにならいいのかなぁとも思いますね。
いずれ作ってちょっと使ってみようかと思います。

そこまでするならキーボード配列変えろと言う話もありますが、配列をがらっと変えるのにくらべると習得が速そうなので。
あー、左手に母音が集結してるdvorak-erが、この手の支援ソフト使うとタイピング超速くなりそうですね。

そんな僕の知り合いにはTCODEマスターがいるらしいです。
TCODEはかな漢字変換システムとはそもそも思考方法が違うので、
日本語を打つときにどういう思考の流れで分をタイピングしているのかが不思議です。
実際に紙とかに字を書くのに近い発想なんでしょうか。そんな気がします。

2010/03/29(Mon)思い込み

はてブ数 2010/04/04 22:36 計算機な日記::未分類 つーさ

LAMEの-kオプションに関する話。

CDをPCに取り込むときや、ブログに自作曲を載せるとき、ずっとLameのお世話になってきた。
僕の耳では、-kを付けないでエンコードすると、音が若干籠もって聞こえたと感じたことがあって、
それ以来、kオプションを付けてたのだけど、最近のLameでは-kがObsoletedだそうで使えない。

多くの人が、余計なオプションを付けることなど音質を劣化させるだけだ、
kオプションなんてもっての他と記事を書いているのも気になったので、ちょっと試してみた。

実験

使ったトラックはJaccaPoPのアルバムParsleyより MIRU key wayを。
Lame 3.98で、オプションにはいつも使っている -V 2 を指定。
--lowpass 16~20 で作ったMP3と、もとのWAVでABXTestを10回ずつ実施した結果がこれだよ。

  • lowpass 16 transition band: 15115 Hz - 16360 Hz : Total: 9/10 (1.1%)
  • lowpass 17 transition band: 16538 Hz - 17071 Hz : Total: 7/10 (17.2%)
  • lowpass 18 transition band: 17960 Hz - 18494 Hz : Total: 5/10 (62.3%)
  • lowpass 19 transition band: 18671 Hz - 19205 Hz : Total: 4/10 (82.8%)
  • lowpass 20 transition band: 20094 Hz - 20627 Hz : Total: 6/10 (37.7%)

どう見ても思い込みです本当にありがとうございました。

有意水準を5%とすると、16しか聞き分けられてないことになる。
ちなみに--lowpassオプションを付けないときは19と同じファイルができてた。

うーん、僕の耳はもうちょっといいかと思ってたんだけど(笑

2010/03/01(Mon)続・言語の壁

はてブ数 2010/03/01 23:06 計算機な日記::ソフト作り つーさ

3月です。

体調不良気味でえsサボってDirect3D周りの記事読んでたら、10時間経ってました。やばい。

C++使おうと思ったら、C++にはGCがないから、
自分でGCを作った方がいいのか、それともSmartなポインタを駆使すべきなのか。
まぁ、自分でGC作ろうと思ったら研究が足りないので、おかしなGC作ってメモリリークさせるよりは、
Smartなポインタクラスを作った方がきっと成功しそうな気はしますよね。

パフォーマンス

以下gdgd

続きを読む

2010/02/16(Tue)言語の壁(C#とC++の狭間で揺れる)

はてブ数 2010/02/16 5:21 計算機な日記::ボクと計算機 つーさ

プログラム書くのに言語はそんなに問題じゃない。だってやることは一緒さ。
それはある意味正しいけど、ある意味間違いでもある。
だって、高級言語には構文だけじゃなくて「機能」が備わってる。

就活してる。会社説明会とか行く。
どこに行っても「C/C++プログラミング経験のある方」と言われる。
僕の普段使いの言語はC#なんだよなぁ。

僕はゲーム作りに、ずっとC#を使ってきた。
でも、高確率でこれからはC++を使うことになると思う。あるいはJavaかもしれない。
僕はC++も書けるけど、「STLをある程度使える」ぐらいのレベルでしかなくて、マスターしてるとは言い難いし、
Javaなんか、大学の課題でブロック崩しAppletを作っただけ。ほとんど書いたことがない。

たとえば、C#で僕が作ったゲームアプリケーションと同じコトをC++でやろうと思うとどうなるのか。
C#にはC#の流儀があって、C++にはC++の流儀があるから、1対1でトランスコードするのが必ずしも美しいわけではないけど、
C#からC++へ環境を移そうと思ったときに、今まで書いてきたコードはどうすればいいのかというのを考えてみる。
C++を日常的な言語として使うにあたって、僕が今から勉強しないといけないことは何なのか明確にする意味を込めて。

続きを読む

2010/01/27(Wed)ゆびったー - twitter botを作ってみた

はてブ数 2010/01/28 0:36 計算機な日記::ソフト作り つーさ

前から1度ぼっとを作ってみたかった。
別に、そんな難しくなかった。

@jubeatter
自己紹介: @ttsuki (TU-SA) の jubeatニュースを報告するbotです。フレコ: 14400002896462

今回もC#で書いた。

似たようなこと誰かやってないかと思ったけど、誰もやってなかった。
まぁ、誰得?って感じではある。

1回の更新に関するつぶやきを1つにまとめたら、自分の本アカウントでも使えそうではある。
ごく身内向けに、あー、つーさ今ゲーセンにいるのね、みたいな。
試しにWebサービスにしてみるとか?

OAuth に関しての参考メモ
http://code.google.com/p/oauth/
http://watcher.moe-nifty.com/memo/2009/04/c-oauth-c097.html

2009/10/08(Thr)めも

はてブ数 2009/10/08 8:52 計算機な日記::ソフト作り つーさ
  • XNA の検索結果 約 3,420,000 件中 1 - 10 件目 (0.22 秒)
  • Managed DirectX の検索結果 約 297,000 件中 1 - 10 件目 (0.24 秒)
  • SlimDX の検索結果 約 14,800 件中 1 - 10 件目 (0.15 秒)
  • SlimDX に一致する日本語のページ 約 5,590 件中 1 - 10 件目 (0.23 秒)

うーん……

GSDKをSlimDX上に移植してます。
ちょこちょことブラッシュアップしつつ、だいたいはコピペっていう。
MDX1.1に比べて微妙に不親切だったりしてますが、書き換えること自体はあんまり難しくないみたいです。
ただ、これ何だろう? と思ったときに調べると↑なので、移植が終わってからが難航しそうだなぁ。

なんつーか、ライブラリばっか作ってないでゲーム作れって話なんですが。

2009/05/27(Wed)StaticResourceLoader.cs

はてブ数 2009/05/27 2:48 計算機な日記::ソフト作り つーさ

GSDK on C# で。

これで

namespace Tsukikage.GameSDK.Base
{
  public interface IDXResourceLoader<ResourceType>
  {
    ResourceType LoadResource(ResourceType target);
  }
}

こうして

namespace Tsukikage.GameSDK.Direct3D
{
  public class D3DDevice : DXResource,
    IDXResourceLoader<D3DTexture>, IDXResourceLoader<D3DFont>
  {
    public D3DTexture LoadResource(D3DTexture target)
    {
      LoadTexture(target);
      return target;
    }
  }
}

こうやって


using Ref = System.Reflection;
namespace Tsukikage.GameSDK.Base
{
  /// <summary>
  /// staticリソース読み込み支援クラス
  /// </summary>
  public class StaticResourceLoader
  {
    static Dictionary<Type, StaticResourceLoader> loaders = new Dictionary<Type, StaticResourceLoader>();
    public static void Load<TypeToLoad>(Type target, IDXResourceLoader<TypeToLoad> loader)
    {
      lock (loaders)
      {
        if (loaders.ContainsKey(target) ) 
          return;
        
        loaders[target] = new StaticResourceLoader();

        foreach (Ref.FieldInfo fi in target.GetFields(Ref.BindingFlags.Public | Ref.BindingFlags.Static))
        {
          if (fi.FieldType == typeof(TypeToLoad) && fi.GetValue(null) != null)
            loader.LoadResource((TypeToLoad)fi.GetValue(null));
        }
      }
    }
  }
}

で、こう。


namespace WindowsGame1.Scenes
{
  public class Textures
  {
    public static D3DTexture Circle = new D3DTexture("circle.png");
  }

  class Scene1 : Scene
  {
    public override void Initialize()
    {
      StaticResourceLoader.Load<D3DTexture>(typeof(Textures), GSDK.D3D);
    }
  }
}

……。

まず口から出てくるのは「キメェ」の一言かもしれない。

ただ、大富豪的プログラミング時代においては、中規模程度のゲームまではこういうリソースの持ち方もありかなぁと思わないでもない。

(自分も含めて)ゲーム作り初心者が多いうちのサークルでは、この前もテクスチャリソースがリークして大変なことになってたけど。

ここを読んでくださっているみなさんはどう思われますか、なんつて。

ここを見てる人はきっとリソース管理なんて朝飯前で、こんなことしないのかもしれない……。

あー、ゲーム作りてぇなぁ……。