ウィンドウを透過するショートカットキーを作成した

普段作業をしていると,「文章を書きながら動画も見たい」なんて思うことがありました.
かといってウィンドウを分割するとそれぞれの面積が小さくなり文章は書きづらくなります.

そこで,ウィンドウを半透明にできれば1つの領域に2つのウィンドウを置くことができます.

今回作ったもの

www.youtube.com

使ったアプリケーション

www.gigafree.net

TranspWnds

TranspWndsはウィンドウ拡張ツールです.
キー+マウスで以下のような機能を利用することができます.

  • タイトルバー以外をドラッグしてもウィンドウを移動できる
  • ウィンドウの端以外をドラッグしても拡大縮小できる
  • タイトルバーを非表示にする
  • ウィンドウを最前面に固定する
  • ウィンドウの透過率を指定する

今回は,透過率指定の機能を利用します.

TranspWnds単体使用の問題点

TransWndsだけを用いると,ウィンドウの透過はALT/CTRL/SHIFT/Win キー + マウスホイールの回転でしか実行できません
僕のようにマウスを使わないユーザーにとっては非常に使いづらいので,これをキーボードだけで実行できるようにするのが,AutoHotKeyです

AutoHotKey

AutoHotkeyはホットキーへの機能の割り当てなど常駐ソフトの作成に特化したスクリプトエンジン。多彩なコマンドが用意されており、GUIを持ったプログラムの作成も可能。
任意のキーの割り当て変更、マクロ、ウインドウ操作 ...
オープンソースの簡易プログラム言語、Windowsフリーソフト
(AutoHotkey Wiki)

つまりは,スクリプトを書いて実行するだけで,入力内容を変更する常駐ソフトを作成することができます!

スクリプト作成例

今回は,AutoHotKeyとTranspWndsを組み合わせて,「Win+Tでウィンドウを半透明に,Win+Shift+Tで半透明にしたウィンドウを元に戻す」ように実装してみます.
まず,TranspWndsのオプションで「Transparent」の項目をALTだけチェックを入れておきます
次に,適当なファイルを作成し,拡張子を.ahkにして以下を記述します.

;;; Win + T → Windowを半透明に
#t::
  Send,{Alt Down}
  Send,{WheelDown 30}
  Send,{Alt Up}
  return

;;; Win + Shift + T → Windowの半透明化を元に戻す
#+t::
  Send,{Alt Down}
  Send,{WheelUp 30}
  Send,{Alt Up}
  return 


これに対してRun Script を実行することで,Win+Tキーでアクティブウィンドウを半透明にすることができます.
透明度はTranspWndsで上限を設定しておいてください

ahkスクリプトの説明

#+t::

#:Windowsキー

  1. :Shiftキー

t:tキー
の3つを同時に押したときに処理を実行します

Send,{Alt Down}
Send,{WheelUp 30}
Send,{Alt Up}

Send,{Alt Down}で Altキーを押した状態に変更,
Send,{WheelUp 30}で マウスホイールを上に30ミリ秒間回転
Send,{Alt Up}でAltキーを離します

まとめ

こんな感じで,AutoHotKeyを使うと,Windows標準ではできないショートカットの作成など,色んな機能を追加できます.
スクリプトの規則もそこまで複雑ではないのでぜひ試してみてくださいね♪

Bash on Ubuntu on Windows でデスクトップ環境(Xfce)を動かしてみた

あまり実用的ではなかったですが,Bash on Ubuntu on Windows(BoW)にデスクトップ環境を導入することができるらしく,実際に試してみました.

この記事は,一応既にBoW を利用している人向けに書いています
BoWの導入方法などは,ここ(宣伝)ここを読むと良いと思います

wgg.hatenablog.jp
qiita.com

今回作ったもの

youtu.be


導入の流れ

  1. WindowsX Window Server をインストール & 色々設定
  2. BoWにデスクトップ環境(今回はXfce4)をインストー
  3. Xfce4を動かしてみる

1.WindowsX Window Server をインストール & 色々設定

前のBoWの記事と同様に,Xmingをインストールします
VcXsrvとかでも多分大丈夫です

Xmingの設定

  1. 起動オプションの設定
  2. XmingのWindowをアクティブにすると勝手に英字入力になる問題
