読者です 読者をやめる 読者になる 読者になる

Jack of all trades

master of none. 多芸は無芸を地で行く、自作自演何でも屋。

Bash on WindowsでRVMインストールからRuby on Rails環境構築まで

Bash on Windows

※検証環境はWindows 10 Pro Insider PreviewのOSビルド14352.1002です。

Bash on Windows(正確にはBash on Ubuntu on Windowsですね)の環境を作って壊してまた作る日々です。
ようやくrvmのインストールからRuby on Rails環境構築までが上手いこといくようになったので、備忘録的に書き起こしておきます。
まぁ正直、最初のバージョンからちゃんと動いてるっぽい*1ことも考慮するとrbenv使った方がいいんじゃないかな(以下Qiitaの記事参照)

qiita.com

rvmのインストール

まずはgitをインストール。

sudo apt-get install

curlはインストールされているようなので、そのままrvmのインストール。公開鍵の設定をしてからインストール実行。

curl -sSL https://rvm.io/mpapis.asc | gpg --import - 
curl -L https://get.rvm.io | bash -s stable

~/.bashrcの末行に以下を追加。

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

.bashrcを再読み込み。

source ~/.bashrc

一応rvmのバージョン確認を実行して正常にインストールされていることを確認。

rvm -v
rvm 1.27.0 (latest) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

Rubyのインストール

rvm経由でRubyのインストール。とりあえずバージョンは2.3.0を選択。

rvm install ruby-2.3.0

インストールが完了したら一応バージョン確認。

ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]

Ruby on Railsのインストール

まずはnodejsのインストール。

sudo apt-get install nodejs

一応Rails環境用のgemsetを作っておく。globalが散らかってもいいという方はご自由に。

rvm gemset create rails
rvm gemset use rails

環境作成用のディレクトリを作成して移動。

mkdir /mnt/c/BashOnWindows/src/rails/
cd /mnt/c/BashOnWindows/src/rails/

Railsのインストール。割とすんなりいけるはず。

gem install rails

おもむろにrails newする。プロジェクト名は任意で(ここではtrial01とした)

rails new trial01

作成されたディレクトリに移動してbundle installを実行。

cd trial01/
bundle install

で、エラー発生。

Unfortunately, an unexpected error occurred, and Bundler cannot continue.

First, try this link to see if there are any existing issue reports for this error:
https://github.com/bundler/bundler/search?q=parent+directory+is+world+writable+but+not+sticky&type=Issues

If there aren't any reports for this error yet, please create copy and paste the report template above into a new issue. Don't forget to anonymize any private data! The new issue form is located at:
https://github.com/bundler/bundler/issues/new

どうやらbashにおける新規ファイル作成時の付与権限がデフォルトのままだと「~/.bundle」ディレクトリに対する操作がうまく動かないらしい。 Bash on Windowsのissues専用GitHubで解決策を書いてくれています。ありがたい。

github.com

ということで、コメントに従って以下を実行。

umask 007
rm -rf ~/.bundle
bundle install

正常に実行完了!お待ちかねのrails sを実行。

rails s

ブラウザを開いて「http://localhost:3000」にアクセス。無事に動いてます。
f:id:sadynitro:20160605133818p:plain

ちなみに/mnt/c/配下の領域に環境作成用ディレクトリを作成しているので、Windows側のVSCode等で編集できます。
f:id:sadynitro:20160605134243p:plain

これでRailsアプリケーションの開発環境が構築できました。本番環境へのデプロイ等々が心配な感じですが、そのあたりは順番に実験していきます。

疲れた。

*1:Bash on Windowsの1回目のUpdateでは壊れてましたけどね

HoloLensおさわり会 with OITECに参加しました

イベント Hololens

タイトルそのまま。未来に触れてきました。

hololens.connpass.com

みつばたん( @mitsuba_tan )こと、 slikyfeel の泉本CEOが個人所有のHololensを使って各地で体験会を開催してくださっています。 此度は OITEC との共催という形で岡山で開催していただけました。

会場はご存じKLab株式会社様の岡山事業所をご提供いたきました。これに限らず、岡山のコミュニティイベントでしばしば会場提供していただいており大変ありがたい限りです。

百聞は一見に如かずとよく言われますが、Hololensに関しては本当に被ってみないとわからないですね。
なので、あまり細かいことは抜きにして単純に当日のレポートと個人的な感想を少々。

当日のレポート

