2014年4月5日土曜日

[Android] アプリからツイートするとハッシュタグが消える(URLエンコード漏れ)

The reason why tags disappear from URL
Androidアプリからツイッターに投稿する(ツイートする)方法は色々あると思いますが、一番簡単なやり方は次のようなURL文字列をIntentに渡す方法かとおもいます。

https://twitter.com/intent/tweet?text=ツイートしたい内容
※あまりいい例ではありません

サンプルとして、起動するとツイートの投稿画面を表示するソースは次のようになります。
開発環境は次の通りです。
・64bit版 Windows8
・32bit版 Eclipse3.7 (Windows XPモードで使用)
・Android-SDK r22.6.1

アクティビティ(MainActivity.java)


特別な権限は不要なのでマニフェスト(AndroidManifest.xml)は省略します。
Target SDK Version が4以上の設定でビルドできます。
Android1.6以降で動作します。

これを起動するとブラウザーなりツイッター用アプリが起動します。

ところでツイッターにはハッシュタグという機能があります。
#(半角シャープ)の後に続いた文字列はハッシュタグとされ、タップするだけで同じハッシュタグを簡単に検索できます。
ただし、次のようなURL文字列をIntentに渡すとハッシュタグが消えてしまいます。

https://twitter.com/intent/tweet?text=ツイートしたい内容 #fujiu_jp



実行しても「#」より後ろの文字はすべて消えてしまいます。

#(半角シャープ)を含む文字列はURLとして特殊な意味を持つためです。
#(半角シャープ)を「%23」に置き換えるとハッシュタグ付きのツイートが出来るようになります。
https://twitter.com/intent/tweet?text=ツイートしたい内容 %23fujiu.jp

他にも&(半角アンパサンド)や=(半角イコール)のように特殊な意味を持つ記号はるので一つずつ置き換えるのは手間がかかります。
そもそもURLに含めるパラメーターはURL用にエンコードするべきです。
上の例で「いい例ではない」と書いたのはURLにエンコードしてない文字列を含めたためです。
ツイートしたい文字をUriクラスのencodeメソッドを使えばエンコードされるので安全です。


これで特殊な意味を持つ文字を入力しても正常にツイートできるようになります。
ツイッターへの投稿に限らずURLのパラメーターはのURLエンコードすることをお勧めします。

ツイッターに投稿できるAndroidアプリ ザ・数唱 / Digit span PLAY を公開しました。

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

2014年4月4日金曜日

ザ・数唱 が Applivに掲載されました

Androidアプリ ザ・数唱 が Androidアプリ発見サイト -Appliv に掲載されました。
http://android.app-liv.jp/001228074/
Appliv[アプリヴ]は ランキングとレビューから探せるAndroidアプリ情報サイト -Appliv とのことでたくさんのアプリが掲載されています。
スマートフォンをお持ちの方はもちろん、そうでない方も是非ご覧下さい。

掲載して頂きありがとうございました。

2014年4月1日火曜日

[Android] ザ・数唱 v1.01を公開しました

Androidアプリケーション ザ・数唱 / Digit span PLAY / 數字跨度 / 수반복 をv1.01にバージョンアップしました。

V1.01での変更内容は次の通りです。
・Facebookへの投稿ボタンを追加しました。ゲーム終了時、2点以上獲得しているとFacebookやTwetterへ投稿できます。

アプリの内容紹介

ザ・数唱は短期記憶力が勝負の数字記憶ゲームです。
記憶力に自身がありますか?
メモをとらなくても聴いた内容を覚えられますか?
ザ・数唱の読み上げられた数字を記憶して答えるゲームです。
ワーキングメモリーと呼ばれる短期記憶の能力が高い人ほど沢山の数字を覚えられます。
メモをとらず記憶力だけでチャレンジしてください。
ナビゲーターは初音ミク(日本語、英語)、洛天依(中国語)、SeeU(韓国語)です。

Android2.3以上対応、HVGA以上の解像度推奨、縦画面専用
価格は無料

ザ・数唱 / Digit span PLAY はGoogle Playから無料でダウンロードできます。
※ダウンロード前に エンドユーザーライセンス契約(EULA) と プライバシーポリシー を必ずお読みください。
https://play.google.com/store/apps/details?id=jjp.fujiu.digitspan

