« 2016年1月 | トップページ | 2016年3月 »

2016.02.21

Jenkinsのjobが正常終了に見えてDirectoryNotEmptyException を出してた・・・

| |コメント (0)|トラックバック (0)

 このエントリーをはてなブックマークに追加

昨日、今日とJenkinsが起動しているのに
VC++側をSVNにコミットしたにも関わらず
コミットをトリガーとしたジョブの成否を告げる音が鳴らない。

なんでだろ?と思ってJenkinsのCppCheckのジョブを見たら
正常終了しているっぽいんだけど
CppCheckの結果やその後のステップ数グラフが出ていない。

調べるとJenkinsのビルド出力結果に
java.nio.file.DirectoryNotEmptyExceptionというのが出てた。

jobs\ジョブ名\lastStablelastSuccessful failed
jobs\ジョブ名\lastStable failed

というのでディレクトリが空でないと出ているみたい。

確かにいろいろとファイルがある・・・

Java側でエラーが出られてもJava側なんぞ変更していない。
よくわからないのでGoogle先生に聞いてみた。

Jenkinsのビルド出力結果にjava.nio.file.DirectoryNotEmptyException
という記事が、ズバリ該当していた。

どうやらlastSuccessfulは本来シンボリックリンクで管理されるものらしく
builds/lastSuccessfulというディレクトリに対するシンボリックリンクになっていました
自分がJenkinsをインストールした際に前に使っていたジョブの設定を
そのままインポートしたくてjobs配下のファイルを
事前にバックアップしておきました
そして、普通に.exeファイルからJenkinsをインストール後
jobs配下のファイルやディレクトリを
ごそっとバックアップしておいたものに置き換えました
おそらく、この置き換えの動作を行ったときに
シンボリックリンクからディレクトリに変わってしまったのだと思います

かげさんもバックアップから戻したことがあって
どうやらその頃から、この問題が起きてたみたい・・・

今度からバックアップから復元する時は
last~関連フォルダは消してからって手順が良さそうですね。

実は、この解決前にJava側だからJenkinsのバージョンとかか?
と思ってJenkinsのバージョンアップをしようとして
どうやら失敗したらしく、そのリカバリのほうが数倍大変だった・・・

まぁ、リカバリ手順は過去のブログ記事にあったのですが
断片的なところもあったのがキツかったかな。
とりあえず、今日中に全部終わったから良かった。

 このエントリーをはてなブックマークに追加

| |コメント (0)|トラックバック (0)

今更ながらMSBuildを使ったバッチを作った

| |コメント (0)|トラックバック (0)

 このエントリーをはてなブックマークに追加

■MSBuildを使ったバッチを作ろうと思った背景
現在、C#を使った「デバッグ設定ツール」で「オプション追加」ボタン押下すると
初音ミク冒険記の既存のVC++ソースを読み込んで
入力したオプション設定に従い、修正したソースを自動生成するようにしている。

この時、生成されるものの中には、
ほとんどのVC++ソースでincludeしているヘッダファイルがある。

本来だと、そのヘッダをincludeしているソースだけ
ビルドすれば良いんだけど、
ごくたまにビルドしたら期待通りに動かず
リビルドしたら期待通りに動くという現象が起きる。

このため、リビルドするようにしてるんだけど
このリビルドが1分20秒くらいかかるので、その間に別の作業がしたい。

具体的には、「オプション追加」ボタン押下は
C#側のソースも修正する必要があるのでそれをやりたい。

そのため、「デバッグ設定ツール」で「オプション追加」ボタン押下の時は
大抵「デバッグ設定ツール」のC#ソリューションを開いた状態で行っている。

だから、途中でVC++側のビルドのため、ソリューションファイルを開く
といったことはしたくない。

ということで、「オプション追加」ボタン押下時に
MSBuildでVC++側をリビルドするバッチ処理を動かして
すぐにC#側の作業をしたいと思ったわけだ。

■リビルドバッチ
バッチファイルの中身はこんな感じ

Set PATH=%PATH%;"%ProgramFiles(x86)%\MSBuild\12.0\Bin"
F:
cd "F:\Visual Studio 2008\Projects\HatsuneMikuBoukenki"
MSBuild.exe HatsuneMikuBoukenki.sln /p:Configuration=Release /t:rebuild
pause

要するに
・MSBuild.exeへのパスを通す
・リビルド対象ソリューションのフォルダへ移動
・MSBuild.exeでソリューションのリビルド
という流れだ。

