Visual Studio 2017 RC で csx C#スクリプトを読み込む

インテリセンスどころか、色も何もつかないのでどうしてかなーとVS2015ではできていたのにということで調べてみたところ、拡張機能が用意されてました。

https://marketplace.visualstudio.com/items?itemName=IgalTabachnik.AnyScriptCS

上の拡張機能をVS2017RC上から入れて、VS2017RCを再起動したところ無事に動きました。

追記
上記ツールは、MS純正のものではありません。

Azure Functions ローカル Git リポジトリ

Azure Functionsのソースを、ローカルGit管理にしてしまう方法

少し試してポータルで編集している分には、それはそれでいいのですが
慣れた馴染んだエディタで編集したいとき、ローカルマシン上に持っていきたいというときにいいのかな?ということで。

1.ポータルから ローカル Git リポジトリ 設定

ポータルから対象のFunction Appを開き、
Function App の設定>継続的インテグレーションの構成

2016-11-26-4

 

デプロイのブレードが表示されるのでセットアップ

2016-11-26-5

 

ローカル Git リポジトリを選択

2016-11-26-6

ユーザー名パスワードを求められたら、
入力して忘れないようにしておきます。
(2回目以降入力が省略された!

2.ローカルマシンでclone

gitが入っている前提で

[FunctionAppName]には、作成時に入力したFunctionAppの名前を入れます

>git clone https://[FunctionAppName].scm.azurewebsites.net/

2016-11-26-7

忘れないようにしていたユーザー名とパスワードを入力

Cloning into '[FunctionAppName].scm.azurewebsites.net'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
Checking connectivity... done.

 

[FunctionAppName].scm.azurewebsites.net
というディレクトリが作成されていたらできあがり!

vscodeで開いた状態
ちゃんとコミットできる状態になってた

2016-11-26-8

注意点

ローカルGitリポジトリを設定すると、ポータルから編集できなくなります。

その場合、新しい関数を追加したいとき地道にファイルを追加するか。
一度ローカルGitリポジトリを無効にするか。
Azure-Functions-Cliを使う必要がありそうです。

※ローカルGitの切断・セットアップを繰り返しているうちに何かおかしくなった
※Visual Studio拡張機能が待ち遠しい

 

azure-functions-cli installと実行を試してみた

azure-functions-cliとはなんぞや?となるかもしれませんが、
Azure FunctionsがGAされたアナウンスの中でツールについての話がありました。

announcing-general-availability-of-azure-functions

We now have support for creating, running, and debugging Functions locally on Windows, with the beta Azure Functions CLI. For JavaScript Functions on NodeJS, the CLI integrates with Visual Studio Code and sets up debug targets automatically. While the CLI currently only works on Windows, we’re working on support on Mac and Linux.

ということで、NodeJSで動くものですよと。
ひとまずWindowsは動くからと。
私自身NodeJSをほとんど扱ったことがありませんので、何か変なところがあれば教えてください。
というわけで、まずは入れてみました。

1.NodeJSのインストール

nodejs.org からダウンロード。ひとまずv6.9.1 LTSを入れた。
特に何かあるわけでもなく。

2.npmでインストール

npm i -g azure-functions-cli

しばらくまって、完了。

 

3.CLI funcコマンド

まずは、公式に通り「func」「azfun」「azure-function」
のうち短いのでfunc

>func
Azure Functions Cli (1.0.0-beta.5)
Function Runtime Version: 1.0.0.0
Usage: func [context] [context] <action> [-/--options]

Contexts:
azure        For Azure login and working with Function Apps on Azure
function     For local function settings and actions
functionapp  For local function app settings and actions
host         For local Functions host settings and actions
settings     For local settings for your Functions host

Actions:
init    Create a new Function App in the current folder. Initializes git repo. Aliases: init, create
run     Run a function directly

1.0.0-beta.5というバージョン情報、それからこの先に渡すコンテキストの情報が出てきました。

4.作る

最初にフォルダーを作り、カレントディレクトリにして

>func init
Writing .gitignore
Writing host.json
Writing appsettings.json
Initialized empty Git repository in C:/******/Source/samples/.git/

という感じで、gitリポジトリとして初期化され、
host.jsonとappsettings.jsonができてます。

次にfunctionを作ります。

>func function create
     _-----_
    |       |    ╭──────────────────────────╮
    |--(o)--|    │   Welcome to the Azure   │
   `---------´   │   Functions generator!   │
    ( _´U`_ )    ╰──────────────────────────╯
    /___A___\   /
     |  ~  |
   __'.___.'__
 ´   `  |° ´ Y `

? Select an option...
  1) List all templates
  2) List templates by language
  3) List templates by type
  Answer:

という形でyeomanが起動しました。

1)ですべてのテンプレート
2)で開発言語別のテンプレート
3)で種別のテンプレート
のようです。

2を選ぶと

? Select an option... List templates by language
There are 8 languages available
? Select a language...
  1) Batch
  2) C#
  3) F#
  4) JavaScript
  5) Python
  6) Php
  7) PowerShell
  8) Bash
  Answer:

こんな感じに、4) JavaScriptを選びました。

? Select from one of the available templates...
  FaceLocator-JavaScript
  GenericWebHook-JavaScript
  GitHubCommenter-JavaScript
