DTMにおける「コンプレッサー難しい」問題に対するVSTオシロスコープという回答

こんばんは。ちゃーりーです。

皆さん、コンプレッサーは好きですか?僕は好きです。なければ困るという意味で、空気や水と同じくらいには好きです。

DTMにかかわらずオーディオのミキシングでよく使われる、コンプレッサーというエフェクターがあります。コンプレッサーは、基本的には、「ユーザが指定したよりも大きな音量が入力されると、音量を自動的に下げて出力する」、という効果を持つエフェクターです。

自動的に音量が変化するだけなので、不慣れな人にとってはその効果が分かりづらく、DTMにおいて効果が理解しにくいエフェクターの1つなのではないかと思います。

わかりづらい原因っていろいろあると思うのですが、コンプレッサーをかける前の波形とかけた後の波形を見比べる機会がそもそも少ないというのが1つの原因なのではないかと思います。特にソフトシンセが主流となった昨今だと、録音して個々のシンセの波形を見ることなく、完成系に持っていくことも可能ですし、そうしてる人ってかなり多いんじゃないかなと思います。

波形は、音量時系列の変化そのものなので、音量の変化を見たければ、波形を見ればいいわけです。

でも、わざわざコンプレッサーを1つかけるたびに録音なりバウンスなりをして波形を確認するなんて手間がかかってやってられません。なので、オシロスコープのVSTを用います。

オシロスコープのVSTは、そもそもDAWに付属していたりしますが、2か所にこれを刺して、両方を見ながら比較するというのはなかなか大変です。世の中には、同じオシロスコープのVSTを2か所以上に刺すと、そのVST同志が通信をして、2か所の波形を1つの画面で重ねて見られるような機能を持っているものがあります。このような機能を持つオシロスコープのVSTには以下のものがあります。

今回はこの中で、見た目がきれいなOszillos MegaScope(のデモ)を用いてみます。

1小節にキックを4回ならしたものに、コンプレッサーをかけ、コンプレッサーの前後にOszillos MegaScopeを刺し、色とか表示とかを調整したあとのスクショがこちらです。コンプの設定もわかるようにコンプも一緒にスクショの上側に収めてます。下側がOszillos MegaScopeの画面です。緑色の線がコンプレッサーを通る前の波形で、赤色の線がコンプレッサーを通った後の波形です。違う波形であるということが目で見て簡単にわかると思います。コンプレッサーによって音量が下げられている、ということが一目瞭然です。

comp

オシロスコープを見ながらコンプレッサーの設定を変えることで、設定が波形にどう影響しているのかというものリアルタイムで確認できるので、各パラメータの値がどう出力に影響してくるのかも容易に確認できるのでとても便利ですよ。


知育玩具としてのVolca Sample

