What's new

今年の終わり

2016年12月30日

今年は一年健康に過ごせたし、WindowsSDKとMFCでいくつかアプリを公開できたのでよい年だった。

特に、スクリーンリーダーでもVisualC++のMFCでみくみくオセロや、ノート程度のアプリなら作れることを確信できたのは大収穫。
SDKはコード量が増えるからめんどいけど、VisualC++の操作はほとんどないので論外。
その点MFCはらくちんだけど、ほぼすべてが親クラスで定義されているから、子クラスのどの部分を書き換えて再定義すれば目的のことができるのかを調べるのがたいへん。
VisualC++の操作もSDKに比べればたくさんあるし、やっぱりVisualというだけあってスクリーンリーダーだけだとかなりつらいこともわかった。

まぁでもぶっちゃけ、ある程度のプログラミングスキルと、スクリーンリーダーの操作や癖を理解していれば、ぼくのような盲人でもできることがわかった。

昔、VisualC++が6.0とかの時代。
わかりやすく言うと、Windows98とかWindows2000の時代。

あのころのスクリーンリーダーというのは、壊滅的にVisualC++を読まなかったから、今は大進歩だよ。
そりゃ今でも読まない部分はたくさんあるけど、今のぼくにはインターネットの発達という追い風と、工夫する知恵があるからね(笑)。

もう少し詳しく掘り下げるとだね…。

実はみくみくオセロのオセロ部分のプログラムというのは、昔作ったプログラムの再利用なんだ。
もともとHALに通っていたころ作ったものだから見えている人専用のプログラムだったんだけど、ぼくも見えなくなったことだし全盲でも使えるように改造してみた。

全盲になりたてのころは、スクリーンリーダーでVisualC++なんて読ませることできなかったから、封印してたんだけど…。
時が過ぎて、スクリーンリーダーの発達と、全盲としてのぼくのスキルがアップしたおかげで、今年やっと再リリースすることができた。

本当に長かった。

おかげで少しだけあのときの気持ちを思い出したよ。

実はノートも同じ。
昔作ったプログラムを改造したもの。

昔はアドレス帳として公開していたものを再利用したもの。
今さらアドレス帳なんて個性の出しにくいもの作ってもあまり意味ないから、データ構造の部分だけ持ってきて、むりやりメモ帳に組み込んだ。

どっちもたいへんだったけど、どっちも楽しく作れたからよしとしよう!

それとついでに…。
HAL時代のデータを発掘してたら、昔作ったテトリスのソースコードが出てきた。

できたらこいつも音声ガイドをつけて全盲でもプレイできるようにしてあげたいが、さすがに無理そうだ。
うーん、テトリスってどんな音声ガイドをつければ全盲でもプレイ可能になるのだろうか?

ブロックの種類はテトリス棒以外は点字で説明できそうだ。
例えば、点字の「ね」「す」「と」「し」は、それぞれテトリスに出てくるブロックの形になっている。
あとは、点字の「れ」と言ってもいいし、四角と言ってもいい。
この際、テトリス棒はそのまま「テトリス棒」という名前でいいだろう。

さらに…。
それぞれのブロックは、90度、180度または270度といった回転された状態で出てくるのが普通なので、このあたりもガイドしてやる必要がある。

こんな感じで落ちていくブロックだけならガイドできそうだが…。
積みあがっていくブロックに関しては、どうやってガイドすればよいのだろうか?

うーん、わからん。

誰かいいアイデアあったら教えて。

MFCあるある

2016年12月1日

先日公開したノートは少しだけMFCプログラミングを勉強してから作った。
だからプログラムコードだけならかなりマイクロソフトの意志に沿ったものになってるんじゃないかと自画自賛。

どういうことかというと、MFCアプリケーションというのは、
役割ごとにクラス(プログラムファイル)が分かれている。
例えば…
ウィンドウの枠組みを作るフレームクラス
ファイル処理をするドキュメントクラス
ウィンドウ内に文字や画像を表示させるビュークラス
などなど。

