きよくらの備忘録

「三日坊主と呼ばせない!日記」改め。主にソフトウェア開発関連の話題。

SQL Server LocalDBのインスタンスを任意の名前で作成する

特定の名前&バージョンのSQL Server LocalDBのインスタンスを作成する必要があったので、メモ。

 

コマンド ラインで SqlLocalDB.exe の create オプションで作成可能でした*1

SqlLocalDB create "<インスタンス名>" バージョン

 

例えば、 バージョン12.0*2インスタンスを SomeInstanceV12 という名前で 作りたい場合は、以下のよにしてやればOKです。

> SqlLocalDB create "SomeInstanceV12" 12.0

 

実行結果はこんな感じです。

f:id:kiyokura:20160608191438p:plain

f:id:kiyokura:20160608191445p:plain

参考(MSDN): コマンド ライン管理ツール: SqlLocalDB.exe

*1:作成したいバージョンのSQL Server Express LocalDBがインストールされていることが前提です

*2:12.0はSQL Server 2014の内部バージョン

SSDTの「スナップショット プロジェクト」機能は割と使える気がしました

私はSSDT(SQL Server Data Tools)を普段から使っているのですが、多機能なこともあり普段使ってない機能はまったく触れずに過ごしています。そのため、”実はよく知らない機能”がまだまだあります。

先日不意に、ソリューションエクスプローラーのコンテキストメニューの上のほうにいつも表示されている『スナップショット プロジェクト』ってなんやねん、というのが気になってしまったので、どんな機能か少し試してみました。

f:id:kiyokura:20160606232232p:plain

 

機能の説明

「スナップショット プロジェクト」機能が何をするかについては、以下がすべてのようです。

  • 現在のデータベースプロジェクトのオブジェクトの定義情報のスナップショットを取得する
  • 取得したスナップショットはdacpacファイルで保存される

……そのまんまです。

実際にやってみると、ソリューションエクスプローラ内にSnapshotフォルダが作成され、その中にタイムスタンプ付きのファイル名でdacpacファイルが作成されました。

f:id:kiyokura:20160606232440p:plain

 

ちなみにdacpacファイルですが、ざっくいえばデータベースのオブジェクト定義情報をXML形式で記録してzipで固めたファイルです。 詳しくは以下のMSDNドキュメントを見てみてください:データ層アプリケーション

 

何が嬉しいの?

この機能、前述のとおりプロジェクトのソースコードの現時点のスナップショットファイルが作成されるだけ、といえばそれだけです。もしソースコードのバージョン管理を何もやっていないのであれば、これは有効なソリューションかもしれません。しかしSSDTを利用して開発しているのであれば、通常は何らかのVCS*1を利用しているケースが多いはずです。であるなら、この機能はあまりうまみが無いように思いました。

 

ですが、少し触ってみると、利点も見えてきました。 個人的に感じた一番の利点は、「スキーマ比較機能で簡単に比較・差分更新が出来る」という点です。

SSDTのスキーマ比較機能は、プロジェクトやデータベースインスタンスなどのスキーマ同士を比較し、差分の検出や差分を埋めるための更新(スクリプトの生成と実行)を行ってくれる非常に便利な機能です。このスキーマ比較では、比較のソースとしてプロジェクトやデータベースインスタンスのほかに、『データ層アプリケーションファイル』、すなわちdacpacファイルががそのまま利用できます。

f:id:kiyokura:20160606233357p:plain

この機能とスナップショットを組み合わせると、任意のタイミングのスナップショットと現状のスキーマを比較して、「特定のオブジェクトだけ変更を元に戻す」というような操作も簡単にできます。

もちろんVSCを利用してバージョン管理されていれば、変更履歴から戻すことは可能です。しかし、(コミットの粒度やツールなどにも依存するとは思いますが)一度コミットした変更を履歴をさかのぼって戻すのはそれなりに煩雑だったりしますし、コミット全体ではなく『特定のオブジェクトの変更のみを戻したい』という場合にはさらに面倒になるかもしれません。

 

利用シーン(?)

全体的な作業の進め方によっても利用シーンは変わってくるとは思いますが、例えば以下のような使い方が出来るように思います(VCSとしてgitを想定しています)。

  1. 作業ブランチを作成してチェックアウト
  2. とりあえずスナップショットを作成
  3. 試行錯誤しながら作業(必要があればスナップショットから戻したりし再度スナップショットをとったりしつつ)
  4. ある程度作業がまとまったらコミット、マージ

なお、あらかじめ.gitignoreを利用するなどして、スナップショットファイルがリポジトリに含まれないようにしておくと楽な気がします*2

 

注意点