子供のため、という名目であれば新しいおもちゃを買っても心の痛みが少なくてすみます!(オチ

というわけで、1歳半の娘のために(という名目で)Volca Sampleを買いました。

購入にいたった背景と課題

娘ですが、やっぱり身の回りにおいてあるものには興味を示すということで、DJミキサー(DJM900)、シンセサイザー(Virus TI、monotron DUO)、リズムマシン(Octatrack)などに興味を示していて、実際に触らせて遊ばせていたりしました。
子供は、ボタンやノブみたいな、触ると反応があるものが好きですし、LEDがやたら光るようなものも好きだし、この手の音楽機材に興味を持つのはある程度の必然性を感じるなぁといった感じでした。

いろいろ触らせた機材の中で、娘のお気に入りはDJM900とOctatrackだったのですが、これらには問題がありました。
というのも、音を出すためには、娘の手が届くところに移動させた上で、電源やオーディオなどの結線をする必要があり、そのために手間取っている間に娘が興味を失ってしまうことが多々あったのです。
(そして、娘と一緒に音楽で遊べるぞとルンルンだった私のテンションも思いっきりダダ下がるという更なる問題も発生します。)
なので、娘が興味を持った際に、自ら電源を入れてすぐに音が鳴らすことが可能な、DJM900あるいはOctatrackのようなものが必要だ、と感じ、新しいおもちゃの選定を開始しました。

新しい娘用おもちゃ選定の条件 そこから導かれる必然

子供っていうのは、結構いろいろ危うくて、手が届くところに置けるものはかなり制限されます。
一般的に、子供の手が届く範囲に置くものが満たすべき条件には次に挙げるようなものがあると思います。

  • 飲み込めるものが存在しないこと

とにかく何でも口に運ぶので、飲み込む可能性があるもの、特に、飲み込んだときに危険なものは置けません。
よく言われているのはボタン電池があります。飲み込むと高確率で死に至るようです。
また、そこまで危険ではありませんが、DJミキサーやシンセサイザーについているノブはメンテナンスのために引っ張れば大体取り外せるようになってますが、これも危ないなぁ、という理由で娘の生活範囲に常設はできません。

  • ケーブルが存在しないこと

ケーブルが存在すると、そこにつまずいてコケる可能性があるのでだめです。
あと、ACアダプターであれば良いですが、100ボルトの交流が流れてるようなケーブルなんて、いつうっかり感電するかわからず、危うくて置けません。

  • 持ち上げられないくらい重たいこと、あるいはぜんぜん重たくないこと

掴んで、持ち上げて、その後、足へ落として怪我をする恐れがある可能性を考えると、そもそも持ち上げられないくらい重たいか、あるいは足に落としても怪我をしない程度には軽い必要があります。

 

以上の事柄は、子供を育てたことがない人にとっては大げさに思えるかもしれませんが、これは大げさでもなんでもなく、本当のところです。育児書にはまぁまず間違いなく書いてある、ごくごく基本的なところです。

これに加えて、今回のおもちゃ選定では次の条件が加わります。

  • 触れる場所がたくさんある

子供はやたらいじる場所が多いものが好きです。

  • ピカピカする

子供はやたらピカピカするものが好きです。

  • 思い立ったときにすぐに使い始めることができる

興味を失う前にすぐに使い始められる必要があります。
こちらは音を出し始めるまでに、配線がたくさんあって、その間に興味を失われると、主に僕が悲しいです。

これらの6つの条件をすべて満たし、かつDJM900あるいはOctatrackのどちらかに似ているものを我々は知っています。

そう。Korg Volca Sampleです。

娘にVolca Sampleを与えてみた結果

というわけで、Volca Sampleを購入。電池を入れて、電池を取り出せないであろうことを確認した上で、娘に与えてみました。

適当に私が組んだシーケンスで楽しそうに踊ってくれたり、自分でボタンを押して遊んでくれたりしました。あと、つまみもいい感じにいじって鳴らすサンプルを変えてみたりとか、テンポを変えてみたりとかしてくれます。

うれしい!

あと、volca sampleはサンプラーなので鳴らす音を自分で取り替えることができます。
さらに、iOS端末のマイクで録音したものをvolca sampleへ送り込むためのツールも存在しています。
なので、娘が喋った言葉を録音し、samplerへ転送し、鳴らしてみました。

すると自分の声がボタンを押すと聞こえるということに娘は気づいたらしく、ボタンを押しては録音された言葉を楽しそう復唱してました。
まだ試してないのですが、こちらが覚えてほしい言葉を吹き込んで送り込んでおけば覚えてくれるんじゃないかという気がします。

言語学習にもすごくよさそうです!(気のせい

結論

Volcaシリーズは小さい子供に与えても安全そうです!
あなたのおうちの息子さん、娘さんのリズムマシンリテラシーの向上に一台いかがでしょうか!

おまけ

娘の声をサンプリングして適当にいじりまわしたもの


プリンシプルのremixを書きました。

たまこラブストーリーの主題歌、なんですかね。プリンシプルのremixをだいぶ今更ですが、書きました。

たまこラブストーリーは映画館でも見ましたし、Blu-rayも買って何度も見ていたのですが、実はなんでこの曲がたまこラブストーリーという作品に必要だったのか、ということがなかなか腹落ちしていませんでした。

で、なんか2カ月くらい前だと思うのですが、テレビでたまこラブストーリーを放送していたのですが、そのタイミングで、ようやく理解できたので、居ても立ってもいられず、といった感じで書きました。

たまこがらみだと、過去に、ドラマチックマーケットライドとこいのうたのremixも書いたので、お持ちの方はご一緒にお楽しみください。あと、ねぐせのremixを書くと制覇したみたいになりますね。

お持ちでない方で聞きたいぞ、という方は適当にご一報を。

素敵です。たまこラブストーリー。

 

なんか、もうちょっと適当に高頻度で日記書いていきたいですね。


お誕生日プレゼントをいただきました。

こんにちは。ちゃーりーです。おひさしぶりです。

10月3日が誕生日でして、34歳になりました。で、amazonのウィッシュリストを公開したら、いろいろいただきまして。なんかもう本当にありがとうございます。最近落ち込み気味だったので、ほんと元気出た感じがします。

いただいたものー その1。

踏み台です。娘が流し台で手を洗う時の高さ調整に。使ってます。
なお、自分自身も、高さ違いのものですが、人に送ったことがあります。すごく背が低い人で、ポップン遊ぶときに高さが合わなくて辛そうだったので。現在では普通に、家で、踏み台として便利に使っているという話を聞きました。

で、その2 & その3。

iOSデバイスをMidi音源にしたりできるステキなセット。それぞれ違う人から届いたので、二人で連絡しあって決めたのかなとか思ってます。どうなんでしょうか。

iOS用のUSB変換ケーブルの純正品は、アップル Lightning-USBカメラアダプタという名前で売っていて、これがまた4000円くらいして高いのですが、純正品じゃなくてもちゃんと動いて、一安心でした。

で、iPad上で動かしたiM1をこれらを使ってOCTATRACKから叩いてみた動画をとってみました。音を選んだり、編集したりも結構すんなりできて、なかなか面白い。

今まで、VASをつないで遊んでいたのですが、PCMシンセをつなぐとまた違った表現ができるようになって面白いなぁと思っています。

あと、最近だとableton liveといういろんな機材やDAWを同期させるための機能がありまして。いただいたものを組み合わせて使うとこれにmidiしか受け取れない機材を対応させるアプリ、「Link to Midi」が使えるようになったりして面白いです。例えば、traktorのBPM情報を送ってiPhoneにつないだリズムマシンを同期させたりとかできます。まだうまく動画にできていないのですが、かなりかっちりとシンクロしてすごいです。

なんか、この春先から気分が落ち込み気味で半年くらいほとんど何もしていなかったのですが、なんていうか、いただいたものに見合うだけ、いろいろ頑張らないとなーと思えました。

プレゼント送ってくださった方、本当にありがとうございました!


でんき家計簿をほじほじする

みなさまいかがお過ごしでしょうか。
1月の電気料金がすごく高かったちゃーりーです。

家に送られてきた電気使用量がいつになく多かったのでどうなってるんだ?
と思って東京電力のでんき家計簿<たるwebサービスにログインしてみたところ、30分ごとの電気使用量が見られるようになっていました。

何やら、スマートメーターという、電気使用量をリアルタイムで電力が無線軽油で集められる電気メーターを使っていると30分ごとの統計が見られるようになるらしいです。
で、引越先はそれがもうついていました。と。

なるほどなるほど。じゃあ、そのデータにアクセスするためのweb APIはあるのかなーと思って調べてみたら、
Arduinoでスマートメーターからリアルタイムに消費電力を取得する
というblog記事が出てきて、いや、それはすごいけどでもちげーなーもうちょっと手軽にやりたいんだよー

ということで、seleniumとphantomjsでちょいちょいとスクレイピングするツールを書いてみました。
とりあえずcsvでがつっと吐くだけなので適当にいじったりしてもらえれば幸い。

できればスクレイピングなんてしなくても、API越しにとれるようにするか、もしくはもっと簡単にスマートメーターにアクセスする手段が欲しいよなーという気分ではあるよなぁ。


あけましておめでとうございます / のーぽいっ!のremixかいてみた

あけましておめでとうございます。
出来れば、昨年中になんか1エントリ書き起こしたいなと思っていたのですが、無理でした。寝てました。

2015年は、娘が生まれるという大イベントからばったばったばったばったして、なかなか日常が取り戻せない感じでした。多分、現時点でも取り戻せていないので、多分ずっと取り戻せないんだと思います。というか日常と定義すべき状態が変わっているのだろうなぁと、そういう感じがしています。

あと、引越ししました。
場所は大きく動いていないので、お近くにいらした際には是非遊びに来てやってください。

で、クリスマスにあわせてremix書いてました。

曲を書くのに使える時間もどんどん減ってきている感じがするので、効率の向上が2016年の目標かなぁと思っています。

で、そろそろ各所からちゃんと曲をそろそろリリースしていきたいなぁと。

そんな感じで、今年もよろしくお願いします。


こきゅうとす / 花澤香菜 のremixこさえました

というわけで、なんだか久しぶりにremix書きました。

ほほ笑みモードの作編曲がStudio Apartmentで、ハウス好きとしてはこのまま当分この体制が続いて欲しいと勝手に思っていたのですが、割とすぐに次の曲はやくしまるえつこ、という話を聴いて、そのときの落胆と言ったら正直すごかったし、CDも長らく買ってませんでした。
ただ、時間がたって聞き返したら、ああいい曲だなぁと。おもってアマゾンでぽちっとして。
ハウス分は自家発電すればいいよね、と言う感じで気がついたらremixが出来ました。

原曲、すげー綺麗ですし、これはyoutubeじゃなくてちゃんとCDで聴いた方がいいんじゃないかなと思います。
久々に、ちゃんとしたCDを聞いた気がしました。

そういえば、マスタリングにはiZotope OZONE 7を用いました。最近発売されたばっかりです。こっちのレビューもそのうちします。


ConoHaのAPIを叩く・・・のは面倒くさかったのでnovaコマンドを使ってみた。

ConoHa VPSのインスタンスをコマンドラインから操作したい!

こんにちは。先日、ConoHa VPS上にVDI環境を作ったよ!という日記を書きまして、結構いい感じに実用しております。

で、先日作った環境だと、起動や終了のためにウェブブラウザを使ってConoHaのポータルを開いてマウスでポチポチするひつようがありまして、それってちょっと面倒くさい。起動や終了やイメージの作成なんかを自動化したいなぁとおもうのは人のサガでありまして、なので、APIを叩いて、コマンドラインツールを作ろうかなぁ、などと思ったのですが・・・

Conoha VPSはOpenStackベースだからOpenStack向けのコマンドラインツールが使える!

よくよく考えたら、ConoHa VPSは、OpenStackというOSSのクラウドを作るためのソフトをベースに作られているので、OpenStack用に作られたコマンドラインツール群を用いてある程度コントロール可能なはずです。なので、まずはOpenStack用のコマンドラインツールのうちVMの起動、停止、削除などを行えるnovaコマンドについて試してみることにしました。

novaコマンドとは

OpenStackは、幾つかのサーバで構成されています。それぞれのサーバはAPIを公開しています。このうち、VMを起動したり停止したり削除したりといった操作を行うサーバをnovaと呼びます。novaコマンドは、novaのAPIを叩き、novaの持つVMを起動したり停止したり削除したりといった機能を呼び出します。

novaコマンドのインストール

OpenStackを構成するサーバや、これらのサーバを操作するためのコマンド群をインストールする方法には、いくつかあります。今回は、手元にある環境がCentOS 7.1だったため、RDOと呼ばれる、OpenStackをインストールするためのyumレポジトリに置かれているrpmのパッケージをインストールすることにしました。CentOSやFedoraならこの手順で大丈夫なはずです。

これでnovaコマンドがインストールできました。

ちなみに、UbuntuにはUbuntu OpenStack Installer が用意されていますし、pipのパッケージとしても公開されているので、好みに応じてインストール方法は選べそうです。

novaコマンドの設定

環境変数に設定されている値を使うので設定します。必要な情報はConoHaのダッシュボード右下のAPIボタンのところを叩けば参照したり設定したりできます。

以上をファイルに書き込んでおいて、必要に応じて読みだすようにすると楽だと思います。

novaコマンドを使ってみる

novaコマンドを実行すると、どういうオプションがあるのか色々表示できます。

起動したり、削除したり、リブートしたり、イメージを作ったりなど先日のVDI作成エントリで必要な操作は全部コマンドラインから実行できることが確認できました。これまでブラウザからしなければならなかった作業がコマンドラインからできるようになりました!これでちょっと楽になりました。

インタフェースを守ってくれているConoHaの中の人に感謝!

おそらく、ConoHaではOpenStackのコードをそこそこ変更していると思うのですが、それでもAPIを変更せずに守ってくれているおかげで既存のツールを使えてとてもありがたいです。

中の人たちに感謝しつつ、OpenStackを前提としたエコシステムのありがたみを享受して楽しく生きていきましょう。

以上です。


VDI環境をConoHa上に作った、その理由。

安くVDIを実現したい!

お小遣いに悩めるIT系サラリーマンの皆様こんにちは。
最近は、容量が小さいSSDを積んだノートPCが多くて、なんだか困りますよね。
ホストに入っているOSがWindowsやOS Xなのだけど、Linux環境が欲しい!でも、SSDの容量が小さいのでVMを作ってディスクの容量をガバガバ食うのはちょっとつらい。
かと言って、新しいPCを用意してそこにリモートアクセスするのも、PCを買うのも電気代もかかっちゃって、なかなか厳しい。
と言うシチュエーションはまま有ると思います。というか、僕自身がそうですしね。

そこで、考えてみました。クラウド上に開発環境を作ればいい!と!思いつきました。
でも、クラウドに置いたLinuxのインスタンスにはsshでアクセスして、emacsやvimで開発するんでしょ?ちがうんだよ!IntelliJやsublimeみたいなもっとリッチな環境が使いたいんだよ!という人、多いと思います。
と言うか、僕自身がそうですしね。

というわけで、いろいろ試してみたところ、ConoHaのインスタンス上にTigerVNCを用いてアクセスすることで、安くVDI環境を構築できたので紹介します。

なんでConoHaを選んだのか

インスタンスの料金体系がVDI向き

ConoHaのインスタンスは、1時間刻みで課金されます。
お小遣いに悩めるIT系サラリーマン的には、開発環境は常時起動しているわけではありません。
例えば、仕事から帰ってきた後とか、土日だけとか、限られた時間、安く使えることが大切なのです。
なので、細かい粒度で課金してくれるConoHaはとてもこういった用途に向いているな!と思うわけです。

50GBまでディスクイメージの保存にお金がかからない

これがけっこう重要なポイントで、一般的なクラウドでは、インスタンスの電源を切っても削除しなければお金がかかりつづけます。
インスタンスの削除を行うと、一緒にそのインスタンスで用いていたディスクのイメージも削除されます。
したがって、インスタンスを削除し、課金を止めるためには、ディスクのイメージのバックアップを取得する必要が有ります。
ConoHaでは、このディスクイメージバックアップが50GBまで無料です。
そして、インスタンスが用いるディスク容量は低スペック~中スペックくらいのものは50GBです。
なので、ディスクイメージを無料でバックアップすることが可能です。

したがって、
インスタンスの停止 → ディスクイメージのバックアップ取得 → インスタンス削除
という手順を踏むことで、ディスクイメージを保持したまま課金を止めることができます。

また、インスタンスの起動時にバックアップイメージを書き戻して起動することが出きるので、
インスタンス削除時の環境を取り戻すこともできます。

必要に応じて性能が選べる

インスタンスをバックアップイメージから書き戻して起動する際には、以前に用いていたインスタンスと異なる性能のものを選ぶことができます。
したがって、普段は最低スペックのものを用いておき、必要に応じて、高性能のインスタンスを選ぶことで、簡易に性能向上が可能デス。

SSDが乗っている

人間が直接扱う環境に関しては、CPUが早いよりもSSDが乗っていることのほうが体感速度に影響は大きいと思います。
ConoHaは全部のインスタンスがSSDで動いているので、人間が快適に使うのに向いていると考えます。

日本国内にホストされている

VDIはネットワーク越しに用いるものなので、手元の環境からホストされているインスタンスまでのネットワーク的な距離、主にレイテンシが重要になります。
ConoHaは国内にインスタンスをホストしてくれるため、レイテンシを小さく抑えることができます。

まとめ

以上の理由で、安くVDI環境を構築するのに、ConoHaは向いていると考えます!
このエントリも、ConoHa上で起動した最低スペックのインスタンス上のIntelliJ IDEAで書いています。
まったく何の問題もなく使えています。
新しい開発環境は欲しいけどどうしよう・・・と悩んでいる方、
ConoHaはユーザ登録すると、いくらか分か無料で使えますので、ぜひ試してみてくださいね!


Linux(fedora 21)の上でVisual Studio Code を使って sails.js の開発をしたい!

あらまし

さいきん、アニイベZというアニソンがかかるクラブイベントのをまとめたポータルサイトの拡張機能の開発を担当することとなりました。開発には、いろいろな経緯があって、 node.js 向けの RoR 風フレームワークである sails.js というフレームワークを用いて開発を行うことにしました。

これまではemacsのjs2-modeで開発を行おうと試みてきたのですが、無名関数を使うとインデントが大きく崩れたり、補完がなんだか上手く効かなかったりと、効率の悪い状況が続いてきました。

何かいいIDEは無いものかなぁ。WebStormはお金かかるからなぁ。。などと思っていたところに、Microsoftの開発者向けカンファレンスである Build 2015 にて Visual Studio Code という、WindowsでもMacでもLinuxでも動く、.Netとnode.js向けのIDEが発表されたという報道を見て、おー、これ、試してみるかー と思って、試してみました。

sails.jsもnode.jsもよくわかってないのでトンチンカンなことを書いているかもしれませんが、自分のための備忘録というか、作業ログってことで。

ここに書いてあるのを真似するとできるようになること

  • Visual Studio Code である程度補完がきくようになる
  • ブレイクポイントを置いてデバッグできる

できるようにならないこと

  • ormapper(waterline)とかblueprintの補完はできない
  • 他にもいろいろできないことがありそうだけどまだよくわからない

やりかた

1. まずはsailsを動かす

1.1. fedora 21 をインストールする

してください。自分はWorkstationをVMware Player上にインストールしました。

1.2. node.js と npm をインストールする

とりあえず、node.jsとnpmをyumでインストールします。

でも、このままだとnpmのバージョンが古くてsailsがインストールできないので、一度npmを最新版にします。

これでnpmが新しくなりました。

1.3. sails をインストールする

というわけで、sailsをインストールします。

1.4. sailsを動かしてみる

として、webブラウザで http://localhost:1337 を見るとテンプレートのページが見えるはずです。

2. Visual Studio Codeをインストールしてデバッガで止めてみる

2.1. Visual Studio Code をインストールする

まずは、Visual Studio Code公式サイトからVisual Studio Code をダウンロードしてきます。zipなので適当に圧縮を解いて、適当な場所に置きます。自分は取り敢えずホームディレクトリのvscってディレクトリに置くことにしました。

ってすると起動します。おお、かっこいいではないか。

Screenshot from 2015-05-07 23:56:23とりあえず右側のWelcomeタブは適当に眺めた後に閉じちゃいましょう。

2.2. さっき作ったsailsのプロジェクトを読み込んでみる

File -> Open Folder でさっき作った visualstudio_sails ディレクトリを選択。すると、でぃれくとりのツリーが見えます。適当にフォルダを開いてやると、ファイルの中身も見えます。

Screenshot from 2015-05-08 00:03:56

2.3. 実行環境の設定をする

Visual Studio Code内からsailsを実行したりデバッグしてあげたりするためには、nodeやsailsがどこにおいてあるかを伝えなきゃダメだよなぁということで、その辺りを設定します。

左に縦に4つ並んでるアイコンの一番下に虫禁止マークみたいなのがあるので、それをポチッとしてやります。すると、今までディレクトリ構成を表示してたところが、変数やスタックを表示するための物に切り替わります。その上の方に、如何にも設定用のアイコンといった趣の歯車のアイコンがあるので、そいつを押してやると

Screenshot from 2015-05-08 00:09:02なんか、launch.json という如何にもプログラムを動かすための設定を記述するために使うっぽいファイルが開きます。

歯車の左にあるドロップダウンリストの内容は、このjsonファイルの configuration 配列によって定義されているオーラを感じますので、このファイルをコメントと空気を読んで編集します。

具体的にはこんな感じにしてみました。

Launch Sails.js って書いてある要素が追加した部分になります。これを保存すると、さっきのドロップダウンリストにLaunch Sails.js という選択肢が現れるので、これを有り難く選択します。

で、その左にある如何にも実行ボタンっぽい右向きの緑色の矢印を押すと

Screenshot from 2015-05-08 00:19:36なんか、エラーがでる訳です。

エラーの内容を確認すると、

Cannot start OpenDebug because Mono (or a Mono version >= 3.10.0) is required

なんか、Monoの3.10.0以上が必要だと言わます。なるほどなるほど、じゃあMonoをインストールしてやろうと思って、yum install ’mono*’ なんてやろうものなら fedora 標準のバージョン2.10のmonoがインストールされ、とても残念な気持ちになるので、ここはぐっとこらえます。

2.4. 新しいmonoをインストールする

Monoの公式ページにインストール方法が明示してあるので、ありがたみを感じながらこれに沿ってyumのレポジトリをまずは有効化します。

 

これで、yumのレポジトリが有効になったはずです。レポジトリの名前を確認するために yum repolist を実行すると

download.mono-project.com_repo_centos_ が追加されたレポジトリのようですので、このレポジトリの中のmonoをインストールしてやります。

で、さっき押したときにエラーが出た、如何にも実行ボタンっぽい右向きの緑色の矢印を押すと

Screenshot from 2015-05-08 00:37:09なんか、黄色い右向き矢印が出て、如何にもプログラムの先頭で止まってるなーというオーラを感じられます。なので、如何にもコンテニューボタンっぽい上部真ん中に現れた、右向きの三角形を押してやります。すると、なんかsails.jsが動き出したオーラが感じられるので、ブラウザで http://localhost:1337 を確認してあげるとちゃんと動いているのが確認できます。

赤くて四角いボタンを押すと止まります。実行と停止を何回かやってもとりあえず上手く動きます。ここで設定が終わったオーラを感じますが、もう一息です。

2.5. 何かコードを書いてデバッグしてみる

ここまで来たら、何か実際にコードを書いてブレイクポイントを置いてみたいという衝動に駆られるのが人間の性です。なので、適当にuserなどという名前のapiを作ってみます。

visualstudio_sails ディレクトリ内で

ってやると、userという名前のmodelとcontrollerが作られます。よし、早速実行だ!と思って実行ボタンを押して、いざ http://localhost:1337 に接続しようとすると接続できません。その内、実行が終わったような感じで、画面上部中央のデバッグ中にだけ表示されるボタンも消えてしまいます。

ここで、何かがおかしいと感じて、./Code を実行したコンソールを改めて確認すると色々表示されている中に

error: Error: The hook orm is taking too long to load

という文字列を見つけることができると思います。何やらormapperが上手く動いていないらしいぞ、と感づきます。

ここで、 visualstudio_sails ディレクトリ内で、 sails lift すると

In a production environment (NODE_ENV===”production”) Sails always uses
migrate:”safe” to protect inadvertent deletion of your data.
However during development, you have a few other options for convenience:

1. safe – never auto-migrate my database(s). I will do it myself (by hand)
2. alter – auto-migrate, but attempt to keep my existing data (experimental)
3. drop – wipe/drop ALL my data and rebuild models every time I lift Sails

What would you like Sails to do?

info: To skip this prompt in the future, set sails.config.models.migrate.
info: (conventionally, this is done in config/models.js)

warn: ** DO NOT CHOOSE “2” or “3” IF YOU ARE WORKING WITH PRODUCTION DATA **

と表示され、どのようにデータを引き継ぐか決めろと迫ってきます。さらにこの状態で何もせずに放っておくと

prompt: ?:  error: Error: The hook orm is taking too long to load.
Make sure it is triggering its initialize() callback, or else set sails.config.orm._hookTimeout to a higher value (currently 20000)
at tooLong [as _onTimeout] (/usr/lib/node_modules/sails/lib/app/private/loadHooks.js:92:21)
at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)

というエラーを吐いて、タイムアウトして終了します。さっき、Visual Studio Code 上で実行したのに動かなかったのはこれが原因だなーとわかります。先程のエラーメッセージの中に

info: To skip this prompt in the future, set sails.config.models.migrate.
info: (conventionally, this is done in
config/models.js`)

と有り難く書いてあるので、config.models.js を開くと下の方に

// migrate: ‘alter’

と如何にもそれっぽい文字列が見当たるので、このコメントアウトを取ってあげます。すると、さっきの引継方法で2を選んだことに毎回自動的になります。

改めてVisual Studio Code のデバッガからsailsを起動すると無事起動します。あとは、好きなようにコードを書いて、デバッガで止めてと快適に使えると思います。

なんか、適当にコードをかいて、ブレイクポイントを置いて、コールスタックも変数の中身もちゃんと見えてるぞというスクリーンショットと共にお別れしたいと思います。それでは皆さんさようなら。

Screenshot from 2015-05-08 01:09:26

おつかれさまでした。