1.起動オプションの設定

今回は以下のように設定しています
起動オプションの詳細はここを見てください

"C:\hogehoge\Xming.exe" :1 -clipboard -xkbmodel jp106 -xkblayout jp -dpi 100 -nodecoration

大雑把に言うと,日本語キーボードで,クリップボードWindowsと共有して,dpiが100で,フルスクリーンで,スクリーン番号が1です.
スクリーン番号はXmingを複数起動する場合,他とかぶっていなければ多分何でも大丈夫です.

-nodecoration

ですが,-multiwindowではデスクトップが表示されなかったりしたので,おそらくこれか, -fullscreenあたりが良いと思います.

2.XmingのWindowをアクティブにすると勝手に英字入力になる問題

Windowsのキーボード設定で,英字(US)キーボードをONにしていると,Xmingで表示したWindowをクリックした瞬間にUS配列に変わってしまうことがあります.
どうもXmingが特定のタイミングでUSキーボードに強制変更するようにプログラムされているみたいなので,調べたところ,実行ファイルのバイナリを書き換えることで対処できました

StirlingXming.exeを編集

Stirlingじゃなく,バイナリエディタなら多分なんでも大丈夫ですが

以下のように編集します
f:id:wgg00sh:20170602113024p:plain
編集前


f:id:wgg00sh:20170602113038p:plain
編集後

これで,今まで勝手にUSキーボードに変わっていたタイミングで,勝手にJPキーボードに変わるようになります

2.BoWにデスクトップ環境(今回はXfce4)をインストー

  1. Xfce4のインストー
  2. 起動用のbatファイルの作成
1.Xfce4のインストー

まずはXfce4をインストールします

$ sudo apt-get install xfce4-session
2.起動用のbatファイルの作成

従来のbash.exeと使い分けられるように,起動するとXfce4が開くbatをWindowsで書きます

@echo off
start /min "" "Xming.lnk"
"C:\hogehoge\bash.exe" -c 'export DISPLAY=localhost:1.0;export XMODIFIERS="@im=uim";export GTK_IM_MODULE=uim;export QT_IM_MODULE=uim; xfce4-session'
taskkill /f /im Xming.exe
export DISPLAY=localhost:1.0;

出力先のディスプレイ番号の設定です
Xmingの起動オプションで設定した :1 の部分(今回は1)と同じ数値を入れます

XMODIFIERS="@im=uim";
export GTK_IM_MODULE=uim;
export QT_IM_MODULE=uim;

開いたデスクトップ環境で日本語入力を行うための設定です
詳しくはこちらを見てください

taskkill /f /im Xming.exe

xfceが終了した直後に実行され,Xmingを終了します

Xfce4を動かしてみる

最後に,実際にインストールしたxfce4を起動してみましょう

先に作成したbatファイルを開くとbashからxfce4が起動し,Windowsから切り替わります.
ログアウトすると,bash,Xmingともに自動的に終了します
Windowsの仮想デスクトップ機能を用いれば,Windowsのデスクトップと,BoWのデスクトップを併用することもできます.

f:id:wgg00sh:20170602150200p:plain
Bash on Windows から起動したデスクトップ環境です

まとめ

正直今まで通り -multiwindow で必要な場合だけGUI表示するだけでいいような気がします...
普段と違う雰囲気で利用できますが,便利かといわれると微妙...
あと時々挙動が不安定になるかもしれません

Ubuntuでよく見かける Unityも導入できるらしいですが,容量が大きくて試すのが面倒だったのでやってません.

ProcessingをMeryで開発するための拡張機能作った

今回は去年書いたこの記事の続きです.
wgg.hatenablog.jp

今回作った拡張機能は本文下の方で配布リンクを書いています

f:id:wgg00sh:20170525232647p:plain

以前作ったProcessingをMeryでコーディングするための拡張が,不十分だったので改善して作り直してみました.

前回の問題点

前回の記事では3つ問題点が残っていました.

  1. オートインデント
  2. 同名のシステム変数と組み込み関数
  3. 辞書リストの情報量不足

1.オートインデント

未解決です,まだやっていません.

2.同名のシステム変数と組み込み関数

