銀の光と碧い空

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

Microsoft Quantum Development Kit 0.10.1910.3107がリリースされました

11/1にMicrosoft Quantum Development Kit 0.10.1910.3107がリリースされました。

docs.microsoft.com

今回の更新ではあまり大きい変更点はないようです。

などとなっています。

さて、11/12にそんなQ#の文法にフォーカスした「量子プログラミング言語Q#で量子アルゴリズムを学ぶ」の第3回ハンズオンを予定しています。一般参加枠はすでに満席ですが、メンター枠、受付お手伝い枠が空いておりますので、ぜひご検討をお願いします。

openql.connpass.com

Windowsコンテナをビルドしようと思って気づいたこと

ASP.NET MVC (Coreではなくて昔からある方)が動くコンテナイメージを作って動かそうと思って気づいたことのメモです。

準備とプロジェクト作成

まずはこのページから始める。

docs.microsoft.com

自分のWindowsマシン上でビルド、実行したい場合はDocker for WindowsでWindows Containerに切り替えておく。 プロジェクトは新規に作るのであれば、Visual StudioでASP.NET MVCを選択して、Windows Containerサポートを追加するのがよい。 Dockerfileがプロジェクトに追加され、プロジェクトのビルドでイメージ作成、デバッグ実行でコンテナを実行できる。

RUNコマンドの違い

DockerfileにRUNコマンドによる操作を追加する場合、Windowsコンテナの場合は挙動が少し違うので注意が必要。

docs.microsoft.com

execフォームとshellフォームの2種類がある。execフォームはこんな感じに記載して、記述してコマンド(実行ファイル)を直接実行する。

RUN ["powershell", "Invoke-WebRequest", "https://download.example.com/path/to/installer.msi", "-OutFile", "C://instakker.msi"]

shellフォームはシェル経由の実行で、例えば次のようにMSIを実行して完了まで待機できたりする。

RUN Start-Process -Wait -FilePath msiexec -ArgumentList /i, "C:\installer.msi", /qn, 

エスケープの扱いに違いがあったりするのも注意。

実行したコンテナへのログイン

Docker for Windowsで実行したコンテナにログインしたい場合は/bin/shの代わりにpowershellを使う。

docker exec -it <container_id> powershell

適当なファイルを見たい場合 (Linuxコンテナで docker exec <container_id> cat /path/to/log.txtに相当)は、とりあえずこれで実行できた。パスに空白を含む場合は、空白の前に`を入れてエスケープ。

docker exec  <container_id> powershell  Get-Content 'C:\Program` Files\path\to\log.txt'

また気づいたら追加します。

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

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