SONY sPresenseっておもしろそうか?

GPSモジュールのことを調べていて、SONYのマイコンボードがおもしろそうではないか?という気がしてきた。値段は5千円程度。単体では通信機能を持たないが、拡張基板を接続するといろいろと通信機能が追加できるようだ。

sPresense
という製品。今年の夏に発売された物のようだ。Arduino環境で開発できる。

5千円位なのだが、CPUは6コアなんだとさ。プログラムサイズが700KBていどで、ESP32とかと比べるとかなり小さいのだが、それがどの程度問題になるかは作ってみないとわからないよな、というのが経験の無い私の感覚だ。

ところがこれ、私がいつも使っている開発環境である
PlatformIO
には対応していないが、
対応させる方法
を書いてくれている人がいたのでそのうちやってみたい。

それにしても、マイコンがたくさん集まってきたな。なにかしら作品作らないとな。

M5Stack(esp32)で音声合成してみる

最近ESP32のネタばかりだな。それにしても、こんな高機能なマイコンが20年前の暇な時期にあったなら、おいらの人生もうちょっと変わったかもしれないなとか、無駄な妄想をしている。まっ、今このマイコンで遊んでいるんだから、それで良いことにしよう。

ものすごく音質が良いわけではないけれど、小さなシステムで音声合成ができるというのがおもしろい。そう言えば、それこそ20年以上前にリコーが作っていたのだと思うVC2とかいうMS-DOS用の音声合成システムがあった。テキストファイルを指定すると男性の声でしゃべっていた。MS-DOSの時代だからそんなに潤沢にメモリーがあったわけではない。CPU速度だって今の1/100位かもしれない。

さて、前書きが長くなったので、そろそろ本題に入ろう。

AquesTalk

超軽量の音声合成ライブラリである。
AquesTalk
をM5Stackで使ってみよう。作業は以下のようなステップになる。

  1. 上記サイトからライブラリをダウンロード
  2. 各開発環境に合わせてファイルを配置
  3. ビルドとマイコンへの書き込み
  4. 動かして遊んでみる。

ダウンロード

上記ファイルをダウンロードする。このファイルはライセンスキーを指定しないと評価版となる。

ファイルの配置

platformioでの開発

$ platformio init -b m5stack-core-esp32

これでプロジェクトのビルド準備ができた。lib, includeというディレクトリができていることだろう。それぞれに先ほど取ってきた.zipファイルに含まれているヘッダとスタティックライブラリを置く。

続いて、platformio.iniを編集する。

m5stack-core-esp32セクションに以下を追加する。

build_flags =
  -laquestalk
  -Llib/

これで準備は整った。適当にプログラミングしてビルドしてみよう。

サンプルコード

ありがたいことにアクエストのサイトにサンプルプログラムがある。一発でビルドが通るので試して見るには良い。

ところが、このスケッチだと音声が倍速再生になってしまう。原因をちゃんと追っていないのだが、モノラル→ステレオ変換の問題か、サンプリングレートの問題かどっちかだろうな。

これを踏まえて、

.channel_format = I2S_CHANNEL_FMT_ONLY_RIGHT,

とかにしてやるとちゃんと再生できる。

最後に

駅の自動券売機で、テンキーを入力しても鳴り出した音声が止まらずにいらいらすることってないだろうか?「設計者は誰だ!」と思わず叫びたくなるわけだ。

実際にプログラミングしてみるとわかるが、音声を出しながらテンキーから入力されているかを監視して処理をしたり、割り込みという手法を使って音声を停止させたりと、設計段階からちゃんと考慮していないと忘れられることなんだなって思う。自分も「とりあえずいっかな?」とか思ってキー入力による音声の中断は実装しなかったりする。

まあ、ちゃんとしたインフラに入っている物なんだからそのくらいは作っといてほしいなとも思うのだが。

ESP32-DevKitC買ってみた

さてさて、マイコンをいろいろと物色しているわけだが、私のように本来ソフトウェア屋さんの場合、それなりにリソースが豊富なコンピュータの方が扱いやすいという事情がある。先日書いたPro Microみたいなものは、ちょっと複雑な処理をさせようとすると、軟弱な私としては途端にめんどくさくなってしまう。それこそスレッドとか使いたいし、C++11にある便利機能も使いたい。ということで、もう少し規模の大きなマイコンを買ってみた。

買ったものは

これは既にピンヘッダが実装してあるので大変気楽である。買ってきて適当にブレッドボードに置いて、適当にいろいろ接続して使える。

例によってピン配置

USBコネクタを左、チップ面を上に下状態で書く。ピンは向こう側と手前側にそれぞれ19ある。

5V CMD SD3 SD2 IO13 GND IO12 IO14 IO27 IO26 IO25 IO33 IO32 IO35 IO34 SVN SVP EN 3V3
CLK SD0 SD1 IO15 IO2 IO0 IO4 IO16 IO17 IO5 IO18 IO19 GND IO21 RXD0 TXD0 IO22 IO23 GND

PlatformIOでのボード指定

ドンピシャのものはないように思われる。私はesp32devを設定しているが、これで問題なく書き込みできる。