ProcessingにはmousePressedなど,同じスペルで,変数/関数 どちらでも機能する語句がいくつかあります.
それらはProcessing上では正しく区別して表示してくれるのですが,Meryで同じ表示をすることはできませんでした...
自分の知識不足なだけかもしれませんが,現状では関数は括弧()を含めて色を付けるようにしました.
f:id:wgg00sh:20170525233145p:plain f:id:wgg00sh:20170525233310p:plain
左:ProcessingのIDE
右:今回作成した構文ファイルを適用したMery

3.辞書リストの情報量不足

色々探していたら,Processingで使われる(恐らく)全ての単語を網羅したリストが,Processingの実行ファイルと一緒に入っていました.
f:id:wgg00sh:20170525233735p:plain
↑:作成した構文ファイル&語句リスト

使用例

こんな感じに,前回消しきれなかった不満点の多くを取り除いて作りなおすことができました.

配布

とりあえずGitHubに上げています
もしProcessingもMeryも使っていて,ProcessingをMeryで書きたいと思っている方がいらっしゃれば,是非これを使ってみてください!
そして不具合報告,改善方法などお待ちしています()

github.com

Windows10 Creators Update した感想とかいろいろ

どうも,最近Windowsの使い方を色と考えてるWGGです.
今回はWindows10の最新アップデートをしたので,変わった点などの感想について書いていきます.
僕が自分で使ってる分で気づいた点について書いてるので,抜けてる部分などは多々あるかと思います.

Windows10 Creators Update

日本時間4/12日ごろに,Windows10 Creatos Updateが配信されました.

Creators Update で追加された機能

夜間モード

iPhoneの方ではiOS9.3から追加された,いわゆる「目に優しい画面」に変える夜間モード機能が,windowsにも実装されました,
[設定]→[システム]→[ディスプレイ]から選択できます.
ディスプレイ設定弄ったり,フリーソフト入れるのもアレだったのでWindows側で対応してくれたのは非常に助かります.
f:id:wgg00sh:20170417211310p:plainf:id:wgg00sh:20170417211313p:plain

Edgeが速い(早い)

Windows10にデフォルトで付属しているブラウザ「Microsoft Edge」ですが,どうやらCreators Updateで大幅に改善されたようです.
僕自身,少し前まではEdgeって聞くと"IEの後継種で使いづらく特に速くもないブラウザ"って思ってたり,自分の大学の学生用サイトがEdgeお断りだったりと,ダメダメなイメージでした.
ところが,最近Edgeが速いとの話をよく聞きます.こんな記事もありました.
forest.watch.impress.co.jp

今まで食わず嫌いしていたところがあったので,試しにEdgeを使って暫くブラウジングしてみると,本当に速かったです.

普段はChromeを使っていたのですが,Edgeの方が明らかに速くCPU使用率も少なかったです.

Edgeは最高のブラウザか?

速度面では確実に今までのブラウザでは最高に感じました.しかし使い勝手ではやや不満が残りました.拡張機能が少なく,まだ自由度が低いように思います.普段からChromeFireFox拡張機能をフル活用してる人はそのままでもいいんじゃないですかねぇ...
僕はChromeの拡張をそこまで活用できていなかったのでこの機会にEdgeに乗り換えてみようと思います.

Bash on Ubuntu on Windows の強化

www.buildinsider.net
前回のAnniversary Update で追加されたWindows Subsystems for LinuxBash.exe ですが,Creators Update でその機能が改善されているようです.以前は日本語入力がそのままではできずに,いくつか手順を踏む必要があったのですが,今回のアップデートでデフォルトの状態から日本語入力,表示ができるようになっています.その他にも,ネットワーク関連のコマンドが使用可能になったなどの改善がされているみたいです.

↓以前Bash on Windows の環境構築に色々悩んだ話
wgg.hatenablog.jp

View3D, Paint 3D

Windows10 最初のバージョンでは,3D Builder が追加されました,今回は新たに3Dオブジェクトに対するペイントツール,3Dオブジェクトのビューワーソフトが追加されたようですが,これを重宝するユーザー層ってどれぐらいいるのか気になります...

追加点まとめとか感想

