imaizumeの個人メモ

コードとか旅とか飯とか

テキストを複数コピーして好きなタイミングでそれらをペーストできることを知らない人が多すぎる

クリップボード拡張なしでコピペしようとするとウィンドウの往復とフォーカス切り替えが連続で発生する

コピーペーストでウィンドウを往復するのはやめよう

他人と一緒にスクリーンをシェアしながら作業すると、いつも新しい発見がある。 いわばペアプログラミングと同じで、知らないやり方を覚えたり逆に教えたりできる絶好の機会だ。 自分も今までプログラミングもそれ以外も含めて様々な人とスクリーンシェアリングをやってきた。

その中で自分がずっと気になっていることの一つが、未だに多くの人がクリップボードを素のままで利用しているという点である。 素のままとは、1度コピーしたテキストを1つしか記憶しておくことができないということ。

例えばWeb上のとあるフォームに情報(例えば名前と住所と電話番号とか)を入力することを考える。 そして入力に必要な情報は事前にテキストで与えられているとする。 このとき多くの人は以下のような作業を入力欄の数だけ繰り返している。

  • 1-1 郵便番号をテキストからコピー
  • 1-2 ブラウザに切り替え
  • 1-3 郵便番号をフォームへ貼り付け
  • 1-4 テキストエディタに戻る
  • 2-1 住所をテキストから住所をコピー
  • 2-2 ブラウザに切り替え
  • 2-3 住所をフォームへ貼り付け
  • 2-4 テキストエディタに戻る

...

  • n-1 項目Nをテキストからコピー
  • n-2 ブラウザに切り替え
  • n-3 項目Nをフォームへ貼り付け
  • n-4 テキストエディタに戻る

雑に図にするとこんな感じ

標準のクリップボードではウィンドウを往復する必要がある

しかし、この中で無駄な作業が発生していることに多くの人が気づいていない。 なぜなら、まずウィンドウ切り替えはそれだけでキーボードからマウスへと手を持ち替えないといけないので手や腕が疲れる。 仮にCmd+Tabのようなショートカットキーを知っていたとしても、フォーカスが変わるので結局マウスで次の入力欄をクリックしないといけない。 貼り付け位置や内容を間違えたらもう一度コピペをやり直す必要もあるし、場合によっては数回前にコピーした内容を再度貼り付けたいこともあるがそれを再度テキストから探さないといけない。

要するに、MacWindowsの標準機能では、過去のコピペの履歴を使い回すことはできないためこうしたウィンドウ移動をせざるを得ないのだ。 この「過去のコピペの履歴」を保存しあとでまとめて利用できれば上記の作業がかなり単純化される。 つまり

  • 郵便番号をテキストからコピー
  • 続けて住所をテキストから住所をコピー ...
  • 続けて項目Nをテキストから住所をコピー
  • ブラウザに切り替え
  • 郵便番号をフォームへ貼り付け
  • (Tab移動して) 住所をフォームへ貼り付け ...
  • 項目Nをフォームへ貼り付け

 

とすれば、ウィンドウの切り替えが1度で済むほか、貼り付けも項目切り替えはTabキーでできるのでキーボードから手を離す必要がない。 さらに同じ項目を別の場所に貼り付けようとしたとも、履歴から再利用できるので再度テキストへ戻る手間もない。

クリップボード拡張なら往復は一度だけで済む

クリップボード拡張アプリを使おう

2018年にもなってなぜかMacWindowsiOSAndroidも、標準でこのコピペ履歴の保存を標準では用意してくれていない。 なのでちゃんと問題意識を持たないと「コピペは一度に1項目しかできないもの」と人は思い込んでしまう。

そこで、クリップボード拡張アプリを使えば過去にコピペした項目を履歴として保存し、再度使い回せるようになる。 ここでは自分が使っているアプリしか紹介できないが、以下に代表的なものを上げてみる。

Mac

履歴を保存するだけならClippyが最もシンプルだろう。 日本人が作っているということもありとても使いやすいと思う。 このアプリはダウンロードして開くだけで使えるようになり、設定画面をいじらなくてもすぐに使えるのが良い。 また定型文の登録もできるので、よく使う住所やメールのテンプレ等のテキストも保存しておくと良いだろう。 呼び出しは標準だとCmd + Shift + V でできるが、こちらは設定で変更可能 ただ高度なテキスト(今の時間を整形して入れるなど)はできない。

