2012年4月29日日曜日

[Application] Eye元気!/Vigorous eyes! v1.03公開

Eye元気! v1.03を公開しました。
Eye元気!/Vigorous eyes! は眼球のトレーニングを支援するAndroidアプリケーションです。
VOCALOIDの初音ミク・鏡音リン/レン・巡音ルカが音声や振動でトレーニングをサポートします。
“上向きクロージング・オープニング・メソッド”を朝晩1~2セットずつ行って、目の筋をほぐし血行を促進させましょう。
Android1.6以上対応、QVGA以上の解像度推奨。

Playストアから無料でダウンロードできます。

https://play.google.com/store/apps/details?id=jp.fujiu.AndroidApp.EyeGenki


バージョンアップ内容
容量省サイズ化(3.15MB → 2.29MB)、音量の調整

2012年4月28日土曜日

[PlayStation Mobile] データを保存する汎用的なクラスを作る [PlayStation Suite]

※PersistentMemoryクラスはver0.99で廃止されました。(2012年7月15日追記)
How to save multipurpose data permanently

PlayStation Suite SDKでデータをファイルに保存する方法について考えてみました。
まず注意点ですが、PlayStation Suite SDKは過去のバージョンアップで次のような仕様変更がありました。

0.96→0.97
HashtableクラスやDictionaryクラスのシリアライズ・デシリアライズができなくなった。
キー・バリュー型のデータをファイルに読み書きすることができなくなりました。

0.97→0.98
Storageクラスが廃止された。

このような仕様変更のおかげでファイルI/O機能を何度も作り直す羽目になりました。
今後も仕様変更により、どんな影響が出るか予想できませんのでご了承ください。

今のところ、比較的簡単で安全と思われる方法を考えてみました。
セーブはstring[]をシリアライズしてPersistentMemoryに書き込む
ロードはPersistentMemoryをデシリアライズしてstring[]に戻す
この機能を MtkPersistenMemory というクラスで作ってみました。

実際のソースです。
MtkPersistenMemory.cs
MtkPersistenMemoryクラスの説明
Publicメソッド
void
SetValue (int key, string myValue)
keyに対応する項目の追加・更新をする
keyは0から63まで
string
GettValue (int key, string defaultValue)
keyに値を取得する、該当する項目がなければdefaultValueを返す
keyは0から63まで
enum
Write ()
SetValueメソッドで追加・更新された内容をPersistentMemoryに永続保存する
戻り値に成功(MtkPersistenMemory.Results.Successed)、または失敗を返す(MtkPersistenMemory.Results.Faild)

※PersistentMemoryクラスを使う都合により次の制限があります。
・保存できる容量は64kB以内
・保存されるタイミングはアプリケーション終了時。アプリケーションが異常終了した場合は保存されません。

MtkStorageを実際に利用するサンプルアプリのソースです。
※このソースはSce.Pss.Highlevel.UIを参照します。
ソリューションエクスプローラーの[参照]を右クリックして[参照アセンブリの編集]でSce.Pss.Highlevel.UIを追加するとビルドできます。
AppMain.cs
MtkPersistenMemoryの使い方の解説です。
(1) PersistenMemoryのインスタンス化
MtkPersistenMemoryはインスタンス化する必要があります。前回の保存内容を自動的にロードします。
例:
MtkPersistenMemory memory = new MtkPersistenMemory();

(2) PersistenMemoryから読み取る
GetValueで第1引数にキーを指定して読み取ります。指定したキーが存在しなければ第2引数の値が返されます。
たとえば
label.Text = memory.GetValue(MtkPersistenMemory.KEY00, "nothing");
の場合、KEY00に保存された文字列があればその内容がラベルに表示されます。
KEY00に文字列が保存されていなければ「nothing」が表示されます。
その他の例:
string value1 = memory.GetValue(MtkPersistenMemory.KEY01, "文字列1");
string value2 = memory.GetValue(MtkPersistenMemory.KEY02, "文字列2");

(3) PersistenMemoryに項目を追加・更新する
SetValueでキーと値の組み合わせを追加します。既にキーが追加されている場合は値を上書きします。
たとえば storage.SetValue(MtkPersistenMemory.KEY00, "....");
の場合、第1引数のMtkPersistenMemory.KEY00に保存された項目が存在すれば、値を第2引数の内容に上書きします。何も保存されていなければ追加します。
その他の例:
memory.SetValue(MtkPersistenMemory.KEY01, "文字列1");
memory.SetValue(MtkPersistenMemory.KEY02, "文字列2");