一つ注意しておかなければならないと思ったのは、『DBプロジェクトがエラーのない状態である必要がある』点です。dacpacが作成されるときに内部でビルドが行われるのですが、この際にエラーがあるとdacpacの生成に失敗します。 ですので、『いじっている最中でまだコンパイルがうまく通らない』という状態のDBオブジェクトがある場合はスナップショットが作成できません。

 

まとめ

SSDTの「スナップショット プロジェクト」機能はシンプルな機能ですが、作業の進め方によっては十分に便利な機能です。VCSによるバージョン管理とも決して排他ではなく、組み合わせることでより便利で柔軟な開発作業を行う道具として利用できる可能性がある機能だと思いました。

*1:version control system, gitとかtfsとかsvnとか……

*2:スナップショットを追加するとsqlprojファイルにも変更がかかったように見えますが、dacpacのエントリが追加されているわけではないようです

HoloLens おさわり会を岡山で開催しました

少し間が空いてしまいましたが、5/21(土)に HoloLens おさわり会 with OITECを開催しました*1。 その名の通り、MicrosoftのMR(Mixed Reality)デバイス『HoloLens』を体験できる会です。

f:id:kiyokura:20160521131346j:plain

HoloLensがどんなものかは 以下のオフィシャルサイト他、検索してもらえれば記事や動画がいろいろ出てくると思います。

www.microsoft.com

この会を開催するにあたって当然HoloLensの現物が必要になるわけですが、これは合同会社 silkyfeelの泉本優輝さんが所有されているものを岡山まで持ってきてもらうことで実現しました!

またKLab株式会社 岡山事業所様のご厚意により会場を準備いただきました。ありがとうございました。

実際どうよ

