車の音楽環境

これまで三菱アイではiPod/iPhone4Sで音楽を聴いていました。
Nexus5に換えて、ビルト イン スロットを改修し始めたのが4月の頭でしたが、
そのパーツが予想を大幅に越えてまだ手元に届かない…
なお、KENWOOD KOS-A300対応の謹製Android アプリがありました。
KENWOOD Music Control @Goolge play
対応機種 KOS-A300があります!
というわけで、あとは工作だけすれば完了なのですが。
とりあえず、それまでの措置として、よく聴くplaylistをCD-Rに焼きました。

テスト


スマホをiPhone4S → Nexus5に変えたので、
写メをサイト上にアップするスクリプトの変更のテスト。
画像のタテヨコ回転、GPS情報などのEXIFを削除してます。
2年に一度くらいなので、シェル スクリプトの微修正(小一時間)で済ませていますが、
一度きちんとスクリプトを書いておいた方がいいのかな?
10年以上使ってるけども。

Androidアプリの開発環境を作る 続き

前回:Androidアプリの開発環境を作る
とりあえず開発環境をインストールしただけだったので、実際に動かしてみる。
以前に仕事でFlex Builderを使っていたので、eclipseのおおよそは解っているつもり (w
デフォルトで「自動的にビルド」にチェックが入っているのでソースをイジってバグを入れると、ちゃんとエラーが出る。
ビルドはOkなようだ。
次にAVD(エミュレータ)を動かす。
前回にAndroid仮想デバイス・マネージャーを開き、新規のデバイスを作って、エミュレータの起動までは確認済み。
しかし、起動しても画面はブラックアウトのまま…
ざっとググってみると必要なパッケージが不足している、というのがFAQらしい。
Android SDK Managerを開いてみると、必要なパッケージが全てインストールされているわけではないらしい。
最低限必要そうな次にチェックしてインストール。
Tools > Android SDK Tools
Tools > Android SDK Platform-tools 19.0.1
Tools > Android SDK Build-tools 19.0.2
Tools > Android SDK Build-tools 19.0.1
Tools > Android SDK Build-tools 19
Android 4.4.2 (API 19) 以下
再びAVDを起動すると、ブラックアウトからANDROIDのロゴが表れ、しばらくして例のAndroidの画面が出てきた。
軽く触ってみた限りでは、正常に動いているようだ。

Monodevelopでは問題ないけど、eclipseを使うには画面が狭いなぁ (w
なんとかしないと。

KENWOOD KOS-A300 with Android

iPhone4SからAndroidに機種変更すると、一つだけ困ったことが。
車で使っているコントローラKENWOOD KOS-A300の使い心地です。
改めてKOS-A300の仕様をみてみると、USBメモリのファイルを再生できます。
TOP > Audio File > オーディオファイルのスペック
つまり、次の方法でKOS-A300を利用できる。
 A. USBメモリに曲を入れて車に常駐させておく
 B. AndroidをUSBメモリとして接続
ロング ドライブの場合には運転中にAndroidの充電をしておきたいので、
可能ならばBの選択肢が私的には望ましい。
次にあるように、AndroidをUSBメモリとして認識させることが可能なようです。
[ Nexus 5 ] 内部ストレージをPCの外部メモリとして使用する方法 @EMOBILE
操作性はiPhoneに比べ劣りますが、AndroidでもKOS-A300を使えなくはないみたいですね。
あとはビルト イン スロットの工作かな〜。
車でiPhone 2011.11.11 (金)

Androidアプリの開発環境を作る

長年放置していたログ整形アプリも整理したので、次に進む。
iPhone4Sの電源ボタンがヘタレてクリック感がなくなったので、
次はNexus5でAndroidにしようかと考えている。
アプリを作って遊んでみたいので、その準備をはじめよう。
というわけで、Androidアプリの開発環境を構築〜。
マシン: lenovo ThinkPad Edge e135 (AMD E2-1800, 64bit)
環境: Debian 7.4
次を参考に環境を作ります。
参考:
LinuxでAndroid開発環境構築@Yahoo!知恵袋
http://note.chiebukuro.yahoo.co.jp/detail/n173086
少し違った点もあったので、以下簡単にメモ。
・AMD-Vに対応しているかチェック
$ grep –color svm /proc/cpuinfo
flags : fpu vme de … svm … lbrv svm_lock nrip_save pausefilter
flags : fpu vme de … svm … lbrv svm_lock nrip_save pausefilter
Ok, 問題ないようだ。
・Android SDKをダウンロード
adt-bundle-linux-x86_64-20131030.zip
・Pleiades最新版を次からダウンロード
http://mergedoc.sourceforge.jp/
・インストール
$ sudo apt-get install openjdk-7-jdk
$ sudo apt-get install ia32-libs
$ sudo apt-get install qemu-kvm libvirt-bin
$ sudo adduser miyajima kvm
・ADTは/optに展開
とりあえず、eclipseを起動すると日本語化されている。
デフォルトのサンプルでビルドは異常ない様子。
エミュレータAVDも動いているかな?
今日はここまで。

ざるそばコードのできるまで

前回 コーディングの無くて七癖 からの続き
Michiは、趣味で始めてプロトタイプからの延長そのままに拡張していたので、
コードがごちゃごちゃになってました。
クラスの区分けは割とちゃんできていたと思います。
しかし、クラス内での処理が、我ながら解りにくくなっていた。
リファクタリングすると、変数の数がずいぶん少なくなりました。
改めて気づいたこと、それは、
3. (変数の)スコープの重要性
オブジェクト指向の肝は、同時に扱う部分を最小化してシンプルに考えること。
それをクラス内で考えると、
一連の処理の流れでも変数のスコープを意識して、それを最小にすると良い。
このことは、これまで(仕事でも)あまり意識していなかったので、ちゃんと考えよう。

コーディングの無くて七癖

久しぶりに比較的濃いコーディングをしてみて、自分のスタイル(?)には色々と癖があることに気がつきました。
主に自分の今後のためにメモしておきます。
1. enumをあまり使わない
私が初めて触ったモダンな言語Javaには、当時enumが実装されていませんでした。
その後仕事でC++を使い始めenumを知り、なるほど便利だと思いました。
無くてはならないものではないので忘れがちです。
しかし、コーディング前の設計段階では、enumの使いどころを考えるべきですね。
構造を明示的に意識できるように。
2. 構造体をあまり使わない
Javaではむしろclassを使うので、そちらの流儀になれているせいかも。
classだと初期値の設定なども自由度が高いので、その方が個人的につかいやすい。
構造体のバイトアライメント など、思わぬところで引っかかることもあるので注意が必要だなぁ。
私は特に高級言語が好きで、メモリの取得・開放などハードウェア依存なことはできる限りタッチしたくないので、ここらへんが鬼門かも。
まだまだ癖がありそうだけど、今日はここまで。

DVDをリッピング

※ 本記事では私的な利用のためにDVDをリッピングしておりますが、
2012年10月1日の著作権変更で、法に触れる可能性があります。
1枚だけregion code 2のDVDがあり、これのみPCで再生しております。
また、唯一のPALなので、いっそのことリッピングしてmini DLNAに乗せて汎用プレイヤーで見られるようにしておこう。
以前やったときとは色々と状況が異なっていたので簡単にメモしておきます。
なお、環境は:Debian Wheezy 7.3 (AMD64)
$ sudo aptitude install dvdbackup
$ mkdir dvd
$ dvdbackup -M -i /dev/dvd -o ./dvd
なお、libdvdcss2 はdebianのリポジトリnon-freeからも消えたので、
入手は次を参考に。
 https://wiki.debian.org/CDDVD#DVD
mp4への変換は、
$ ffmpeg -i hoge.VOB -vcodec libx264 -strict experimental hoge.mp4

Functionキーの行末

iPadが普及して、マウスが要らないものになりました。
そして、これまでは当たり前と思われていたパソコンのインターフェースにも変化が出てきました。
というか、当分は変化が続くのでしょうね。
私の現在のマシン(端末)はThinkPad EDGE E135。
トラックポイント含めキーボードに定評があるlenovoです。
なお、タッチパッドは使用していません。
さて、先般発表された新型ThinkPad X1 CarbonではFunctionキー(以下、Fnキー)がプログラマブルになりました。
参考:なぜ新型ThinkPad X1 Carbonに適応型キーボードを採用したのか @PC Watch
http://pc.watch.impress.co.jp/docs/column/ubiq/20140110_630300.html
とうとうFnキーも変化の波にもまれる運命らしいので、対応を考えてみることにします。
すぐさまFnキーが無くなることはないでしょうが、linux用のドライバがすぐに出てこないなど、移行期には問題がたくさん出てきそう。
具体的には、Fnキーが無くなっても困らない方法を探ってみます。
私はマウスが嫌いなので、比較的にキーバインド各種を使うほうだと思います。
考えてみると、IMEでは[F6]〜[F9]は頻繁に。
またウィンドウの終了に[Alt]+[F4]、
また、非常時に[Alt]+[Ctrl]+[Bs]、[Alt]+[Ctrl]+[F1/F2]など。
Gnome 3, KDE, MS Windowsで共通のモノも多いですね。
要は、Fnキーを使わずにこれらのキーバインドを実現できればよいわけです。
ざっと調べてみると、IMEの場合は次で可能でした。
[F6]〜[F9] → [Ctrl]+[u/i/o/p]
つづくかも。

オートパイロットな未来

近年では自動車の自動運転が次世代技術として注目されているようです。
実際に民用車にこの技術が搭載されるのは数年後なのかも知れませんが、いずれ全ての自動車に当たり前の装備になるのでしょう。
私も工学的には自動運転に興味はあるのですが、その後が気になります。
いずれ人が自動車を運転することが禁止される時がくる。
始めは人の運転のアシストに過ぎないでしょう。
しかし車同士の情報の連携が本格的に進むと、早々に人の運転技術を超えるのは間違いないでしょう。
例えば、自車から見えない歩行者でも、他の車が認識している情報を共有すれば、人が死角で見えない情報を得ることができます。
このように共有される情報は幅広く、時々刻々変化するものです。
すぐに人が処理できうる範疇を超えてしまうでしょう。
遠からず人が運転するほうが危険、という時代になるのでしょうね。
そうなるとマイカーの時代は終わるのでしょう。
より集約されたカーシェアになるのかな?
iPadなどタブレットが普及し始めて従来型PCのシェアがしぼんだように、
自動運転が自動車の世界を再編成するのではないでしょうか?
ところで自動車というものは技術的にはまだまだ進展する余地があると思います。
私が乗っている三菱アイ(軽自動車)でもエンジンは(ターボ)64馬力。
馬力の定義はともかく、本当に必要なエネルギーはせいぜい2〜3馬力ではないでしょうか。
少なくとも現在の自動車はかなり無駄なエネルギーを費やしていると思います。
もちろん内燃機関・ピストンエンジン・モーターなど技術的なネックに由来するのですが、現在のような自動車は長期スパンで考えると数百年後には跡形もなくなっている気がします。