超音波測距センサーSRF02を使ってみる

世の中、いろんな超音波測距センサーはあるものでして。簡単に使えそうなものをってことで、SRF02なんてどうでしょう。

例によってピン配置

基板にある固定用のネジがある方から記す。右からになる。

  • GND
  • MODE
  • SCL
  • SDA
  • 5V

結線

今回は、
Sparkfun Pro Micro 16MHz版
を使った。USBで給電している場合にはVCCピンに5Vが出てくるので、これをSRF02の5Vと接続すれば動く。

c

Pro Micro SRF02
VCC 5V
2 SDA
3 SCL
Mode
GND GND

MODEピンにはなにも接続しない、これでI2C通信ができるはず。

今回私は9番ピンに圧電ブザーを接続してみた。

適当にスケッチを書く

いろんな参考サイトがあるからそちらを見てね。

感想

思いのほか使うのは楽である。このセンサー、検出できる指向性はそれなりに鋭い。複数組み合わせて使用するような使い方も紹介されているので、どの辺りに物があるのかを感知するような作り方ができるかもしれない。

Arduino Leonardoでブザーを鳴らす

前書き

Arduinoの入門スクリプトとしてLEDを点滅させるスケッチはよく見かける。C言語で言うところの”Hello World”みたいなものだろうか。

さて、LEDの代わりに、ブザーを鳴らすことを考えてみよう。

ブザーには2種類ある

ブザーには、ただ電流を流してやれば一定の音がするいわゆるブザーと、スピーカーのように振る舞う圧電ブザーという2種類がある。前者であればLEDの点滅スケッチがそのまま使えるだろう。LEDの代わりにブザーを接続すれば音が出るはずだ。

では、後者の場合は?残念ながら音は出ない。点滅の瞬間にちっちゃなノイズが出るかもしれないが、これでは実用にはならない。

サンプルコード

#define SW 9
#define BZ 8
#define TONE_FREQ 700

void setup()
{
    pinMode(SW, INPUT_PULLUP);
    pinMode(BZ, OUTPUT);
}

void loop()
{
    if (digitalRead(SW) == LOW) {
        tone(BZ, TONE_FREQ);
        while (digitalRead(SW) == LOW); // 離されるのを待つ
        delay(10); // チャタリング除去
    }
    else if (digitalRead(SW) == HIGH) {
        noTone(BZ);
        while (digitalRead(SW) == HIGH); // 押されるのを待つ
    }
    return;
}

動作

スイッチを押している間だけ音が鳴る。ピンはどれでも良いのだけれど、私がこの実験に使ったマイコンのピン配置から考えてちょっと楽だっただけだ。

後書き

小学生の頃、電子工作が好きだった担任の先生が、モールス符号を練習するというキットを作って見せてくれた。完全なアナログ発振回路。ここでやっていることは、その練習機と同等のことだ。スイッチの代わりにキー(電鍵)を接続すれば、モールス練習機になる。

時代は移り変わったとは言え、全く違う考え方や手法を使って同じことを実現しているんだな、と感慨にふけってみた瞬間であった。

HiLetgo Atmega32u4 pro micro

なにものか?

Sparkfun Arduino Pro Microの互換品である。本物を持っていないので、ピン配置とかが完全に同じなのかは知らない。とりあえずピン配置などのメモ。

接続

買ってきた状態でUSB端子に接続すると、Arduino Leonardoとして認識される。それはそれで良いのだろうな。

ピン配置

USB端子を左側にして、チップがある面を表にして置く。ピンは上下2段。左から記す。

RAW GND RST VCC A3 A2 A1 A0 D15 D14 D16 D10
TXO AXI GND GND D2 D3 D1 D5 D6 D7 D8 D9

JAWSで点字ディスプレイを使っているユーザが快適に使えるターミナル環境

ものすごく特定の人用の情報だな。とりあえず現状のJAWS 2018とWindows7/10でやってみた感じ、一応の結論が出たので書き留めておこう。

環境

  • JAWS 2018
  • Windows 10 April 2018 Update
  • Focus シリーズの点字ディスプレイ
  • macOS 10.14
  • VMWare Fusion

結局 MSYS2

いろんなターミナルソフトがあるけれど、結局MSYS2環境が最も安定しているようだ。

MSYS2のサイト
から適切なインストーラを拾ってきてインストールする。これで環境そのものはできるだろう。

JAWSならではの設定

下記項目を設定しておかないと、正しく日本語が表示できなかったり、文字と文字の間に意味不明な空白がはいったりする。

  • LooksカテゴリーのTransparencyをOff
  • TextカテゴリーのFont Selectボタンを押してフォントをMSゴシックに設定
  • LocaleをJapaneseに設定

後は適当に調整すれば動くはず。

Focus 40 Blue 5th クイックレビュー

前書き

なんのことだ?と思われた人も多いだろう。点字ディスプレイの話である。「点字ディスプレイってなんだ?と思われた方もいらっしゃるだろう。点字が表示されるディスプレイである。

コンピュータにはディスプレイが接続されている。ディスプレイには視覚的に見ることのできる文字が表示されているだろう。ということで、点字が読める人ならばコンピュータに接続できる点字が表示できるディスプレイがあれば、ディスプレイを見ることができなくてもコンピュータが使える、ということになるはずだ。