[blogcard url="https://clipy-app.com/"]

クリップボード拡張を使ってコピペするとまとめてコピーしペーストのタイミングも自由なので操作量もミスも少なくなる

そこで自分は今Alfredというアプリに切り替えている。 上のGIFではAlfredのクリップボード履歴からテキストを呼び出している。 MacにはSpotlight(Cmd+Space)で起動するアプリランチャーが標準でついているが、Alfredはそれをより便利にするアプリ。 その機能の中にクリップボード拡張があり、過去の履歴を指定した期間内は全て保存させることができる また定型文の中に指定したフォーマットの日時や直前にコピーしたテキストを入れて貼付けできるといった高度な設定があるので、設定に自身がある方はこちらを試してほしい。

[blogcard url="https://pc-karuma.net/mac-app-alfred/"]

Windows

数年前Cliborというアプリを使っていたが、こちらは上記のClipperと同じコピペ履歴保存に特化したシンプルなアプリ。 インストールするだけですぐに使え設定しなくてもそれなりに使えた記憶がある。

[blogcard url="https://forest.watch.impress.co.jp/library/software/clibor/"]

ただ上記と同様の理由で、自分は長い間ArtTipsというアプリも使っていた、 ArtTipsはWindowsの右クリック(コンテキスト)メニューを拡張するアプリで、右クリックから過去の履歴を見て好きなテキストを再利用し貼付けできるアプリだ。 こちらも高度な分設定が複雑で、しかも設定画面がかなり分かりづらい。 慣れるとなんともないがひとまずはCliborを使い、飽きたり不便と感じるようになったらArtTipsという流れをおすすめする。

[blogcard url="http://www2s.biglobe.ne.jp/~sahmaro/ArtTips.html"]

Android

今の所「Android クリップボード 拡張」というキーワードで調べると、このaNdClipというアプリがトップに出てくる。 基本的な使い心地は良く、設定で端末起動時に自動でアプリが起動するようにもできる。 ただデザインが少々古いのと、通知バーから一度アプリに飛んでコピーしないといけない。

[blogcard url="https://play.google.com/store/apps/details?id=com.amazing_create.android.andclipfree&hl=ja"]

そこで最近は切り取り箱というアプリに切り替えてみた。 こちらはマテリアルデザインで最近のUIに慣れていると使いやすさが高い。 また通知のプルダウンから直接テキストをコピペできるので少しだけタップ数を節約できる。

[blogcard url="https://play.google.com/store/apps/details?id=com.catchingnow.tinyclipboardmanager"]

iOS

現在のところClip & Pasteというアプリで落ち着いている。 iPhoneのSpotlightに出るので通知からのクリップがやりやすい。 まだiOSはあまりこの手のアプリを試していないのでもう少しいろいろ試してみたい。

[blogcard url="https://itunes.apple.com/jp/app/id960945224"]

よく使うテキストは定型文にして使い回そう

Alfredで定型文を使うとクリップボードの中身を使ってよくあるテキストを簡単に貼り付けできる

この前にも述べたが、自分の名前や会社の住所、さらには「了解です、よろしくおねがいします」といったよく使う文章は、これから何度も使うことがわかっているのでそのたびにコピペや手打ちするのは無駄でしかない。 手打ちは結局一定の割合でミスをするので、重要なテキストであればなおさら定型文に頼ったほうが良い。 なのでクリップボード拡張の定型文に登録しておこう。

自分はAlfredのSnippetsに大量の定型文を保存しCmd + Shift + Mで呼び出している。 Alfredでは現在のクリップボードの内容や今の日時と合わせた定型文を出力できるので、上記のような特定のフォーマットで入れるテキストも簡単に入れられる。 どこまで入れるかは個人情報に対する感度次第ではあるが、住所や電話番号はこれのおかげでかなりの入力時間を節約できたと思っている。

パスワードは管理ソフトに記憶させてオートフィルを使おう

