シェア
//Shellの範囲を理論と応用で拡張する

Shellの範囲を理論と応用で拡張する

    ★ 期待通りに使用できますか? Bash on Ubuntu on Windows。

2016年8月から、[Bash on Ubuntu on Windows](以下、BoWと省略)はWindows 10に組み込まれました。そのため、Windows上でUbuntuとBashの両方を使用できるようになりました。
「もし開発ができるなら面白いだろう」と考えている人も多いのではないでしょうか?
私たちはBoWを使用して、実際の開発環境を模倣し、期待に応えられるかを検証しました。

BoWを使用してアプリケーションを開発する

Windows 10 Anniversary Updateから導入された[BoW]は、2017年4月のCreators Updateによって強化され、開発ツールも利用可能になりました。この投稿では、BoWを使用して開発することで期待通りに動作するかを検証します。

開発環境について
私たちは次の環境で開発と検証を行いました。
Windows 10 Pro 64bit, version 1703, build 15063.138 (Creators Update)
16GB RAM
Intel Core i7-5500U CPU @ 2.40GHz

BoWはCreators Updateから以下の環境を使用しています[指示1]。
▼指示1 BoWの情報(この投稿で使用されている)
$ uname -a
Linux DESKTOP-T3CMM04 4.4.0-43-Microsoft #1-Microsoft ⇙
Wed Dec 31 14:42:53 PST 2014 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"

(*1) ターミナルの表示について、特に記録がない場合はBoWのターミナルが表示されます。
BoWの導入方法についてはこの記事では省略しています。インターネット上の記事を参考にしてください(*2)。

BoWが導入された後、Start Menuから起動できます。[Bash on Ubuntu on Windows]を選択するか、キーボードで…+…を押して、[実行したいファイル名]を入力します。

(*2) 参考リンク

検証内容
この環境を使用して、次のようなシンプルなサンプルアプリケーションを開発して、その感想を確認します。
(*3) サンプルコードはGitHubで公開されています。

●JavaとPlay Frameworkを使用してWeb開発
●Vue.jsとnpmを使用してフロントエンド開発
●Pythonを使ってシンプルなTwitterクライアントを開発

さらに、上記以外にもMastodon用のCOBOL環境を作成したりもしました。
このような内容はブログで紹介しているので、興味があればご覧ください(*4)。
(*4) リンク1 リンク2

BoWとWindows環境の接続
BoWを使用する場合、基本的にはWindows上のエディタやIDEを使用することが一般的です。WindowsからBoWの共有フォルダにアクセスできないため、Windows上で(C:¥work)というフォルダを作成し、そのフォルダをBoWとWindows両方で参照できるようにします。このままBoWを使用すると少し不便なので、$HOMEにシンボリックリンクを作成して使用するのが良いでしょう[指示2]。

▼指示2 Windowsのフォルダにシンボリックリンクを作成する方法
$ ln -s /mnt/c/work $HOME/work
$ ln -l work
lrwxrwxrwx 1 kunst kunst 11 April 29 17:58 work -> /mnt/c/work

BoW環境にOpen JDK 8をインストールする
$ sudo apt-get install openjdk-8-jdk

sbtは公式サイトの[Linuxへのインストール手順]に従ってインストールします(*7)。

▼指示3 sbtをインストールする方法
$ echo "deb https://dl.bintray.com/sbt/debian /" | ⇙
sudo tee -a /etc/apt/sources.list.d/sbt.list
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 ⇙
--recv 2EE0E64E40A89B84B2DF73499E82A75642AC823
$ sudo apt-get update
$ sudo apt-get install sbt

(*7) 参考リンク

開発準備(BoW環境)
BoW環境でPlay Applicationのテンプレートを作成します。テンプレートを作成するには、sbt newコマンドを使用します(*8)。

(*8) 参考リンク
$ sbt new playframework/play-java-seed.g8
ここではいくつかの質問がありますが、[指示4]に従ってname以外は空欄のままでEnterキーを押せばOKです。

▼指示4 テンプレート作成時の質問
このテンプレートはPlay Javaプロジェクトを生成します
name [play-java-seed]: play-java8-sample ←プロジェクト名を入力
organization [com.example]: ←空欄のままでEnter
scala_version [2.11.11]: ←空欄のままでEnter
play_version [2.5.14]: ←空欄のままでEnter

