Androidの非同期通知機能 Google Cloud Messaging (GCM) のサーバー側コードをC#で書いてみた

.NETの標準以外に Newtonsoft のJSON.NETを使用します。http://james.newtonking.com/pages/json-net.aspx
使い方は

    var container = new Google.GoogleCloudMessaging.Container {
        RegistrationIds = new String [] { "APA*******PQZQ" },
        Data = new { message = "Hello World!" }
    };
    var response = Google.GoogleCloudMessaging.Broadcast( "AIz************", container );

のようになります。

------------------------------

 

using System;
using System.Net;

using Newtonsoft.Json;

namespace Google
{
    public class GoogleCloudMessaging
    {
        public class Container
        {
            [JsonProperty("registration_ids")]
            public String[] RegistrationIds { get; set; }
            [JsonProperty("collapse_key", NullValueHandling=NullValueHandling.Ignore )]
            public String CollapseKey { get; set; }
            [JsonProperty("data", NullValueHandling = NullValueHandling.Ignore)]
            public object Data { get; set; }
            [JsonProperty("delay_while_idle", NullValueHandling = NullValueHandling.Ignore)]
            public Boolean? DelayWhileIdle { get; set; }
            [JsonProperty("time_to_live", NullValueHandling = NullValueHandling.Ignore)]
            public int? TimeToLive { get; set; }
            [JsonProperty("restricted_package_name", NullValueHandling = NullValueHandling.Ignore)]
            public String RestrictedPackageName { get; set; }
            [JsonProperty("dry_run", NullValueHandling = NullValueHandling.Ignore)]
            public Boolean? DryRun { get; set; }
        }
        public class Response
        {
            [JsonProperty("multicast_id")]
            public String MulticastId { get; set; }
            [JsonProperty("success")]
            public int Success { get; set; }
            [JsonProperty("failure")]
            public int Failure { get; set; }
            [JsonProperty("canonical_ids")]
            public int CanonicalIds { get; set; }
            [JsonProperty("results")]
            public Result[] Results { get; set; }
        }
        public class Result
        {
            [JsonProperty("message_id")]
            public String MessageId { get; set; }
            [JsonProperty("registration_id")]
            public String RegistrationId { get; set; }
            [JsonProperty("error")]
            public String Error { get; set; }
        }
        static public Response Broadcast(String API_KEY, Container container)
        {
            var request = WebRequest.Create("https://android.googleapis.com/gcm/send");
            var json = Newtonsoft.Json.JsonConvert.SerializeObject(container);
            using( WebClient web = new WebClient()){
                web.Headers.Add("Authorization", "key=" + API_KEY );
                web.Headers.Add("Content-Type", "application/json");
                byte[] result = web.UploadData("https://android.googleapis.com/gcm/send", "POST", System.Text.Encoding.UTF8.GetBytes(json) );
                String resultString = System.Text.Encoding.UTF8.GetString(result);
                var response = Newtonsoft.Json.JsonConvert.DeserializeObject<Response>( resultString );
                return response;
            }
        }
    }
}

Windows Server 2008 R2 Hyper-V 2.0 上に CentOS 6.2をインストールする際のメモ

想定環境は:

一部始終はこちらの方のブログにわかりやすく解説されています。

http://sashiz.seesaa.net/article/253087250.html

 

ただし、これに加えて陥った問題ありました。ヘビーなファイル転送などで高負荷になった時にディスクドライバがエラーをはきアクセス不能になったり、カーネルパニックを起こしてしまったりが頻発しました。いろいろ対処法を探し回りましたが結局、やってみて効果が認められたのは kernel のオプション設定です。

情報はVMWareのKnowledge Baseで解説されています。

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1006427

/boot/grub/brub.conf ファイルの kernel 行に1こと追加します。

今回の環境では clocksource=acpi_pm divider=10 (64bit 32bit 共)

kernel /vmlinuz-2.6.32-220.13.1.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto quiet  d_LVM_LV=VolGroup/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM  clocksource=acpi_pm divider=10

 注意)試行錯誤が続いていますが 私の利用している CentOS 6.2 x86_64 のカーネルは notsc をサポートしていない様子で、notscオプションを付けると別のデフォルトクロックを使用して動作するようでした。その結果再び悪夢のカーネルパニックに陥ってしまいました。したがって notsc オプションは意図的に除外することにしました。

 

注意更新)それでも高負荷時に kernel panic に陥るため再調整を行いました。clocksource オプションを指定しないとデフォルトで hyper-v の指定する hv_timesource が選択されていたところ、明示的に acpi_pm を指定しました。結果、SAMBAのファイル転送が敵的に早くなったのを確認。安定性についてはしばらく様子を見ます。

さらに、システムクロックが少しずつ早くなるという問題があります。少しずつなのですが、Linux上にSAMBAを立ち上げてADS認証などを設定しているとドメインコントローラと自国のずれが大きくなるとKerberos認証にエラーが変えるようになってしまい致命的です。

CentOS6のデフォルトでは ntp はインストールされてないようなので追加の必要あり。

yum install ntp

chkconfig ntpd on

