やってみた
2016.08.29
Bash on Ubuntu on Windowsで何ができるのか
サーバー開発担当の木下です。
Bash on Ubuntu on Windowsでさわいでいたら、今度はWindowsのPowerShellがGitHubで公開された、というニュースも入ってきました。
マイクロソフトのおかげで、落ちきつつあったオープンソース化にまた大きな波が来そうな感じがします。
さて、前回の予告通り。
Bash on Ubuntu on Windowsで何ができるのか
ひとことで言ってしまえば、UbuntuのBashと同じことができます。しかも、仮想OSのように隔離されたUbuntu環境の中だけではなく、WindowsのCドライブの中を見ることもできます。
このおかげで、「この大量のファイルを操作するのが面倒!Bashならコマンド一行なのに!」というシェル芸人Linux環境に慣れている方も、これで作業を効率化できます。
Bashでどう効率化できるのか
たとえば、いくつかのJPEG画像をまとめてひとつのPDFファイルにしたい場合です。
Googleで「画像 PDF化」と検索すると、いろいろ出てきます。ウェブベースの変換サービスを使うとか、Adobe Acrobatで変換する、Microsoft Wordで編集してPDFエクスポート、などなど。
しかし、Linuxに「ImageMagick」が入っていれば、コマンドだけで簡単に完了できます。
ImageMagickをインストールする
代表的なLinuxディストリビューションは、パッケージマネージャと言われるものを持っています。スマホで言えば、AndroidのPlay Store, iOSのApp Storeに近いものです。
Ubuntuの場合、aptというパッケージマネージャがありますので、これを使ってImageMagickをインストールします。
Bashの画面で、
sudo apt-get -y install imagemagick
と入力してエンターキーを押します。パスワードを聞かれるので入力すれば、インストール完了です。簡単ですね。
ImageMagickでJPEGファイルをPDFにする
Windowsのデスクトップに、牧場で撮影した写真を4枚準備しました。
Bashで、Ubuntu環境のホームディレクトリに写真をコピーします。
$ cp /mnt/c/Users/user/Desktop/Photos/*.jpg /home/user/
コピー先に移動して、JPEGを全部まとめて「photos.pdf」というPDFファイルに変換します。
$ cd /home/user/
$ convert *.jpg photo.pdf
完成したファイル:photo.pdf
これで変換完了です。ただ、元の画像が大きいので、PDFファイルも12MBになってしまいました。これではメール添付も難しいので、もう少し小さくしてみましょう。
幅を1024pxで指定してみます。
$ convert *.jpg -resize 1024x photo1024.pdf
完成したファイル:photo1024.pdf
1.6MBまで小さくすることができました。
あとは、変換して出来たPDFファイルをWindows側に移動できれば良いのですが、現状は簡単にはいかないようです。このあたりは今後のアップデートに期待したいと思います。
サーバーとBashの組み合わせで使い道が広がる
Bashのコマンドは、IoTにも対応できます。
たとえば、安価なIoTデバイスとして知られるRaspberry Pi向けに開発されている、RaspbianというLinuxディストリビューションがあります。
Raspberry PiのGPIO18番にLEDをつないでおき、コマンドで
$ echo "18" > /sys/class/gpio/export
$ echo "out" > /sys/class/gpio/gpio18/direction
$ echo "1" > /sys/class/gpio/gpio18/value
を実行すると、GPIO18番に電流が流れ、LEDが光ります。
さらに、BashコマンドはPHPなどのサーバースクリプトからも実行でき、スマホアプリと連動させることもできます。
回路設計、サーバープログラミング、スマホアプリ作成のスキルがあれば、「外出先から照明の消し忘れがないか確認できるアプリ」「ベッドの中からコーヒーメーカーのスイッチを入れられるアプリ」などを作ることができるようになります。
Bashをさわってみよう!
ご使用のPCがWindows10で、最新のUpdateが適用されていれば、5分ほどでBash環境を準備することができます。
日本語での情報もたくさん出始めていますので、ぜひBashを体験してみてください。
また弊社では、IoTアプリの開発も承っています。お気軽にお問い合わせください!