話はそう単純ではないのだが、とっかかりとしてはそう思っていただいてかまわないだろう。

Focus 40 Blueとは

このディスプレイ、米国のフリーダム・サイエンティフィック社が発売しているものだ。最初の機種がリリースされてからはもう15年くらいになるだろうか。最初のものはかなり大きなものだったなと言う記憶がある。

昨年12月に日本でも発売された。詳しい製品情報は
エクストラ社の製品ページ
をご覧頂くとして、どんなディスプレイなのか簡単に書いてみよう。

  • 40セルの点字表示部
  • 8個の点字入力用キー
  • 文書の移動や表示位置を変更するためのナビゲーションキー
  • その他のキー
  • USB-Cコネクター
  • Bluetooth接続(複数台登録できる)

といったところだ。USB端子がUSB-Cなので、端子の向きを考えなくて良くなったのは地味に便利だ。

さて、ソフトウェア的に見るとこのディスプレイには、大きく分けて三つの機能がある。

  • コンピュータの画面を点字として表示する機能
  • コンピュータのキーボードとして振る舞う機能
  • 単体としてテキストデータを編集する機能

以下、それぞれについて簡単にレビューしてみよう。

コンピュータの画面を点字として表示する機能

この部分は、これまでのFocusシリーズと基本的には変わらない。それぞれの点字セルの上にルーティングキーがあるのも同じだ。かつては二組のルーティングキーを備えたものもあったけれど、結局1段一組に落ち着いているようだ。日本のユーザは「タッチカーソル」と呼んだ方が馴染みがあるだろうか。

このルーティングキー、点字ディスプレイに表示されている文字やアイコン(を文字にしたもの)の向こう側のキーを押すと画面上の対応する部分を左クリックしてくれる、というものだ。使い慣れるとなかなか便利である。

コンピュータの表示装置として使用するには、対応するソフトウェアをインストールする必要があり、結局のところ、表示装置として使いやすいかどうかはこのソフトウェアに依存するところが大きい。私は普段 
JAWS
を使っているのだが、その他のソフトウェアだと必ずしも表示装置としての機能を100パーセント使えていないのが現状だ。

コンピュータのキーボードとして振る舞う機能

こちらはインストールしているソフトウェアに強く依存する。キーボードとしてはほとんど使えないソフトからJAWSのようにWindowsで普段行うような操作のほとんどが点字ディスプレイを使って行うことができるものまで様々だ。コマンドが多くて覚えるのが大変なのだが、基本的な編集操作やダイアログボックスの操作、アプリケーションの起動といったことも点字ディスプレイから手を離さずにできる。

文字入力は、残念ながら日本語に対応していない。英語であれば完全に入力できるのだけどな。

単体としてテキストデータを編集する機能

このディスプレイの目玉機能がこれだ。誤解を恐れずに言うなら
ブレイルメモ
的な機能が搭載された。扱えるファイルはASCIIテキスト(正確にはNABCCテキストと言うべきか?)だけなので、点字のデータを編集するのには使えるだろう。想定としては、簡単なメモを取ることだ。取ったメモは点字なのでそのままでは扱いにくい。なんとか日本語の漢字仮名交じりに変換できれば利用価値は一気に大きくなる。

とはいえ、例えばミーティングに出席するとかでメモを取りたいときなどにはかなり重宝するはずだ。通常の点字ディスプレイからメモ機能への移行はとても簡単だ。また、ファイルは点字ディスプレイに装着したMicro SDに保存されるため、たくさんのファイルを持ち歩ける。

一通りの編集機能はあるため、メモを作るくらいならば困らないだろう。そのうちファイルをまたいだ検索なんかにも対応してくれると良いな。

最後に

気の向くままに書いてきたのでわかりにくいかとは思う。気になる方は実際に触って見られるのが良いだろう。11月には
サイトワールド
も開催される。

ということで、私は返却してしまったので、ちょっと前のFocusを使うことにしよう。

スクリーンリーダーユーザーがUNIXみたいなものを触りたくなったときに使えるかもしれない環境

私は古くからUNIXを使ってきた。スクリーンリーダーを選定する際、UNIXと接続するためのソフト(ターミナル・エミュレータ)が使えるかというのは重要なポイントだった。

ということで、現在は
JAWS
を使っているわけだがこれから入門しようとする人にとっての環境はどんなもんだろうと思ってちょっとだけ実験したので、その結果をば。

UNIXはRaspberry Piで

おそらく、最も短時間でUNIXみたいなものを動作させられるのはRaspberry Piだと思う。インストールはほとんど悩まないだろうし、参考サイトも豊富にある。なにより安い。

スクリーンリーダーはNVDAで

UNIX自身にあるアクセシビリティ機能が十分でない以上、WindowsのコンピュータをUNIXに接続して使うのが現実的だろう。そのときに使うのがターミナル・エミュレータだ。で、これが使える可能性があるのがNVDAというわけだ。ちゃんと動くよ。

ターミナル・エミュレータはTeraTermで

