2012年12月10日月曜日

動画関連のソフトを作ろうかな

先日PS3のBluetoothがおかしくなったのを機に録画サーバを構築してみた。
これまでtorneを使っていた理由はサクサク操作ができることだったが、まぁさすがにPCならよりサクサク操作できますなw
アニメーション(スクロールや画面遷移)演出は劣るけど、EPGも十分すぎるほどの機能がある。
ただ、動画管理は普通にエクスプローラでしているんだけど、曜日や同じタイトルでグルーピングする等と言った地デジ用の管理が難しい。
ホワイトブラウザを使えばタグ,サムネイルによる管理ができるらしいが、ものぐさ太郎の私には手動のタグ付けは抵抗感が大きいんだよなぁ。
再生に関しても、通常の動画とは異なりCMをスキップしたりちょくちょく巻き戻したりすることも多いんだけど、一般的なメディアプレイヤーでは調整の塩梅が難しかったりする。
色々と探してみて今はFavMoviePlayerが一番上記の操作がやりやすいと思って使っているけど、自分的にもっと手軽に操作できるようにしたい。
#ホワイトブラウザ、FavMoviePlayerは十分に高性能なソフトです、あくまでも自分の好みに合わせたいだけの話

と言うことで、快適な地デジ再生環境の構築を目的に、tsファイル管理および再生ソフトを作ってみようと思う。
調べた結果、私の知識および技術で無理な場合はこの発言は放置します、と言うかその確率が実は高かったりw
基本的に自分の特殊な環境用のソフトなので、公開は期待しないで下さいね。。。
なお、CPRM解除やリアルタイム視聴とは関係ございませんので、あしからず。

2012年11月11日日曜日

Leap予約したった

Leap Motion社が開発した3次元モーション認識デバイスLeapを予約してみた。
前々から買う気だったんだけど、発売前だし新興企業にクレジット登録するのが怖かったから躊躇っていたが、何となく踏み切ってみたw
ただ、以前見た時には海外発送は12,3ドルだったのに、24.99ドルになってる!
#米国国内便が以前の海外並に…
思ったよりも予約が入って強気に出たのだろうか。。。
まぁ、公式に日本国内で売り出すかどうか分からないし、売り出したとしても9800円とかのぼったくり日本価格になる気がするから待つ気はないけどねw
#Nexus7とかも1ドル=100円換算なんていつの時代だよw

勉強and遊びのための購入だけど、機会があったらLeap用のアプリを作って公開していきたいなぁ。
ただKinectでさえアプリ公開しても一般的なユーザには(ハードがないから)無用の長物になってしまう現状なので、よっぽど何かないと広まらないのかなぁ。
このブログの始めの方からずっと言っている新しい文字入力手法もタッチパネルではなく、Leapのような新しいデバイスをターゲットにした方が面白そうだが、使ってもらえるユーザが激減するのが如何ともし難い。
なお、上述の入力手法は絶賛検討中でまだまだ実装できそうにありませんw(さぼってなんかない、た、た、多忙のため…)




(11/19 追記)
海外発送が12.99ドルに戻ってる。
何だったんだろうかw

(12/10 追記)
何となく動画貼り付けとく

2012年11月6日火曜日

Windows8でも使えます(暫定)

Windows8 64bit環境を構築したので、akinoboard、akinosignの動作を検証してみました。
結論として、取り敢えず私の環境ではWindows7 64bitと特に変わった挙動は確認できませんでした。
#検証は取り敢えずレベルなので表題に暫定を付けています

なおWindows8は.Net Framework4.5を標準搭載していますので、特に何も入れなくてもakinoboard、akinosignともに起動できます。

以降のバージョン及び(作るとしたら)新作はWin8 64bit環境にVisual Studio2012を入れて進めますので、そこからは正式にWin8対応と明記する予定です。
 
上記のように特にソフトに不具合が出てるわけではないので、ゆっくりWin8環境を整えながら、まずはOC周辺で色々といじってみようと思っていますw
#Core i7 3770KとAsus P8Z77-V Proの鉄板コンビw

2012年8月23日木曜日

[akinosign] ver.2.00を公開しました

akinosignを更新しました。
ダウンロードはこちらからどうぞ。
パラメータや仕様を大幅に見直しましてver.2.00となっております。

主な更新内容は以下の通り。
  1. テキストエリア全体に表示される矩形エリアサインを追加
  2. 各設定初期値を見直し
  3. タスクマネージャのアプリケーション一覧に表示されないように変更
エリアサイン(IMEオン)
エリアサイン(IMEオフ)
ラインサイン

設定値に手を加えていますので、ver1.00からお使いの方はconfig.xmlをそのまま使わないで下さい。
動作に支障は無い筈ですが、手を加えたところが反映されませんのでご注意下さい。