ザ・数唱 / Digit span PLAY の詳細はこちらからご覧いただけます。
http://www.fujiu.jp/AndroidApp/app010_digitspan.shtml

Digit span PLAY is the game.
You should input the numbers that the navigator read out.
Make your working memory excel.
Don't make memos.
Navigators :
HATSUNE MIKU (English, Japanese)
LUO TIANYI (Chinese)
SeeU (Korean)

數字跨度 (Digit span PLAY) 是游戏。
你应该输入的数字,导航器读出。
别拿备忘录。
向导 :
洛天依 (中文)
初音未来 (日语、英语)
SeeU (韩语)

수반복 (Digit span PLAY) 은 게임이다
당신은 네비게이터가 읽어 해당 입력 번호를해야합니다
메모를 작성하지 마십시오
안내인 :
시유 (한국어)
하츠네 미쿠 (일본어, 영어)
루오 티엔 (중국어)

使用したMMDモデル
Lat式 初音ミク、Tda式 初音ミク、ままま式 SeeU、ケミリア式 洛天依
Copyright (C) CRYPTON FUTURE MEDIA, INC. All Rights Reserved.
Copyrignt (C) SBSARTECH. All rights reserved.
Copyright (C) 上海禾念信息科技有限公司 All rights reserved.

2014年3月29日土曜日

[Windows] FirefoxでFlashがクラッシュする原因と対策

How to coexist with Adobe Flash the clasher
ATOK2013をインストールして以来、FirefoxでFlashが頻繁にクラッシュするようになりました。
ATOKの2013より古いバージョンならFlashがクラッシュすることはないのですが、Windows8に完全対応しているのが2013以降のため古いバージョンを使うわけにはいきません。
ATOK2013のテキストサービスを無効にするとクラッシュを避けられるようですが、ATOKバーが表示されなくなって不便です。その上、テキストサービスを無効ににしてもFirefoxがフリーズしてしまうことがあったためテキストサービスを有効のまま使用しています。

すぐにクラッシュするFlashと共存する方法を考えてみました。

環境は次の通りです。
・64bit版Windows7、64bit版Windows8 のどちらも
・64bit版ATOK2013
・32bit版Firefox 27.0.1

FirefoxにFlashblockという拡張機能をインストールする

Flashblockという拡張機能をインストールするとFlashコンテンツを自動でロードしなくなります。
https://addons.mozilla.org/ja/firefox/addon/flashblock/
Flashblockインストール後、Flashコンテンツはこのように表示されます。
Flashがロードされてないので不意にクラッシュされることを防ぐことが出来ます。
クリックすればFlashが再生されます。
ただしFlashを再生した後のクラッシュは防ぐことは出来ません。
Flashをブロックすることでコンテンツが正常に動作しなくなることもあります。


Youtubeの動画プレイヤーをHTML5プレイヤーに設定する

いろいろなサイトにYoutubeの動画プレイヤーが埋め込まれています。
Flashがクラッシュした後の様子を見ると、Youtubeの動画プレイヤーが表示されていたことが多いです。
Youtubeは設定を変更すると、Flashを使わずに動画を再生することが出来ます。
http://www.youtube.com/html5?hl=ja
のページから HTML5プレイヤーをリクエストする をクリックすると、Flashが使われなくります。Youtubeが原因でクラッシュすることはなくなります。


dom.ipc.plugins.hangUITimeoutSecsの設定を変える

Flashがハングアップすると、Firefoxがフリーズし操作を受け付けなくなります。
その後、警告の画面が表示されます。
この画面でプラグインを停止をクリックすればFlashがクラッシュしますが、Firefoxの操作をすることが出来るようになります。
初期設定ではハングアップしてから警告の画面が表示されるまで11秒に設定されています。
この時間設定を小さくすればフリーズしている時間が短くなります。
設定方法は、
Firefoxのアドレスバーに about:config と入力する
細心の注意を払って使用する をクリックする
検索に hangUITimeoutSecs と入力する
設定名から dom.ipc.plugins.hangUITimeoutSecs を探し、値を11より小さい数字に設定する
下の画像は3秒に設定したものです。
Flashがハングアップしてから短時間で停止することが出来るので無駄に待たされる時間が少なくなりました。