いろんなエミュレータがあるけれど、私のかる~い実験ではTeraTermが使えた。Emacs(っていうテキストエディタ)もちゃんと使えるし、画面の内容もちゃんと読める。

なぜにUNIX?

それは愚問だろう。使ってみたいから、でしかないよね。まっ、プログラミングのお勉強したいとか、コマンドラインのインターフェースが好きだとか言う懐古趣味みたいなことを言う人も(おれのことか?)いらっしゃるかもしれないね。

avrマイコンはおもしろいだろうか?

拝啓

最近ラズパイで遊んでいるわけだが、ラズパイは反応が遅いのである。ものすごく短い時間停止するように指示してもその100倍くらいはかかってやっと目覚める。どのくらい短いかって言うと10マイクロ秒。

正直汎用のコンピュータにそういうことを求めてはいけないのだろう。いろんなことが同時にできて大きなデータが扱えて、インターネットに接続できる。それがフリスクの箱くらいのコンピュータ、それがRaspberry Piの姿なんだなって改めて感じる。

じゃ、10マイクロ秒をきっちり計ってくれて、さっさと反応してくれるものは?それがマイコンなのかな。ということで、そろそろマイコンにも手を出してみよう。

みんなPICだから私はAVRで

そんなわけでもないけれど、avrはちょっと楽しそうなのだ。なにがって?

  • C言語で開発できそう。
  • gccが使えるようなので基本無料で環境が作れる
  • 開発ツールとして使い慣れているUN*Xで開発できそう

ということだ。少しマイコンが手に入りにくいようだったり、情報が少なめだったりするみたいだけど、おもしろそうである。

ということで、今後どうなりますやら。

Raspberry Pi Zero WHを買ってみた

既にたくさんの情報があるのでそういう一般的な情報は他のサイトに譲ることにして、私が提供しておきたい情報は、この小さな基板上の端子類の配置である。電源の位置を間違えるとおそらくせっかく買ったラズパイを壊しかねない。

ピンヘッダが手前に来るように本体を置くと、向こう側に端子が三つある。

左から、

  • Power
  • Micro USB OTG
  • HDMI

となる。左側の短い辺がカメラ用のフラットケーブル、右側がMicro SDカードのリーダーだ。

この情報で、助かる人がいるかな?

私が買ったのはRaspberry Pi Zero WHではないが、全部そろっているこちらはお勧めである。

Radikoを聴くためのPythonスクリプト

ということで、ちょろっと改造してみました。

最近はrtmpdumpが必要なくなっているのですね。コマンド1発でちゃんと再生できてます。

#./radiko.py FMJ

とかやるとちゃんと聴けます。TBS, LFR, FMJ, NACK5 BAYFM78, JOAK, JOAK-FMとかやるみたい。

ま、遊べます。

Radiko.py

Debian GNU-Linux (Stretch)のスクリーンリーダー使用インストール

拝啓

最近Raspberry Piで遊んでいる。どんな風に遊べるかは別に書くとして、こいつに使われているOSは、Raspbianっていう名前なのだ。そう、Debianが元になっているわけだね。

ということで、MacにもDebianをインストールしてみようと思ったのである。Raspberry Pi上でのソフトウェア開発がちょっとは楽になるかな?ってことで。

で、どうなのさ?

結論は、スクリーンリーダーが入っていて、インストール時点からちゃんと使うことができる。点じディスプレイを接続すればおそらく自動認識してインストール画面が読める。

仕組みは完璧だが、私の環境では音声がとても不安定で、インストール途中で音声だけ停止してしまう。原因は調査していない。

インストール方法

Debianのインストールガイドに極めて詳しい説明がある。私がやらなければならないのは、インストールしているところの実況録音の公開くらいではないだろうか。ということで、チャレンジしてみたいなと思った方はぜひ、本家のページをご一読あれ。

インストールしただけじゃ意味ないけど?

そのままちゃんと使える。音声は不安定なままだ。点じディスプレイを使ってコンソールでDebianを使おうとしているならばほとんど問題はないだろう。残念ながら日本語を書くことはできない。これに関しては
GR for UNIX
ってのがあるが、長期にわたって更新されていない。

Apple Watch 買ってみた

一月ほど前にApple Watchを買ってみた。購入に先立って、VoiceOverを使ってWatchを操作している人のレビューを検索してみたのだが、あまり良いレビューが引っかからない。せめて初期設定の方法くらいないかなと思ったのだが、残念ながら見つけることができなかった。

ということで、この記事では初期設定がどうだかとか書いてみよう、と思うのだが?

こっちはブログ。なので、ブログらしいことを書くことにして、資料性の高い方はちゃんとページを作る事に使用。

なんに使えるのか?

さてさて、私は触って時刻を知ることができる時計を複数所持している。SEIKO, ARSA, CITIZENだ。時計は基本的にこれで用が足りる。じゃ、なんでApple Watchなのか?

そりゃ、おもちゃにしたいからだ。楽しいじゃないか。それでなにか実用的に使えれば儲けものである。いわゆる歩行のナビに使えればもう万々歳。ということで、GPSが付いている高い方を購入。

実用的にはどうだべか?

