自己紹介

まっぴぃ氏:「Visual Studio Code拡張機能で始めるCosmos DB」ということでLTします。よろしくお願いします。

まず始めに、今日お話しする内容は今日4月7日時点の情報になっています。私が確認できている内容に基づいてはいますが、資料に誤植とか誤りとかがあるかもしれないので、そのときはご了承ください。これはいつものやつなんですけど、資料に記載されている内容は私が所属する組織を代表するものではないので、そちらの点もご了承ください。

自己紹介です。ハンドルネームまっぴぃでやっています。今日はちょっと会社名は出せませんが、日本人の99パーセントが知っていると言われている青いRの会社の中の人で、基本的に情シスをやっております。

コミュニティはJSSUGという、SQL ServerのユーザーコミュニティとかでSQL ServerとかAzureとか、あとは最近だとSynapse Analyticsとかいろいろ出ているところあたりのコミュニティの中の人をやっていたりします。

私はPerfumeが大好きで、今日のこの後ろのバーチャル背景もPerfumeなんですけど、TwitterでもPerfumeのツイートをたまにしています。ふだんはMicrosoftの製品で、基本的にSQL ServerとかSharePointとか、最近はAzureのWeb Appsとかいろいろ触っていまして、そちらをメインにお仕事しています。

Twitter、よかったらフォローしてください。

Cosmos DBの拡張機能を話そうと思ったのは、無償枠が出たから

今日のアジェンダです。まず「はじめに」ついてと、実際に今日の本題であるAzure Cosmos DBの拡張機能についてと、あとは私が最近実際に使ってみて感じたことがあるのでそちらの紹介ができればなと思っています。

はじめに、拡張機能の話を始める前に、なぜ私がこのCosmos DBの拡張機能の話をしようかと思ったかなんですが、その理由はですね……しまったな。このスライドの猫かわいいですよね、すみません。

無償枠が新しく出たからです。先月、米国時間で2020年の3月6日に、こちらでアップデートがありましてAzure Cosmos DBの無償枠というのが新しく出ました。

400RUと書いてあるのがリクエストユニットと言うんですけど、これについては後ほど紹介します。

あとは容量は5ギガバイトまでの利用が毎月無料になりました。これまでは時間制限で無料のCosmos DBの環境だったり、エミュレータを使っていたりして、実際にAzureに環境を作るとけっこうお金が掛かってったんですけど、この無償枠が出たおかげでかなりCosmos DBの開発がやりやすくなりました。

Cosmos DBの環境構築とかについては、この間ちょうどQiitaに記事を書いたのでこちらの記事を見ていただければなと思います。ちょっと目次ページを作っていないので恐縮なんですけど、環境構築とか実際にNode.jsのCRUD Webアプリケーションを作る記事とか、あとは実際のNode.jsのクライアントの中身をちょっと見たりとか、記事を書いているので興味がある方は見てみてください。

機能拡張の紹介

Cosmos DBについてですが、Microsoftが提供するNoSQL、DocumentDBと呼ばれているものでして、グローバルに展開が可能になっています。レプリケートが可能になっています。

先ほどのリクエストユニットなんですけど、1秒間あたりの要求ユニットが定義されていて、こちらのRUとストレージ容量の2つの枠で課金がされます。なので他の、例えばAzureのリソースみたいに稼働している間はずっとコンピューティング料金が掛かるものとは、ちょっと課金の体系が違うものになっています

Cosmos DBのAPIについても、Coreと呼ばれるSQLベースでアクセスできるDocumentDBから、CassandraとかAzure TableとかGremlinというグラフデータベースなどの、いろいろAPIが提供されています。

Cosmos DBの拡張機能では、実際にいろいろできます。簡単にデータベースを作成したり、コレクションと呼ばれるテーブルに近いものを作成したり、またデータのCRUDをやったりとか、その他いろいろできます。

これはデータベースとかコレクションを作成しているところなんですけど、Azureの拡張機能を入れるとCosmos DBの欄ができて、そこを右クリックするとこんなかたちで作る画面が出てきます。

あとはDocumentDBの場合は、ドキュメントの新規作成とか参照とか更新とか削除というのもGUIでできるようになっています。

MongoDBについてはクエリが打てます。これはGIF画像で載せていますが、MongoDBを使ったことがある人であれば何のことはないんですけど、こんなかたちでIntelligenceも出てきてexecuteすると右側にデータが出てきます。

実際に拡張機能のGitHubのリポジトリに行くと同じGIF動画が上がっているので、そこの動画から取ってきています。

あとはグラフデータベースのGremlinですが、こちらも普通に使うことができます。VS Codeがテキストエディタと思っていた私としては意外すぎるけど、こんな感じでグラフデータベースの画像も出てきます。

こんなふうにできるというのと、こちらはAzure Cosmos DB Emulatorという先ほどチラッと話したんですけど、エミュレータにもつなげます。エミュレータはWindowsやWindowsコンテナ上で動くので、使うにはWindowsがいるんですけど、VS Codeの拡張機能からエミュレータに接続して先ほどと同じような使い方もできます。

Cosmos DB の便利なところ

ここまでが拡張機能の紹介になります。実際に私はこれでQiitaの記事を書いたり、いろいろ開発をやっているんですけど、その感じたところ。便利なところもあれば改善してほしいなと思うところもあったので、そちらを紹介したいと思います。

便利なところの1個目は、開発のハブになるのは本当にいいところだなと思っています。最近オンラインとかでテレビ会議がよくあると思いますが、私はTeamsを使っています。Teamsの中でいろいろサイトを見たりいろいろなことができるよというので、けっこうMicrosoftさんはTeamsをハブとしていろいろやろうとしているようですけど、VS Codeも同じ感じで開発のハブにできるなと感じています。

先ほどお見せした通り、拡張機能を使えばCosmos DBにつないでDBの中でどんな値があるかを見たりできますし、右側でコードを書いたりも普通にできるのがいいなと思っています。

2点目は、JSONインポートの機能が提供されていて、JSONを予め作っておいてそれをDBにチョンッと突っ込むというやり方ができるんですね。これがすぐに一括でインポートできるので、本当にNoSQL的に僕は楽だなと思っている機能です。

不便だなと思ったらプルリクを上げられる

ただちょっと残念なところがあって、コアと呼ばれるSQLベースでDocumentDBを触れるのがAzure Cosmos DBのCoreなんですけど、ちょっとクエリは打てないですね。実際に今出しているのはAzureのData Explorerで、ここだとクエリは打てるんですけど、まだVS Code上だとクエリが打てないので、少しつらいなというところがあったりします。

あとDBは、拡張機能上1,000リクエストユニットからしか作れないという制限があります。無償枠が先ほどお話した通り、400リクエストユニットからという設定が必要なので、1,000だと拡張機能で作ると無償の対象外になってしまうんですね。

GitHubのissuesにも「400から作ってよ」みたいなissueが上がっているんですけど、これが受け入れられてないようで、ちょっと改善してほしいなと思っていたので、すごい雑だったんですけど今週プルリクを1個上げてみました。かなり雑なので、たぶん却下されるような気がするんですけど、こんな感じで拡張機能がちょっと不便だなと思ったら、普通にプルリクを上げれるのもいいところかなと思っています。

まとめです。Cosmos DBの関連の開発がVS Codeでかなり便利になりました。拡張機能はすごくいいですねということです。SQLのCoreだったりMongoDB、Gremlinとか拡張機能が1個で全然対応していて、不便な点があればPRできるというのがAzure Cosmos DBの拡張機能のいいところかなと思います。

以上です。ありがとうございました。