ATOK2013を使うのをやめる

Microsoft IMEならFirefoxのFlashが頻繁にクラッシュすることはありません。


Firefoxを使うのをやめる

ATOK2013をインストールした環境でも、Internet Explorerなど他のブラウザーはFlashが頻繁にクラッシュすることはありません。


以上がFlashのクラッシュを少なくするアイデアでした。

おまけ・謎のイベントログ

イベントビューアーを見ると、Flashがクラッシュしたタイミングでエラーが記録されています。


このCLSIDをインターネットで検索するとFlashによるものという主張を見かけます。
だとしたらFlashはユーザーが気付かないうちにアクセス許可の無い動作をしようとして失敗しハングアップしていることになします。
一体何をしようとしてるのでしょうね?

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

2014年3月22日土曜日

[JavaScript] XMLコンテンツをWebに表示する

Try to show the XML Web content with JavaScript

今回作るアプリケーション

XMLコンテンツJavaScriptを使ってブラウザーに表示させるブラウザーアプリを作ってみました。
JavaScriptネタはいろいろなサイトで紹介されていて出尽くしてる気がしますが一つくらい自分で作ってみようと思い至りました。

開発環境は次の通りです。
・Windows8 64bit + Internet Explorer 10
・Windows7 32bit + Internet Explorer 11
※Firefoxでは動作しませんでした。

JavaScriptでWebコンテンツを利用する上での問題点

仕様によりJavaScriptで扱えるWebコンテンツは制限があります。
Webサービスを提供するサーバーのドメイン名やプロトコル(オリジン)と、JavaScriptのコンテンツが置かれているサーバーのドメイン名が一致している場合に限ります。
クロスドメイン制限などと呼ばれるようです。
ただし、Webサービスを提供するサーバーが次のようなヘッダーを出力する場合はドメイン名が異なるサーバーからでも利用することができます。
Access-Control-Allow-Origin: *

ただし、最近は異なるオリジンにアクセスできるブラウザーもあるようです。
Internet Explorer 10/11では、ローカルドライブに保存されたhtmlファイルを実行する場合はクロスドメインの制限を受けないようで期待通りの動作をしました。
今回は、MSN産経ニュース http://sankei.jp.msn.com/rss/news/flash.xml をJavaScriptでWebに表示することにします。

ソース


拡張子がhtmlのテキストファイルに次のソースを貼り付けて保存します。今回は sample.html というファイル名で保存しました。
※文字エンコードはBOM無しUTF-8に設定して下さい。
Internet Explorerを起動して保存したファイルをドラッグ・ドロップします。
「ブロックされているコンテンツを許可」ボタンをクリックします。

画面が表示されたら「コンテンツ更新ボタン」をクリックすると

その時点のMSN産経ニュースの情報を表示します。著作権保護のため画像の一部にぼかしを入れてます。

今回のサンプルは、ローカルドライブに保存したHTMLファイルをInternet Explorerで開くことが動作条件なので実用性はありません。

これを応用して、ザ・数唱 / Digit Span PLAY のWebページの表示言語を切替えるのに使ってみました。
http://www.fujiu.jp/AndroidApp/app010_digitspan.shtml

Androidアプリ ザ・数唱 / Digit span PLAY を公開しました。

関連ブログ

[JavaScript] テキストボックスやボタンの幅を変えるアニメーション
オープンストリーム・Biz/Browserでアプリ開発

※画像を作成するに当たり 矢印のフリーイラスト【素材っち】 http://sozaizchi.com/sozai/line/yajirushi/ の素材を使用しました。

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

2014年3月18日火曜日

[Application] ザ・数唱 / Digit span PLAY を公開しました