まず、「絶対に必要ですか?」と聞かれたら「いや、いらないんじゃないかな?」が答えだろう。だが、あればあったで便利なことも事実だ。持っていて便利だなと思った瞬間は

  • とりあえずiPhoneを持って歩いていると落としそうでひやひやするので、手にWatchが付いていればちょいと安心
  • 必用十分な情報はWatchにも表示されるのでこれを確認しながら歩いて行ける
  • 曲がらなければならない場所で振動による通知も来るので表示を確認できなくても安心である
  • BlueToothイヤフォンはあった方が便利だろうが、なくてもOK

ってとこかな。問題点もないわけではない。

  • iPhoneは片手で操作できるがWatchはそうではない。手首から外してしまうとロックされてしまうので外さない方が良い。だとするとiPhoneを操作するためにどうしたって両手が必用だ
  • VoiceOverの音量をWatchで簡単に調整することができない。Siriに頼むとやってくれるのだが、雑踏だと聴き取ってくれなくて困る。結局iPhoneで変更することになる。
  • 曲がり角の通知が複数回来れば良いのにな。

いろいろ書いたが、おそらくiPhoneを持って歩いているときより安全になったとは思う。使うのに骨もいるし全面的に信頼できるものでもないから、使えないなと思うことも多いのだが、私にとっては十分価値のある買い物になった。Watchで電話がかけられるのは地味に便利だし、自分の消費カロリーなんかが可視化されるのはおもしろい。

ネカフェでスクリーンリーダー

拝啓

視覚障害者が使うことのできるWindowsコンピュータ環境は特殊である。画面を読み取るためのソフトウェアがインストールされていたり、画面を拡大表示するソフトウェアがインストールしてあったり、画面の配色を変更してあったりと様々なチューニングがされている。これはこのようにチューニングしなければ使えないことを意味している。

さて、外出先でどうしてもコンピュータを使わなければならなくなったとしよう。急いで書類を作成しなければならない、作成したものを印刷しなければならない。そんなときに便利なのがネットカフェである。一通りのコンピュータ環境と飲み物などのサービスが付いている。

ところが当然のことながらネットカフェのコンピュータは視覚障害者が使えるようにはチューニングされてはいない。つまり、ネットカフェは使うことのできないお店だったのだ。

さて、つい先日そのネットカフェに行って、画面読み取りのソフトウェアを起動して使うことができたので、その簡単な記録を書いておこう。ほんの少しだけお店の人に手伝ってもらう必要があるかもしれないけれど、十分に使うことができた。

環境など

使ったスクリーンリーダーはNVDAである。このスクリーンリーダーは、USBメモリーに本体を入れておけば、コンピュータにインストールすることなく使うことができる。実にネットカフェ向きのスクリーンリーダーと言えるだろう。

行ったネットカフェのコンピュータにはWindows XPがインストールされていた。事前に店員に「なにかやってはいけないことはありますか?」と質問してみた。答えは、「なにをインストールされてもかまいませんが、再起動するとすべて消えてしまいますから、インストールの際に再起動が必要なソフトはインストールできません。」とのことだった。要するにJAWSはだめである。

ファイルの取得

事前にネットカフェに行くことが分かっているのなら、USBメモリーにNVDAを入れておけばよい。ところがそうも行かないこともあるだろう。

ネットカフェのコンピュータ以外に自分の手の届くところにNVDAをダウンロードできそうなコンピュータやスマートフォンがないのならば、諦めて店員に手伝ってもらうことになると思う。が、私はiPhoneを持っていた。

そこで、iPhoneでNVDAをダウンロードして、DropBoxに措いた。こうすると、直接ダウンロードできる比較的短い(ような気がする)URLが得られる。

ネカフェのコンピュータを起動。どうやらXPが起動したようだ。おもむろに、Windowsキーを押しながらRを押す。「ファイル名を指定して実行」っていうダイアログが表示されているはず。narrator と入力してみよう。英語でなにかしゃべり出したかな?

もう一度Windowsキーを押しながらRを押す。「ファイル名を指定して実行」のダイアログに、先ほどiPhoneで取得したNVDAをダウンロードするためのDropBoxのURLを慎重に入力。うまくいかないと404っていう英語の悲しいメッセージが聞こえる。辛抱してやり直そう。

どうやらアクセスできた。おそらくセキュリティダイアログが表示されている。通常ならAltキーを押しながらRで実行できる。実行できてしまえばこっちのもんだ。状況によってはもう一度Altキーを押しながらRを押さないといけないかもしれない。ダウンロードのためと実行のための2回だと思う。

正直、この部分だけ店員に手伝ってもらうのが合理的だろう。時間のかかる作業ではないので断られることは少ないと思う。

無事実行できれば、インストールの音楽が流れるだろう。後はポータブル版をUSBメモリーに作るように操作する。これで再起動しても大丈夫。

追記

NVDAの起動は、下の手順で行う。

  • Windowsキーを押しながらRを押す。
  • e:\nvda\nvda のように、USBメモリーのドライブ名とポータブル版を入れた場所を入力してエンターキーを押す。