service ntpd start

 

 原因と対策はまとめると次の通り

  • 最近のLinux Kernel ではシステムの割り込みタイマーが早すぎる
    → カーネルに  divider=10 オプション 
  • clocksource にhyper-vの hv_timesource が選択されていると不安定
    → カーネルに clocksource=acpi_pm オプション 
  • Hyper-V ホストとの時刻同期はGuest OSが5秒以上遅れた時だけ発動する
    →期待しすぎて陥るトラップですが、GuestOSの時計が進みすぎると誰も補正してくれないという仕様
    つまり正確を期すにはLinux OS上にNTPDを設定して、定期的に自分で時刻を合わせなさい。 

 

いまのところ落ちたりせずに動作しています。意外に、Hyper-VとLinuxの組み合わせの情報が多くないので、参考までに。

 

SoftbankでSIMフリーHTC Desireと最近のAndroid HTC Sense系 ROM(含備忘録)

海外で購入したHTC DesireにいろんなROMを焼いてしばらくこの話題から遠ざかっていました。気がつくとSoftbankからたくさんのAndroid端末が発売されており、その間に andglobal.softbank.ne.jp なる新しいAPNも設定されていました。

Softbankでの契約内容と使用可能なAPNの組み合わせについて 2ch でまとめられていたものを備忘録としてここにコピーしておきます。

 

◆パケットし放題S(3G) 

mailwebservice.softbank.ne.jp → ウェブ 

のみの接続であれば上限4,410円で定額 

open.softbank.ne.jp → PCダイレクト 

smile.world → PCダイレクト 

は上限が9,800円。 

andglobal.softbank.ne.jp → スマートフォン通信 

は青天井(未確認) 

 

◆パケットし放題フラット(iPhone、3G) 

ウェブ PCダイレクト分のみ定額になる。黒simフラット契約、銀simガラケー共に 

open.softbank.ne.jp → PCダイレクト 

smile.world → PCダイレクト 

mailwebservice.softbank.ne.jp → ウェブは定額範囲だったが、 

andglobal.softbank.ne.jp → スマートフォン通信 

に設定すると定額外で別枠だった。パケ死する恐れあり。 

Desireだとフラット契約を適用できたが、DHDでパケットし放題フラットを適用できなかったのも、 

APNとプランの設定で範囲で、初期DHD内でのAPNがandglobalな為、定額外扱いだからだと思われる。 

 

◆パケットし放題S forスマートフォン 

◆パケットし放題MAX forスマートフォン(受付終了) 

現時点(2011/5/10)では、銀Simでも緑Simでも 

mailwebservice.softbank.ne.jp → ウェブ(ガラケー扱い) 

open.softbank.ne.jp → PCダイレクト 

andglobal.softbank.ne.jp → スマートフォン通信 

smile.world → PCダイレクト 

のどれも定額内。 

(緑sim用の機種ならandglobal、銀sim用の機種Xシリーズならopenに接続されるが、契約はどちらでも同じ。) 

 

◆パケットし放題フラット forスマートフォン(2011/05/01より) 

・SoftBankスマートフォン(Xシリーズの場合、最新の販売履歴がXシリーズであること)のみ、お申し込みいただけます。 

・国内でご利用のS!メール[MMS]送信・読出料、ウェブ・PCサイトブラウザ(PCメールを含む)・PCサイトダイレクト(Xシリーズ専用)通信料が定額の対象となります。 

スマホ用プランでパケットし放題MAX/Sと同様となので 

mailwebservice.softbank.ne.jp → ウェブ(ガラケー扱い) 

open.softbank.ne.jp → PCダイレクト 

andglobal.softbank.ne.jp → スマートフォン通信 

smile.world → PCダイレクト 

のどれも定額内と思われる。 

 

あと、私自身がひっかかった非常に重要な落とし穴として最近のHTC DesireのROMにははじめからSoftbankのAPN設定が含まれていますが、中に andglobal な設定しかないROMがあり、こういったROMを焼いてAndroidが起動、アカウントでサインインすると、以前のバックアップとアプリのダウンロードをすべくネットに自動的に接続に行きます。この間有無を言わさず通信が始まりますからどこのAPNに接続しているか未確認の状態では非常に危険です。

/system/etc/apns-conf.xmlの内容を十分確認するか、SIMを抜いた状態で初期設定を行うなど気を使う必要があります。

皆様もご注意ください。

台湾でプリペイドSIM - 遠傳電信 FarEasTone編

今回台湾で4日ほど滞在する際に、我がHTC Desire(UK版SIMフリー)でパケット通信すべくプリペイドSIMを購入しました。

手続きについてはこちらのサイトを参考にさせて頂きました。

http://blog.nabe.jp/archives/000211.html

台北駅新光三越裏の店舗カウンターでプリペイドSIMを購入したいと伝えると、1日100NTD 3日間250NTD 5日間350NTDのプランがあるとのこと。手続きにはパスポートのほかにもう一つ日本での身分証明書が要求されましたので私の場合は運転免許証を使いました。

登録手続きから開通まで1時間かかるという説明を受けましたが実際には手続きをしていろいろ説明を聞いているうちに開通したようですぐに利用可能でした。

作業の手順としてはSIMを携帯に刺して、ネットワークの選択でFarEasToneを選択、その後アクセスポイントの設定でAPNを internet になっていたものを f3prepaid に変更。あとは携帯を再起動すると完了です。携帯上でアクティベーションなどの作業はありませんでした。

購入したNT$350は5日間の無制限3Gデータ通信用で、音声通話用のクレジットは含まれていませんでした。ただし電話番号はありますからSMSの受信、音声通話の着信は可能です。