テンプレートは./play-java8-sampleに適用されました。

開発準備(Windows環境)
BoWを使用してプロジェクトのテンプレートを作成したので、Windowsから作成したプロジェクト(C:¥work¥play-java8-sample)を開きます。
IDEにはIntelliJ IDEAを使用します(Windows環境でJavaアプリケーションをコンパイルする場合、JDKも必要です)。

開発
BoWでdevサーバーを起動し、WindowsのIDEでソースコードを修正しながら開発を進めます。
devサーバーは次のコマンドで起動します。
$npm run dev

その後、ブラウザで[localhost:8080]にアクセスします。ここではホットデプロイとホットリロードが処理されているため、ソースコードが変更されると画面が自動的にリロードされます。(図11)
このような条件で開発が始まります。

サンプルコードはほぼNote 10で紹介されたコードと同じなので、この部分は省略します。
BoWを使用してnpmを使えば、Windowsにnpmをインストールしなくても開発が可能です。
作者はBoWでnpmを実行し、上書きして動作させることができました。

便利機能: openコマンド
2017年4月のCreators Updateにより、BoWから直接Windowsでバイナリを実行できるようになりました。
これにより、現行のディレクトリを開いて、Macのopenコマンドのようにコマンドを実行できるようになり、非常に便利です。

List 3に示されたスクリプトを作成し、$HOME/binにPATHを設定します。これにより、openやopen word\js-sampleなどのディレクトリを開くことができます。
ただし、BoWの仕組みではWindowsの外部フォルダ(例えば、/mnt/c/内のフォルダ)は開けません。

List 3 bin/open
#! /bin/bash
"if [ $# -eq 0 ]; then
DIR=.
else
DIR=""$*""
fi
explorer.exe $DIR"

便利機能 [Pathの変更コマンド]
BoWのターミナルを使用し、Windows上でPathを変更したい場合や、WindowsのPathをBoWで使用したい場合に便利なコマンドを作成します。
以下のように、List 1、2のようなコマンドを使うと便利です。
例えば、下記のようにします。
$ echo "/mnt/c/work/python-sample" | u2w
C:\work\python-sample
$ echo "C:\work\python-sample|e" | w2u
/mnt/c/work/python-sample

▼ List 1 Windows PathをUbuntu Pathに変更するコマンド(bin/w2u)
#!/bin/bash
sed 's_ \\_/_g' | sed -r 's_^(.)(:)_/mnt/\L\1_g'

▼ List 2 Ubuntu PathをWindows Pathに変更するコマンド
#!/bin/bash
sed -r 's_^(/mnt/)(.)_\U\2:_g' | 's_/_\\_g'

PythonでTwitterクライアントを簡単に開発

次に、Pythonを使用してTwitterクライアントを開発します。
これは開発環境を検証するための簡単なCLIクライアントで、タイムラインを表示します。

開発準備(BoW環境)
BoWの標準的なパッケージ管理ツールがインストールされていないので、インストールします。
$sudo apt install python3-pip

pipを使用して必要なライブラリをインストールします。
$pip3 install requests_oauthlib