多少は予備知識があったのですが、期待以上でした。 ※全部個人の感想です。

  • 位置合わせ?ピシッと装着?に最初は苦労した
    • 特に上下の範囲が狭いので上下が見切れないように装着する感じ
    • 視野角が狭いと言われるけど慣れると気にならなく
  • 「ポインタ(≒マウスカーソル)」を顔の向きで動かす
    • 目を固定して首や体の向き・移動で見るものを変える、という動作が必要
    • 顔の正面にポインタが固定されているので、目だけ動かしてもポインタが動かない
    • 割とすぐ慣れた
    • もし将来的に視線トラッキングでポインタが動くようになれば、より自然に操作できそうな気がす
  • 慣れると自然。音も自然。スマホ3DSのARの「なんか浮いてる偽物感」が無い
    • ふっと足元を見るとそこにある、みたいな
  • 置いたオブジェクトの上下左右に回り込める
    • 空間に固定したウィンドウを裏から見れる
    • 床に置いたオブジェクトを真上から見たり
    • オブジェクトと自分の間を人が横切ったらオブジェクトも消えるよ
    • 空間にウィンドウが煩雑に並ぶさまは「機動戦艦ナデシコのオモイカネ」を彷彿とさせて良い(古い
  • 音も空間に追従する
    • 音が鳴ってるオブジェクトがあると、その方向から音が聞こえる
      • 右にあれば右から、後ろにあれば後ろから音が鳴ってるように聞こえる
      • 近づけば当然音が近くなる
  • サンプルに壁ぶち破って敵が出てくるシューティングゲームがあって、実際にすごかった
  • 探偵もの?みたいなサンプルゲームがあって、「ああ、HoloLensでアドベンチャーゲームやるとこうなるのね、とうかスゲー」という感想
  • これでホラーゲーム(零シリーズとか)やると死ねそう
  • VRとは違うベクトルのもの、というのがより実感できた

OITECのスタッフや会場のお世話をしていただいたKLabさんのスタッフの方も含めて20人以上いましたが、時間も4時間強と結構な時間があったため、思い思いに堪能できたんじゃないかと思います。

これが製品として売られるころにはどんなモノが出てくるんだろう、とか、こんなこと実現できそう、とか、こんなことやってみたい、とかいろいろと妄想が膨らむ素敵アイテムでした。

今後の HoloLens おさわり会とか

実際体験してみて、やはりこの手のデバイスは実際に体感しないことには本当のところが解らない、というのにつきました。 今後も名古屋、九州*2、松山等などで開催される予定です。

そのほかにも今後勉強会なども企画されていくらしいので、興味がある方はHoloMagiciansをチェックしてみてください。

*1:自分が体調崩して死んでたりり子供が体調崩してバタバタしてたりでてんやわんやだったというか実は当日も子供が高熱出して出たりで色々とアレ(

*2:倒れたり忙殺されてる間にこのあたりは終わってた

VS 2015 の SSDTの接続先設定ダイアログが使いやすくなっていて大変うれしい件

VS2015 の SQL Server Data Tools(SSDT)が細かなところで使い勝手が良くなっていて大変うれしかったので。

SSDTではそのツールの性質上、接続さきのDBを選択する場面が多々出てきます。VS2013までは、Visual StudioSQL Server を使っていればどこまで見たことがある例の接続ダイアログでした。

VS2015でどうなったかというと……。

 

サーバを選択するダイアログが使いやすくなった

以前はドロップダウンからサーバを選択する感じで、LAN上のサーバがリストアップされるだけ、あとは手打ち入力する必要がありました。

しかし今回からはツリービューで選択でき、ネットワークだけではなく自分のPCのローカル(localdbも含む)やAzure上のSQL Databaseも選択できるようになりました。

f:id:kiyokura:20160421124222p:plain

特に私はlocaldbを利用する場合の書き方をよく忘れ、SQL Server オブジェクトエクスプローラーで探してプロパティーからコピペすることが多かったので手間が省けて大変助かります。素敵。

 

履歴でピン止めできるようになった

以前は、過去に利用したことのある接続履歴数個がドロップダウンに表示されていました。数少ない場合ばいいのですが、多くのDBインスタンスにいろいろ接続しているときは、利用したい接続情報がすぐに履歴から追い出されてしまって面倒な思いをしていました。

今回から、よく使う接続はお気に入りとしてピン止めできるようになりました。超素敵。

f:id:kiyokura:20160421124221p:plain

 

 

これからもSSDTには進化を続けていってもらいたいですね!

Visual Studio Code のmarkdownプレビューのスタイルを簡易カスタマイズ

Visual Studio Codeの markdownプレビュー機能をなるべくお手軽にカスタマイズする方法をメモ。 Ver 1.0.0, Windows版で確認した内容になります。

「とりあえず日本語フォントだけでもどうにかしたい」場合には有効かも。

Visual Studio CodeのMarkdownプレビュー機能

Visual Studio CodeはMarkdownをプレビュー表示する機能があります。並べて表示することも可能でその際にはリアルタムでプレビューも表示されて結構便利です。

スタイルはCSSで定義できる

プレビュー表示時のスタイルはCSSで定義されていて、カスタマイズも可能です。 カスタマイズはpreferece で "markdown.styles" に独自のCSS設定することで実現します。これについては以下のオフィシャルドキュメント参照。

code.visualstudio.com

部分的には上書きできないっぽい

ただしこのカスタマイズ、部分的に上書きするという方法が適用できないようです。

body{
  font-family:Meiryo;
}

だけのファイルを"markdown.styles"で指定しても、font-family以外はリセットされてChromiumの素のスタイル?で表示されます。

とはいえ、全体をいい感じになるようにスタイルを一から書くのも面倒ですよね…。

デフォルトのCSSをコピーして一部書き換える

ということで、ここはズルしてしまいます。 デフォルトのスタイルを定義しているCSSは、インストール先に存在します。例えばここ。

C:\Program Files (x86)\Microsoft VS Code\resources\app\out\vs\languages\markdown\common\markdown.css

これを適当な場所にコピって来ましょう。例えば自分のユーザーフォルダ(C:\Users\<ユーザー名>)とかでもいいでしょう。

そしてコピーしたファイルを開いて、一部書き換えます。

今回はとりあえず、中華フォントになってしまう点だけに対処してみます。具体的には、bodyとcode要素に対するフォント指定だけ改変します。

※改変するにあたって、cssをアンミニファイしておくと作業が楽かと思います

まずはbodyのフォントにMeiryoを指定

先頭にMeiryoを追加してみました。

body {
  font-family: Meiryo, Segoe WPC,Segoe UI,SFUIText-Light,HelveticaNeue-Light,sans-serif;
  font-size: 14px;
  padding-left: 12px;
  line-height: 22px;
}

codeに幅固定フォントを指定

codeここはコードを表示する際のブロックなので、monospace系のフォントが良いでしょう。私はコーディングにMigu 1Mを使っているのでこれを指定します。 ここで注意なのは、フォントによってはフォント名をシングルクォートで括ってやる必要があることです。

code {
  font-family: 'Migu 1M', Menlo,Monaco,Consolas,Droid Sans Mono,Courier New,monospace;
  font-size: 14px;
  line-height: 19px;
}

markdown.stylesの設定

CSSの書き換えが終わったら、PreferenceからUser Settingsで以下のように指定してあげましょう。

// Place your settings in this file to overwrite the default settings
{
    "markdown.styles": [
    "C:\\Users\\<ユーザー名>\\markdown.css"
    ]
}

これで、「VSCodeの元のスタイル+一部だけ書き換えたスタイル」でmarkdownのプレビューが行えます。 他にも改変したいところがあればちょこちょこ手を入れていけば、自分好みのCSSを作り上げれると思います。