ちなみに、私は中国語はカタコトですが、店頭では英語が通じるスタッフが一人いたためお陰でほぼ英語だけで滞り無くコミュニケーション可能でした。

ASUS Eee Pad Transformer 日本版JP SKUで NVFLASH PRIME1.6 Honeycomb 3.1に

日本版 JP SKUに海外版 US WW TW CNなどのASUS公式ROMで上書きしてアップデートをかけることはできません。私自身は言語バージョンはどれでもよくROOT化やその他の「やばい」方法を使わなくても首尾よくAndroid 3.1に上げられればいいと思っていましたが、やはりこらえきれずやってしまいました。

世の中には Gingerbreakというものを使ってROOTを奪取し、その後ROMを入れていくという方法もあるようですが、こちらはちょっと「怖そう」なので遠慮して、見るからに簡単そうに見えたNVFLASHによる方法でチャレンジしました。

手順はこのサイトのもの。

http://tabletroms.com/forums/showthread.php?976-Nvflash-Unbricking-and-forever-root!

詳細は省略しますが、NVFLASHのパッケージとPRIME1.4のイメージファイル(****.imgファイル3つを含んだ物)の2種類を取ってきます。あと img ファイルはNVFLASHと同じディレクトリにちゃんとコピーしておくこと。これをわすれて download.batを実行してTransformerがまっさらになったところで処理が止まって大変なことにんなりかねません。

待つこと数分・・・・

自動的に再起動してなにやら処理が進んで・・・・Androidの初期設定画面にたどり着きます。その後はまっさらのAndroidにWifiのパスワードなどを設定、Googleのアカウントを設定すればしばらくしてアプリなど以前使っていたバックアップが自然と降りてきます。