初音ミク冒険記は、常にReleaseモードでリビルドしたいから
MSBuildの引数を指定しているが
単純にDebugモードのビルドならソリューションファイルの指定だけで良い。

/pはパラメータ指定
/tはターゲット指定

パラメータやターゲットの詳細は、
後述の参考情報のリンクに載っています。
(たらい回しですみません)

■作業した感想
かげさんのマシンのVisualStudioは
2008、2010、2012、2013と4バージョン入っているため
CドライブにMSBuild.exeがあちこちにあって
どこにパスを通すのが正しいのか分からず時間がかかった・・・

MSDNでMSBuildの知りたい情報が見つけにくかったり
パスを通さないとCL.exeとかでエラーになったり
通すパスを間違ってv120の設定がないとか出たりして
想像以上に苦戦した・・・

■参考情報
MSDNの情報って、
VisualStudioのバージョンアップとかが原因と思うけど
リンク先が変わっていたりして
後から確認し用とした時に見れなかったりするので
MSDN以外のサイトで分かりやすくまとまっていたサイトや
便利そうと思ったサイトも載せておく。

•MSBuildの基本
​http://smdn.jp/programming/netfx/msbuild/

•MSBuild オプション基礎文法最速マスター
​http://cointoss.hatenablog.com/entry/2012/09/14/220425

•チュートリアル: MSBuild プロジェクト ファイルのゼロからの作成
​https://msdn.microsoft.com/ja-jp/library/dd576348.aspx

•VISUAL STUDIO 2013 のビルドツールセットを拡充する プロフェッショナル編
​http://lab.planetleaf.com/windows/development-win/expand-build-tool-set-visual-studio-2013-pro.html

 このエントリーをはてなブックマークに追加

| |コメント (0)|トラックバック (0)

ニコ生のコテハンの付け方

| |コメント (0)|トラックバック (0)

 このエントリーをはてなブックマークに追加

今までずっとニコ生の固定ハンドルネームの付け方知らなかったのだけど
KEIZOさんにコテハンの付け方を教えてもらった。

コメント欄に「@コテハン名」と入れると良いことが分かった。

 このエントリーをはてなブックマークに追加

| |コメント (0)|トラックバック (0)

2016.02.20

鏡音リン・レンV4Xを購入

| |コメント (0)|トラックバック (0)

 このエントリーをはてなブックマークに追加

当初想定してた購入時期からはズレてしまったが
鏡音リン・レンV4Xを購入しました。


鏡音リン・レン V4X バンドル

MEIKO V3やKAITO V3の時は
サクッとライブラリだけのインストールで済んだのだけど
今回はStudio One Artist Piapro Edition を2から3にするのと
その際、Studio One Artist Piapro Editionや
Piapro Studioを64ビット版にしました。

今のマシンのCubase AI 8とかは64ビット版なんですが
初音ミク V3をインストールした頃は、
32ビット版にしないと、うまく動かせなかったので、
Studio One Artist Piapro Editionや
Piapro Studioが32ビット版だったのです。

64ビット版のインストール自体は、
マニュアル通りに作業すれば良いし
PreSonusのアカウントはあったから割りとサクサク進みました。

まぁ、PreSonusのアカウントが登録されていたにも関わらず
アカウントのアクティベートがされていなかった
なーんてこともありましたが、それはあまり問題にならなかった。

それよりも困ったのは、一通りインストールした後に
Piapro Studio起動時に
「押すとアプリケーションがPiapro Studioプラグインをオフにしました」
というメッセージが出てローカル再生ができないことだった・・・

PiaPro StudioのサポートQ&Aにある
「ホストアプリケーションが Piapro Studio プラグインをオフにしました」と表示されます
に書いてある対応をしてもダメだったからだ・・・

30分ほど悩んでいたんだけど、
ホストアプリケーション側のStudio Oneの
オーディオインタフェースとかの設定じゃね?
と気づいた。

早速、Studio One側のメニューから
「Studio One」-「オプション」を選択して
オーディオ設定のタブを確認。

かげさんの使っているオーディオインタフェースは
AG03-MIKUなのでオーディオデバイスの欄が
「Yamaha Steinberg USB」になっていないとダメなのに
今は使っていない別のオーディオインタフェースになっていた・・・

たぶん、かげさんがオーディオインタフェースを2つ持っているので
Studio One Artist Piapro Editionをバージョンアップしたことで
別のオーディオインタフェースが
デフォルトの設定になったんじゃないかと思う。