開発準備(Windows環境)
Pythonの開発検証のためにサンプルプロジェクトを使用せずに進めます。
Windows上で[C://work/python-sample]というディレクトリを作成し、Atomなどのエディタを使います。

開発
また、今回もdevサーバーは使用せず、Windowsのエディタでソースコードを修正し、BoWから実行します。
完成したコードはGitHubのNote 13に記載されています。

次に、コマンドラインでツールを実行します。
これにより、タイムラインが表示されます(図12)。

BoWのPythonからTwitter APIを呼び出すことで、データを抽出することができます。

まとめ

Java、JavaScript、Pythonなどの多くの言語で、すべての環境が準備されていれば、問題なく開発を進めることができます(多少の準備が必要な場合もありますが)。
個人的な観点では、Windows上でLinux仮想マシンを作成し、開発を進めるような感覚です。
Windowsで開発する場合、多くの開発ツールをインストールしなければならないため、環境が混乱する可能性があります。
BoWを開発環境として使用すると、ある程度環境を分けることができ、自動化されたシェルスクリプトなどの利点があります。
さらに、仮想環境だけでなく、純粋なネイティブ環境で開発を進めることができます。将来的には、これが開発の選択肢となるでしょう。

BoW環境の再構築
BoW環境が期待通りに動作しない場合や、環境を最初から再構築する場合の手順を紹介します。
管理者権限でコマンドプロンプトを開き、次の2つのコマンドを実行します。
>lxrun /uninstall
>lxrun /install

再構築しても、/rootや/homeフォルダは削除されないため、設定ファイル(ユーザーや.bashrcなど)を再利用できます。
Map 12 完成後のTwitterクライアント
$ ./sample.py
おやすみなさい
これでもう無線のレンジを独自これでもう無線のレンジを独自これでもう無線のレンジを独自
これでもう無線のレンジを独自これでもう無線のレンジを独自これでもう無線のレンジを独自
これでもう無線のレンジを独自これでもう無線のレンジを独自これでもう無線のレンジを独自
これでもう無線のレンジを独自これでもう無線のレンジを独自これでもう無線のレンジを独自

BoWでPythonをVisual Studio Codeに統合する方法

Pythonの開発をテストするために、最初からVisual Studio Codeを使用する予定でした。しかし、Visual Studio Code内でBoWのPythonを直接統合するのは難しく、この投稿ではその方法は省略しています(もちろん、Windows環境でインストールすれば問題なく使えます)。
しかし、テスト段階では、BoW内でVisual Studio Codeを使ってPythonを実行することができました。
この方法ではPylint(Pythonコードチェッカー)は使用できません。

まず、Python用のプラグインをインストールします(図13)。インストール後、Visual Studio Codeを再起動すると、*.pyファイルが色付けされます。
次に、Ctrl + ,を押してsettings.jsonを開き、(List 4のように)設定します。その後、”C:\work\python.bat“というファイルをsettings.jsonで編集し、List 5の内容を追加します。
設定が完了したら、Visual Studio Codeのエディタで右クリックし、「Run Python File in Terminal」を選択すれば、IDE上でファイルが実行されます(図14)。

図13: Pythonプラグインのインストール

List 4: settings.jsonの修正
// デフォルト設定を上書きするため、このファイル内に設定を記載します
{
""python.pythonPath"": ""C:/work/python.bat""
}

List 5: python.bat
bash.exe -c "echo %* | sed 's_\\\\_/_g' | sed -r 's_^(.)(:)_/mnt/\\L\\1_g' | xargs python3"

図14: Visual Studio CodeでBoWのPythonを実行


今すぐ応募







    福利厚生

    給料・ボーナス制度

    社員の感情・願望を理解しているので、リバークレーンベトナムは特に年2回の定期昇給制度を設けています。毎年6月と12月に評価を行い、毎年1月と7月に給与が変更されます。また、社員は月次と年次の優秀な個人には定期的な業績賞与が別で支給されます。

    日本研修制度

    世界中の新しい技術分野に触れるために、社員を日本にオンサイトさせる方針があります。さらに、技術分野か管理分野かのキャリアパスは社員の決定次第です。

    毎年社員旅行

    リバークレイン・ベトナムは、スタッフに挑戦の機会を提供するだけでなく、年に一度の魅力的な旅行で彼らを楽しませています。エキサイティングなガラディナーやチームビルディングゲームは、リバークレインのメンバー同士の絆をさらに深める手助けをします。

    リバークレイン イベント

    チームビルディング・ファミリーデー・お夏休み・中秋節などのイベントはチーム内のメンバーが接続出来るしお互いに自分のことを共有出来る機会です。ご家族員に連携する際にはそれも誇りに言われています。

    社会保険制度

    リバークレーンベトナムは従業員に社会保険、医療保険、失業手当などの社会保険制度があります。当社は、これらの保険に関するあらゆる手続きをスタッフに必ずサポートしています。さらに、他の保険契約も考慮され、検討されています。

    他福利

    社員向けの活動をサポートすることもあります。 ・文化・芸術・スポーツクラブの運営費用 ・技術研究の教科書を購入する金額 ・エンジニア試験・言語能力試験を受験料 ・ソフトスキルのセミナー・コースの参加費 ・等 また会社政策通り、他のベネフィットもあります。

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close