(4) PersistenMemoryに書き込みと結果のチェック
Writeで全てのキーと値の組み合わせを永続保存します。
戻り値に永続保存の結果を返します。保存する容量が64kBを超えた場合は失敗します。
例:
int result = memory.Write();
result == MtkPersistenMemory.Results.Successed なら成功
result == MtkPersistenMemory.Results.Faild なら失敗

KEY00やKEY02という変数名は、適切な変数名(DATEなど)にリファクタリングするとソースが読みやすくなります。
保存できる項目数が64件では多すぎる・少なすぎるという場合は MtkPersistenMemory.cs のvalues = new string[64]; と MAX_SIZE を改造してください。

以上、参考になれば幸いです。

2012年4月25日水曜日

Windows develpoer days 2日目に参加してきました

Windows develpoer days 2日目に参加してきました。
前日の疲れもありあまり乗り気ではなかったのですが、初っぱなからVOCALOID×MMDの新曲が公開されて疲れが吹っ飛びました。

【MMD/MV】Through the Window/まさたかP×ELECTROCUTICA【Microsoft×MMD】 youtube
http://www.youtube.com/watch?v=gHFYm7Rli-A
ncovideo
http://www.nicovideo.jp/watch/sm17634213
クラウディア窓辺の声はVY1V3でしょうか?

さて、この二日間で感じたことは「これからWindows Phoneがスマートフォン市場のシェアを巻き返す可能性があるらしい」ということでした。

どうやらMetroアプリはAndroidアプリに比べて作りやすいようです。
MetroアプリならWindowsPCでもWindows Phoneでも同じように動作します。
Windows8がリリースされ世界中の人がMetroアプリに慣れ親しめば、Windows Phoneの普及が急加速する可能性があります。
Windows Phoneが市場で実力を発揮するのはこれからのようです。

MetroアプリがWindowsのパラダイムシフトととして成功するかどうかが、アプリ開発者にとって大きく影響しそうです。


ところで、凹凸のある壁をMetroスタイルのタイルに見立ててプロジェクターの映像を投影する演出は感動ものでした。
どんな訓練をすればあんなアイデアがわいてくるのでしょうか?

そして一番驚いたのは、主催者側のVOCALOID開発者の方が参加者と同じ立食ランチの会場で食事を召し上がっていたことでした。
VOCALOIDユーザーの間では有名な方ですから、特別な楽屋やお弁当が用意されるものだと思い込んでいたのですが・・・

いろんなものを見て回って、とても楽しい2日間でした。
参加させていただきありがとうございました!

Windows develpoer days に参加してきました

日付が変わってしまいましたが、Windows develpoer days に参加してきました。
スティーブン・シノフスキー氏の映画のような講演から始まって、ディナーパーティーでは「が~まるちょば」の出演まであっという間の一日でした。
申込者の参加率は主催者の想像以上で、最初から最後まで大盛況でした。
今までマイクロソフト主催のセミナーは何度か参加しましたが、次期WindowsやAzureへのかつて無いほど力の入れようでした。
裏を返せばAndroidやiOSのシェアがマイクロソフト社を脅かしているとも受け取れます。
MetroアプリとWindowsストアは大変興味深いものでした。

ところで明日のYAMAHAの劔持秀紀さんのセッションは少人数用の部屋なのですが、参加希望者は入りきれるのでしょうか?
Mtkは、Windows developerってDTMをたしなむ人や初音ミクのファンが多いように思うのですが・・・

2012年4月21日土曜日