PRIME 1.4のROMですがこの時点で

  • Androidバージョンは 3.1 
  • ROOT化されています。(adb shell で # が表示されます。)
  • ClockworkMod Recovery v3.1.0.1が導入済み(各所で配布されているROMが導入できます)
  • キーボード配列は英語キーボード
  • FSKARENはもちろん含まれていません。

さて、これからが作業ですが、まず現時点で最新のPRIME 1.6のROMを導入します。

http://forum.xda-developers.com/showthread.php?t=1052380

Transformerを「リカバリ」で再起動して、リカバリのメニューを駆使してMicroSDに保存しておいたZIPファイルを選択してアップデート。ボリュームの上下でメニューの移動、電源ボタンが「選択」操作になっています。

次にNVFLASHする前に、日本阪の状態の時にADBを通じてコピーしておいたファイルをPUSHします。この作業前に忘れずに system を mountしておきます。2カ所に同じファイルを転送するのは1つはAndroidキーボード用でもう一つはxt9つまりASUSキーボード用です。

  • adb push asusec-ja_JP.kcm /system/usr/keychars/asusec.kcm
  • adb push asusec-ja_JP.kl /system/usr/keylayout/asusec.kl
  • adb push asusec-ja_JP.kl /system/usr/xt9/keylayout/qwerty-ja_JP.kl
  • adb push asusec-ja_JP.kcm /system/usr/xt9/keychars/qwerty-ja_JP.kcm

リカバリモードはこれで終了。

※JP SKUに含まれていたキーマップ関連のファイルをZIPにしました。(おそらく再配布にに関して問題はないと・・・)あくまで参考までにご利用くださいませ。keymapfiles_in_3.0_JP_SKU.zip (6.22 kb)

rebootしてから最後に FSKAREN.apk をインストール

  • adb install .........\FSKAREN.spk

 

さてここまできましたがやはりうまくいかなかったものが・・・日本語について

  • FSKARENはインストールできますが、設定画面で落ちます。入力方法として選択してもやはり落ちます。つまり動作しません。
  • ASUS Keyboardで日本語のキーボードレイアウトを選択することができません。どこかに言語リストがあるのかも・・・

現在の最終型はこのとおりです。

ASUS Eee Pad Transformer と WindowsのRemote Desktop は使えるか

リモートデスクトップのヘビーユーザーである私は、キーボード付AndroidであるTransformerは、普段持ち歩いているWindowsノートを置き換えることができるかもしれない新アイテムです。私個人は、通常の業務メールなどのやりとり、開発作業(VisualStudioを使ったプログラミング)などはリモートからなるべくRemoteDesltopで行っており、持ち歩くノートPC上ではなるべく作業しない極力「シンクライアント」的な使い方をしています。

はたして、AndroidはリモートのWindows上での作業に使える「シンクライアント」として期待に応えてくれるでしょうか。その試行錯誤をまとめてみようと思います。

以前より目を付けていた Android用 Remote Desktop クライアントはこれです。

「Remote RDP」

https://market.android.com/details?id=org.toremote.serversmanager

 

他にも各種のクライアントアプリが公開されていますがこのアプリが優れている点はのは、Marketの説明文によると次のような感じになります。(適当な訳なので間違っていたらごめんなさい)

  1.  各種Windowsバージョンへの対応: Windows 2000 Server, Windows XP Professional, MCE 2005, Windows Server 2003, Windows Vista Business or Ultimate, Windows Server 2008, Windows 7 Professional, Business or Ultimate, Windows Server 2008 R2.
  2. Enterprise版で、 TLS(SSL) 暗号(RDP over SSL)に対応。��れはMicrosoft純正以外で初めて。
  3. モバイルのRDPクライアントで初めて双方向の音声に対応。録音はEnterprise版でのみ対応。
  4. RDP バージョン7に対応
  5. Adminモードとアプリケーションモードの両方に対応。
  6. セッションの自動再接続に対応。
  7. ローカルとリモートの間のコピー・ペースト。
  8. SDカードをリモートのディスクとして接続してファイルのダウンロードアップロードが可能。
  9. サウンドの再生: Alaw, Mulaw(ULaw), Adpcm, GSM6.10 などのフォーマットに対応。
  10. VOIPレベルのハンド幅: 音声再生時に他のサードパーティーのRDPクライアントに比べて 70%-90% 少ない。
    ショートカットキーのカスタマイズ。SDカードへのインポート・エクスポート
  11. ブラウザのズームボタンと同様のズームイン・ズームアウト機能
    リモートのウィンドウ操作のスマートな反応:フリップ・高速移動でリモートのスクリーンをスクロール、通常の動き・ゆっくりした移動(タップ、ポーズ、移動)でリモートのウィンドウの移動とドラッグ。タップ操作:通常または短いタップで左クリック、長いタップで右クリック。
  12. 入力カーソルを賢く検出して、ソフトウェアキーボードを自動的に表示・非表示します。
  13. カーソル移動:スクロールバーを高速に動かしたときにマウスカーソルも進む(?)
  14. マウスホイール対応
  15. ピンチズーム・ズームアウト
  16. 128ビットの TLS(SSL)暗号
  17. 接続管理
  18. 各言語キーボード対応
  19. わずか143 KBでも高機能
  20. 外部接続のマウスやキーボード、画面の解像度、タッチパッドにも対応

とくにTransformerで私の用途(メインのリモートPCがWindows7)を考慮すると、Windows7の新しいプロトコルに対応している点、解像度やキーボードなどタブレットでの利用も考慮されている点が重要です。

 

---------------

さて、RemoteDesktopのアプリがあって、携帯の小さい画面から利用可能なことは以前にも試したことがあり、分かっていました。今回期待すべくはタブレットの画面で、従来ノートPCからやっていたような操作性にどこまで迫れるかということです。

 

結論から言えば、「使用は可能だが問題が多々」といったところです。

 

Transformerでの設定のポイントはこんな感じです。

 

画面の解像度は 1280x750が最適

WindowsVista/7のよりセキュアな認証が必要な場合 EncryptionをEnhancedに(Enterprise版でのみ可)

--------------

通常のWindowsPCから使用してみた時の気になる違いは

 

▼Androidのマウスカーソルとリモートのマウスカーソルはいつも追随しない

Transformerのタッチパッドでクリックしたときに初めてリモートのマウスカーソルの位置が更新されます。ウェブブラウザなどでMouseOverなエフェクトがうまくできないことになります。

▼パッドのダブルクリックでホールド(ドラッグ操作の代替)はない

本来OSの機能ではなく後付けのものですからなくても仕方がありませんが、つい期待してやってしまいます。

▼キーボードの入力はいろいろ謎がいっぱい

一番苦戦しているのがキーボードの問題です。ご存知のようにTransformerのキーボードはWindowsの典型的なものと違ってファンクションキーがない、ESCキーがない、DELキー、ALTキーなどよく使われるキーがないので、その代用となる操作はいかなるものか、あるいはないのかいまだ不明が多くて苦労します。

▼日本語入力モードに切り替えるすべがない

▽日本語キーボードの「¥」キーを押すと異常終了してしまいます。(これはアプリのバグでしょう)(最新版では修正済みです)

 

 

●一方でBluetoothキーボードで利用するとほぼ問題なし

REUDOの RBK-2000BT3 という折り畳み式のキーボードで試したところ上記のキーボード問題はほぼ解決します。

  • ファンクションキーが使えます(FNキー+1,2,3...)
  • キーボード上の文字と実際にタイプされる文字は一致
  • ALTキー、ESCキーなどの特殊キーは動作
    ※ただし「WIN」キーや CTRL+ESC はなぜか動作せず

・ALT+~で日本語IMEの切り替えもOK

 

----------------

つまるところ、現状ではTransformerのキーボードドックでRemoteDesktopをフルに使うのは難しいということになります。残念です。

 

Bluetoothキーボードでの動作はほぼ問題ないことから、TransformerのキーアサインをOSレベルで弄るなどすれば改善の余地があるかもしれません。

  • FN+1,2,3,4...でファンクションキーとして動作してほしい
  • ALT+の組み合わせをWindows上で期待する動作が起こるようにする

等々

進展があったらまた報告したいと思います。

にほん語学習フラッシュカード Nihongo Japanese Language Self-Learning Flash Cards

外国人のための日本語学習をサポートするための有用なツールの開発の試みの第1弾としてフラッシュカードアプリを作ってみました。

主な機能:

音声認識機能を使って学習者が発声およびその確認ができる。

音声合成機能を使って学習者が発音を確認できる。

収容したカードのセットは

  • ひらがな50音
  • かたかな50音
  • 漢数字
  • 「みんなの日本語」初級1課から50課の新出単語

アプリ自体は無償で利用

インストール要件:

  • Windows XP, Windows Vista, Windows 7
  • 常時インターネットに接続されていること

注意事項

Windows XPの場合

Microsoft Office などの音声認識アプリが追加的にインストールされていないと音声認識は利用できません。

Windows 7 UltimateまたはEnterprise の外国語版の場合

日本語の言語バック(Language Pack)をインストールする必要があります。インストールは Windows UpdateからまたはMicrosoftのホームページの案内を参考にしてください。

Windows 7 Ultimate 以外の外国語版の場合

日本語の音声認識のために日本語言語パックが必要ですが、マイクロソフトは公式にはインストールできないことになっています。ただし、あるソフトウェアを使ってインストールする方法がこちらで紹介されていますので参考にしてください。

実行方法

こちらのリンクを開いて「Install」ボタンを押してください。自動的にインストールが開始されます。なお、プログラムのインストールに当たってセキュリティの警告が出る場合がありますが、当方を信用していただいてインストールを許可してください。

 

日本語フラッシュカードインストールと実行

 

使い方

カードセットの選択

左上のリストボックスから練習する項目を選択します。

発声します

音声認識が正しく動作していればマイクに向かって発声します。なお、音声認識の精度はそれほど高くありません。必ずしも正確な発音でなくてもとおってしまうことがあります。発生が正しい場合は次のカードへ進みます。

お手本の発音と先生モード

スピーカーのアイコンをクリックするとお手本の発音が聞けます。TeacherModeのチェックを入れるとカードが表示される初めにお手本の発音が自動的に鳴ります。

※音声合成はGoogleのSpeechAPIを利用して1語ずつインターネットからダウンロードされます。音声は不自然に聞こえることがあります。

 

ご意見ご提案を募集します

このソフトはまだ試作段階のものです。より利用価値のあるものに高めるためにみなさんのご意見ご要望、アドバイスなどをぜひお寄せください。今後の改良の参考にさせていただきます。

 

最後に

「みんなの日本語」の単語リストの作成には「日本語教師の教案」http://kyoan.u-biq.org/ を参考にさせていただきました。

YAMAHAのAVアンプとウーファーの電源連動(RX-V2067)

少し古いYAMAHAのAVアンプには100Vのサービスコンセントが背面についており、アンプの電源と連動していました。つまり、ここにサブウーファーの電源をつなげば、複数の電源を入れたり切ったりすることなく、アンプの電源即サブウーファーも電源オンとなるように便利に使えました。ところが、最近のYAMAHAのアンプにはこのサービスコンセントはなくなっています。元来100W程度の容量が定格のもので、パワフルなサブウーファーを支えるには力不足のようで、ウーファーの接続は推奨されていないようでした。

いずれにしても、ウーファーの電源を別に入れたり切ったりするのは面倒で、電源を切り忘れも往々にしてありうるのでなんとかしてアンプの電源との連動を実現したいのです。

電源連動方法その1

世の中にはパソコンと周辺機器との電源を連動させるためのOAタップが存在します。1つをPCにつなぎ、残りをモニターなどの周辺機器に接続します。PCの電源が入って1つめのコンセントに電流が流れるとほかのコンセントのスイッチが連動して入るというものです。

複雑なことにこの種のOAタップにはいくつかの種類があります。

1.一番原始的な連動

1つめのコンセントに電流が流れるのと連動するわけですが、最近のPCやAV機器では致命的な問題が生じるタイプです。最近のPCやAV機器は、電源がオフの状態でもそれがサスペンドモードだったり、ネットワークスタンバイな状態だったりと、わずかながらに電気を消費している状態になっています。こういった場合、電流がある・なしだけで動作するシンプルなリレー方式の連動では常に電源が入りっぱなしと感知されて目的を果たせません。場合によっては微量な電流が閾値をまたいだりして誤動作ということにもなりえます。

2.閾値設定型のタップ

1のような問題を考慮して少し賢くなった製品があります。ELECOMの T-Y10Aシリーズ

http://www2.elecom.co.jp/cable/pc-tap/t-y10a/index.asp

などはその例です。電源がオフの時の電流値とオンの時の電流値を設定して、オフ時にPC本体に流れる電流にも正確に対応することができます。

3.USB電源連動型

さらにPCのUSB出力に連動して動くタップも存在します。サンワサプライの TAP-RE8U がその例です。

USBには5Vの電源ラインがあり、PCが電源ONの時はこの5Vが出力されるためこれに連動させようとするものです。しかし、PCやOSの設定によってはPCが電源オフでもUSBの電源が出力され続ける場合もあり、うまく動作させるための条件を整えるのはやや複雑になります。

さて、前置きはここまでにして、新しいアンプ RX-V2067 には「トリガー出力」なる、アンプの電源に連動してミニジャックで12Vが出る端子があります。サブウーファーによってはこの連動端子をつないで電源連動できるものもありますが、やはりないものもあります。私のウーファーはそれなりに旧機種などで同然そういう端子はありません。音声信号に連動するモードがあるのですが、小さい音量に反応しなかったり、実際これはあまりまともに使えないことがわかっています。そこで、見てきたような電源タップを組み合わせて連動できないか考えてみます。

RX-V2067は最新のDLNAに対応しており、電源オフの間もネットワークスタンバイ状態で、ネットワーク経由で電源を入れたり、アンプのモードを切り替えたりとコントロールできるインテリジェントなアンプです。つまり、想像するに、電源オフ状態でも、アンプ内のOSがネットワーク上でコマンドを待ち受けるために常に起動していると考えられます。したがって、電源連動タップの1番目は除外されます。問題は2か3のどちらを選ぶべきかとなります。

2番を選んでもおそらくいけるのではないかと思います。懸念するのは、アンプの電源オフ状態には設定によっていろんなモードが存在する点です。完全なオフの状態に加えて、HDMIパススルーを有効にした状態、そして、ネットワークスタンバイを有効にした状態。それぞれの状態で電流値は異なると思われますから、2型の連動タップでも閾値を確実に設定できるかというのは微妙になってきます。

ならば3はどうか。アンプの12VのトリガーをUSBの5Vに変換してつなぐことができれば完璧です。12Vのトリガーはアンプの設定でさまざまにオンオフをコントロールできるので使用上の自由度も上がります。

ということで、3型のタップを使用してサブウーファーの電源連動を実現すべく工作をしてみました。

目標は、ミニジャックで出力される12VをUSBの5Vに変換することです。タップの方のUSBのコネクタはしょせん電圧の有無程度しか見ていないだろうと思いますからそのまま12Vの線をつないでも壊れはしないだろうと思ったりもしましたがあまり無茶も怖いので、電圧変換を入れることにします。

 

そうかといって私自身電圧変換の回路図をさらさらっとかけるほどの技量は全然ありません。そこでネットで集めた情報をもとに次のような工作をすることにしました。

 

材料

□車のシガーソケットに使えるUSB電源(ダイソーで210円)

シガーソケットは12Vまたは24Vで、USBには5Vが出力されます。

□USB連動電源タップ(サンワサプライTAP-RE7U アマゾンで2792円)

□ミニジャックのコネクタ(パーツショップで80円程度)

□ミニジャック<=>ミニジャックケーブル(パーツショップで100円程度)

 

はんだ付けの工作部分は、シガーソケットの端子をミニジャックの端子に付け替えることです。シガーソケット用の金具を取り外してミニジャックのプラスとマイナスを基盤の電源とグランドにはんだ付けします。

シガーソケットの先端部分をミニジャックのコネクタにして埋め込んでみましたが実際はちょっとサイズが合わなくぐらぐらしていますがご愛嬌。

これでサブウーファーの電源連動が無事実現しました。

 

 

 

 

社内英語公用語化の怪

 

楽天が英語の社内公用語化を宣言して話題を集めています。国際化への興味深い試みである一方、日本人の英語アレルギーも手伝ってか賛否両論渦巻いているようです。私自身、国際的に活躍する商社の社員でもなければ、通訳や翻訳を職業としているものではありませんが、多少なり英語に馴染みがあり、いろんな国からの出身者の友人も比較的多く持っており、IT業界で常に英語で入ってくる最新の動向を日々ウォッチしているものとして考えを書いてみようと思います。

 

世界では英語を流暢に話せることがインテリジェンスの証であるという常識があります。私自身、主に英語で話しを聞くことが圧倒的に多いのでそこから聞こえてくる意見や考え方に多少偏りがあるかもしれないのは否定できませんが、それでも確信をもって言えるのは、英語母語話者ではないにもかかわらず英語を使いこなす彼らはみな非常に教育レベルが高く、ビジネスシーンでそれなりの地位を得ているか、海外へ積極的に留学をするなどして向学心も高い人たちが多いということです。そんな彼らが日本へ来て思うのは、どうして日本はこんなに進んだ国なのに英語を話す人がこんなに少ないのかということです。国際人として未熟であるということや、まるで日本人の向学心が萎えているかのように見られることに対して、以前は恥ずかしさや不甲斐なさを感じておりました。

しかし、最近はもうすこし違った考えをもってこの質問に答えるようにしています。

 

その答えの前に、まず、なぜ英語を習得しないといけないかという一般的な2つの場面について考えてみます。

1つは、英語が公用語とされる国(あるいは英語が十分通じる国)から科学技術をはじめとする進んだ技術や知識を学ぶ必要がある場合です。日本の語学力が歴史的に一番すぐれていたといわれているのが明治維新前後、文明開化のころだといわれていますが、それは日本が当時のイギリス、ドイツ、アメリカなどから「文明」を大量に学んで吸収する必要があったからだと考えられます。政治のありかたや科学技術を学ぶために先人たちはそういった当時の先進国へ飛んで、学んで、そして日本に持ち帰りました。さらに、先人たちは持ち帰った知識を日本語に翻訳する偉業も成し遂げました。「経済」「権利」「衛生」などの日本語は当時に新しく作られた日本製の漢語です。

つまり、外国語を習得するという動機は外国の知識や文化を学ぶという目的と密接な関係があるといえます。現代の日本にやってくるアメリカ人留学生にどうして日本に来たのかと聞くとはにかみながら「NARUTOが好きで、それで日本語を勉強したいと思いました。」という話は実は珍しくありません。これは日本の日本にしかない文化に価値を見出した結果、さらにそれを深く知るためにはその国の言葉を勉強せざるを得なかったという自然な帰結を物語っているといえます。

こう考えると日本人がなぜ英語ができないかという理由の1つが見えてきます。つまり、現在の日本にとって海外から学ばなければならないものがもはやそれほど多くはなくなってしまったということです。

戦後の荒廃から現在まで必死に働いてきた日本はアメリカに並ぶ経済大国になり、物質的には非常に満たされた国になりました。日本人の器用で几帳面な性格も手伝って、日本の製品の品質は世界に誇れるものですし、科学技術や医療、その他の分野で世界の一等国として十分誇れるものを多く持つようになりました。その結果どうなったかといえば、同じ先進国に対しても、昔ほどは多くを習いに出かける必要がなくなってしまったというわけです。

ですから、多少言い訳がましく聞こえるかもしれませんが、この点において日本人の英語力が劣るのは単に日本人の知的レベルが低下しているからでも、日本人の学習に対する怠慢を示すものでもないといっていいでしょう。

次に2つ目の理由について考えてみます。それは今日本が持っている技術、文化や思想なんでもかまいませんが、日本が持っているものを海外に伝えることに対する意志の弱さです。

明治の先人たちが海外に学びに出て行ったように、逆に今、日本が世界で唯一誇れるものを持っているとすれば、それは他の国、発展途上国の人々にとって日本に学びに行きたいという動機になります。実際に、日本では政府も民間企業も東南アジアから多くの技術者を受け入れて教育に力を入れているところです。彼らは日本で学んだものを持ち帰ってそれぞれの国で技術や文化の伝道師として指導的立場で活躍することを期待されています。

彼ら東南アジアからの技術者は日本に来てまず語学の研修の機会を与えられることが通例となっています。3か月から6か月の語学研修を経てからいろんな企業へ派遣されていきます。日本語の習得は日本に学びに来るものとして負担せねばならない最低限のコストだといってもいいでしょう。

しかしながら、このような状況は、日本にしかない技術、日本にしかない文化、たとえば、特定の日本企業との関係のためだったり、アニメのようなものであったりした場合で、もし同様のものが他の国、もしかして英語で簡単にコミュニケーションのとれる国にあったとしたらどうでしょうか。テレビやエアコンなどの電化製品や自動車など日本のがすぐれた品質を誇るこれらの分野の製品は、最近になって、韓国や中国でも見劣りしないどころか、製品のデザインセンスや消費者ニーズを素早く取り込むスピードなどでより優れていると思われるケースがたくさん見られるようになりました。こうなってくるともはや「日本にしかない」ものなどなくなって、いわゆる「国際競争」の渦の中に巻き込まれていくことになります。日本語という大変な壁を乗り越えて日本に買い付けに行かなくても、はじめから英語で取引してくれる国へ行けばいいという発想になります。

われわれ日本人がこんなに物質的に満たされて幸せなのなら、あえて言葉の壁を乗り越えてまで売りに出て行かなくてもいいやという自己完結、自己充足的な考え方があるのかもしれません。そのため、少なくともこれまでの日本はあえて「売りに出る」という意識が弱かったといえるのではないでしょうか。

この背景には、自分から積極的に売りに出る姿勢が押し売りになったり余計なお世話になったりしないかということに対する恐怖心があるのかもしれません。太平洋戦争で日本が欧米の列強に負けずと領土を広げにかかった企てに対する失敗がトラウマにあるのかもしれません。西洋の植民地支配は科学技術の伝道のみならず、キリスト教という思想宗教の伝道にも成功しています。その点、日本は、多少なりとも中国大陸、台湾、朝鮮にインフラを築けたかもしれませんが、日本的な思想、宗教の伝道はことごとく失敗して現代にまで禍根を残してしましました。何が悪かったのかの分析は歴史の問題になりますが、こういった歴史的経緯もあって「こちらから無理に押しつけてもうまくいかない」「わざわざ取りに来てくれるならあげてもいいよ」という内向きで消極的な意識が日本人の心の深いところに刻まれてしまったのではないでしょうか。

この消極的な態度が果てに英語の習得に対する動機づけを薄れさせる遠因になっているのではないかとも思えるのです。

 

しかしながら、この21世紀のグローバル化の中でもはや日本は鎖国して自活しつつ現在の生活レベルを維持できる国ではなくなっています。世界経済にかかわったら最後、国際競争からも逃れられないことは自覚しなければなりません。買い手がやってくるのをただ待っているのではなく、売り手として積極的に出ていかなければいわゆる世界の「負け組」へと追いやられてしまうそんな時代です。

中国や韓国でも企業のリーダー的ポジションの人々はみな英語を上手に使いこなします。この事実は、英語が母国語でないにも関わらす、技術、製品、文化、さらには思想までも世界に対して輸出、発信できる基礎を持っているということを意味しています。

日本の国内市場が飽和状態にある今、製品やサービスなどを海外へ広げたいというのは企業家としては当然の欲求です。そんな時に最低限のコミュニケーション能力がないことは致命的な問題です。日本人はもっと英語を習得して国際人としての意識を高め、世界に積極的に発信していくべきです。英語によるコミュニケーション能力は、一握りの外交官や政治家、商社働く人々だけに与えられる特権ではありません。世界がより小さく感じられるこの時代にこそ日本発のよい製品、よいサービス、よい考え方を積極的に世界に発信していく力をより多くの人が持てることが非常に望まれます。

 

最後に、話題を集めている「社内英語公用語化」について考えてみます。

楽天が全社一律に公用語を英語にしたことには衝撃とともに非常に抵抗があるのも確かです。国際化を進める観点でその方向性はよいと思うのですが、結果としてこれが日本人を退け、排斥する理由として使われていくのではないかという危惧があります。

誤解してはいけないのは、語学力というのはあくまでコミュニケーションの「道具」であって、コミュニケーション能力という1技能をもって、人の総合的な価値を決定付けることはできません。海外から日本にやってくる留学生をはじめ、海外で募集する優秀な人たちはそろって英語による武装が完了している人たちです。企業が即戦力としてそういった人たちを取り入れたいという衝動はわからないことはありません。しかし、それでもって日本人を排除する理由にはなりません。優秀な日本人の研究者、デザイナ、社内のリーダーたちは英語が得意でないかもしれません。この人たちを退けてしまえばその会社は日本人しかもっていなかった大切なものも一緒に失うことになります。

だからと言ってかたくなに英語化を拒否する理由もありません。道具として英語を位置付ければこれは「これまでの古い基幹システムを廃止して全社一律にMicrosoftのWindows 7を導入しますよ」という程度のことです。新しいシステムについていかなければならないのは世の常です。時代の流れを考えればこれを拒否することは賢明ではありません。

一方で、社内の部門によっては英語を必要としない部署も相当あるはずで、10人が10人みな等しく英語能力を突然求めるいわれもないはずです。部署の特性、目標とするところによって柔軟に対応していけばいいのではないでしょうか。そういう意味では、強制力をもって一律公用語化する試みはうまくいかず、いずれ柔軟な運用に切り替えていかざるを得ないのではないかと思います。

 

 

Android 2.2 FroyoでSoftbank MMS対応する方法(Mms.apk)

Mms.apk.froyo.jakeMod5に更新しました。(2010/8/2)

Mms.apk.froyo.htc.jakeModExperimental4 アップしました。(2010/8/6)

Android 2.1 (Eclair)をお使いの場合はこちら

Android 2.2のソースコードがいよいよ公開されたということで、Softbank MMS対応すべくさっそく AOSP(Android Open Sourcee Project)からFroyoのソースを取得してビルドしてみました。

ソースコードを概観したところの感想は次のようなものです。

  • Softbank MMSの問題を引き起こしていた部分は、EclairでのAOSPの有志の方のコミットにもかかわらず反映されていないようでした。
  • 特にFrameworks.jarに含まれる Pdu関連のソースは手つかずのままFroyoに持ち越されている様子。
  • Mms.apkについては、いろいろ手が加わっており、Eclairでの些細なバグなど(文字化けとか)が修正されていました。
Eclairのソースで施した手当と同じことをFroyoに施してコンパイルしなおしました。チャレンジャーの皆様の役に立てばと思います。

CyanogenMod6をお使いなら

CyanogeMod 6 ROMをお使いの場合は、なにもしなくてもSoftbankでも利用可能です。当方のMms.apkと置き換えるメリットを考慮の上判断してください。

OpenDesire 3.0.x以上をお使いなら

UserAgent指定などのオプションや、SoftbankのMMSを利用するための最小限の更新が含まれています。

当方のMms.apkを利用するメリット

ROMの更新や各方面の方々の対応、Softbank本家の対応予定など、当方での仕事も役目を終えつつありますが、現時点でなおも当方のMms.apkを利用するメリットとしては次のような点になります。
  • アプリ間の連系で emailto: URL Intent を受け取れるように設定しています。
  • Eメールアドレスで送受信した場合のコンタクトのアイコンやアドレスの新規登録処理で、ちゃんと電話番号の場合と区別して処理されるようになっています。
  • HTC由来のROMをご利用の場合
    ソフトバンク本家の謹製アプリが出るまでは、当方で特別対応したものが有効だと思われます。

Mms.apk置き換え時とその後の手順

rootを取る手順や Mms.apk を置き換える手順については各方面で紹介されているのでここでは省略します。

Mms.apkファイルをインストールするとき

/system/app/Mms.apk ファイルを置き換えます。同じディレクトリに Mms.odex ファイルが存在する場合は必ず削除します。

Mms.apkファイルを置き換えて再起動後

User-Agentの設定を必ず行ってください。ソフトバンクで使用する場合はこれを行わないと始まりません。


それでもうまくいかない場合・・・
  • 「モバイルネットワーク」設定(APN設定)でMMSの設定はできていますか?
  • User-Agentの設定をいろいろ変えてもだめですか?


ダウンロード
Mms.apk.froyo.jakeMod5
  • chanogenの更新の取り込み(フォントサイズ指定など微小な修正)
Mms.apk.froyo.jakeMod4
  • AvatorのEmailアドレス対応の修正
  • 文字の大きさ設定、名前を表示しない設定の追加
  • cyanogenからの追加(言語リソースの追加)
Mms.apk.froyo.jakeMod3
  • 背景黒のオプション追加(cyanogenでの更新の反映) (2010/7/9までの分)
Mms.apk.froyo.jakeMod2
  • cyanogenでの新しい更新を含む(2010/6/30までの分)
Mms.apk.froyo.jakeMod1
  • multipart/alternative のメールが文字化けしていたのを修正。(当方のeclairのソースからのコピーミス)



 

HTC由来のROMの注意

なおHTC由来のROM(Sense UI付のもの)では上記のMms.apk では正常動作しません.
たとえば以下のようなROMは HTC 由来のものとなります。
  • LeeDrOiD
  • Oficial Froyo HTC Sense ROM
  • DJ DROID。
以下に試験的に作成したバージョンを置いておきます。

Mms.apk.froyo.htc.jakeModExperimental4
  • メッセージの送信で落ちる不具合に対処(できたか不明動作報告求む)

 

Mms.apk.froyo.htc.jakeModExperimental4 (871 kb)