ここで問題になるのは、USBメモリーがどのドライブになるかだ。しょうが無いから、Dから順番に試していく。Fくらいまでにはきっとあるだろう。

さて、これでWordも使えるし、IEも使える。ネカフェでシャワーでも浴びるとするか?

U.S. キーボード

この記事は、一応Windowsのキーボード設定に関する記述である。Windows 7とJAWS 14.0を使っていて、日本語配列キーボードではなくて、US配列のキーボードを使っている(あるいは使おうとしている)人たちに向けての記事である。なお、日本語版JAWSはUSキーボードをサポートしていない。なので、この記事を読んで、JAWSのサポートに問い合わせをすることのないように御願いしたい。そのようなことが発覚すると、この記事そのものの公開を停止しなければならないから。

きっかけはPro Toolsを使っているときだった。どうも動作しないショートカットキーがある。編集操作で頻繁に使用するショートカットキーだったので、使えないとなかなか不便である。 Optionキーとテンキーのプラス・マイナスが動かない。Commandキーとテンキーのプラス・マイナスは動く。Shift:Optionキーとテンキーのプラス・マイナスは動かない。原因を考えても思い当たらない。 とりあえず環境設定のキーボードのところを一通り眺めてみたけれど、なにかのショートカットキーとぶつかっているようでもない。私に見落としがあるのかもしれないが、発見できなかった。 最近変更したことと言えば、OSのアップデートを行って10.8.5にしたことくらい。これが原因だったらかなりいやだなあ。 動いていたときの環境を思い出してみると、Kotoeriが入っていないことだということに気がついた。どうせ日本語書かないんだし、入れなくてもいいやって思ったのだった。ということで、キーボード設定でKotoeriのチェックボックスをオフにして再起動。はい、めでたく上記ショートカットキーは使えるようになりましたとさ。

さて、長かったけれどここからが本題。そもそもPro Toolsは、US配列のキーボードでないと操作できないキーがある。そのうちUSキーボードを買おうと思っていたのだが、このタイミングで発注。土曜日に受け取って、とりあえず設置。Mac側は問題なく動作した。 さて、私はMacの上でWindowsを使っている。VMWareというソフトを動かすと、Macの上でいろんなOSが動作する。このおかげで、一つのコンピュータでMacとWindowsの両方の環境を構築できている。ということで、このWindowsのキーボード設定も変更しなければならない。そのままでも使えるかなと思ったが、いくつかの記号が入力できなかったり、日本語変換のOn/Offが煩雑であったりするので、思い切ってキーボード設定を日本語から英語配列に合わせることにした。

考えなければならないのは下記の二つ。

  • OSのキーボード設定を変更する
  • スクリーンリーダーのキーボード設定を変更する

このうち、OSの設定に関してはいろいろな記事があるので、そちらも参考にしていただくことに使用。

OSのキーボード設定変更。

コントロールパネルから変更できるかと思ったら、これができない。当然と言えば当然なのだが、USキーボードを選ぶと漢字変換ができなくなってしまう。これでは困るので調べてみると、なんとレジストリを変更するのだそうだ。

  1. レジストリエディタを起動する。スタートボタンを押して出てきた検索ボックスに”regedit.exe”と入力すればほぼ確実に起動できるだろう。
  2. 左側のツリーから、 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411 を探す。
  3. このキーには三つの値が含まれている。”Layout File”を探して”KBDUS.dll”に書き換える。
  4. レジストリエディタを終了して、Windowsを再起動。

起動してきたWindowsで、メモ帳のようなものをとりあえず起動。英語キーボードの動作チェック。 右手の小指の右(日本語ではコロンがあるばしょ)を押してみよう。アポストロフィーがちゃんと入力できるだろうか。続いてAltキーを押しながらTabキーの上(日本語キーボードでは全角/半角キーがあるばしょ)を押してみよう。日本語が書けるモードになっただろうか。このキーを単独で押すと妙な記号(アクセント記号とかグラーブとか言うよね)が入力される。

ということで、OSレベルでの設定は終わったと思われる。次はスクリーンリーダーの設定である。

JAWSの設定

日本語版JAWSが英語配列のキーボードに対応していないのはそれなりの理由がある。JAWSには今のところ複数のキーボードレイアウトを切り替えて使用する機能がない。つまり、日本語版は日本語キーボードに、その他の国バージョンはそれぞれの国のキーボードに合わせて作られている。よって、簡単には対応できないのである。幸いなことに、日本語キーボード設定は、すべてユーザが変更可能なファイルに書き込まれている。その気になれば日本語版JAWSを、英語キーボード仕様に再カスタマイズできる。設定ファイルを探してこつこつ編集していくことになるが、やってやれないことはない。正しく動く保証もないが、とりあえず手を出すことができる。

変更するファイルたち

それでは、変更する必用があるファイルを紹介しよう。

続きはこれから、ぼちぼち書くので。

らじるをコマンドラインで録音する

2018/10/08修正

この情報は、登校当時のものである。既にこの方式での配信は終了しており、使うことはできない。

シェルスクリプト

なにやら、mplayerを使ったシェルスクリプトがあった。