> GitHubWebHook-JavaScript
  HttpGET(CRUD)-JavaScript
  HttpPOST(CRUD)-JavaScript
  HttpTrigger-JavaScript
(Move up and down to reveal more choices)

ひとまず GitHubWebHookを選ぶ

? Enter a name for your function... (MyAzureFunction)

名前を聞かれるので、とりあえず「GitHubWebHookSample」と入れた
そうすると「GitHubWebHookSample」というディレクトリができてました。
中はこんな感じ

function.json
index.js
sample.dat

5.動かす

>func host start

とすると、権限確認のダイアログが出て続けると以下のような状態に

Listening on http://localhost:7071/
Hit CTRL-C to exit...
Reading host configuration file '***\Source\samples\host.json'
Generating 1 job function(s)
Starting Host (HostId=44d3feb53b1b49439bf13fdc57c64832, Version=1.0.0.0, ProcessId=29564, Debug=True)
Found the following functions:
Host.Functions.GitHubWebHookSample

Job host started
Http Function GitHubWebHookSample: http://localhost:7071/api/GitHubWebHookSample
File change of type 'Changed' detected for '***\Source\samples\data\functions\sampledata'
Host configuration has changed. Signaling restart.
Stopping Host
Job host stopped
Reading host configuration file '***\Source\samples\host.json'
Generating 1 job function(s)
Starting Host (HostId=44d3feb53b1b49439bf13fdc57c64832, Version=1.0.0.0, ProcessId=29564, Debug=True)
Found the following functions:
Host.Functions.GitHubWebHookSample

Job host started
Debugger listening on [::]:5858

一度ホストが上がって、ファイルの変更を検出して再び動いているようです。
この後、いろいろいじってみるとそのたびに起動しなおしたりしてました。

vscodeを起動して、デバッグを構成

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Attach to Process",
            "type": "node",
            "request": "attach",
            "port": 5858
        }
    ]
}

デバッグにアタッチで成功。
ブレークポイントを設定して、
「http://localhost:7071/api/GitHubWebHookSample」にアクセスしてみます

すると・・・

2016-11-26-2

 

 

無事に動きましたとさー
ほっ・・・

Azure Functions を使ってみる

Microsoft Azureのサブスクリプションを持ってる人

https://functions.azure.com/signin

 

ポータルから作る

https://portal.azure.com/#create/Microsoft.FunctionApp

Microsoft Azureのサブスクリプションを持っていない人(1時間限定の無償お試し)

https://functions.azure.com/try

※Microsoftアカウント、Google、 Facebook いずれかのアカウントが必要

 

 

2016 MVP Global Summit に参加して その2

その前(2016 MVP Global Summit に参加して)

一日と半分遅れて到着から、歓迎会のような(Welcome Reception)ところへ・・・
刺激的です。とても。。。
ただ、飛行機の時間が長かったのもあって、早めに撤収して、
ホテルについて、他国のMVPに話しかけてもらえ交流。
熱い人だった・・・。あの情熱は凄い。
眠りについて・・・・

day 3

時差ぼけのせいか朝3時とかに目が覚める。
夜中に喫煙ということで、お外に出る。曇りがちなせいかあまり寒くない。
ただ、やっと合流できたんだということと、これからどんなことが待ってるんだろうという期待にあふれていた。前日の中で、日本国内の方とも交流させてもらう機会をいただいて、ありがたい限り。

いろいろしているうちに・・・朝ごはん。
基本的にセルフサービス。主食をシリアルで決めた。
やはり時間の感覚があっていないので、胃腸が目覚めていない感があった。(徹夜してるような感じ)

~~セッション~~

すんげー!・・・それ以上言えることなさそう。

夜、国でローカルな交流の場へ。
ドリンクチケットを2枚もらったはずが、なぜか2枚とられてしまったため
2杯目飲めず、そんな話をしたら、プレゼントしてくれるという心優しい方がいたり。

ホテルに戻り、就寝。。。

day 4

やっぱり時差ぼけで4時に目が覚める。
ツアー参加のため、泣いても笑っても最終日。
もっと、ここに居たいと思い始めたのもこの時からだった。
私のカテゴリ(Microsoft Azure)は5日間あるようで(公式サイトより)
翌日移動のため、二日間はもともと出れない予定でしたが、行のトラブルで1日は消えていたというのが悲しい・・・。

~~~セッション~~~

振り返ってみれば、トラブルがあったけれども、
バスに一人で乗って、無事に目的地に到達できたりと
来年もし行くならば・・・に選択肢を与えてもらえたと感じています。
ただ、私が来年どうなっているかはわからないので、
計画ではなく気持ちとして。

day 5

ごはんを食べて帰るだけです。
飛行機は無事に飛びました!
(同じ飛行機に乗ることを嫌がられたのは秘密だよ!)

非常に短い期間でしたが、ものすごく充実していました。
優れた人たちから、多くの刺激をもらいました。
また、同時に人の優しさを感じました。
日常においてこれは、絶対に味わえなかったでしょう・・・。

そして、自分に足りてないもの、至らないものというのも感じました。

これを楽しいと感じた私は、技術が好きでいる人に
何かしたいなぁという気持ちが強くなりました。

さて・・・何を言っているかわからなくなりそうなので、この辺で。

Thanks Microsoft.
Thanks All MVP.
Thanks Japanese MVP.
Thanks Japanese Microsoft Azure MVP.

Thanks All.
See you again !