まぁこんな感じですかね.ほかにも細かく変わってるところはありますが.
個人的には自分に直接恩恵のある追加機能が多くて配信前からとても楽しみにしていました.
Windows10を使ってる皆さんも,有益なアップデートに感じられましたら,是非更新してくださいね♪

ちょっと気になった点

半角全角を切り替えると画面真ん中におっきく文字が出てきます.
f:id:wgg00sh:20170417223203p:plain

Microsoft IMEの設定から変えられるので,気になる場合は直してましょう
f:id:wgg00sh:20170417223404p:plain

プロ生勉強会とマスコットアプリ文化祭の表彰式に行ってきました

2/11(土)に東京で行われた「プログラミング生放送勉強会 第46回@株式会社DMM.comラボ」に参加してきました.
pronama.azurewebsites.net

京都に住んでるので,東京まで行くのは中々遠かったですが,その分楽しかったです.

f:id:wgg00sh:20170214200826j:plain
生のプロ生ちゃんかわいい
隣に移っているのはカゥル君というらしいです

受賞しました

去年の末に作った「MascotShooterAR」という対戦型のARゲームをこのマスコットアプリ文化祭に応募していたのですが,
3つの賞を受賞することができました.
去年も3つ受賞だったので2年連続ですー.
www.youtube.com

クエリちゃんとハッカドールは作品内で使用したので,受賞できて嬉しかったのですが,
君と私とせんばこき賞は使っていないキャラクターからの受賞だったので正直驚きました.
というか「きみわた」について名前ぐらいしか知らなかったので選んでいただいて少し申し訳ないです...

ちょっと調べてきました.(きみわたのHPより引用)

鳥取県中部や倉吉の魅力を祐花となつみ、二人のキャラクターを通じて発信していく「まちおこし」企画として2012年7月にスタート。鳥取の美しい自然や風土、人々の生き方や現実に抱える問題を、イラスト、漫画、小説、映像などで表現していく『2012年まんが王国とっとり建国』をきっかけとする地元発のプロジェクトです。

カテゴリー的にはアニメ風キャラを使用した地元による『萌えおこし』となりますが、鳥取県倉吉市の高校に通う二人の女学生の目線を中心に複数媒体で物語を展開。観光ガイドだけではわからない、地元だからこそ見える、そこに住む人々の想いや生き方を描き、鳥取の魅力やこの町で暮らす事を感じてもらえればと考えています。テーマは『二人でいる事』現在、2年生編を連載中。

なるほど... 百合ですかね?

とまぁ,僕の作品を選んでくださった3キャラの方々には本当に感謝です.ありがとうございます.

受賞の時に「MascotShooterARが重い」って言われてしまったのですが,改良案があったものの応募期間内に実装できる目途が付いていなかったため放置していたのが原因です...
この機会に改良してもう少しちゃんと遊べるようにしようと思います.

勉強会

授賞式の後は,勉強会に参加しました.

今回このイベントに参加したのは,受賞していたってのもあるんですが,一つ非常に気になる勉強会があったので参加しました.

HoloLens でお気に入りキャラとキャッキャウフフしてみる
伊藤周(いとうまこと)さん (@warapuri): ユニティ・テクノロジーズ・ジャパン合同会社 エバンジェリストティ・テクノロジーズ・ジャパン合同会社 エバンジェリスト

これ参加したらもしかしてHololens体験できるかな~って思いながら行ったら本当に触らせてもらえました.
僕の所属してるサークルには「MoverioっていうARデバイスがあるんですが,それと比べるとやはりHololensは優れている点が非常に多いと感じました(流石33万円...)

体験したのは「本に描かれている女の子を見つめると,そのキャラの3Dモデルがそこに投影される」アプリです.
見ている感覚としては,本当に目の前に現れているように見えて,触れそうにも感じるほどでした.
ただ映し出されている像はちょっと薄くて見辛いかな~って感じでした.
シースルー型のレンズだからそのあたりはまだちょっと難しいのかな?って思います.



その他にも,Go言語やSwift,Microsoftストアアプリなど,様々な勉強会があって興味深いものが多かったです.



というわけで,プロ生勉強会に参加した感想,記録でしたー

Windows10のショートカットキーが重い件(Superfetch)

