Azure.CognitiveServicesを使った顔検出アプリをweb上でも公開したいということでNode.jsでやってみようと思います。もちろん他の言語でもやりますよ。まずC#でつくる。Webでも使えるように他の言語(JavaScript/TypeScriptが主ですが)でもやってみたいと考えているところです。

今回は顔検出アプリをつくる準備編

ということで今回はNode.jsでやってみます。前回はしょぼいサイトをNode.jsで作りましたが、今回は顔検出アプリをつくる前に基本的なことをやってみます。実はNode.jsは前回の記事がはじめてです。生温かく見守ってください。

Expressをつかってみる

ファイルをアップロードしたい。これをやる方法がなかなか見つからなかったのでExpressを使います。ExpressはそのNode.jsでの開発をスピードアップするためのフレームワークです。

動作確認はこちらからお願いします。

ではさっそくインストールしてみましょう。実際にweb上に公開する前にローカル環境でうまく動くことを確認してからにしましょう。

まずは以下を実行して必要なものをインストールします。

必要なファイルの準備

それからindex.ejsを用意します。これは前回と同じなのですが、念のため示します。

あとstyle.cssも用意します。

app.jsの作成

それではapp.jsを作成します。

まず必要なものをrequireします。

つぎにexpressを変数expressに代入することで初期化しています。それから必要なindex.ejsとstyle.cssを読み出します。

ポート番号は65002とします。

レンダリングのときに必要なオブジェクトを初期化します。site_titleとsidebar_linkは全部のページで同じなのでここで値をセットしておきます。getSidebarLinkString関数はサイドバーに他のページへのリンクを表示させるために必要な文字列を返します。

またこれはCSSファイルを表示させるための関数です。

そしてmain関数を実行します。main関数は以下のとおりです。/、/index.html、/form-testなどのページにアクセスがあったらコンテンツを表示させます。

GetResponseIndex関数はトップページにアクセスされたときにコンテンツを表示させます。エックスサーバーでNode.jsを動かしてみるとやっていることは同じです。で囲むと改行をそのまま書けるし、${~} の中には、変数や計算式を入れることができるので便利です。

現在時刻を調べて表示するとともに、時刻によって「おはようございます」「こんにちは」「こんばんは」と挨拶を変えます。また時刻によってその日、または翌日の運勢を占います。FortuneTelling関数はエックスサーバーでNode.jsを動かしてみるを参照してください。

フォームによる送信

次にフォームによる送信の実験をおこなうことができるページを作成しました。

/form-testにアクセスするとフォームが表示され、テキストボックスになにかを入力してボタンをおすと入力結果が表示されます。GetResponseFormTest関数は以下のようになっています。テキストボックスとファイルをアップロードするためのコントロールが表示されます。

「送信する」がクリックされるとform-postへPostされ、アップロードがクリックされるとfile-uploadへPostされます。

form-postへPostされたときの処理を示します。Postされたときはページのタイトルは「フォーム送信の結果」となり、テキストボックスに入力された文字列が表示されます。またPostしないで/form-postへ直接アクセスしたときはそのページは存在しないと表示されます。

ファイルをアップロードする

次にfile-uploadへPostされたときの処理を示します。アップロードされたファイルが画像ファイルの場合、dataUrlが生成されて、これによって画像が表示されます。画像ではないものをアップロードした場合は例外が発生し、「例外が発生しました」と表示されます。ます。またdataUrlが生成されたらアップロードされたファイルはサーバーから削除されます。

ファイルパスからdataUrlを取得する

ファイルパスからdataUrlを取得する関数を示します。image.getBase64が実行されたときにその値を取得したいのですが、非同期処理にしないとうまくいきません。

存在しないページにアクセスしたときの処理

存在しないページにアクセスした場合はGetResponse404関数が呼び出され、存在しないページにアクセスした旨とそのurlが表示されます。

公開する

あとは適当なディレクトリにアップロードして、公開したいUrlに相当するディレクトリに.htaccessを設置します。

.htaccess

そしてSSH接続して以下のコマンドを入力します。

次回は顔認識をする機能を追加します。