さらにパスワードもアプリに記憶させる 自分はLastpassというサービスを使って、パスワードを管理したりオートフィルで自動入力をさせている。 この手のサービスには1PasswordやMac標準のKeychainなどもある。 もちろんパスワードを管理するソフトなので安全性を高めるためのマスターパスワードや指紋認証といった設定はしっかりやっておく必要があるが、自分はこれが手放せなくなっている。

まずは簡単なクリップボード拡張アプリから始めよう

クリップボードに1つしか値を記憶できない」という思い込みをまず捨てよう。 そしてまずは簡単なクリップボード拡張アプリを入れてみてアプリやウィンドウの切り替えを減らしてみる。 これだけでも十分今までの非効率さが認識できるはずだし、入力ミスも減るはずだ。

macOS システム設定の「ダウンロードしたアプリケーションの実行」の許可ボタンを何度押しても反応しないのは非純正マウスが理由だった!?

ダウンロードしたアプリケーションの実行」の許可ボタンが何度押しても反応しない

High Sierraにアップグレードした後に、Karabina Elementsを開いた所、システム設定で外部アプリケーションの実行を許可するようにダイアログが出た。

[blogcard url="https://github.com/tekezo/Karabiner-Elements"]

そこで システム設定>セキュリティとプライバシー>外部アプリケーションの許可 に飛んで許可ボタンを押したのだが、ボタンを押しても何も怒らない。

https://twitter.com/felix_schwarz/status/908690187219283970

この方の動画にあるような現象が自分にも起きた。

なおこの方はスクリーン共有機能を提供しているアプリをOFFにすれば直るとおっしゃっているが、自分は特にそういった設定はしていないので違う模様。

もちろん、OSはあの悪名高きHight Sierra、バグ多すぎだろ...

mac純正の入力デバイスからでないと反応しない⁉

そこでさらに調べたところ、Karabina Elementsのgithub issueにも同様の現象で困っている方たちが。

[blogcard url="https://github.com/tekezo/Karabiner-Elements/issues/1017"]

上記issueでの回答を見たところ、トラックパッドからの入力でないとというものが目についた。

実は自分もクラムシェルモードmacbook Proを動かしていてbluetoothマウスを接続していたので、試しにトラックパッドでクリックしたところちゃんと反応した。

コメント内での回答は例えば

https://github.com/tekezo/Karabiner-Elements/issues/1017#issuecomment-335165442

...(略)... If you have this problem try to disable any apps that my capture and forward clicks. The click must come from the touchpad directly. << pulling my hair out >> (訳) ... 問題があるなら、クリックイベントをキャプチャーしてフォワードしているアプリを全部切ってみて。クリックはタッチパッドから直接入力されたものじゃないとダメみたいだ

 

https://github.com/tekezo/Karabiner-Elements/issues/1017#issuecomment-363904363

FWIW, I had a similar issue in 10.13.3. ...(中略)... It was ultimately due to the use of a third-party mouse from Logitech. I plugged in my Magic Mouse, click on the "approve" and things started to work as advertised. (訳) 役に立つかわからないけど自分も 10.13.3 で似たようなことになっている ... これは完全にLogitechのようなサードパーティー製マウスを使っているのが原因だ。自分はマジックマウスを接続して「許可」を押したら他の人みたいに直ったよ。

なるほど、どうもサードパーティー製のポインティングデバイスを使ってはダメらしい。

しかし、少し手前にはワコムペンタブレットなら動いたという声も

https://github.com/tekezo/Karabiner-Elements/issues/1017#issuecomment-344077728

I was clicking like crazy that button and nothing happened then I tried clicking with a wacom pen using my wacom tablet and it worked!!! (訳) 死ぬほどクリックしまくってたけど何も起こらなくて、ワコムのペンタブでやってみたらうまくいった!!!

あと、会社のmacbook proも普段はクラムシェルモードでマウスをつなげて操作しているが、上記の問題は発生していない。

ただこのマウスは有線マウスなので、もしかしたらサードパーティー製でもワイヤードマウスは大丈夫なのかもしれない...

まとめ

上記をまとめると、システム設定のボタンが正しく動く入力デバイスは以下の通りと思われる。

日本語の情報がなく1ヶ月くらい困っていたのでまとめておきました。

Google Home Mini / IRKit / Wemo で一人暮らしでも快適に冬場を過ごせるスマートホームを実現した、しかも予算たったの1万円!