最近,Windowsに備わってるショートカットキー登録機能を多用するようにしました.

f:id:wgg00sh:20170130174547p:plain

ショートカットキー登録

【Windows10】 自分でショートカットを設定。効率化で差をつけよう。
interprism.hatenablog.com


よく使うファイル(ブラウザの.lnkなど)に対して,即時に起動するショートカットキーを設定することができます.
Ctrl,Shift,Altと,アルファベットなどの組み合わせで設定できます.
(実行中のアプリケーションと干渉する場合もあるので注意:Ctrl+Shift+Sなんかは名前を付けて保存と被ったり)

で,このショートカットキーを登録したファイルを,デスクトップかスタートメニューの中に入れておくと,そのキーを押した瞬間に実行されます.
僕はデスクトップに物は置かないのでスタートメニュー安定ですね.

ここに置くとショートカットキーが使用できるようになります
C:\ProgramData\Microsoft\Windows\Start Menu


と,ここまで聞けば中々に便利な機能だったのですが...

めっちゃ反応が遅い

はい,大きな問題が見つかりました.
何故かキーを押しても実行されるまでにタイムラグが存在するのです.
僕の場合は約1.5秒~2秒ほどの遅延が起こりました.
すぐに起動するために使う機能なのに,このような遅延は認めません

原因を探す

とりあえず,いつものMicrosoftのコミュニティを見に行ってみると,同じ現象が起こっている人がいました.
answers.microsoft.com

この中を覗いていると,こんな書き込みが

Windows7Windows8.xの時にもショートカットキーが反応しなくなる事がよくありましたが、これらはタスクバー通知領域のアイコンがアニメーションを行っている間に起きる事が大半でした。
常駐ものが通知領域アイコンを書き換えるとしばらくの間シェルが反応がしなくなるんですね。
通知領域アイコンを書き換えるアプリなるべく隠すようにして、なだめなだめ、何年も使ってきましたw

ずっと放置されてきた上記のバグがWindows10で治っているとはとても思えませんが、
Windows10ではこれに加えて更に
  「ストアアプリなどが中断状態になっているとショートカットキーの反応が鈍くなる」
という病気が追加されてしまったようです。

なんか,意味わからないですね...
更に続きに,

恐らく
SearchUI.exe / ShellExperienceHost.exe / Microsoft.Photos.exe / WinStore.Mobile.exe / Video.UI.exe
あたりが「中断」状態で見つかると思います。

f:id:wgg00sh:20170130180415p:plain
ありました.
調べたところ,SearchUIはWin+Qで出てくる検索機能を制御してるらしく,消すべきではないようでした.(Cortanaとは別).
ShellExperienceHostも,シェルまわりの制御にかかわっているようで,そこそこの頻度で端末を開く自分にとっては消すべきではなさそうでした.
さっきのSSには映っていませんでしたが,時々「Calclator」や「SystemSettings」といったプログラムも中断状態で見つかることがありました.

解決案1:強引に消す

ってことでここまで得られた情報から,「中断状態のアプリを完全に消すと,ショートカットキーの遅延が解消する」らしいことが分かったので,さっそく強引ですが,中断状態のアプリを終了するスクリプト(ps1)を書いてみました

$task=
  "Microsoft.Photos",
  "SystemSettings",
  "Calculator",
  "Video.UI",
	
for($i=0;$i -le $task.length-1;$i++)
{
  stop-process -name $task[$i] | out-null
}

これをショートカットキーに登録して,他のショートカットキーが遅延すると感じたときは,このスクリプトを呼び出してやると暫くの間は遅延が解消されます.
しかし,中断中のアプリを強引に消したりと,これ根本的な解決になってないですね...

また調べる

こんな書き込みが
sakebear.ddo.jp

原因は"Superfetch"サービスです。

Superfetchサービスについて,知らなかったので少し調べてみました.
とりあえず,Wikipediaから

Windows SuperFetch(ウィンドウズ スーパーフェッチ)とはWindows VistaWindows 7Windows 8/8.1、Windows 10に搭載されている、パフォーマンスの向上に関するディスクキャッシュ・メインメモリ管理機能である。

