銀の光と碧い空

クラウドなインフラとC#なアプリ開発の狭間にいるエンジニアの日々

Microsoft Quantum Development Kit 0.9.1909がリリースされていました

9/30にQuantum Development Kit 0.9.1909がリリースされていました。珍しくリリースブログも公開されています。

cloudblogs.microsoft.com

docs.microsoft.com

今回パッチバージョン扱いの更新ということもあり、Q#の機能そのものではなく、開発ツールまわりの更新となっています。しかし、コーディングしている人にとっては待望のコード補完機能の追加です。

今までQ#のコーディングするときの補完が、どうしてもC#やそのほかのVisual Studio, Visual Studio Codeでサポートされている言語とくらべると非力でした。というより、文法などのコンテキストによる補完ではなく、テキストファイルを編集するときのような、単純にファイル内に存在している単語を補完の候補にだす、という程度でした。

今回の更新により、Visual Studio 2019 (version 16.3以降)とVisual Studio Codeではコンテキストを理解した補完がでるようになります。

f:id:tanaka733:20191005225355p:plain

Intellisenseと呼ばれるC#の補完などに比べるとまだまだですが、まずはプログラミング言語っぽい補完ができるようになりました。

また、Quantum Katasに2つのKataが追加されています。1つ目がRipple Carry Adderという名前で量子加算器に関するものです。

QuantumKatas/RippleCarryAdder at master · microsoft/QuantumKatas · GitHub

2つ目はBB84プロトコルによる量子鍵配送のKataです。

QuantumKatas/KeyDistribution_BB84 at master · microsoft/QuantumKatas · GitHub

ぜひ試してみてください。

connpassで先着順と抽選の両方の参加枠を用意したい

conpassでイベントを開催する際、まず何人かは先着順で参加可能にして、残りの枠を抽選にしたいということがあります。今まではこのように別々の枠に分けて募集していました。

f:id:tanaka733:20190928091537p:plain

なのですが、いくつかやりづらいなと感じている点がありました。

  • 参加者にとって抽選日直前の場合、先着順枠に入ってキャンセル待ちするか抽選枠に入って抽選に期待するか悩ましい
  • 参加者にとって抽選日以降、どちらの枠もあふれているとどちらの枠に入ってキャンセル待ちするか悩ましい
  • 運営者にとって、枠を増やせることになった場合、どちらの枠にいくつ足すか決めるのが悩ましい

いずれも「悩ましい」なので、これを悩ましく思わずえいやで決めればいいのでは?と思える人であればこのままでもいいと思います。ただ、私はこういうの時間をかけて悩んでしまう性格なので、悩まずにすむ方法はないか考えていました。

そこで思いついたのが、抽選枠は指名もできるということで、先着と抽選を同じ枠にして、運営側で先着N人を指名して当選させてしまう方法です。この方法が期待通り動作するか確認すべく、このようなイベントを作成して、Twitterで参加登録の協力をお願いしました。

connpass.com

f:id:tanaka733:20190928093407p:plain

結果としては意図通り動きました。このイベントでは先着5名が必ず当選、残り5名の枠を6番目以降に登録した人から抽選しています。5名が参加登録してくれた時点で、その先着5名を運営の機能で当選にします。登録順にIDがついているので1~5番の人を当選させました。また登録日時も分単位で確認できます。あとは放置して、connpassにより抽選を行います。

抽選により、繰り上がり順までついた状態になります。ですので、抽選日までに申し込んだ方は抽選によって決まった繰り上がり順で待つことになり、それ以降に登録した人は(抽選日前に申し込んだ人のあとで)登録順で待機列に入ります。

注意事項としては、抽選日前に必ず先着N名を当選させるように指名しないと、抽選日には先着の人も含めて抽選になってしまうということです。

参加者の決定方法は運営の人たちが決めればよいので、別にこの方法がいいよとおすすめするわけではないのですが、私としては比較的すっきりした形が実現できることがわかりました。テスト用のイベントに登録していただいた皆さんにはこの場でお礼させていただきます。ありがとうございました。

Microsoft Quantum Development Kit 0.9がリリースされていました

ブログを更新していなかった間に Microsoft Quantum Development Kit が 0.9までリリースされていました。

docs.microsoft.com

0.6については記事を書いたので、0.7から0.9までのリリースノートを簡単に日本語にしてみました。

tech.tanaka733.net

0.7 (2019/05/31 リリース)

  • Q#言語要素の追加
  • 化学ライブライの更新
  • 新しい数値ライブラリの追加

0.8 (2019/07/12 リリース)

  • 配列の部分配列を取得する場合の書き方がいくつか増えました。詳細はこちら
  • IQ# (Q#をJupyte Notebookで動かすための仕組み)を動かすDockerイメージをMicrosoft Container Registryに公開していますが、そのイメージのDockerfileの追加。
  • Trace Simulatorに関する破壊的変更。詳細はAPI Browserにて。

0.9 (2019/08/29 リリース)

なお、0.8と0.9の間で、Q#のコンパイラーやRuntimeが完全なOSSとして公開されています。

github.com

github.com

  • conjugation statementsの新しい記述方法が追加されました。
  • コンパイラーに「replace with」, 「add documentation」といった新しいコードアクションが追加されました
  • 「install template」と「new project」コマンドがVisual Studio Code拡張に追加されました
  • Jupyter Notebooksで動く、Quantum Katasのサンプルがさらに追加されました
  • Visual Studio 拡張はVisual Studio 2019を必須とするようになりました

新しく追加された文法が増えてきたので、最初のころからやっている場合は知らない要素がかなり増えてきました。改めて解説記事を書いていきたいと思います。