WindowsとiPhoneという組み合わせの問題
iPhoneは、スマートフォンとしては高価なデバイスであるため、世界的にはそれほどシェアは高くない。しかし、日本ではスマートフォン市場において7割近いシェアを持っている。
一方、PCに関してはWindowsPCが8割近いシェアを占めている。つまり、日本ではWindowsPCとiPhoneという組み合わせを使う方が結構いるということになる。
iPhoneはMacとの連携が簡単
iPhoneはAppleの製品だ。このため、iPhoneは同じくAppleの製品であるMacとの相性が良い。特にデータのやり取りという点において、iPhoneとMacの相性はばっちりだ。
例えばiPhoneで見ていたWebページをPCのWebブラウザで見たいと思えば、iPhoneとMacの組み合わせならすぐに実現できる。Macの方にすでにそのための表示が出ており、選択するだけで閲覧可能であり、その逆もまた然りだ。
テキストデータのコピー&ペーストも簡単だ。Macでコピーしたテキストは、そのままiPhoneに貼り付けることができる。この機能は「ユニバーサルクリップボード」と呼ばれている。同じApple IDでサインインしていること、Wi-Fi/Bluetooth/Handoffが有効になっていること、デバイスが近くにあること、といった条件を満たしている必要があるものの、これらの条件は最初から満たしているケースがほとんどである。
ユニバーサルクリップボードでコピーできるのはテキストだけではない。画像ファイルや動画ファイルもコピー&ペーストできる。ファイルのやり取りに関しては、AirDropという方法も用意されており、何かと便利になっている。
データをやり取りする方法がない!
iPhoneとMacでのこの便利さを知っていると、iPhoneとWindowsという組み合わせで使っているときにもやもやした気持ちを味わうことになる。例えば、WindowsPCのスクリーンにiPhoneで閲覧したいWebページのURLがあったとする。これをiPhoneに持っていきたいと思ったとき、ユニバーサルクリップボードのような簡単な方法がないのだ。
そしてその逆もまた然りだ。iPhoneからWindowsPCへテキストや画像ファイルを簡単に送り込む方法がない。iPhoneで見ていたWebページをWindowsPCのWebブラウザで開きたいとか、iPhoneで撮った写真データをWindowsPCで編集しようと思ったときに、ユニバーサルクリップボードやAirDropのように簡単にファイルを交換する方法がないのである。
そこで今回は、PowerShellを使ってWindowsとiPhoneの間でデータのやり取りをスムーズに行う方法を探っていく。
どこから手を着けるか
まず解決したい課題を整理する。ここで取り組みたいのは「WindowsとiPhoneの間のデータのやり取りをスムーズにする」というものだ。手段は特に問わないこととし、簡単に操作できるようになればそれでよしとする。最終目標はユニバーサルクリップボードのような操作としておくが、原理的にそれは難しいので、そこに近づけば良しとする。
もちろんデータのやり取りはスムーズであってほしいで、データは「Windows→iPhone」も「iPhone→Windows」のどちらの方向への移動も簡単にできるようにしたい。PowerShellで取り組みやすいのは、「Windows→iPhone」の方だ。「iPhone→Windows」の場合にはiPhone側にも手を入れないといけなくなるので、ちょっと面倒なのである。ここは将来の課題ということにしておこう。
ということで、最初に取り組むべき内容を整理すると次のようになる。
- WindowsからiPhoneへデータを送り込む
- PowerShellで簡単に実現できること
この段階でいくつか候補が浮かんでくる。まずは最も簡単なところから実現させていきたい。
iPhoneへデータを送り込む簡単な方法は、SMSを使うかメールを送るかだろう。Windowsからデータを送ることを考えると、まずはメールでデータを送ってしまうというのが簡単に実現できそうだ。
既存の操作をなるべく自動化していく方向でPowerShellを使っていく
Windowsでメールを送るとなると、今ならGmailといったWebメールでメールを作成して送るというケースが多いだろう。または、Windowsに標準搭載されているメールアプリケーションを使ったり、Outlookを使ったりするケースも多い。
最初に考えるのは、こうした既存の仕組みやアプリケーションを使ってメールの作成・送信を行う作業を、PowerShellで自動化しよう、といったことだと思う。今ならこの辺りの操作はPower Automateを使うところだが、最終的にタスクスケジューラに登録して自動化にすることを考えて、まずはPowerShellを使ってみよう。
まずはできるところから作っていく
本格的にGUIアプリケーションを操作するとなると、APIを経由するということになる。これはPowerShellからもできるのだが、結構本格的なプログラミングになってきて厄介だ。
まずはその手前の段階を考える。
やりたいことを簡単にまとめると、次のようになる。
- メールアプリケーションを起動して、メールを作成する。
- メールの送信先をiPhoneで受信するメールアドレスにする。
- メールの本文をシステムクリップボードのテキストにする。
- メールを送信する。
実のところ、1~3まではAPIを叩かなくても、既存のアプリケーションとPowerShellの組み合わせで実現できる。しばらくはこの方法を追っていく。
コマンドラインから制御できるメールアプリケーションを使う
まず、メールを作成するウインドウを直接コマンドラインから起動できるメールアプリケーションを使うことにする。送信専用にそのアプリケーションを使うということだ。これはほかのアプリケーションにも適用できる考え方なので、知っておくとよいだろう。
選択肢はいくつかあるが、コマンドラインから起動時にいろいろ指定して制御できるソフトウエアはLinuxなどで利用できるOSS(オープンソースソフトウエア)に多い。そういったアプリケーションの中から、Windowsでも利用できるものを使うのが近道だ。
ここでは「Thunderbird」を使うことにする。Thunderbirdの説明は省くが、Firefoxで使われている技術を利用して開発されたメールアプリケーションである、くらいのことを知っておいてもらればよいだろう。OSSであり、WindowsでもMacでもLinuxでも利用できる。古くからあるソフトウエアの一つだ。
Thunderbirdでいく
Thunderbirdをインストールして、送信に使うメールアカウントを設定する。既存のメールアカウントへの影響を避ける場合、送信専用にメールアドレスを用意しよう。問題とならないメールアカウントをThunderbirdに設定してメールの送受信ができるようになったら、一旦Thunderbirdを終了する。
そして、PowerShellで次のコマンドを実行する。
& 'C:\Program Files\Mozilla Thunderbird\thunderbird.exe'
実行すると次のようになる。
コマンドラインからThunderbirdを起動できることがわかる。
ここからがポイントだ。次はPowerShellから次のコマンドを実行する。
& 'C:\Program Files\Mozilla Thunderbird\thunderbird.exe' -compose
実行すると次のようになる。
今度は新規メール作成のウインドウが起動した。
Thunderbirdは、このようにthunderbird.exeにオプションを指定することで、ある程度起動するアプリケーションを制御できる仕組みを提供している。この方法ならAPIを使う必要もないし、ある程度作業を自動化することができる。まず最初に取り組む対象としては上々だ。
オプションで指定する内容をもっと増やしていく
Thunderbirdのようにコマンドライン引数で挙動を指定できるタイプのアプリケーションは、結構こうした自動化の作業が行いやすい。APIが提供されていればそのAPIを経由してもっと細かく制御できるのだが、それは結構プログラミングが必要になるので、実装の負荷が高い。コマンドライン引数で制御できる程度が、楽だし現実的なのだ。
今回はiPhoneにテキストデータを渡すための方法としてメールを利用しようとしているが、今後取り上げていく内容はメールの自動生成の方法としても利用できる。業務の中に「定型メールを作成して送信する」といった作業があるなら、今後取り上げていく方法はその作業の自動化につながる内容でもある。取り組む価値は十分にあると思う。
どんな問題であっても最初はシンプルに捉えて、できるところから実現させていく。何もしないよりはましだし、その過程で次のステップも見えてくる。本連載でも何度も言っているが、ともかく小さく作って試していくというのが大切だ。そうした小さなステップが、積もり積もって大きな自動化と効率化を実現してくれる。
今後しばらくは、iPhoneとのデータのやり取りという点に焦点を合わせて取り組んでいく。