毛筆ラインサインが”くどい”と言う意見もありましたので、見やすさを優先したシンプルなエリアサイン(テキストエリア全体を覆うように表示)を追加しました。
初期設定もエリアサインにしています。
#ラインサインも初期値や表示座標を調整して従来より見やすくなったと思いますので、是非お使い下さい~
ただし、矩形のみの仕様ですので、矩形以外のテキストエリアでは形が合わなくなります。
矩形でもアプリによってはきちんとテキストエリアの座標を返してくれないものもあるので、そのような場合にはヘンテコな場所にサインが表示されたりすることも…(汗


なお、エリアサインを選択する際にはサインの透明度をある程度上げて利用して下さい。
不透明にするとテキストエリアに書かれている文字が見えなくなりますので、その辺りは好みに合うように調整して下さい。
私的には初期値をオススメします。

2012年8月20日月曜日

[akinoboard] ver.1.13を公開しました

表題の通り、akinoboard ver1.13を公開しました。
ダウンロードはこちらからどうぞ。

内容的には先日書いたように、タスクマネージャのアプリケーション一覧に表示されないように変更を加えたのみになります。
機能的には特に変わっておりませんのでご注意下さい。
機能的なバージョンアップもWindows8に合わせてやっていきたいと考えているのですが、予定は未定になっております。。。
WindowsRTも興味があるんだけど、ソフトウェアキーボードは仕様的に作れないようだし、どうしようかなぁ。

2012年8月18日土曜日

やっとこさバージョンアップ報告

やるやる詐欺のakinoboard,akinosign更新にやっと着手しました。
トパンガリーグ観戦でヤル気がちょこっとアップです。
やはりウメハラが勝つ試合は満足度が違いますw

本題に戻りますが、アプリ更新自体は完了していますので、後はドキュメント編集とVectorへの登録作業になります。
主な内容は以下の通り。
  • akinoboard
    ・タスクマネージャのアプリケーション一覧に表示しないように変更
  • akinosign
    ・タスクマネージャのアプリケーション一覧に表示しないように変更
    ・各種初期値の調整
    ・矩形サインを追加(従来は毛筆ライン)
Imeがオフのとき

Imeがオンのとき

公開できる状態になったらまたこちらで報告させていただきます。
Vector側で遅れない限り、今月中には公開できる予定です。

2012年8月1日水曜日

更新滞っております…

コメントで更新の話をしてから早数ヶ月。
この間、Kinectいじったり、Diablo3やってたり、PSO2きゃっきゃ言ってたり、子供sの世話したりで、予定通り更新できておりません。
一番最後以外は何も言い訳できませんね…。
ただ更新予定はきちんとございますので、その旨だけはここに記しておきたいと思います。
もし更新を期待して下さっている方がいらっしゃいましたら、申し訳ございませんが後少々お待ち下さると有り難いです m(_ _)m

2012年5月21日月曜日

"GenerateResource" タスクが予期せずに失敗しました!?

と言うことで、久々にVSをいじったところ、ソースは同じなのにビルドエラーが出る!?
色々と調べてみたところ、環境変数のTEMP,TMPにドライブルートを設定していたことが問題だと発覚(こちらのページを参照)。
ルートではなくその下にフォルダを作ってそちらを設定することで事なきを得ました。
最近RAMディスクを使うようになったんだけど、まさかこんなところで弊害が出るとは…。
ちなみに私は次のバッチファイルをスタートアップに入れてtmpフォルダを起動時に自動作成しています。

@echo off
mkdir t:\tmp

問題が解決したところで、Diablo3も程々に更新に手を付けなくちゃなぁ。。。

以下、ガチ備忘録
アプリケーションタブに表示しないようにするには
  • 非表示でないWindowをOwnerに設定
  • 拡張スタイルにWS_EX_TOOLWINDOW(0x0080)を設定
  • Windowを非表示にする(本件ではこれは使えない)

2012年5月20日日曜日

今後の更新予定

コメントでのやり取りにて、タスクマネージャのアプリケーションタブにおける表示内容が私の意図していたものと違っていることが判明しました。
#匿名さん、気付くきっかけを下さって有り難うございました
現状、akinosignで作成されたウィンドウ全てがアプリケーションタブに表示されています。
高々3つではありますが、1つだけ表示されることを意図しておりましたので今後の更新で修正します。
ただ、この際1つだけではなくそもそもアプリケーションタブに表示されないようにしたいと考えています。
#ついでにakinoboardも同様に更新予定
アプリケーションタブに表示されていると、もしakinoboard、akinosignがタスクトレイ上で反応しなくなっても、アプリケーションタブ上から強制終了できるという利点があります。
もしこの利点が消えるのが困るという方がいらっしゃったらコメント下さい。
あくまでもアプリケーションタブの話ですので、プロセスタブにはakinoboard.exe及びakinosign.exeが表示されますので、分かる方はこちらから強制終了することができます。

2012年5月19日土曜日

て、てをだしてしまった…

かのDiablo3に手を出してしまったので、各種更新が鈍ります(>_<
そもそもコメントでakinosignを4月中に更新と載せていましたが、5月も怪しいです。。。
akinosignについては、テキストボックス下辺の下ではなく上(テキストボックス内)に表示できるようにする予定です。
あとKinect for Windowsも手に入れたので、そちらを使った文字入力手法も試してみたいんだけど、公開できてもそもそも需要あるのか、とw

Diablo2は猿になっていたんだけど、今回は猿にはならないように気を付けたい今日この頃。
学生じゃないんだしできるはず!!

2012年2月27日月曜日

[akinosign] akinosignを公開しました

akinosignはIMEの日本語入力オン/オフの状態を示すサインを表示するアプリケーションです。
(ダウンロードはこちら(Vector)からどうぞ)
日本語を入力するつもりでキーボードを打ったは良いけどもアルファベットが表示されてしまって仕方なく打ちなおす、と言うような事態を防止することが狙いです。
#IMEオンの状態でのひらがな/アルファベットモードの区別は表示しません。対応しているのはIMEのオン/オフ状態のみです。

akinosignは以下の特徴を持ちます。
  1. テキストエリアにフォーカスがある場合にのみIMEのオン/オフ状態を示すサインを表示します。テキストエリア以外ではサインを表示しないため、本来の作業の邪魔になりません。
  2. テキストエリアの大きさによってサインの表示方法を切り替えることができます。1~2行の検索ボックス等ではサインをテキストエリア下辺に表示して、テキストエディタ等の大きなテキストエリアではマウス横にサインを表示する(orサイン自体を表示しない)ことができます。
  3. サインはフォーカス移動時、及びオン/オフ状態の切り替え時に表示されます。サインは指定時間経過後に自動で非表示にすることができます。
図1.テキストエリア下辺にサインを表示
図2.IMEオン/オフでサインの色が変わります(IMEオン:橙、オフ:黒(既定))
図3.テキストエリアの高さが大きい場合はマウスの横に表示

Webページを閲覧しては検索ボックスにキーワードを入力して再度ブラウジングに戻る、ようなテキストエリアとそれ以外を行き来する場合にIMEの状態がよく分からなくなります(少なくとも私は)。
逆に同じテキストエリアで作業を続けている間はIMEの状態が分からなくなることは比較的少ないと感じています。
akinosignは特に前者に焦点を当てています。
前者の場合はテキストエリアが1,2行である場合が多いため、視認性を考慮してテキストエリア下辺にサインを表示します。
しかし、後者の場合はテキストエディタなど、複数行に渡る(高さが大きい)テキストエリアの場合が多いと考えられます。
その場合には下辺のサインは見にくい恐れがあるため、テキストエリアの高さによる表示サインの切り替え(3.)を用意しています。

類似ソフトは既に色々と存在していますが、私の好みに合うものが見つからなかったことが開発の動機です。
特にテキストと関係のない場所でIME状態の表示が出る点がどうしても受け入れられませんでした。。。
ですので、基本的に私の好みに合わせた機能、調整になっております(演出過多な部分も多いです)が、 お気に召した方は是非ご利用してみて下さい。

【注意点その1】
  • akinoboardと同様に、管理者権限で実行されているアプリケーション上ではakinosignは正常に動作しません。ただし、akinosignも管理者権限で実行している場合にはその限りではありません。
  • アクセシビリティ用の設定画面が自動で開くアプリケーションがあります。Adobe Readerでは「文書読み上げオプション」が表示される場合があります。特に問題がないようでしたら、デフォルトの設定のままで「読み上げ環境設定の設定を常に使用する」をチェックして下さい。
  • XP環境では動作確認していません。

【注意点その2】
akinosignが正常に動作しないアプリケーションもあります。
これはアプリケーション側の仕様による場合が多く、基本的に対応は難しいです。
対応希望のアプリケーションがあれば、ご連絡いただけましたら対応できる場合には対応させていただきますが、あまり期待はしないで下さいね(^^;
参考までに、現在私の方で確認している非対応アプリケーションを記しておきます。 
  • アクセシビリティ機能に対応していないアプリケーション
  • Google Chromeのページ内テキストエリア
  • LibreOffice
  • Java上で動いているアプリケーション
  • ゲーム系
  • Visual Studio(エディタ部分の座標が適切でない)

2012年2月19日日曜日

リソースファイルへの参照URI

かなり嵌ってしまったので備忘録として残しておく。

WPFでリソースファイルを参照するには、そのリソースを指すURIを指定する。
なお、前段となるリソースの登録は以下の通り(絶対コレと言うものではない)
  • プロジェクト→既存項目の追加(サブフォルダに入れるのも可)
  • リソースのプロパティ→ ビルドアクション:Resource(埋め込まれたリソースではない)
今回はプロジェクトルート直下のImagesフォルダに画像を登録したとする。
".\Images\picture.png"

リソースがローカルアセンブリに格納している場合には、このリソースを指し示す絶対パス(パッケージ)のURIは次のようになる。
"pack://application:,,,/Images/picture.png"

パッケージのURIについては詳しくはここを見てもらうとして、今回嵌ったのは相対URIになる。
上記絶対URIの相対URIは"/Images/picture.png"となるはずだが、今回BitmapImage.StreamSourceにこの相対URIを指定すると、全く意図した動作をしなかった。
具体的には、先頭に"/"を付けるとアセンブリが置かれているドライブのルートを起点としたURIとして、"/"を付けないとアセンブリを起点としたURIとして扱われた。
なお、XAMLでは問題なく相対URIを指定して想定通りの動作になる。
加えて、これはWPFの話でSilverlightでは相対URIでパッケージを指し示すことができるようだが、う~んよく分からん状態。。。

クラスによって相対URIの扱いが変わるのは分かっているが、それは通常のファイルパスだけだと思っていたんだけど、パッケージについても同様のようだ。
#ファイルパスもURIだから当たり前と言っては当たり前なのかもしれないが…

あまり時間が取れないのできちんと調べることができず、明確な仕様は分からなかった。
現時点では解決策としては絶対URIで指定することくらいかな。
もし同じ問題で嵌った人がいれば、解決策だけでも少しはヒントになれば幸いですね。

2012年2月13日月曜日

WPFでウィンドウメッセージを処理する

久々にプログラミングの話をば。
前からそうだけどプログラミングTipsのようなものを備忘録的に記していっているので、"備忘録"タグを今度からつけようと思います。

で、今回はWPFでウィンドウメッセージを処理する方法。
WindowsFormではForm.WndProcメソッドをオーバーライドするだけで良かったけど、WPFではその方法は使えない。
WPFではHwndSourceクラスのAddHookメソッドを使うことで、所謂ウィンドウプロシージャとほぼ同様の役目を果たすことができる。

protected override void OnSourceInitialized(EventArgs e)
{
    base.OnSourceInitialized(e);

    WindowInteropHelper helper = new WindowInteropHelper(this);
    HwndSource source = HwndSource.FromHwnd(helper.Handle);
    // もしくは
    // HwndSource source = PresentationSource.FromVisual(this) as HwndSource
    source.AddHook(new HwndSourceHook(WndProc));
}

static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
    switch (msg)
    {
        case Win32.WM_MOUSEACTIVATE: // 処理するメッセージ
            handled = true; // ここでメッセージを止める場合はtrue
            return new IntPtr(Win32.MA_NOACTIVATE); // メッセージや処理によって適切な値を返す
    }
    return IntPtr.Zero;
}

ちなみに上記はマウスクリックでウィンドウをアクティブにしないように変更するコードです。
昔のエントリーでは、ウィンドウメッセージを処理する以外の方法を紹介していますので、興味があったらそちらもどうぞ。

WPFでは基本的にはウィンドウメッセージを直接扱う機会は少ないんだけど、他ソフト(プロセス)と関わりあう類のソフトウェアキーボード等のソフトを作る際には触らなければならない場合も少なくないので正直面倒ですね。。。

2012年2月5日日曜日

IMEチェッカー再始動

年末から拘っていた毛筆演出がどうにかなったのでIMEチェッカーの開発を再始動しました。
単にPhotoshopの毛筆ブラシで画像を作ることにしただけだけどw
それに伴ってソースを見なおしたんだけど、変数名やアルゴリズムを改めて見ると分かりにくかったため、一から作り直す予定。
と言っても、基本部分は変わらないためそんなに時間はかからないはず。
IME状態とフォーカスオブジェクトの取得部分はできているので、今後の課題は毛筆オブジェクトの表示部分になります。
テキストエリアが狭い(数行程度)場合はテキストエリア自体に毛筆オブジェクト(横線)を被せて、広い場合はマウスの横に毛筆オブジェクト(チェックマーク)を表示する予定。
ただ予定は未定なので、上記表示方法切り替えはバージョンアップ後に回すかも知れない、かな…。

2012年1月26日木曜日

はてさて

昨年12月中にはどうにかしたいと書いていたIMEチェックですが、2月以降になります。
以前から悩んでいる外観デザイン(IMEオン・オフを通知する箇所です)に良いアイディアを思い浮かばないため、今年に入ってから中々進められていないんですよねぇ。。。
筆線みたいな表現にしたいんだけど、その上手い実装方法が思いつかないので他の表現にしようとも思ってるんですが、何ともかんとも。

加えて週末はスパ4 TOPANGAリーグが楽しみすぎて、飯食ってる開発してる場合じゃねぇw