そもそも、MarantzのネットワークオーディオプレーヤーであるNA7004に、NHKを登録しようと思って調べていたのだ。こいつ、WMA形式のストリーミングに対応しているので、らじるのWMAストリーミングのURLが知りたかったのだ。

ということで、このシェルスクリプトを読んで解決。

らじる★らじるコンソールプレイヤー

Markdownは便利だろうか?

前書き

最近ちょっとまとまったドキュメントを書いている。もちろんこれまでにもドキュメントはそれなりに書いてきたわけだけど、なぜだかMarkdownという書き方で書いてみようかと思い立った。

詳しくは、 WikipediaのMarkdownの記事 などをご覧いただきたいが、要するに見出しや箇条書き部分に簡単なマークを入れておくと、HTMLに変換してくれたり、Word文書を作ってくれたりするというものらしい。主にHTMLに変換することを目的としているのかな?

Markdownならば、そのままでもほとんど違和感なく読むことができる。書くのもHTMLをそのまま書くよりずっとずっと楽だ。そしてそれなりにきれいなHTMLができる。

文章を書くと言うことは、本来体裁を気にすることではないはずだ。文章そのものを考えたり、どんな構造にするかを考えたりすることがずっと重要なはずだ。

が、ワープロを使ったりするときにはなかなかそこに集中するのは難しい。もちろんスクリーンリーダーユーザーならではの問題もあるのだけれども、もっと文章そのものに力を注ぎたいものだ。

ということで、私は昔から文章だけをメモ帳のようなもの(もうちょっと高機能だけど、エディタというジャンルのソフト)で書いてそれを適当なプログラムに通すと美しく(?)整形してくれるものを使っていた。古くはntf, xtrなど。TeXにはほとんど手を出さなかったけれど、やりたいことはよくわかる。

時代がHTMLになってからは、最低限の要素を使ってHTMLを手書きしていた。なんらかの原稿を書くとき必死でWordを使うより、HTMLで書いて校正してくれる人に渡した方が構造的な意味は伝わりやすい。校正してくれる人がいなくても、Word文書よりはたぶん美しい体裁になるだろう。

が、HTMLは覚えるのになかなか苦労する。総論は賛成でも覚えるとなると二の足を踏んでしまう人も少なくないだろう。ということでMarkdownの登場だ。

HTMLよりはずっと楽に構造を書き示すことができる。見出しにしたい行の先頭に半角シャープを入れればよい。もう一つ小さな見出しならシャープ二つ。段落を分けたいのなら1行空けておけばよい。このくらいならたぶん誰にでもできるだろう。

さて、こうやって書いたテキストをWordやHTMLに変換してくれるソフトが必要だ。ということで、最近MarkDown#Editorなるソフトを使っている。これがなかなか便利だ。

MarkDown#Editorってなに?

エディターというジャンルのソフトがある。その昔ならば、 VZ Editor というものがある。今なら 秀丸エディタ とかだろうか。

主にプログラマーに好まれる傾向があるが、プログラム以外にも文字ならなんでも書ける。ワープロのように印刷機能を持っているわけではないが、文字を書くことにおいては手足のように効率的に動くのがエディターだ。

さて、そのエディターの機能としてMarkDown形式で書いた文章をHTMLに変換してくれるのがMarkDown#Editorである。簡単な形式で文章を書くと、そこそこ美しいレイアウトにしてくれるというわけだ。

画面が左右2分割されており、左側に文章を書いていくと、右側に整形されて表示される。書いているときには左側だけを気にしていれば良い。

入手方法

作者のサイトから入手ができる。まず、作者のサイトを読んで、どんなエディターなのか、概略をつかんで頂けると良いだろう。

HIBARA.org – MarkDown#Editor

~~まだまだ続く~~

北九州にはメーテルがいる

夏に書いた記事を下書きにしたままにしていたら、秋になってしまった。ということで、ここからは8月の話。

最近週末に北九州に通っている。ー用事は、さめのスクリプトの勉強会。なかなか楽しくなってきた。

なんとなく知ってはいたが北九州には松本零士のキャラクターのいろんなものがいるのだ。小倉駅にはメー照る・鉄郎・ハーロックの銅像がいる。ベンチに座っているので、ここで記念撮影する人も多い。

そして、北九州空港には案内をしてくれるメーテルがいる。音声認識ができるらしく、こちらからなにかしゃべりかけると、それなりの応答をしてくれる。

もっとも、設置されたのは数年前のことだし、例えばSiriのようにネットワークに接続しているわけでもないので、音声認識力を高めるようなことはできない。いろいろ話しかけてみたがなかなか意図したような案内をしてくれない、ちょっぴり残念。

それにしても、なかなか楽しいではないか。記念撮影してくればよかったなあ。

WordPressのセキュリティ対策 Part1

まず、なにがどうなのかよく分からない。セキュリティ対策の基本は「何を何から守るのかをはっきりさせること」だと言われるのだが、それがどういうことになるのかがなんともはっきりしない。ただ、現象として分かっていることは、「どうやら最近ブログの管理ページへのログインを試みる攻撃があっちこっちで行われているらしい」ことだ。ログインに成功すれば、当然自分のサイトが書き換えられたり、あるいは削除されたりするだろう。