[PlayStation Suite] 中括弧(波括弧) { を改行させない

How to stop moving braces to new line.

PS Suite SDKがオープンベータに移行したので、これからはPS Suiteネタもブログに書こうと思います。
PlayStation Suite Studio(PSS Studio)は使いやすいのですが「{(波括弧、中括弧)」が勝手に改行されてしまいます。

改行されてもアプリケーションに影響はありませんが、Mtkは改行しない方が好みです。
PSS Studioの設定を変えると「{」を改行しないようにできます。

[ツール] - [Options] を開いて
左側の
ソースコード
 コードフォーマッティング
  C#ソースコード
を選択します。
右側の[C#フォーマット]タブのEditボタンをクリックします。
Edit Profile画面のCategoryから角括弧を選択します。
左側の項目をすべて「行末」に設定します。
OKボタンをクリックして設定終了です。

ソースの修正も簡単です。
[編集] - [フォーマット] - [ドキュメントをフォーマット]を実行すると改行を削除してくれます。

これはMono Developer共通なので、Unityでも同じ設定ができます
以上、参考になれば幸いです。

2012年4月14日土曜日

[Android] エミュレーターの動作を少しでも速くするには

How to make Android-Emulators be faster

Androidアプリの開発に動作テストは欠かせません。
特にAndroid-SDK付属のエミュレーターはOSのバージョンや画面サイズが指定できるので動作テストでは重宝します。
しかし、動作が遅くてとても効率が悪いです。

今までの開発経験からエミュレーターの動作を少しでも速くする方法を挙げてみます。
※全ての環境で速くなる保証はありません
  1. r17以降のバージョンのAndroid-SDKを使う
  2. 開発用PCはデュアルコア以上のCPUを使う
  3. テスト対象のアプリが起動したらEclipseのデバッグを切断する
1.r17以降のバージョンのAndroid -SDKを使う
Android-SDKはr17からエミュレーターの動作我はなくなりました。
特に起動時間が大幅に短縮されました。

2.開発用PCはデュアルコア以上のCPUを使う
当然ですが、開発用PCはシングルコアCPUよりデュアルコアCPUの方がエミュレーターが速く動作します。
ちなみにWindows7ではデュアルコアとクアッドコアではエミュレーターの体感速度は変わりませんでした。

3.テスト対象のアプリが起動したらEclipseのデバッグを切断する
テスト対象のアプリがエミュレーターで起動したら、画像のこのボタンをクリックするとエミュレーターが速くなります。
ただし、切断するとステップ実行できなくなるのでご了承ください。
切断してもできることLogCat(Androidのログ)の出力はそのまま動作します。

以上、参考になれば幸いです。

2012年4月11日水曜日

[Application] [Net Trouble Help]がmopitaマーケットに掲載

[Net Trouble Help]がmopitaマーケットに掲載されました。
https://market.mopita.com/detail/?product_id=5131

ありがとうございます!


2012年4月7日土曜日

[Windows] オーディオ再生中にノイズが鳴る、途切れる

How to cease noises on USB audio interface
動画サイトやWindows Media Playerの視聴中に、音声にノイズが入るようになってしまいました。
「ザッ」とか「ブチッ」といった短い音なのですが、動画の音声より大きくとても不快です。
ノイズが鳴ってもレベルメーターに反応がないので、音源に含まれてないノイズだと分かりました。
OSはWindows7 64bit、オーディオインターフェイスはUSB接続タイプのものを使ってます。

いろいろ試した結果、次の方法で解決しました。
コントロールパネル - システムとセキュリティ - 電源オプション - 電源プランの作成 で高パフォーマンスに設定

Windows Updateしてからノイズが鳴るようになったので、勝手に電源オプションの設定を変えられてしまったようです。

Windows7は省電力化のために「タイマー結合」が導入され、CPUのアイドル時間を稼ぐようになりました。
推測ですが高パフォーマンス以外の電源プランではタイマー結合の影響でUSBオーディオインターフェイスへのストリームが遅れたり途切れたりするのかもしれません。

以上、参考になれば幸いです。

2012年4月4日水曜日

[Application] [Net Trouble Help] がランキングロイドに掲載

[Net Trouble Help] がランキングロイドに掲載されました。
ありがとうございます!


2012年4月3日火曜日

[Application] [Net Trouble Help] v1.00公開

Androidアプリケーション [Net Trouble Help] v1.00を公開しました。
Playストアから無料でダウンロードできます。

https://play.google.com/store/apps/details?id=jp.fujiu.net_help

[Net Trouble Help] はAndroidスマートフォンのデータ通信トラブルを解消するお助けマニュアルです。
Androidはデータ通信を使う設定にしても「切断しました」と表示されデータ通信に接続できなくなることがあります。
ネットに接続できないと解決方法を検索できません。
[Net Trouble Help] をインストールしておけばネット検索できなくても解決方法を見ることができます。

[Net Trouble Help] is the manual for a trouble of Data-transmission.
Although you enable Data-transmission, Android smartphones rarely can't connect to mobile network.
When your smartphone is disconnected, you can't search the internet for the trouble.
If you install [Net Trouble Help] in your smartphone, you can read how to solve the trouble without the internet.



2012年4月2日月曜日

[Application] Calcu100 がmopitaマーケットに掲載されました。

Calcu100 がmopitaマーケットに掲載されました。
https://market.mopita.com/detail/?product_id=5129
ありがとうございます!