Hololens本体。重さ579g(タブレットぐらいの感じ)
このサイズ、重量でCPU、GPU、メモリ、バッテリー、各種センサー等々がオールインワン。配線も一切出ていない。謎の技術としか言いようがない。 f:id:sadynitro:20160522214255p:plain

Hololens自体がサーバーになって、そこにアクセスすることで管理画面を開くことができます。
この画面上でHololens装着者が見ている画を共有したり、リソースモニターを確認したりできます。
これのおかげで、実際に装着して体験できるのが一人ずつでも、みんなでワイワイしながら会が進行していたので非常に良かったです。
f:id:sadynitro:20160522214259p:plain

取得した部屋のメッシュが表示された画面。
Hololensを被って部屋をグルグルすることによって 部屋の形状をスキャンしてメッシュを作成してくれているのが確認できます。
f:id:sadynitro:20160522214302p:plain

Hololensを被りなおしても配置されたオブジェクトはそのままなので、後半はかなり散らかった状態に。
お片付けできない子供部屋の様相。
f:id:sadynitro:20160522214306p:plain

画面共有を見ないで被ってる本人だけ見るととっても不審者な図、その1。
f:id:sadynitro:20160522214310p:plain

その2。
f:id:sadynitro:20160522214314p:plain

その3。スーツだと怪しさ倍増ですね。
f:id:sadynitro:20160522214318p:plain

個人的な感想

被った瞬間は「話に聞いてた通り、ちょっと視野角が狭い?」と思いましたが、操作してるうちにほとんど気にならなくなりました。視界の真ん中に見えるポインタをマウスポインタ的に使って操作することもあり、正面の対象に集中しているうちに気にならなくなります。使うアプリケーションの性質にもよるとは思いますが、その辺りの議論はまだ先の話になりそうです。
とにかくオブジェクトの物体感がすごい!普通のウィンドウ表示ですら物体感がある。遠近感もそうですが、ウインドウ表示している板状(?)のオブジェクトを思わず掴みたくなりました。
サンプルゲーム的なもの(ジャンルとしてはアドベンチャーゲームかな)も体験させてもらったのですが、NPCが本当にその場にいるかのように見えました。NPCの立っている位置で声のする方向も変わるので、本当に隣に立って会話しているような感じ。あぁどんなに頑張っても文章では言い表せない…。

まとめ

Hololensは未来でした。何にしても実際に被らないとわからないと断言できるので、どうにかして入手していただく…のは難しいとして、今後他所で開催されるHololensおさわり会に参加されることをお勧めします。差し当たり、松山、名古屋、博多での開催が予定されているようです。

hololens.connpass.com

とは言え競争率が高いので抽選に当たることを祈る感じにはなりそうですね。

ちなみに、HololensのSDKエミュレーター、Unityによる開発環境等々、Hololens用のアプリケーション開発も少しずつ見えてきているので、先んじてキャッチアップしたいですね。

とにかく単純に楽しかった!地方の開発者やコミュニティがモチベーション高く、最新のテクノロジーに立ち向かえるのはこういった会を企画・開催・協力してくださる有志の方々のおかげです。silkyfeel泉本様、KLab岡山事業所の皆様、OITECの皆様に最大級の感謝を。

Visual Studio Team Servicesでアラートを設定する

Visual Studio Team Services

前回のエントリというか、ComCamp2016のセッションについて @kkamegawaさんからフォローアップしていただきましたので、早速実験してみました。

Team Foundation Server(TFS)を自前で運用しているときはお世話になっていたアラートの機能について、すっかり失念しておりました…。ということでVSTSについてもアラートの機能を使ってみることにします。

各プロジェクトページの右上にあるユーザーメニューから「My alerts」を選択します。
f:id:sadynitro:20160222233013p:plain

Alertsの管理ページが開きます。
「Send my alerts to (Edit…)」でデフォルトの通知メール送信先を設定します。
下段のBASIC ALERTSでは、あらかじめ用意されたイベントトリガーから使用したいものにチェックを付けることでそのイベント発生時にメール通知が飛ぶように設定できます。
f:id:sadynitro:20160222233020p:plain

一方CUSTOM ALERTSでは、あらかじめ用意されたイベントトリガーのクエリテンプレートを選択して、自分の好きなようにクエリを編集することで通知イベントをカスタマイズすることができます。
f:id:sadynitro:20160222233049p:plain

「A Pull request I have participated in is created or updated」を選択すると、以下のような画面が表示されます。
f:id:sadynitro:20160222233100p:plain

テンプレートでセットされているクエリ(条件式)を変更して、用途に合わせた通知イベントを作成します。 f:id:sadynitro:20160222233107p:plain