ウィンドウサイズやスタイルを指定するにはフレームクラスを、
ファイル処理をするのであればドキュメントクラスを、
ウィンドウの中に文字や映像を表示させるにはビュークラスをいじる。

そういえば、ドキュメントクラスとビュークラスの連動を
ドキュメントビューアーキテクチャーとかなんとか言ったっけなー。
まぁこれはどうでもいいんだけど。

でもぶっちゃけ、ビュークラスをいじるだけでそれなりのものができてしまう。
もちろん作るアプリにもよるだろうけど…。

みくみくオセロなんかは、9割ぐらいビュークラスに書いている。
みくみくオセロはファイルに書き出したりしないし…。
他のクラスとか作るといろいろめんどうだし…。

そんな理由で石を打ち返す計算処理までビュークラスに書きましたからねー(笑)。
MFC初心者プログラマーあるあるです。

でも今回はがんばりましたよー。
タイトルやメニューの書き換えはフレームクラスに書き。
データ処理はドキュメントクラスに書き。
その結果をビュークラスに出力していますからね。

なので開発時間がかかっているわりにはジミなアプリができてしまったわけです。
まぁはじめてが多かったぶん、作っているときは楽しかったからいいんだけどねー。

小さな挑戦

2016年9月17日

ぼくの散歩コースの途中に幼稚園がある。
敷地は家4軒分ぐらいしかないとても小さな幼稚園だ。

でも子供たちはいつも元気で、ぼくが歩く目印になっている。
夏休み中は静かだったが、今月に入りまた元気な声を聞かせてくれている。

昨日も散歩途中に幼稚園を通りかかったら、いつもの元気な声と一緒に先生たちが拍手をしながらひとりの園児をほめてた。

何かと思って聞き耳を立てていると…。
どうやらある園児が上り棒の頂点まで上りきったらしい。

その子の年はわからなかったが、とにかく幼稚園児で上り棒を頂点まで上がれるというのは素晴らしい。
小さな小さな挑戦が達成された瞬間である。

もちろんその子にとってはとても大きな大きな1歩になったにちがいない。
もしかしたらその子が大人になったとき、幼稚園時代を振り返ると、真っ先に思い出す出来事になるかもしれない。

ぼくらが生きているこの時間というのは、常に誰かが何かに挑戦し失敗したり成功したりを繰り返しながら同じ時間を過ごしているんだということを改めて感じた。

先日ぼくもMIDIピアノを公開した。

ただMIDI音を出すだけのおもちゃだから、これも小さな1歩なんだけど…。
この小さな1歩をきっかけに、大きな挑戦をした人がいるのでここで紹介したいと思う。

その人は「浦田雄嗣(ウラタユージ)」さん。
ぼくと同じ全盲で、MIDIピアノをきっかけにMIDI作曲に挑戦し、ある程度かたちになったからということで連絡をいただいた。

作った曲は以下である。

JR西日本ミュージックホーン


岸和田駅前の音痴な信号機

このほかにもいくつかの曲を作られていた。

浦田さんに公開してよいかと尋ねたら、快く了解してくれたので今回ここで紹介しました。

さあ、今日という新しい1日、あなたはどんな挑戦をするのでしょう。

ダブルタップってムズイ

2016年9月5日

おお!
気がついたら9月。

夏休み終わってた。
おいっ子がだるい空気を全身から放ちつつ学校に出かけていった。

今日から本番なんだなー。

昨日、親がスマホに乗り換えるというので一緒に行った。
ガラケー一族としてはスマホに興味ありだからね。

ぼくが「音声読み上げしてくれるスマホを見たい」と言ったら、ショップの店員さんが探して出してきてくれた。
機種はたぶん、SONYのXperiaTM。

なかなかきれいな声だ。
メニューやメールの文書、インターネット検索結果なんかもしっかり読み上げてくれる。

正直、結構つかえそうだと思った。

でも、画面読み上げの音声(トークバック)をオンにしているときは、
一度タップしてカーソルがあたったものを読み上げる。
なので、そいつを起動させようと思ったら、ダブルタップする必要がある。