Studio One側の設定を最初疑わなかったのは
Studio Oneのバージョンアップの際、
「古いバージョンの設定を引き継ぎますか?」
といったメッセージが出てたので、
そこが変わっているとは思わなかったし
これまで下記のタイミングでブログの記事を書いてなかったから
Studio One側の初期設定って気づかなかったんだよね・・・
・初音ミク V3インストール時のトラブル
・AG03-MIKU導入後のCubase以外のサウンド設定

ということで設定を切り替えた後は、
Piapro Studioの設定をONになっていれば
ローカル再生ができるようになった。

なぜかその後、PiaproStudioでRIN_V4X_Power_EVECの
サンプル再生時にStudio One側がゾンビプロセスとなって
異常終了したってのが1回あったけど
タスクマネージャからStudio One.exeを強制終了させて
再度やってみたら、ちゃんと動いたので一安心。

これでクリプトンのボカロは、一通り揃ったことになる。
キャラが多いからnicotalkとかを使って
トークロイドとかしても楽しいそうだ。

 このエントリーをはてなブックマークに追加

| |コメント (0)|トラックバック (0)

2016.02.14

正式公開前だけどEffekseerForDXLibに実装されたネットワーク機能や歪み機能を使ってみた(動画あり)

| |コメント (0)|トラックバック (0)

 このエントリーをはてなブックマークに追加

先日、Effekseerの製作者さんが下記のツイートをしていた。

Effekseer For DXライブラリのGitHubを確認すると
既にネットワーク機能と歪み機能が使えるように修正が入っている。

正式公開前の機能だが、かげさんはネットワーク機能を使えるようにした時に
GitHubに登録されているソースからEffekseerForDXLibの
ライブラリをビルドできる環境にしている。
(環境構築手順は、後述のリンクを参照)

早速、かげさん環境のソースを最新化して使ってみることにした。

ネットワーク機能の方は、以前書いた
EffekseerForDXLibをビルドできるようにしてEffekseerのネットワーク機能を使う
で実装したロジックがEffekseerForDXLibに取り込まれたものだ。

ネットワーク機能が使えると、
エフェクト編集がリアルタイムでゲーム側に反映されるので便利なのだ。
(Effekseer側でエフェクトの出力をしない分、変更確認が楽になる)

ゲーム起動中にエフェクトを編集すると反映されることの紹介(動画あり)」と
同じ動画だけど、ネットワーク機能を使った動画はコチラ。

動画を再生するには、videoタグをサポートしたブラウザが必要です。

GitHubに登録されている2016/02/13時点のソースを見ると
ネットワーク機能では、下記の修正が入っていました。

・Effkseer_InitServer(新規追加関数)
 ネットワークサーバーのインスタンス生成
 ポート番号の指定
 2回目の呼び出し時は何もしない

・Effkseer_End
 ネットワークサーバーを停止して破棄

・LoadEffekseerEffect
 ネットワークサーバーのインスタンスが生成されている場合、
 ロード対象エフェクトをネットワークサーバーに登録

・DeleteEffekseerEffect
 ネットワークサーバーのインスタンスが生成されている場合、
 削除対象エフェクトをネットワークサーバーから解放

・UpdateEffekseer2D/UpdateEffekseer3D
 ネットワークサーバーのインスタンスが生成されている場合、
 ネットワークサーバーで使用しているエフェクトの更新

このため、先日実装したロジックのうちネットワークポート指定の箇所を
Effkseer_InitServerに置き換え、
ネットワーク対応エフェクトのロードを残して、他のエフェクト関連ソースの
ネットワーク機能対応ロジックは、削除しても良くなった。
なのでソースのシンプル化のため、削除可能ロジックは一掃した。

ここまでは良い。

続いて歪み機能。

こちらもシンプルで下記の関数を呼び出せば良いみたい
・Effekseer_InitDistortion
 引数:ウインドウサイズに対する歪みに使用するバッファの拡大率
 (1.0がデフォルト)

とりあえずデフォルトの1.0を指定して
使うエフェクトは、
Effekseerのサンプルについてる「Simple_Destorion」にした。

こんなエフェクトです。

初音ミク冒険記に組み込むとどうなるか、テスト動画を作ってみました。

動画を再生するには、videoタグをサポートしたブラウザが必要です。

うまく使えるようになると
歪み機能で表現の幅が広がりそうですね。

Effekseerのエフェクトエディタ側で歪み機能を使うには
描画共通タブの「歪み」にチェックを付けて
「歪み強度」を指定すると良いみたいです。

 このエントリーをはてなブックマークに追加

| |コメント (0)|トラックバック (0)

« 2016年1月 | トップページ | 2016年3月 »