そういうわけで、とにかくログインされるようなことは防がなければならない。サーバーのセキュリティにも気を配れよな、という話もあるが、それは別に行っていくとして、とにかくWordPressのセキュリティ対策として行ったことを記録しておく。なにか役に立てば幸いである。

参考にしたサイト

具体的な組み込み方法などは、下記リンクをご覧いただきたい。それほど面倒ではないとは言え、こういうことに気を配らなければならないのはなかなか面倒な話だ。

何を何から守るのか

まずここから考えてみた。実際にはみんなどんな対策を行い、何を何から守ろうとしているのかを情報収集したのであるけれど。そこから見えてきたのは、こんなところだ。

  • 管理者権限を乗っ取って、サイトにログインして、最終的にはサイトの乗っ取りを行う
  • そのために、ユーザ名とパスワードを推測して総当たりで試して見る攻撃を行う。
  • WordPressのシステム上、デフォルトの管理者アカウント名は分かっているから、まずはここから攻めてみる。
  • いくつかの手段で、管理者以外のユーザ名を知ることができるので、それも使って総当たり攻撃をしてみる。

なかなか手が込んでいる。仮に自分のサイトに他人が不正にアクセスできてしまうと、朝起きてみたら自分のブログがアダルトサイトになっているかもしれない。あるいは、大量の迷惑メールを送るために使われているかもしれない。それは意図していないこととはいえ防がなければならない種類のことだろう。ということで、下記が私が取った対策。

攻撃が行われていることを検知する

管理ページにログインしようとしたときに、私にメールが届くように設定してみた。ログインに成功したのか失敗したのかも含めてメールが届く。当然自分がログインしてもメールが届く。実際にやってみると、昼夜を問わずなんらかのログインを試みられていることが分かる。

使ったプラグインは、『Login Alert Notification』というもの。これを見ているだけでも、なんらかの対策をしなければという気持ちになる。

攻撃のパターンはあるのか

それなら、攻撃にパターンはないのだろうか。パターンがあれば、そのパターンに応じた対策を行えば良い。分かっていることは、デフォルト管理者のユーザ名であるadminでログインを試みていること。ならば、adminユーザが存在することが危険なわけである。ユーザ名を変更できないのか?

ということで、したのような手順で変更してみた。

  • adminアカウントでログインする。
  • 新しく管理者アカウントを作成する
  • 作成できたら、adminアカウントからログアウトする。
  • 新しく作ったアカウントでログインする。
  • adminアカウントを削除する。もしadminアカウントで書いた記事やページがあれば新しい管理者アカウントに移行する。

上記のように書いたが、私は管理者アカウントでは記事やページは書かないことにしている。こうすることでそもそも管理者権限でログインしている時間を短くできる。また、管理者の投稿者アーカイブを開かれてしまったときにも、書いた記事やページがなければ管理者IDが漏れるリスクが減らせるようなのだ。投稿者アーカイブに関しては後述する。

そういうわけで、私は管理者の他に普段記事を書いたりコメントの承認をしたりするためのアカウントを作っている。権限は「編集者」にしている。

なお、複数のユーザでブログを管理しているような場合、すべてのユーザで上記作業をすることが必用だと思う。もちろんadminが最も狙われているのだが、admin以外のユーザも狙われる。また、後述するように既にユーザ名が攻撃者側に知られてしまっていることも考えなければならないからだ。

他のユーザ名でログインを試みられている?

ログイン記録メールを見ていると、どうやらadmin以外のユーザ名でもログインを試みられていることが分かる。そしてそのユーザ名はちゃんと存在するユーザ名だ。なぜばれてるのだろうか。

どうやら、WordPressにはユーザ名がURLから推測できてしまうことがあるのだ。具体的には下記二つ。もっとあったら教えてほしいな~。

  • 各投稿者(ユーザ)のアーカイブ。複数人でブログを運営しているような場合に、便利な機能。あの人の記事だけまとめて読みたいな、みたいなことができる。このページのURL内にユーザ名が隠れている。
  • 各記事にある投稿者名部分のリンク。このリンクをクリックすると上記投稿者アーカイブに飛ぶのだが、ここにもユーザ名が入っている。つまり、各記事には何らかの形でユーザ名が埋まっている。

ということで、ばれないようにするには、記事に埋め込まれているユーザ名を違うなにかに置き換えるような仕組みが必用だ。私が使ったのは、『Edit Author Slug』というプラグイン。これでユーザ名を見えなくすることができる。しかし、一度Googleなどの検索エンジンに取り込まれたり、そもそも攻撃者側に知られてしまっている場合にはもう防げない。もちろんやらないよりは良いのだろうけれど。

複数のユーザでブログを管理していたり、そもそも管理者用と投稿者用など複数のユーザでブログを管理しているような場合、念のためにすべてのユーザ名を変更し、ユーザ名を見えなくすることが必用だと思う。adminだけを変更してもその他のユーザは結局狙われ続ける。

最後に

実に大変だ。HTMLを完全手書きしていた時代ならばこんなことは考えなくて良かったが、今時そうも言っていられない。ということで、私のメモは終わるのだ。