Androidアプリケーション ザ・数唱 / Digit span PLAY を公開しました。
ザ・数唱は短期記憶力が勝負の数字記憶ゲームです。
記憶力に自身がありますか?
メモをとらなくても聴いた内容を覚えられますか?
ザ・数唱の読み上げられた数字を記憶して答えるゲームです。
ワーキングメモリーと呼ばれる短期記憶の能力が高い人ほど沢山の数字を覚えられます。
メモをとらず記憶力だけでチャレンジしてください。
ナビゲーターは初音ミク(日本語、英語)、洛天依(中国語)、SeeU(韓国語)です。

Android2.3以上対応、HVGA以上の解像度推奨、縦画面専用
価格は無料

ザ・数唱 / Digit span PLAY はGoogle Playから無料でダウンロードできます。
※ダウンロード前に エンドユーザーライセンス契約(EULA) と プライバシーポリシー を必ずお読みください。
https://play.google.com/store/apps/details?id=jjp.fujiu.digitspan

ザ・数唱 / Digit span PLAY の詳細はこちらからご覧いただけます。
http://www.fujiu.jp/AndroidApp/app010_digitspan.shtml

Digit span PLAY is the game.
You should input the numbers that the navigator read out.
Make your working memory excel.
Don't make memos.
Navigators :
HATSUNE MIKU (English, Japanese)
LUO TIANYI (Chinese)
SeeU (Korean)

數字跨度 (Digit span PLAY) 是游戏。
你应该输入的数字,导航器读出。
别拿备忘录。
向导 :
洛天依 (中文)
初音未来 (日语、英语)
SeeU (韩语)

수반복 (Digit span PLAY) 은 게임이다
당신은 네비게이터가 읽어 해당 입력 번호를해야합니다
메모를 작성하지 마십시오
안내인 :
시유 (한국어)
하츠네 미쿠 (일본어, 영어)
루오 티엔 (중국어)

使用したMMDモデル
Lat式 初音ミク、Tda式 初音ミク、ままま式 SeeU、ケミリア式 洛天依
Copyright (C) CRYPTON FUTURE MEDIA, INC. All Rights Reserved.
Copyrignt (C) SBSARTECH. All rights reserved.
Copyright (C) 上海禾念信息科技有限公司 All rights reserved.

2014年3月15日土曜日

[CUBASE] マキシマイザーで音が小さくなる

Does the Maximizer reduce the sound?
CUBASE7はミキサーがミックスコンソールに刷新され、チャンネルストリップとしてダイナミクス系エフェクトが気軽に使えるようになりました。
チャンネルストリップはプラグインのダイナミクス系エフェクトに比べると省略されたパラメーターもありますが、レイテンシーが小さいのでエフェクトを掛けたまま録音しやすくなりました。
中でもマキシマイザー(Maximizer)はOutputで指定した出力を超えないように音量を大きくすることができるので便利です。
ところがMaximizerを使うと音が小さくなることに気がつきました。

このブログを書いている時点の環境は次の通りです。
・Windows8 (64bit)
・CUBASE7.5.10 (64bit)

チャンネルストリップのMaximizerを
・Optimize = 100.0%
・Output = 0.0dB
・Mix = 100.0%
という条件で使うと上限が-0.9dBに抑えられることがありました。
実際に上の条件下でTestGeneratorで0dBのサンプルを再生してみたスクリーンショットです。チャンネル設定の一番右のメーターピークレベルは-0.9dBを表示しています。
メーターの動きを観察すると0dBで制限した後-0.9dBに音量を揃えるようです。

MaximizerのOutputを0.0dBにすると上限が-3.0dBでされる音源もありました。0.0dBと-3.0dBを比べると音が小ささがはっきり体感できる音量差です。
この場合はMaximizerのOutputを+3.0dBにすると上限が0.0dBで出力されます。

Standart Limitterも同様でした。
・Input = 24.0dB
・Output = 0.0dB
に設定すると-0.9dBが上限にレベル調整されるようです。

プラグインのMaximizerも同様です。
プラグインの画面では0dBで出力しているように見えますが、メーターピークレベルの表示は-0.9dBです。

Maximizerもリミッターも「Output」を0dBに設定すると0dBを上限にレベル制限するものと解釈していたのですが、そうではないようです。
マキシマイザーやリミッターで音量を揃えるときは、メーターピークレベルをよく見て調整する必要がある、という出来事でした。


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