一番上に作成した通知イベントが表示されていることを確認できます。
f:id:sadynitro:20160222233113p:plain

より細かいカスタマイズについては、アラートの管理画面中段のリンク、もしくはプロジェクトページの右上にあるメニューアイコンから歯車のアイコンを選択して「Alerts」のページを開きます。
f:id:sadynitro:20160222233121p:plain
f:id:sadynitro:20160222233126p:plain

Alertsページではより詳細にクエリを設定することが可能ですので、通知イベントにかなり細かい条件を付けたい方はこちらから通知を作成することをおすすめします。
※2016/02/23追記:「My alerts」から入る設定では、基本的に自分宛にメール通知をする設定でしたが、Alertsページでは該当のメンバー全員にメールを送る通知イベントなんてものも作成することができます。
f:id:sadynitro:20160222233130p:plain

設定後、実際にプルリクエストを作成してみると… f:id:sadynitro:20160222233138p:plain

無事にメール通知を受け取ることができました。 f:id:sadynitro:20160222233144p:plain

以前から、外部サービスと連携してイベント通知を飛ばす方法についてはご紹介していましたが、アラート機能を使ったメール通知についても、結構細かい条件を設定できるので、非常に便利だと改めて感じました。職場では外部サービスが使えない、外部サービスの登録からService Hooksの設定までやらないといけないのが面倒など、場合によってはアラート機能の方がマッチするケースも結構あるのではないかと思います。

ということで、皆様必要に応じて通知機能をチョイスしていただければと思います。

ComCamp 2016 Powered By MVPs 岡山会場でVSTSのお話をしてきました

イベント Visual Studio Team Services

去る2016/2/20にComCamp 2016 Powered By MVPsというMicrosoft & Microsoft MVPsによる無料のIT勉強会が開催されました。

technet.microsoft.com

私も岡山会場にて「Visual Studio Team Services スモールスタート」というタイトルでセッション担当させていただきました。 きよくらさん( @kiyokura )と2人体制のセッションだったので割と気持ちは楽だったのですが、諸事情によりトークボリューム的には 7、8割方私がしゃべることに。

セッション中、アンケート的に「VSTS知ってる方、使ってる方はどれくらいいらっしゃいますか?」「じゃあTFSは?」という 投げかけをしたところ、約50人の参加者の方で挙手をいただいたのはパラパラと数名…。 やはり中身どうこういう前に製品・サービスの認知度が低いのも課題かなと感じました(まぁ参加者の方が皆様shy boyだった可能性もありますが)

とはいえ、本セッションはそういったVSTS自体をよく知らない方もターゲットとして、出来るだけ導入のハードルを下げるための内容だったので ある程度の成果はあったと信じたい。

セッション資料についてはDocs.comにアップしておりますので、必要に応じてご参照いただければと思います。

また、懇親会と兼ねる形でなだれ込ませていただいた「座駆動LT大会20160220」でもLT発表させていただきましたが、開始前のプロジェクタートラブルと そのあとのトップバッターだったこともあって誰も覚えてないんじゃないかな…。まぁビールクズの与太話なので特に問題ありません。

今後も実業務でVSTSの運用は続けていきますし、そこで得た知見や独自に調査・研究した内容をブログ等で発信できればと考えておりますので何卒よろしくお願い致します。

Visual Studio Team Servicesのユーザー追加とステークホルダー

Visual Studio Team Services

Visual Studio Team Services(VSTS)のライセンス周りを調べているうちにVSTSのユーザー管理やユーザーのアクセスレベルに関する情報があまりまとまってないように感じました。 いや、情報はあるんですけど "日本語のドキュメントで" 実際に利用する際の手順というか時系列に沿ったチュートリアルみたいなものが無いように思いまして。 ということで、VSTSのユーザー管理の入り口として、ユーザー追加とチームメンバー追加について解説します。ついでにアクセスレベルが「ステークホルダー」のユーザーについて軽く解説します。

ユーザーの追加

VSTSのホーム画面から「Users」の画面に移動します。
「Add」をクリックすると、追加したいユーザーのアドレスとアクセスレベルの設定フォームが表示されます。
アクセスレベルについては以下の3種類が存在します。

  • Basic
    • 基本ライセンスのレベル
    • 5ユーザーまで無料
  • Stakeholder
    • ステークホルダー(利害関係者)ライセンス
    • 利用可能な範囲は一部機能(主にタスク管理の機能)に限定される
    • 開発者以外の関係者をユーザーとして割り当てることができる
  • Visual Studio/MSDN Subscriber
    • VS/MSDNサブスクリプションを保有しているユーザーにはこのレベルを割り当てる
    • このレベルをユーザーに割り当ててもBasicの無料枠は消費されない

