現在ネット上では数え切れないほどのパッチがシェアされており、それらのプレーヤーとしても活用が可能です。ここでは最先端のプロフェッショナルが作成したクールなパッチを紹介。8には、さまざまな新機能が搭載されました。Maxのワークショップが満員になるほどの人気ぶりを見せていました。Maxが内包しているNode.jsについてよく知らず、使い方が分からないという声も多く聞きます。Maxについての簡単な説明と、それを使って作った機械学習パッチを紹介しましょう。Maxとは、今最も人気のあるプログラミング言語の一つであるNode.jsをMax上で動かせるようにしたランタイム環境です。Maxにも以前から[js]オブジェクトがありますが、これは新しい[node.script]オブジェクトとは役割もできることも全く違いますので注意してください。JavaScriptはWebブラウザー上でのみ動作する言語でした。これをサーバー側で動作するようにし、さらにコンピューターのファイル・システムのI/O処理を加えることで約10年前に誕生したのがNode.jsです。Node.jsの大きなアドバンテージの一つが、“世の中に存在するさまざまなAPIを簡単に使用できる”ということ。APIとは、いろいろなサービス・プロバイダーが開発者向けにそのサービスの部分的な使用を可能にするインターフェースです。SoundCloudやSpotifyのAPIを使えば音楽の検索や再生ができますし、GOOGLEやMICROSOFTのAPIを使えば音声認識や画像認識が簡単に行えます。Node.jsにはnpmという強力なパッケージ管理システムが付いています。他人からもらったMaxパッチを動かそうとしたときに、そのパッチが依存しているエクスターナル・オブジェクトが自分のコンピューターに入っていなくて動かせない、というような状況に私は以前から大きなフラストレーションを感じていました。Node.jsでは、基本的にこういうことは起こりません。install”というコマンド一つで、プロジェクトに必要なパッケージを確実にそれぞれのユーザー環境でインストールします。Node.jsにはElectronという強力なフレームワークがあります。Chromeに使われているChromiumというエンジンを内包したNode.jsライブラリーで、これを使うことで簡単にデスクトップ・アプリケーションを作れます。Electronは通常のWeb制作の技術(HTML/CSS/WebGLなど)がすべて使えるので、Maxのオブジェクトでは難しいような、多様なユーザー・インターフェースをデザインできます。8(Node.js)が入っている限り、確実に必要なライブラリーをインストールして動作します。今回のパッチでは、ユーザーがコンピューターに覚えさせたい物体をカメラを通して提示して機械に“教える”ことで、オリジナルの物体識別器を作ることができます。コンピューターに何らかのカメラ・デバイスが搭載/接続されていることが必須ですのでご注意ください。main.maxpatを開いたら、まずは右上のボタンを押します。Max付属のnpmが必要なライブラリーをすべてインストールします。ボタンの下のメッセージ・オブジェクトに“completed”と表示されればインストール完了。このインストールは初回のみ必要なことなので、2回目以降はスキップして大丈夫です。左上のボタンを押すと、Electronで作られたウィンドウを開閉することができます。Electronのウィンドウを立ち上げたら、まずは覚えさせたいラベルの数をプルダウンから選択してください。今回は、“ペン”か“ペットボトル”を識別させるために、ラベルの数を2にして、入力フォームからそれぞれのラベルに名前を付けました。ラベルの右側の“学習開始”というボタンを押すと、カメラ・デバイスが毎秒4回程度の速度で連続写真を撮り始めるので、覚えさせたい対象物をさまざまな角度に動かしてみましょう。100枚程度撮ったら“学習終了”を押して、同様の動作をすべてのラベルに対して継続してください。すべての学習が終わったら、一番下の“訓練、分類開始”を押すと、訓練をして生成したモデルに基づいて、現在カメラに写っているものがどのラベルであるか識別することができます。識別されたラベルは[node.script]のアウトレットから出力されるので、[route]オブジェクトなどでフィルタリングすることで、自在にこの識別器を活用することができます。Node.jsのデモ向けの試作なので音楽での使用を意図したパッチではありませんが、例えば自分の右腕と左腕に違うリストバンドを巻いて、それぞれをカメラにかざして識別させることでトラックや楽器、エフェクトを切り替えるキューとして使う......というようなことが考えられるかと思います。このパッチはオープンソースなので、誰でも自由に改変/再頒布できます。GitHubでも公開中です(https://github.com/yuichkun/n4m-feature-extractor)。