Technology

Ubuntu on Windows Subsystem for Linux(WSL)

Windows Subsystem for Linux(WSL) を使うと Windows10 上で Ubuntu を動かすことができる。 これはいい。 Windows を使わざるを得ないときは Git for Windows に付属している Git Bash を主に使っていたのだけれども、 これの出来が悪くて、とにかく遅い。コマンドを打つたんびに2,3秒待たされるような感覚。 一方 WSL だと全然待たされない。素の Ubuntu 環境とほとんど同じ使用感。しかも、apt でパッケージもじゃんじゃんばりばり入れることができる。docker for windows で Ubuntu を動かすのと似てるかな。 うーん、これはいい。 仕事場では WSL を有効にした Windows 環境を使っても良いかも。アプリケーションの制約とか、Office関連の編集でどうしても Windows を使わざるを得ないことがあるからね。 というかもう Windows はカーネルを捨てたらいいじゃない。 ね。

ServersMan@VSP から GCP に引っ越し

ServersMan@VSP から GCP (Google Cloud Platform) の無料枠に引っ越ししました。 ServersMan@VPS は OpenVZ を使っている関係上、Ubuntu14.04 までしか動作せず、 かつ、docker が使えなかった。それが引っ越しの理由です。 いやしかし GCP すごいですね。 無料ですよ。 無料で Linux のサーバが使えて、グローバルIPが振られる。 そんな環境が無料ですからね。 無料枠だと HDD が 30 GB で、メモリが 600 MB。 十分でしょう。 いろんな作業をするとメモリが一杯になってフリーズしていたけど、デフォルトだと作られていない Swap を作成すればフリーズしない遅いだけのサーバになりました。 That’s a plenty. rbenv で ruby をビルドするとものすごく時間がかかるので、ローカルPCでビルドした環境を以下の条件で GCP 上に配置したら動きました。 ローカルPCも Linux。 ローカルPCとGCP上のユーザ名を同じにする。 ローカルPCで rbenv install ローカルPCで tar jcf rbenv.tar.bz2 ~/.rbenv して GCP に転送。 GCPで tar jxf rbenv.tar.bz2 docker が使えるようになったのはすごくありがたくて、nginxとかcgiとかを docker 上に乗っけることができました。 なので、今度どこかに引っ越しするときには、この docker 環境を移行するだけで良いはず。 docker 設定は GitHub 上で管理。my-docker-compose

YEOMANを利用してベストプラクティスと規約に則る

YEOMAN - THE WEB’S SCAFFOLDING TOOL FOR MODERN WEBAPPS YEOMAN を利用すると各種Webアプリケーションフレームのベストプラクティスと規約に則った構成で開発スタートできます。 どういうことかと言うと、Webアプリケーションの開発を始めるときには選択すべきことが2つあります。(アプリケーション層に限定するとです) 一つ目が「どのWebアプリケーション開発フレームワークを使うか?」です。これは開発対象に大きく依存するため、個別に検討して選択する必要があります。 二つ目は「どういった構成でWebアプリケーションの実装を進めるか?」です。例えば MVC にするか MVVM にするか フロントコントローラ にするかですとか、O/Rマッパーにどのライブラリを使おうかですとか、DI どうするですとか、単体テストツールをどうするですとか、CI どうするかですとか、データマイグレーションどうするですとか、ディレクトリをどう配置しようかなどです。(つまりソフトウエアアーキテクチャとエコシステムですね。) ほとんどの場合、上記の構成は利用するWebアプリケーション開発フレームワーク毎に「ベストプラクティス」と「規約(Coc)」があります。その部分については検討をサボることができます。言い換えると楽ができます。もっと言い換えると「検討をしてはならない」ということです。それでも個別で検討してローカルルールを作ってしまうと、フレームワークやライブラリのバージョンアップができなくなるなど痛々しい未来がきてしまいます。 「ベストプラクティス」と「規約(Coc)」は最終的にはしっかりと理解する必要がありますが、とりあえずプロトタイプを動かしてみたいじゃないですか。その方が楽しいじゃないですか。そういう時に YEOMAN が使えます。(rails new や rails scaffold のイメージです。) 例えば ASP.NET Core でWebアプリケーションの開発を始める場合。 $ yo aspnet これだけです! これだけでベストプラクティスと規約に沿った構成が生成できます。それでもって、 $ dotnet restore $ dotnet run これだけでWebアプリケーションが動いてブラウザで見ることができます。その後は生成されたソースコードをカスタマイズしてどうなるか楽しく見ながら同時にベストプラクティスと規約を学べば良い、ということでございます。 開発は楽しい! 楽しくなければ嘘だ!

Ubuntu-on-Windows10

Windows 10のLinux/Ubuntu互換環境でbashを使う 上記ページを見ながら有効にしてみました。 あっさりaptが使えるようになりました。 Ubuntu on Windows10 のポイント VMではなく、バイナリを実行できるようしたもの。(wineの逆) よってカーネルランドの機能は使えない。 よってネットワークはWindows側と同一。 開発者向けである。 CPU使用効率は良いがファイルI/Oが遅い。 日本語 ターミナルエミュレータが貧弱で日本語を扱うのは厳しいです。 SSHサーバを $ apt-get install dropbear で導入し、puttyなどでssh接続すると日本語も問題なく扱えます。 VMではないためネットワークはWindowsと同一です。つまり Windows 側から ssh localhost で接続できます。 ubuntu-desktopなどをインストールしWindowsからリモートデスクトップで接続する方法もありますが、安定していないそうです。どうもまだD-Busが安定稼働できていないそうです。 UbuntuをGUIで使いたいのであれば、残念ながら今は VirtualBox 等を使うべきです。 開発環境 git, rbenv, ruby, rails, perl あたり動きました。 ベンチマークは取っていませんが ruby のビルドが遅いように感じました。どうもファイルI/Oが遅いのだそうです。 Windows 10: How well does it run Ubuntu Bash? Windows側にアクセス /mnt/c にCドライブがマウントされています。 できないこと 先述の通り D-Bus 対応が不完全なため GUI は厳しいです。 Linux カーネルを移植している訳ではないため cron も動きません。 曰く「開発者が使用するLinux環境であり、サーバー機能は対象外」とのこと。cronが動くと /mnt/c のファイルを操作するスクリプトとか動かせて面白かったんですけどねえ。まあユーザランドで動く cron を作るか探せばOKだとは思います。 感想 いやあ、Windowsでaptが動く時代になりましたか。 もうWindowsのカーネル捨てたらいいのに。 OSSで公開したら面白そうじゃないですか?

DISQUS

ここのブログサイトに DISQUS を導入してみた。 これで記事にコメントできるようになりました。 このブログサイトはOctopressで生成している静的Webサイトなんだけど、コメントが付けれるとなるともはや動的。 DISQUSのようなマイクロサービス(又は古語でマッシュアップサービス)はやっぱり面白いね。 DISQUSそのものの実装はシンプルだろうけど、強みがあって、利用も簡単で、組み合わせでいろんな用途に使える。 マイクロサービス万歳。 確かTEGLETさんが作っていたと思うのだけど、あらゆるウェブサイトにメモが書けるツールを見たときはワクワクしたなあ。 それもあれ十何年前だ? 時代を先取りしすぎたのかもしれない。 やりようによってはものすごく、なんつうか、まあお金になったのではないか。