問題は、そのダブルタップが難しいというところだ。
2回画面をすばやくたたくのだが、これがどえりゃームズイ!

もしトークバックをオフにしていれば、
一度タップするだけでいいんだけどね。

最初は親もトークバックを使ったほうが画面をあまり見なくていいのでらくだといっていたが、
ダブルタップがむずかしすぎるので、トークバックをやめて普通に使うことにした。

見えている人はそれでいい。

問題はぼくのような見えていない人種。

ダブルタップの難しさを実感した。
修行必須だ。

あぁ、またスマホが遠くなった気がした。

MFCの難しいところ(その3)

2016年8月30日

やっと最後の3つ目。

今までのはぶっちゃけ前置きみたいなもので、今回が一番大事だ。
なぜなら今までの2回というのは、目が見えていようとそうでなかろうと主に知識不足という悲しい原因がもとで起こってしまう事故みたいなもの。

でも今回は違う。
目が見えていれば数分で解決することが、目が見えていないばっかりにかなりの時間を費やしてしまった話をしよう。

それは、ウィンドウズからなんらかのメッセージを受け取れるようにプログラムを作ろうとしたとき。

具体的には…。
前回書いたようなユーザーがメニューを開こうとしているときとかに、ウィンドウズからみくみくオセロに「メニューが開かれようとしているよ」というメッセージが飛んでくるのだ。
こいつをうまくキャッチしないとメニューを自由に変更することができない。

ということは、コーディングする際にも
「この部分のプログラムは、ウィンドウズから送られてくるメッセージをキャッチして動く部分だよ」
という手続きを踏まなくてはいけないことになる。

そしてこの手続きをする部分というのがやっかいなのだ。

具体的には、クラスウィザードという専用ツールを立ち上げて、目的のメッセージとそれを受けるプログラム名を選んで関連付ける処理をさせる。
しかし目が見えていない場合、当然スクリーンリーダーでクラスウィザードを読み上げさせるのだが、これがうまく読み上げてくれないのだ。

目が見えていれば何回かマウスの左クリックをするだけでできてしまうらしいのだが…。
ぼくみたいな目の見えていない人間の場合は、ほかの方法を試みるしかない。

まぁでもこのあたりまでは目の見えない生活を10年以上やっていれば普通に起こることなので、そんなにへこむことではない。

しかし問題はここから。
ほかの方法を探そうとネット検索をしたのだが、出てくるページ出てくるページすべて「クラスウィザードを使いましょう!」ときたもんだ。
「おまえらそろいもそろってクラスウィザードの手下かよ!」
と突っ込みを入れたくなるぐらいだ。

そんなわけで手動で何とかする方法なんて載ってなかった。
正確に言えば、ぼくが見つけられなかっただけなのかもしれないが…。

きっとよっぽどクラスウィザードが便利なのだろう。
それにそもそも手動で何とかすることは不可能なのかもしれないというあきらめモードにもなりかけた。

しかし、本家マイクロソフトのページの奥深くに書いてあったのをやっと見つけた。
そのページにしたがってコーディングし動かしてみた。

そうしたら動いたのだ。
やった!
自力で壁を乗り越えたのですごくうれしかった!

実は今回書いたことは、以前すでに書いている。
そのときは、マウスの左クリックを認識させるというような内容で書いているので興味がある人は探してみてほしい。

話は戻るが…。
そのページには心強いことに、マイクロソフトは作成するアプリケーションの設定などはなるべくプログラム上に記述することが望ましいと考えていることもわかった。
なぜならプログラム上に記述したほうが、それを書き換えるだけで簡単に変更ができ、結果柔軟なプログラムができるのだ。

さすが泣く子も黙るマイクロソフト。

ぼくのような視覚障害者のためではなかったが、プログラム上に書いてくれるのであれば…。
そこから設定を理解したり、変更したりできる。

VisualC++は正直、スクリーンリーダーでは使えない部分もあるが、今回工夫しだいである程度は何とかなるものなのだということを体験できてよかった。