朝起きたら部屋が暖かく、家に帰ったらお湯が沸いている生活

昨年から都内で一人暮らしを始めた。

やってみると、意外にも生活で困ることはなく順調に秋までは過ごせていたのだが、冬になるとどうしても部屋が寒くなり生活リズムに支障をきたすようになった。

当たり前だが、一人暮らしだと誰かが先に起きて部屋を温めてくれている...なんてことは起きない。

もともと冬季うつ病の傾向がある自分は、冬の朝にはめっぽう弱く、仕事で何もなくても朝起きるのがかなり辛くなってしまった。

なのでタイトルのスマートホームを実現するまで、自分は願わくば

  • 朝起きる30分前にエアコンを付けてくれて
  • 起きる時間には照明を付いていて
  • そのまま台所ではお湯が沸いており
  • 帰宅した時も部屋は温かくお湯が沸いていてほしい

そんな生活が送りたいと思っていたのだった。

そんな生活が1万円で実現できてしまった

というのは、前置きで、結論としては、上記の生活は全てスマートホームによって実現できてしまった。

しかもかけた総額は...なんとたったの1万円!

何をどう実現しているかは次の図をご覧いただきたい。

我が家のスマートホームのシステム構成

いろいろと書いているが、要は

  1. スマホGoogle Home Miniを入力にして
  2. アプリまたはIFTTT経由で
  3. IRKitやWemoにリクエストを飛ばし
  4. それらが家電の電源・赤外線入力を操作する

というのが上記の流れだ。

その際、新たに自分が購入したツールは次の3つである。

  1. Google Home Mini
  2. IRKit (現在販売停止中ですが中古ならAmazonで手に入ります!!)
  3. Belkin WeMo 家庭用電源リモートスイッチ

タイトルにある「1万円で」というのには、昨年ビックカメラでGoogle Home Mini半額キャンペーンをやっていて自分はその時に3,000円でGetできたのに加えて、Wemoのスイッチを社内のイベントで景品としてもらっているという事情はある。

だがそれらを元値で買ったとしても、IRKitが7,000円程度だったので総額2万円に収まるのであれば良い投資ではないだろうか (残念ながらIRKitは2018年1月現在Amazonでの取扱が停止しているが)。

どうやって実現しているかの詳細

ステップ1: IFTTTへの入力

Google Home Mini

家ではGoogle Home Mini、外出先ではスマートフォンから、IFTTTへHTTPリクエストを送る。

リビングのモニター下にGoogle Home Miniを置いているが、家は6.5畳の1Kなのでキッチンや玄関からでも音声操作ができる。

スマートスピーカーに声が届きやすいという意味では、狭い家も悪くない。

ステップ2: IFTTTからWemoやIRKitへ通知する

Google Home Miniやスマホを経由してスマートスイッチを操作するIFTTTレシピを作成している

続いてIFTTT上でIRKit / Wemoを操作するためのレシピを作成する。

"If" についてはGoogle Home Miniのキーワード、GPS、時間などなど好きなものを設定すれば良い。

次に "Then" について、Wemoの場合は既にインテグレーションがあるのだが、IRKitはインテグレーションがない。

そのため、WebhookでHTTPリクエストを飛ばす必要があるが、肝心の「どのようなパラメータを付けてどこにリクエストを飛ばせばよいか」については、以下のポストを参考に設定したのでここでは割愛させて頂く。

[blogcard url="https://qiita.com/jyoshida/items/cf550d6b645ef69aae28"]

[blogcard url="https://qiita.com/ikeyasu/items/dfb991007a31d5aa03c2"]

やってみた感じ、clientkeyの取得部分が若干面倒ではあったものの、一度やってしまえばコピペで使いまわせるし、リモコンの信号もコピーペしてどこかに保存しておくことをオススメする。

ステップ3: IRKitからエアコンと照明に赤外線で信号を送信

話が前後するが、IRKitはインターネット経由で赤外線を操作できる小型のスマートリモコンで、赤外線で操作できるものは何でも対応している。

家電に付属しているリモコンからIRKitに赤外線を送信することで、IRKitがそれを覚えてくれる。

よって

  • エアコン
  • 照明
  • 扇風機
  • テレビ

