たまりば

  パソコン・インターネット パソコン・インターネット  三鷹市 三鷹市

Pokémonのアクセント記号は「ポケモン」と読ませるためではない
2016年07月24日 02:28

PokémonGOが日本で配信開始され流行っている。
そんな中、「é」についての昔からある間違った記述が目に入り気になった。
Pokémonに付いている「´」記号(アキュートアクセント, アクサンテギュ)については北米版ポケモンが出た昔から各所でよく説明されていたが、次のようなものが多い。
Pokemonでは「ポケモン」と読んでくれないので、「ポケモン」と読ませるためにアクセント記号を付けてPokémonにした。
しかしその甲斐なく「ポウキモン」になってしまった。残念なことである。
これは間違っている。
「Pokemonでは『ポケモン』と読んでくれない」までは合っているのだが、アクセント記号を付けて/ポケモン/と読まれることはない。ここで想定している間違った発音は、eが黙字になって/poʊkmɒn/(ポウクモン)になってしまうことである。
黙字でないことを示すためにアクセント記号を使う用法は英語において一般的である。
Wikipediaの「Acute accent」が参考になるが、スペイン語「mate」(マテ)を「maté」としたり、日本語「酒」を「saké」としたりする。
ではこれで/サケ/と読んでくれるかというとさにあらず、アクセント記号にそのような効果は無いのであって、/sɑːkeɪ/(サーケイ)や/sɑːki/(サーキ)となってしまう。/seɪk/(セイク)にならないというだけだ。
そもそも英語では音節末に/e/という音素は存在しない。どう書こうが英語に存在しない音は英語話者は発音できないのだ。(外国語に堪能な人なら頑張って発音するかもしれないが)
なので、/ポケモン/を英語話者が発音するなら/poʊkimɒn/(ポウキモン)が精一杯なのであって、アクセント記号はポウクモンでなくポウキモンという比較的原語に近い発音をさせるためにある。
上手く想定通りの働きをしてくれたというべきであろう。  

  • PCのキーボードのアーウが反応しなくなったあどうすえばよいか
    2016年07月17日 04:34

    PCのキーボードの「R」が反応しなくなったことをその「R」の使えないキーボードで打ったツイートが少し前に話題になっていた。
    ここで反応しなくなったキーが「R」だというのが絶妙だ。
    Rを使わないとアールと文字名を打つこともできず、アーウという間の抜けた字面になるのがよい味を出している。
    これが
    Aエー、Cシー、Eイー、Fエフ(EHU)、Gジー、Hエイチ(EITI)、Jジェー(ZYE-)、Lエル、Qキュー、Vブイ、Wダブリュー、Xエックス、Yワイ
     ではその文字を使わなくても文字名が打ててしまう。
    Bイー、Pイー、Kエー
     ではE・Aに読めてしまい分かりづらい。
    Dヒー、Tヒー
     は「ディー」や「ティー」の発音の中に存在しない「h」が出てきてしまい文字名に結びつきづらい。
    Iア、Oー、Uy-
     この辺は情報が足りなすぎなんだか分からない。
    Mエウ、Nエウ、Sエウ
     これらはなかなかよい。「Nのいぎどなりのエウ」などよい間の抜けぐあいだ。ただ3つのどれか分からないのは欠点か。
    Zエット
     これもなかなか面白い響きだ。「Shiftの右隣のエット」「Xの左隣のエット」が打ててしまうのが多少残念。



    さてそれはそうと、R(など英字キー)が打てなくなった時の対処法を考えてみよう。
    なお当該ツイートの画像はMacっぽい気もするがMacはよく知らないので主にWindowsについて考える。

    まずはRが打てなくなったことを伝えるために1回だけでいいから「R」の文字を入力する方法を考えよう。

    色々あるが、面白いところからいくと、英単語をカナ表記から変換する方法がある。
    MS-IMEでは例えば「かー」を変換すると「CAR」が出せるので、Rを打たなくてもRの文字を出せる。
    他の文字も考えてみると例えば
    BらむLAMB
    DしゅみっとSCHMIDT
    IらてんLATIN
    KないふKNIFE
    MあんばーAMBER
    NこらむCOLUMN
    OかむCOME
    PれしーとRECEIPT
    SきっずKIDS
    TくりすますCHRISTMAS
    UかっとCUT
    ZぴっつぁPIZZA
    といった出し方があるだろう。
    なおZは「じー」でも出たりする。

    他に、どこかからコピペしてくる方法もある。
    Webブラウザで「ASCIIコード表」など適当な語句で検索すれば見つかるだろう。

    まともな方法では、IMEパッドの手書きや
    IMEパッドの手書き
    文字一覧、
    IMEパッドの文字一覧
    ソフトキーボードが使える。
    IMEパッドのソフトキーボード

    文字一覧と同様のもので、「文字コード表」もある。
    文字コード表
    名前を指定して実行から「charmap」…が打てないのでどうにかして探そう。

    変わったところで、Alt+テンキーでの文字コード入力。
    日本語WindowsではShift_JISの文字コードを入力する。Rなら0x52(=82)なので、Altを押しながらテンキーの8,2を順に押し、Altを離すとRが入力される。
    またレジストリのHKEY_CURRENT_USER\Control Panel\Input Methodに文字列値「EnableHexNumpad」を作成し値を「1」にするとAltを押しながら「+」を頭につけた16進のUnicodeで入力できるようになる。Shift_JIS外の文字も打てるようになるし、文字コードはふつう16進で書かれるものなのでそのまま打てて便利である。



    さてしかし「R」だけ打てても日本人は困る。「らりるれろ」を入力したい。
    そんなときにはソフトウェアキーボードだ。
    IMEパッドのソフトキーボードのかなモードを使って1文字づつ打つか、
    IMEパッドのソフトキーボード(かな)
    osk.exe「スクリーンキーボード」なら普通にR,Aと打って「ら」を入力することができる。
    スクリーンキーボード
    Windows+R…が使えないのでマウス操作で、名前を指定して実行から「osk」を実行。
    O,S,Kが使えない時はマウス操作でなんとかしよう。
    Windows8以降なら「タッチキーボード」も同様に使える。
    タッチキーボードのアイコン
    タッチキーボード
    (それにしてもWindowsにはソフトウェアキーボードが多いな…)



    さて何度も打ちたいときはこれではまどろっこしい。やはり物理キーボードを使いたい。
    それならばMS-IMEのローマ字設定を変えよう。
    使っていない例えばQやXあたりをラ行にあてればよいだろう。
    (なおMacのことえりではデフォルトでLがラ行を打つのに使えたように思う。)
    MS-IMEでローマ字の追加
    ここでちょっとしたおまけで、例えば「QYA」で「りゃ」が打てる状態で、QYAで打った「りゃ」を1文字消して「り」になったものをF10で変換すると「RI」になってくれるので、Rキーを使わず「R」の文字を出すこともできる。

    MS-IMEを使う方法は日本語入力時はよいが、IMEをオフの状態で入力しなければならない場合に困る。
    面倒だがレジストリをいじってキー配置を変更するのが最終手段である。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layoutにバイナリ値「Scancode Map」を作成し以下のようなフォーマットで書く。
    dword 0;
    dword 0;
    dword length+1;
    {
        word scancode_out;
        word scancode_in;
    } * length
    dword 0;
    めったに使わない無変換やF1など適当なキーをRとして使うようにするとよいだろう。
    例えばF1をRにするなら、F1のスキャンコードが0x3B、Rは0x13であるから、
    00 00 00 00 00 00 00 00
    02 00 00 00 13 00 3B 00
    00 00 00 00
    こうなる。
    スキャンコードの表は検索すれば見つかるだろう。例えばここ
    なお注意点として、PS/2キーボードから送出されるスキャンコードとWindowsが内部的にScancode Mapに使っているスキャンコードは別物なので、「Scancode Mapに設定するための」スキャンコード表を探そう。
    また、1ユーザーのみの設定がHKEY_CURRENT_USER\Keyboard Layout\Scancode Mapで昔はできたのだが7以降できなくなっただか環境によってできないだかという。実際Windows8.1で試してできなかった。
    昔WindowsXPで1ユーザーのみの設定をした時の記事も参考になるかもしれない。
    http://wentwayup.tamaliver.jp/e50134.html

    以上、突然Rが反応しなくなった時にはぜひ試してみてほしい。  

  • 【訂正・加筆】
    2016年06月06日 00:00

    2016/06/06 Windows7でのペイントの劣化具合に新しく気づいたバグ情報を追加。
    2015/08/29 ベースラインPICの注意点で、型番の間違いを訂正、OPTION2の書き込み方法の間違いを訂正。
    2015/08/28 Windows7でのペイントの劣化具合に新しく気づいたバグ情報を追加。
    2013/09/26 5×5 ひらがなフォント5×5フォント改 / JavaScriptフォント表示機から5×5ドットフォント完成版に、思えばリンクを貼っていなかったのでリンク。
    2013/05/05 最弱のPICマイコンで電子オルガン_前編の単純ミスを1ヶ所修正。
    2013/04/27 文字コード表示機が特定の環境で動かない問題を修正、RTL文字での表示崩れを修正。
    2013/03/03 5×5ドットフォント完成版が紹介されていたので少々加筆しました。
    2012/11/18 ハロウィー?ンの正規表現に訂正・加筆があります。

    【このエントリについて】
    (2012/11/18)
    今まで、記事の内容にミスを見つけた場合はその記事だけ修正していたのですが、最新の記事はともかく古い記事にミスを見つけた場合は直しても気づかれないだろうと思って直すのが億劫になっていました。
    これではいけないと、どうするべきか考えた結果、訂正を知らせるエントリを1つ作ることにしました。
    記事を訂正した際にはこのエントリを更新して最上位に持ってくるように運用しようと思います。
    (2013/03/03)
    訂正だけに限らなかったので、エントリ名を【訂正】から【訂正・加筆】に変更しました。  
    タグ :お知らせ

  • ASCIIと仮名を1バイトに収める / 小書き仮名の性質について
    2016年06月05日 03:28

    昔ゼルダの伝説夢をみる島というゲームがあった。名作だ。
    そのテキストデータのダンプがネットで見つかるのだが、小書き仮名のデータがおかしい。
    たとえば「マダムニャンニャン」というキャラクターがいるのだが、これが「マダムニゃンニゃン」となっている。
    「へ」と「り」をカタカナひらがなで統合するのは常套手段だが「ゃ」は明らかに形が違う。
    念のためゲーム中の表示を確認してみたが、やはりどう見ても「マダムニャンニャン」である。
    データを作ったのは外国人だろうし何かミスがあったのだろうか…。

    それはさておき。

    先日なんとなくポメラのようなキーボードで文字を打って保存できる機械を自作することを考えていた。
    漢字は変換システムの自作は困難だしデータ(辞書・フォント)の容量も食う。とりあえずASCIIとひらがなカタカナだけで考えよう。
    そうすると1文字に必要なデータ量は…
    ASCII: 95文字
    ひらがな: 83文字 (ぁーん)
    カタカナ: 84文字 (ァーヴ)
    他: 「ー」「改行」「null文字」
    この辺までは最低限必要だろう
    あとできればキーボードから打てる記号くらいは入れたい。
    つまりASCIIとかぶるものを除いて少なくとも「、。・「」」の5文字、あと「\,¥」と「~,~」を同一視するかは微妙。

    最低限で考えても95+83+84+3=265文字、惜しくも1バイトに収まらない。悔しいので要らない文字を削って収めよう。
    まず「ゐゑヰヱ」は現代語を書くには不要だ。「ヘベペリ」はかなカナを統合する。まだ足りない。ひらがな「ゎ」も要らないか。
    これで256文字。ギリギリで収まったがやはり記号が欲しい。
    あと削れる文字は…ひらがなの「ぁぃぅぇぉ」も削るか…

    と思っていたとき気づいた。
    小書き仮名は普通に使う分には常に直前の文字と一体となって使われる。
    であればかなカナの区別はデータ上には必要ない。表示時にだけひらがな/カタカナステートに応じて別の字形を出せばよいのだ。

    そうすると「ぁぃぅぇぉっゃゅょ」で9文字も空く。「ゎ」も消さずに済む。
    これで記号も入れられそうだ。めでたしめでたし。

    さてそれで思い出したのが冒頭のゼルダの伝説夢をみる島。
    あれは同じ仕組みで文字コードを圧縮していたのではないか。
    あのゲームは表示テキストに混じって人物やアイテムなどのアイコンが使われる。それで文字数が1バイトに収まらなくなって小書き仮名を統合し、それがテキストダンプに現れていたのではないか。

    …と、そう思ったのだが、見なおしてみるとおかしいのは「ャ」だけで「ッ」「ュ」「ョ」は正常であった。(ぁぃぅぇぉは無い)
    統合するなら全部統合するだろうから、やはりただのミスだったのだろう。「ゃ」と「ャ」は形が似ているので見間違えたんだろうな。  

  • ARMマイコンはじめました。
    2016年05月28日 14:43

    はじめました。2013年6月頃に。なぜ今頃書くかというと、9割書き上げて放置されていたのを今発掘したためだ。

    その頃、LPC810というARMマイコンがでた。
    8ピンDIPなのでブレッドボードに直接挿せるという。

    これが秋葉原のマルツに入荷したというので早速買いに行った。

    売り切れだった。

    しかし上位種のLPC812は残っていたのでこれを買ってきた。
    LPC812はピン数やメモリ容量、周辺機能といった全ての面でLPC810を上回っており、値段もあまり変わらない。今見ると25円差。当時もたぶんそれくらいだったと思う。
    ただ1つだけ重大な欠点があり、パッケージがDIPではなくSOPで扱いづらい。
    ハーフピッチのユニバーサル基板でピッチ変換してみたが、後悔した。めっちゃめんどい。
    LPC812をハーフピッチ基盤にハンダ付け
    秋月でちょうどいい変換基板が80円で売られているのでお勧めだ。

    さてこの石はPICやAVRと違って専用の書き込み機が必要ないので出費が少なくて嬉しい。

    書き込み用の接続は開発環境が無くても試せるのでまずこれを試す。

    用意する物はシリアルポートと7404(NOT)か何かとあと抵抗。
    自分はこんなこともあろうかとシリアルポート付きのPCを買っているが、きっとUSB-シリアル変換ケーブルでも大丈夫だと思う。
    7404は要するに論理を反転できればいいので7400(NAND)とか7402(NOR)でもよい。自分が使ったのもNANDだ。
    シリアルポートとの接続はこのページを参考に直結した。
    軽く説明すると、シリアルポートの受信側インピーダンスは3kΩ~7kΩらしいのでそのための4.7kΩと、電圧が高いので電流を落とすための100kΩである。

    この回路をLPC812のUSART0ポートに接続、そしてブートローダーを立ち上げるためにPIO0_1をGNDに落とす。
    以上で準備は完了。
    LPC812 をシリアルポート接続
    電源を繋ぎ、適当なターミナルソフトからデータ8bit、パリティなし、ストップ1bit、速度任意の設定で「?」の1文字を送信する。
    成功すれば「Synchronized<改行>」が表示されるはずだ。
    LPC812_Symchronized

    接続に成功したので次は開発環境のLPCXpressoIDEをいれる。登録とか要るのでまあ適宜なんとかする。
    さらに書き込みソフトのFlashMagicをいれる。

    IDEを立ち上げる
    左下に「Quickstart Panel」があり、その中の「Start here」の中に「Import project(s)」
    Examplesフォルダが開いてるのでその下から
    \NXP\LPC800\NXP_LPC8xx_SampleCodeBundle.zip
    のようなものを探してあとは適当に全部入れる。
    Project Explorerを見ると色々入っている。BlinkyというモノがLEDを点滅させてくれそうだ。してみるとこれだけ入れればよかったか。まあいいや。
    Blinkyを選んだ状態でメニューからProject→Build Projectを選択。
    すると何やら動きだし、デバッグビルドができたようだ。リリースビルドの方が良かったかと切り替えてみたら何やらエラーが出た。まあデバッグで困ることもないしいいや。
    さてビルドができたのでFlashMagicから書き込もうとしてみるが、できたファイルはaxfで書き込むためのファイルはhexのようだ。
    調べてみるとどうやらaxfファイルはIDEから直接書き込んでデバッグとかするためのファイルのようで、hexファイルを出力するにはaxfから変換する必要があるようだ。めんどい。
    http://support.code-red-tech.com/CodeRedWiki/OutputFormatsを参考に
    下のバーの右手側にあるというプロジェクト名を探したら左側にあったが、気にせずCtrlクリック。
    intel形式のhexファイルにしたいので
    arm-none-eabi-objcopy -O ihex blinky.axf blinky.hex
    を実行。失敗。ファイルが無いと言われる。
    パスが違ってた。こうだな
    arm-none-eabi-objcopy -O ihex debug/blinky.axf blinky.hex
    今度は成功。思っていたところの1階層上に出力されたがまあいいや。

    あとはFlashMagicで適に設定して書き込み。これは難なく成功した。
    FlashMagicでLPC812に書き込み

    ブートローダー設定用のGNDに落としたピンを外して電源を入れると
    …動いた!
    LPC812_blinky
    3つのLEDが順番に消灯する。多分順番に点灯するべきなので、+-を間違っているようだがまあいいや。

    その後TVにカラー出力など試していた
    LPC812でNTSCカラー
    が、命令プリフェッチの関係かクロック数がどう数えても合わないので力尽きた。
    より困難な(プリフェッチ幅が広く、I/O命令が遅い)LPC1114でNTSCカラー出力を実現したPancake(IchigoJam周辺機器)はすごいと思う。尊敬する。