ユーザーの操作パターンと、アプリケーション(オフィスアプリケーション等)やバックグラウンドプロセス(ウイルス検索など)との挙動を記録・分析し、予測により効率的なメモリ管理を行う
例として、ユーザーが操作していない時間帯に、ウイルス検索がバックグラウンドで実施され、アプリケーションが使用するメモリがスワップアウトされたとする。SuperFetchはこれらの挙動を監視して、ウイルス検索が終了した後に、スワップアウトされたアプリケーションの使用メモリを再び、自動的に(予測的に)スワップインさせる。

Windows SuperFetch - Wikipedia

確かにこれっぽいですね
恐らくこいつがストアアプリを終了しても中断状態で留めていたのでしょう
ただ便利そうなこともしてるっぽいです.

Superfetchを止めてみる

Win+X→Gで,「コンピューターの管理」を起動→"コンピューターの管理"→"サービスとアプリケーション"→"サービス"の順に選択します.Superfetchの「スタートアップの種類」が恐らく自動になっているので,手動または無効に変更します.

これで起動時にSuperfetchが実行されないので,ショートカットキーの遅延がなくなりました

まとめ

Superfetchを起動しないようにしたら,ショートカットキーが素早く実行できるようになりました.
ですが,Superfetch実行しないことによる弊害も考えられるので,もう少し詳しく調べたいですねー

Windows 10でシャットダウン時にエラーが出るようになった(DDE Server Window)

最近,PCをシャットダウンするときにこんなメッセージが出るようになりました(シャットダウン中にてSSが撮影できないので直撮り).

OS:Windows10 Home
バージョン:1607

f:id:wgg00sh:20170127184606p:plain


正直この手のエラーは放置しておくと後にどうなるかわからないし,原因の特定もし辛くなるので早急に解決しようと思いました.
以下その時行った対応のメモ書きです.

1.イベントビューワから確認

こういうメッセージなどはログが保存されているはず...
[Win+R]でファイル名を指定して実行→"eventvwr"でOK
色々探し回ったら「Windowsログ」→「システム」の中に見つかった.

f:id:wgg00sh:20170127185457p:plain
f:id:wgg00sh:20170127185504p:plain

2.ググる

どういったエラーが起きているかはこれで分かったので,調べてみます.

answers.microsoft.com

ここを見て,別の問題ですが対応例が載っていました

1.クリーンブートで常駐ソフトの影響が有るかチェックした→改善出来ず失敗
2.ディスククリーンを実施して影響しそうな不要ファイルを削除した→改善出来ず失敗
3.regeditエディターによるデーターの変更/削除→効果なし失敗 (googl検索参照)
4.別アカウントを立ち上げてみたがまったく同じエラーが出て→失敗

とりあえずすぐに確認できる4から試してみました.すると,メインのアカウントからサインアウトする時にも同じメッセージが発生し,別のアカウントからサインアウト/シャットダウンするときには発生しませんでした.
つまり,この時点で「シャットダウン時の問題」ではなく,「サインアウト時の問題」だったことがわかりました.

つまり,PC自体の問題ではなく,普段使っているアカウントの設定に問題がありそう,ということが推測できます.

3.もっとググる

DDE serverなどで更に調べてたらこんなページを見つけました
answers.microsoft.com

When I turn off Taskbar/Automatically hide the tasbar in desktop mode, then the error is solved.

「『デスクトップモードでタスクバーを自動的に隠す』をオフにするとこの問題は解決しました.」
えっマジか...
今回のメッセージが出るようになる少し前にちょうどタスクバーを自動的に隠すように変更したところでした.
一度タスクバーを自動的に隠すをオフにしてみると,あっさりサインアウト,シャットダウン時にメッセージは出なくなって解決しました.
確かにこの設定はアカウントごとに変えられる部分ですね...
ですが別のアカウントでタスクバーを自動的に隠すようにしても,サインアウト時に今回のメッセージは表示されませんでした,何故だ...

4.直ったが根本的な解決に至らず

とりあえず今回のトラブルは解決したのですが,何故タスクバーを自動的に隠すようにするだけでエラーが起こるようになるのか,はっきりとわかりませんでした.今は丁度テスト期間で時間もあまり割けないのでまた今度調べてみます.