などが操作できる。

自分は机の下にこんな感じで雑多に置いている (下のNTTルーター横にある白いのがIRKit)

小さくて軽い故に向きがずれて赤外線が届かなくなることがあるため、テープかなにかで固定するのがベター。

IRKit

これでようやくインターネット経由で赤外線が操作できるようになる、めでたしめでたし。

前述の通り、IRKit自体が簡易のHTTPサーバーとなっていて、リモコン信号をパラメータにくっつけてリクエストを外から送ることで、他のサービス(ここではIFTTT)からの操作も可能である。

もちろんIRKitの専用アプリもあり、IFTTTなどの連携が必要ない場合はアプリ上でボタン化すれば良いのでそれだけでも自分は十分便利だと思っている。

IRKitのアプリを使えば操作を簡単にボタン化できる

今の家ではエアコンと照明が赤外線リモコン操作に対応している。

なので、IFTTT経由で平日朝起きる30分前にエアコンをONにし、かつ起きる時間には照明を付けられるというわけである。

これはもちろん帰宅時も同じで、IFTTTでGPSによるフックが可能なため、家に近づいたらエアコンと照明を付けるのもお手の物。

(自分は家が駅から近く、かつ最寄りよりも先の駅まで行く用事が頻繁にあるためここはIRKitのアプリで操作している)

ではGoogle Home Miniの出番はどこか。

Google Home MiniもIFTTTへの入力になれるので、音声でのエアコン/照明操作はコマンドとして登録しておく。

そうすればいつもより早い時間に起きることになっても、布団から出ずにエアコンと照明を操作できるし、何よりいちいちリモコンを探す必要もない。

なので最近はほとんどリモコンは使わずに、Google Home Miniの音声コマンドのみで操作している感じである。

ステップ4: Wemoでお湯を沸かす

ではお湯を沸かす件はどうなったか。

これはWemoの方で実現している。

wemoは電気ケトルと繋いでいる

Wemoはインターネット経由で操作できるスマートスイッチで、自分が持っているのは通電を切り替えるだけのものである。

これ以外にも、最近は電球や遠隔モニターなどいくつかのラインナップがあるらしい。

現代の多くのデジタル家電では電気的にスイッチを入れなければいけないため、通電を切り替えるだけのスイッチは正直使い道がないと思っていた。

ところが最近、自宅の電気ケトルのスイッチ部分がアナログであるという点に気づいた。

これを利用すれば、通電がOFFの状態で水を入れた電気ケトルのスイッチをONにしておき (もちろん沸騰はしない)、通電したタイミングでケトルを沸騰させることが可能である。

よって、朝起きた瞬間に暖かいコーヒーを飲み、寒い夜も帰宅したらお茶を飲める生活が実現できたわけである。

...え、ホットミルクが飲みたい? なら電子レンジでも良いのだ!

そう、なぜなら我が家の電子レンジはアナログなゼンマイ式(?)のタイマー式電子レンジだからである (7,8時間牛乳を冷蔵庫から出すことにはなるが)

以上を考えると、意外とアナログな家電ほど、スマートホームには向いているのではないかと思い始めた。

電源を入れるだけのような家電の方が割安なスマートスイッチでIoT化を実現できてしまう気がするのは自分だけだろうか。

もちろんIRKitやWemoなしで、家電を直接Wifi経由で操作できるならそれがベストだし、Chrome Castのように別の端末から繋いだ家電のコマンドを操作(自動でテレビを付けてHDMI入力に切り替える的な)してくれば理想だ。

でもそこまでできる未来は少なくとも5年, 10年はかかると思うし、何より家電ごと買い替えないといけないので単純にお金がかかるというのも難点だ。

まとめ

  • Google Home MiniとIRKitとWemoで冬場も快適な生活を実現できる!
  • Google Home は汎用性も高くこれからもアップデートが来るのでとりあえず買っておこう!
  • IRKitは売っていないので代替品を探すか持っている人から買い取ろう (それくらいの価値はある!)
  • アナログな家電を持っている人こそWemoスイッチを買ってみよう!

ぜひ一人暮らしであまり金銭的余裕がない人でも、快適な生活を実現する方法があるということを知ってほしいと思う次第である。