Maxのバージョン8から追加された機能に,Node.jsの機能をMaxで利用できるNode for Maxというものがあります.Max8がリリースした当初は,少し盛り上がりましたが,今は使っている人もいる一方で,あまり多用されていない気がします.私個人の話に限って言えば,下記の点において,あまり使う必要性を感じていませんでした.
・PythonプログラムをMaxとは別で動かして,udpか何かで結果を受け取ればweb APIの利用は不可能ではない(というより,Node for Max登場以前からそうしていた)
・Node.jsが何か,あまり理解していない
・C++でエクスターナルを作れば,あらかた出来ないことはない(幸い,現時点でそのスキルを有している)
・Node.jsが何か,あまり理解していない
結局,Node.jsって何なんでしょう?今の時代,webやクラウド上に存在する膨大なリソースをMaxで直接利用できるようになったのは,必然とは言えるかもしれません.
私個人が利用する分においては,全く必要性を感じないNode for Maxですが,とある事情で,大急ぎで習得しないといけなくなったので,光速に限りなく近づいていく物体よりも重い腰を上げて勉強を始めました.まずは,Node.jsの利用から試します.よく使っているwebサービスと連動すると,何だか嬉しいので,Twitterの利用を試してみます.
まず,Twitter Developperでdevelopper accountを作成し,appを作成します.この手順が非常に多くの手順を必要とします.その後,MaxでTwitterを利用するNode.jsスクリプトおよびMaxパッチを作成します.
まずは,Twitter Developperに自身のTwitter IDでログインします(今は国民一人につき,一つはTwitter IDを持っている時代ですよねぇ・・・).
その状態で,"Apps"へ行きます.
"Create an app"をクリックします.
適当な目的を選んで,Nextをクリックします.
国と名前を入力してNextをクリックします.
このappの目的を聞かれるので,Google翻訳で嘘800の目的を書いておきます.それ以外の項目は,"No"にするとNextが押せるようになります.
確認画面が出るので,"Looks good"をクリックします.
規約を読んで,チェックボックスにチェックを入れ,"Submit application"をクリックします.
メールが届くので,"Confirm your email"をクリックすると,審査が始まります.しばらく時間がかかります.
何度か追加で説明を求められる場合もありますが,その度に追加で説明をします.(日本語でも良さそうです)
審査が完了すると,メールが届きます.
developper accountにアクセスすると,このような画面になります."Create Project"をクリックします.
プロジェクト名を入力し,Nextをクリックします.
目的を選んでNextをクリックします.
目的を入力します.先のステップで入力したものと同文で大丈夫です.
app名を入力して,"Complete"をクリックすると,app作成が完了します.
const Max=require('max-api');//Node for MaxのAPI const Twitter=require('twitter');//Twitter API console.log('app start'); var client=new Twitter({ consumer_key:'自分のAPI key', consumer_secret:'自分のAPI key secret', access_token_key:'自分のAccess token', access_token_secret:'自分のAccess token secret' }); Max.addHandler("timeline", () => { //node.scriptが"timeline"を受け取った際のイベントハンドラ client.get('statuses/user_timeline',{screen_name:"dakiyamasan"},function(error,tweets,response){ //dakiyamasanのタイムラインを取得 if(!error){ //タイムラインを表示 console.log(tweets); Max.outlet(tweets); } }); }); Max.addHandler("Tweet",(msg)=>{ //node.scriptが"Tweet xxx"を受け取った際のイベントハンドラ.2番目の文字列がmsgに格納されている. client.post('statuses/update', {status:msg}, function(error, tweet, response){ //msgをツイートする if (!error) { console.log(tweet); } else { console.log('error'); } }); });