ここではStakeHolderレベルを選択します。

f:id:sadynitro:20160206145457p:plain

「Send Invitation」をクリックすると、一覧に追加したユーザーが表示されます。

f:id:sadynitro:20160206145503p:plain

ユーザーの追加が完了すると、追加されたユーザーのメールアカウントに対して以下の様なメールが送られます。 「Join」をクリックするとVSTSのホームが開きます。

f:id:sadynitro:20160206145512p:plain

ホーム画面まで開くことができましたが、このままではまだプロジェクトのページにはアクセスできません。 プロジェクトのページへのアクセス権限は各プロジェクトの設定で追加する必要があります。

f:id:sadynitro:20160206145518p:plain

チームメンバーへのユーザー追加

プロジェクトのホーム画面(ダッシュボード)に「Team Members」のパネルが配置してある場合はそこからチームメンバーの編集画面を開きます。

f:id:sadynitro:20160206145528p:plain

チームメンバーの編集画面でAddをクリックします。

f:id:sadynitro:20160206150148p:plain

メンバーの追加画面で、追加したいユーザーのアカウント名を入力して「Save Changes」をクリックします。

f:id:sadynitro:20160206150154p:plain

対象のユーザーがチームメンバーとして追加されます。StakeHolderレベルのユーザーを追加するとやたらと長いNOTEが表示されますが「このユーザーはステークホルダーライセンスが割り当てられています。ユーザーハブからライセンスの変更ができます。」的なメッセージなのでとりあえず放っておいて問題ありません。

f:id:sadynitro:20160206150159p:plain

因みにダッシュボードのパネルからだけでなく、プロジェクトページの設定からも同じ画面を開くことができます。 右上の歯車アイコンをクリックします。

f:id:sadynitro:20160206150204p:plain

プロジェクトの設定ページが表示されたら、対象のチーム名をクリックします。

f:id:sadynitro:20160206150212p:plain

チームの詳細画面が開くので「Members」タブ内のAddをクリックすると上述と同じ画面が開くのでメンバーを追加します。

f:id:sadynitro:20160206150217p:plain

ステークホルダーユーザーでプロジェクトページにアクセス

ユーザー追加&チームメンバー追加が完了すると対象のユーザーでプロジェクトのページにアクセスできるようになります。 VSTSのホーム画面で「Browse」をクリックして、対象のプロジェクトを選択します。

f:id:sadynitro:20160206161328p:plain

f:id:sadynitro:20160206150222p:plain

プロジェクトページでメニューを確認すると「CODE」が使用できないことがわかります。 ステークホルダーユーザーは使用できる機能は主にタスク管理機能に限定されています。 ここではバックログアイテムを新規に作成してそれにリンクしたタスクを作成できることを確認します。

f:id:sadynitro:20160206150227p:plain

ホーム画面から「WORK」をクリックして、タスク管理の画面を開きます。 バックログアイテムの画面で「New」のタブを開いてTypeに「Product Backlog Item」を選択して、Titleに任意のタイトル(要件の概要的なもの)を入力してAddをクリックするとBacklog Itemが作成されます。

f:id:sadynitro:20160206150231p:plain

追加されたバックログアイテムを開きます。

f:id:sadynitro:20160206150240p:plain

バックログアイテムの詳細を確認できます。右寄りに配置されているメニューから「New Linked Work Item」を選択すると、バックログにリンクしたタスクやバグのアイテムを作成できます。

f:id:sadynitro:20160206150244p:plain

ここではWork Item Typeに「Task」を選択し、任意のタイトルを入力して「OK」をクリックします。

f:id:sadynitro:20160206150315p:plain

作成されたタスクの詳細が開きます。

f:id:sadynitro:20160206150322p:plain

このようにステークホルダーユーザーでもタスク管理機能についてアイテムの閲覧だけでなく作成や編集も可能なので、 開発者以外の関係者に対して要望の集約や課題管理の為に利用することも可能ですね。

ステークホルダーが利用可能な機能の詳細は、以下のページを見たほうがわかりやすいかと思います。Basicライセンスとの対比表になっています。
Visual Studio Team Services Feature Matrix

以上、後半雑な感じになりましたが、VSTSのユーザー管理についてはじめの一歩的な解説でした。