2014/06/28

じぶん銀行口座開設&xautomationでGUI操作自動化

今回は技術的なメモというよりお金的な話。

これまで何となく(惰性で)東京三菱UFJ銀行をメインで使っていたのだけれど、2013年末の優遇内容改定で優遇がかなり渋くなってしまった。
とはいえ預けてあるお金を他行に移すにしても、その際に振込手数料を取られてしまうのも非常にもったいない。
そんなこんなで今まで何となく塩漬けっぽい状態になっていた。

そんな中、2014年5月にauから「au WALLET」と「プレミアムバンク for au」の発表があった。
内容はざっくりと書くとこんな感じ。
  • au WALLET
    • プリペイド型のクレジットカード(MasterCard)
    • プリペイドの上限額は10万円
    • 一回のチャージは5,000円〜25,000円
    • じぶん銀行からチャージを行うと、チャージ額が+5%増額(2014年末まで)
  • プレミアムバンク for au
    • ATM手数料(実質)0円
    • 振込手数料(実質)0円

元々じぶん銀行は東京三菱UFJ銀行とKDDIが設立したこともあって、東京三菱UFJ銀行〜じぶん銀行間の振込手数料は0円。
つまり、東京三菱UFJ銀行 → じぶん銀行 → 他行 と移せば振込手数料なしで全額移行できそう。

また、au WALLETは最大10万円という制限はあるものの、実質的には還元率5%超のクレジットカードとして使えそう。

自分的にはメリットも大きそうなので、たまたまMNPの弾用に持っていたauの(0円維持)回線を使って早速この2つに申し込んだ(5月下旬)。


じぶん銀行の新規口座開設キャンペーン

じぶん銀行は、「デビュー応援プログラム」と銘打って5つの新規口座開設キャンペーンをやっている。(2014年6月現在)

  • 円定期預金(3ヶ月もの) 金利0.2%→0.6%
  • 外貨預金 円→外貨預入時の為替手数料相当額をキャッシュバック
  • 外貨預金 米ドル定期預金(1ヶ月もの) 実質年率3%
  • 円仕組預金 最大5万円プレゼント
  • FX FX口座開設&1万通貨以上の取引で5万円プレゼント

今回じぶん銀行は単なる通過点なのでこれらのキャンペーンにはあまり興味はなかった。
しかし、振込手数料0円(プレミアムバンク for au)が6月下旬スタートだったので、円定期預金の金利アップくらいなら利用してもいいかな、という気がした。


でもただ定期預金を組むだけでは面白くないので、何とかして金利を最大化できないか調べてみた。

定期預金の金利最大化

定期預金の金利について調べていたところ、定期預金最適化シミュレーターというものを見つけた。

このシミュレータを使ってみたところ、1,333円/1,999円/2,666円/3,332円/3,998円いずれかの定期預金を組むと端数処理の関係で税金として引かれる額が0円になり、金利0.6%が丸々適用されるらしい。
(それ以上の金額になると、金額の上昇に伴い0.478〜0.479%へ漸近)


ということで、東京三菱UFJ銀行 → じぶん銀行 と移したお金を(au WALLETに入れる額を除いて)3,998円の定期預金×Nにしてみることにした。

一つ問題があるとすれば、じぶん銀行で定期預金を組むときには複数まとめて組むことはできず、1つずつ組むしかないこと。
手動でやれないこともないけど… 回数が多いのでできればやりたくはない。

何とかしてブラウザ上で行う操作を自動化できないか…?


GUI操作自動化

WindowsにはUWSCというGUI操作記録・再生ソフトがある。
これを使うことで 自分で操作したものを記録 → 出力されたスクリプトを編集(不要な操作削除/操作追加/N回繰り返し) → 再生して自動化 ということが楽に出来た。

今使っているのはUbuntuなので、Linuxにも同じようなものがないか探してみた。(wine使えばUWSCも使えるのかもしれないが…)
調べた結果、xautomation が割と良さそうだった。

xautomation は マウスの移動/クリック/キー入力 を行うコマンドをそれぞれ提供していて、使う側はこれらのコマンドをシェルスクリプト等に記述することで自動操作ができるようになる。
UWSCと違って自分の操作を記録することはできないが、記録できなくて困るのはマウスの移動先の座標取得くらいなので、そのあたりは手動でなんとかする。

何度か試行錯誤した結果、金額の入力、預入期間の変更、満期になった際の取り扱い それぞれの変更とその後のボタン押下もできることを確認した。
(画面サイズやブラウザの位置で変わってしまい汎用性がないので、スクリプトそのものの貼り付けは割愛)

これで自動化ができる!



参考


(追記)
じぶん銀行の定期預金は300件が上限らしい。

2014/05/29

SONY SWR10購入

ここ1-2年、各社からリストバンド型の活動量計が発売されている。
身の回りで着けている人は1人くらいしかいないものの、どんなものか気になっていた。

そんな中、2014/05/23にSONYからSWR10という製品が出たので買ってみた。

機能


代表的な機能にはこんなものがある。
  • 歩数計
  • 睡眠時間計測
  • スマートウェイクアップ
  • Life bookmark (本体ボタン二回押しで日時を記録)
  • Bluetoothで接続した端末での電話・メッセージ等の通知時にバイブレーション
  • Bluetoothの接続が切れた際にバイブレーション
  • メディアコントロール (本体ボタン+タップでスマートフォンのメディアプレイヤ操作)
  • NFCによるBluetooth接続
  • 防水(IPX8)、防塵(IP5X)

購入&開封


出たばかりということもあってどこも大した値引きはしていなかった。
近所の家電量販店には売ってなさそうだったので、ヨドバシ.comでぽちってみた。
するとぽちって3h後には発送連絡のメール、翌日には届いた。
最近は早いのね。


開封してみると、中には本体とリストバンド(S/L)、充電ケーブル(microUSB)。
マニュアルも入ってはいたけど、電源ボタンの位置くらいしか見るところがない薄っぺらさ…


早速着用してみたところ、リストバンド(S)の一番短いところでぴったり、2つめでちょっと余裕があるくらい。
(ちなみにリストバンド(S)は約16-20cm、リストバンド(L)は約19-23.5cmで調節できるので、まぁ大抵の人の手首には着けられるのではないかな、と…)

普段は2つめで着けておいて、少し長い時間歩いたり走ったりするときには一番短いところにしておくとちょうどいい感じ。

端末との接続


端末とはBluetooth4.0で接続する。
NFCでタッチすると、必要なアプリをダウンロードするように促されるので適宜インストール。
一部アプリはAndroid4.4以上が求められるのでその点は注意が必要。
また、本体のF/Wアップデートは端末側のアプリ経由で行うらしく、アプリをインストールしたら即アップデートが行われた。

なお、Bluetooth3.0までしか対応していない端末にNFCでタッチして接続しようとしたら、接続できません、という趣旨のエラーが出た。

Lifelogアプリを入れて起動するとこんな画面になる。


今はまだ殺風景な感じだけど、これから充実していくといいなぁ。


使用して数日の感想


購入してからまだ平日しか経験していないので、Life bookmarkを行う機会もそうそうなく、淡々と歩数と睡眠時間が記録される日々…
自分の生活の殺風景さを改めて実感(^^;

それはそれとして、数日使ってみた感想を書き連ねてみる。

いいところ

  • スマートウェイクアップ
    元々寝起きは悪い方ではないのだけど、手元が振動するとさくっと起きれる。
  • メディアコントロール機能
    通勤中とかに音楽聞いているときに、手元で簡単に停止できるのはちょっと便利。
    今はまだ操作できるアプリが限られてるみたいだけど、いろいろなアプリを操作できたら便利になりそう。
  • 意外と邪魔にならない
    腕時計やなんかも外せる時には外してしまうタチだけど、着けてても意外とそこまで気にならない。強いて言うとすればしばらく着けてると汗がたまるのが気になる程度。
    これから夏に入るので、汗をかく季節になるとちょっと気になってくるかも?
    バンドが交換可能なので、夏場向けの(汗がたまりづらい)バンドが発売されたら買ってしまいそう。

イマイチなところ

  • ディスプレイがない
    腕に巻くのが前提なら、せめて時計機能くらいはあったほうがBetterではないかと
  • マニュアルが薄すぎ
    ボタン長押しで日中モードと夜間モードを切り替える(切り替わった時にモードごとに異なるLED点灯パターン)のだけど、どのパターンがどっちなのかがわからない。
    端末見れば通知エリアに表示されてるからわかることはわかるんだけど、それくらいはマニュアルに書いてあってもよかったんじゃないかな、と。
  • 端末の制限がキツイ
    Android4.4&Bluetooth4.0な端末って日本じゃあんまり出てない →Lifelogアプリの機能拡充とかあんまり期待できないかも?
  • 音楽や動画視聴、読書イベントが端末上で行ったもののみ
    ある意味仕方ないことなんだけど、紙の本とかPCで音楽聞いてるときとかもログに追加できたらいいなぁ、と思った(殺風景な自分のLifelogをみながら)。
  • 地図への記録機能
    Lifelogアプリでいつどこにいてどう移動したかを見れるけど、GPS情報の記録は端末側で行っているため省電力設定をキツ目にしているとほとんどログが残らない(完全に自業自得)。
  • 自動夜間モード設定が、平日/休日の区分がない
    平日と休日では起きる時間が結構違うので、夜間モードにする時間(特に夜間モードを解除する時間)も平日と休日で個別に設定できると嬉しい。
    (スマートウェイクアップ機能は平日/休日の区分があるので今のところ問題なし)

いい点よりもよくない点の方が目につきやすいから後者のほうが多く見えるけど、どれも致命的なものではないので個人的には悪くない買い物じゃないかな、と。

2014/05/13

feedlyへのfeed追加

Googleリーダーが終了してからは、代わりにfeedlyを使っている。
久々に新しいfeedを追加してみようと思ったらなぜかトラブったのでメモ。

feedlyへのfeed追加(画面上から)


feedlyの場合、新しいfeedの追加は下記どちらかで行っていた。
  • 左側のメニューの"Add Content"からテキストボックスにfeedのURLを入力
  • 右上の検索ボックスにfeedのURLを入力

しかし、どちらでやっても
Feed not found

If you are looking for a specific website or RSS feed, please read our tutorial or ask the community.
と表示され、追加できなかった。

feedlyへのfeed追加方法(裏ワザ?)


feedlyのHelpを見ると、↑以外にも手段があることがわかった。
その手段は、ブラウザで http://cloud.feedly.com/#subscription%2Ffeed%2F + 登録したいfeedのURL というURLを開くこと。


例:
"http://www.example.com/index.rdf" を追加したい場合
→ ブラウザで "http://cloud.feedly.com/#subscription%2Ffeed%2Fhttp://www.example.com/index.rdf" を開く

この方法を使うことで、無事feedの追加登録ができた。

参考



(2014/12/08追記)
上記の方法が使えなくなっている?
あるサイトを追加しようとした際にPCブラウザの検索ボックスで検索して「Feed not found」になったが、Androidアプリの検索ボックスで検索したところ検索結果として表示できた。
ブラウザの問題の可能性もあるが、当面はAndroidアプリから追加することにする。

2014/04/26

Dropboxアプリの不調

いつの頃からか、Dropbox(nautilus-dropbox)が起動しなくなった。
具体的には、起動するとsudoのためのパスワードを求められるが、入力しても起動しない、という状況。

原因切り分け


ターミナルで、dropboxを直接起動してみた。
すると、下記のようにエラーが出て終了してしまった。
どうやらこのようにエラーが出るために起動できてなかった模様。

$ dropbox start
Starting Dropbox...Traceback (most recent call last):
File "dropbox/client/main.py", line 13, in
File "autogen_explicit_imports.py", line 13, in
File "ui/common/selective_sync.py", line 6, in
File "arch/__init__.py", line 28, in
File "arch/linux/tracing.py", line 8, in
File "hard_trace.py", line 6, in
File "client_api/connection_hub.py", line 21, in
File "client_api/kv_connection.py", line 23, in
File "pylinux/__init__.py", line 71, in
File "cffi/api.py", line 311, in verify
File "dropbox/overrides.py", line 398, in load_library
File "cffi/verifier.py", line 69, in load_library
File "cffi/verifier.py", line 154, in _load_library
File "cffi/vengine_cpy.py", line 124, in load_library
VerificationError: importing '/home/xxx/pylinux/__pycache__/_cffi__xa0c4f46bx1d95b4de.so': No module named _cffi__xa0c4f46bx1d95b4de

The Dropbox daemon is not installed!
Run "dropbox start -i" to install the daemon

対処


必要な対処は下記二点。
  • /var/lib/dropbox/.dropbox-distを削除 (dropboxの古いバイナリを削除)
  • dropbox start -iを実行 (dropboxのバイナリを再度ダウンロード)

これらを実施することで、前と同じようにdropboxが起動するようになった。

参考

2014/03/02

自炊雑感


Epson DS-510を購入したので数十冊自炊してみた。
今のところの感想や気づいたことなど。

ちなみに、裁断〜スキャン〜後処理 の所要時間はコミック1冊平均20〜30分くらい。
カバー/表紙/カラーページ/本体 それぞれ別々に処理しているせいだとは思うが、もう少し短縮したいところ。

スキャン

今のところ、スキャン時の設定等はこんな感じで落ち着いている。
  • 300dpi
  • ページに合わせてカラー/グレースケール/白黒を選択
  • PNM形式で保存
  • xsaneのスキャナ側の設定は、明るさを0.4〜0.6くらい、コントラストを0〜0.3くらいに設定 (白い部分がきちんと白くなり、色味が変わり過ぎない程度)
  • 一度にスキャンするページ数は120ページ以内
そして、スキャンしていて気になったことがいくつか。
  • 長尺物のスキャンができない
    DS-510のマニュアルを見るとWindows等の場合は長尺物もスキャンできるようだが、xsaneからではできなかった。
    結果、コミックのカバーが一発ではスキャンできないので、裁断して2回に分けてスキャンしている。場合によってはGimpで加工して1枚に再合成。
  • スキャン中にxsaneがたまに落ちる
    調子がいい時は全然落ちないのだけど、頻繁に落ちることもある。何がきっかけで落ちているのかは今のところ不明。
  • 一度にスキャンするページ数を増やしすぎると斜めになりやすい
    うまく置くとスキャナの上限枚数を超えてセットできるが、斜めにスキャンされる率が高くなったので60枚以内に抑えるようにした。

スキャン後の処理


小説


小説はページの端が白いスペースになっている。
そのため、余白を削除することでスマートフォンやタブレット等で見た時に大きく表示することができる。
余白を削除する際には、pamcutで読み取り境界付近の黒いラインをカットしたあとにpnmcropを行うことでうまく削除できた。(場合によってはpnmcropのオプションで調整)
その後pnmscaleでサイズを縮小(このとき白黒からグレースケールに変換される)してからjpegへ変換。

毎回コマンド手打ちは面倒なので、下記のようなシェルスクリプトを作った。(marginやらscaleやらは適当なので微調整が必要かも)

#!/bin/bash

outputdir="/home/xxx/hoge"

margin_top=100
margin_left=100
cut_width=1300
cut_height=1950

scale=0.56

temp_dir=jpg

current_dir=`pwd`
string_dir=${current_dir##*/}
output_zip_filename=${string_dir}.zip

# make temp dir
mkdir -p ${temp_dir}

# convert image file
for i in $* ; do
  outputfilename=`echo ${i} | sed "s/pnm/jpg/"`
  pamcut -left ${margin_left} -top ${margin_top} -width ${cut_width} -height ${cut_height} ${i} | pnmcrop | pnmscale ${scale} | pnmtojpeg > ${temp_dir}/${outputfilename}
done

# compress all files
zip -r -j -q -9 ${outputdir}/${output_zip_filename} ${temp_dir}


コミック

コミックは余白削除が必要無いため、サイズ縮小のみやればOK。
小説と同様、下記のようなシェルスクリプトを作った。


#!/bin/bash

outputdir="/home/xxx/hoge"
scale=0.56
temp_dir=jpg

current_dir=`pwd`
string_dir=${current_dir##*/}
output_zip_filename=${string_dir}.zip

# make temp dir
mkdir -p ${temp_dir}

# convert image file
for i in $* ; do
  outputfilename=`echo ${i} | sed "s/pnm/jpg/"`
  pnmscale ${scale} ${i} | pnmtojpeg > ${temp_dir}/${outputfilename}
done

# compress all files
zip -r -j -q -9 ${outputdir}/${output_zip_filename} ${temp_dir}


そして複数巻一気にスキャンだけした後で、下記のようなコマンドで一括でjpegへ変換を実行。

for i in `seq -w 1 10`; do cd xxx_${i}; ~/hoge/scale_comic.sh *.pnm; cd ../; done

2014/02/09

Epson DS-510をUbuntuで使う


Epson DS-510用ドライバのインストール


Epson DS-510が届いたので、早速セイコーエプソン株式会社が提供するLinuxドライバから*.debなファイルをダウンロードしてきた。
しかし、Ubuntu10.04向けのパッケージのため依存するパッケージの一部(libhal1, libudev0, hal)が見つからず、そのままでは13.10な環境には入らないようだ。

そのため、ソースファイルからdebパッケージを作りなおすことにした。

必要なパッケージのインストール


deb作成に必要なもの、コンパイルに必要なもの等いろいろあるが、下記あたりをインストール。

  • build-essential
  • debhelper
  • devscripts
  • lintian
  • dh-make
  • cdbs
  • libltdl-dev
  • libudev-dev
  • libusb-1.0-0-dev
  • libgtkmm-2.4-dev
  • libsane-dev
  • libjpeg-dev
  • libtiff-dev
  • libbz2-dev
  • libz-dev
  • libboost-all-dev (必要なもののみ入れればいいのだが、面倒だったので全部まとめて入れた)

ダウンロード


ダウンロードするのは下記のファイル。
  • imagescan_3.4.0.orig.tar.gz
  • imagescan_3.4.0-1epson4ubuntu10.04.debian.tar.gz

前者を展開するとutsushi-0.4.0というディレクトリができる。
しかし、ディレクトリ名がパッケージファイル名になるので、imagescan-3.4.0に変更しておく。
また、後者はdebパッケージを作る際に必要なファイルなので、imagescan-3.4.0の中に置いておく(imagescan-3.4.0/debian)。

buildに向けた修正


本当はソースファイルのあるディレクトリでdebuild -uc -us -bとするだけでバイナリの作成まで出来るはず… なのだけど、そのままでは通らなかったのでいくつか修正。

debian/control


13.10にはlibhal-devというパッケージが存在しない。
そのため、6行目のBuild-Depends:に記載されているlibhal-devを削除。
同様に、halというパッケージも存在しないので、11行目のDepends:からhalを削除。

debian/rules


デフォルトではソースファイル内のBoostをコンパイルして利用するようだが、スレッド関連でエラーが出てコンパイルに失敗した。
そのため、Boostはソースファイル内のものではなくUbuntuで提供されているライブラリを利用する。
ライブラリを使用するために20行目あたりに下記を追記。

DEB_CONFIGURE_EXTRA_FLAGS += --with-boost-system=boost_system
DEB_CONFIGURE_EXTRA_FLAGS += --with-boost-filesystem=boost_filesystem
DEB_CONFIGURE_EXTRA_FLAGS += --with-boost-iostreams=boost_iostreams
DEB_CONFIGURE_EXTRA_FLAGS += --with-boost-program-options=boost_program_options
DEB_CONFIGURE_EXTRA_FLAGS += --with-boost-regex=boost_regex
DEB_CONFIGURE_EXTRA_FLAGS += --with-boost-thread=boost_thread
DEB_CONFIGURE_EXTRA_FLAGS += --with-boost-unit-test-framework=boost_unit_test_framework

configureスクリプト

rulesにオプションを適切に指定していても、なぜか下記のエラーが出る。
configure: error: Could not link against boost_unit_test_framework !
いろいろ試行錯誤はしてみたものの解決できなかった。
ライブラリそのものはあるので問題ないはず、ということで(本当はよくないのだろうけど)このエラーを出力している19,966行目あたりを修正して、強制的に通してしまう。

変更前:

if test "x$link_unit_test_framework" != "xyes"; then
 as_fn_error "Could not link against $ax_lib !" "$LINENO" 5
fi


変更後:

if test "x$link_unit_test_framework" != "xyes"; then 
 #as_fn_error "Could not link against $ax_lib !" "$LINENO" 5
 BOOST_UNIT_TEST_FRAMEWORK_LIB="-lboost_unit_test_framework"
fi


debパッケージ作成&インストール


debuild -uc -us -bを実行すると、一つ上のディレクトリにimagescan_3.4.0-1epson4ubuntu10.04_xxx.debが作成される。
これを実行し、Ubuntuソフトウェアセンターからインストールを実行。

これにより、/usr/bin/imagescan(および関連するファイル)がインストールされる。

使えるかどうか確認


DS-510を電源ON&USBで接続し、認識するか確認。

確認その1:imagescan
$ imagescan list
usb:esci:/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4:1.0


確認その2:SANE
$ sane-find-scanner
...
found USB scanner (vendor=0x04b8 [EPSON], product=0x014c [EPSON DS-510]) at libusb:001:005
...
$ scanimage -L
device `imagescan:usb:esci:/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4:1.0' is a EPSON EPSON_DS-510


スキャン


xsanesimple-scanといったSANEフロントエンドを使ってスキャン。


参考

自炊環境構築

自炊

漫画やら小説やらを少しずつ買い続けた結果、本棚に入らない本が平積みになってしまっている。
ただでさえ狭い部屋なのにこれ以上狭くなるのはつらいので、電子化を考えることにした。

手持ちの本を電子化する場合の選択肢はこの3種類。

  • 代行業者
  • 自炊機材レンタル
  • 自炊機材を購入

代行業者

自炊代行

一冊100〜200円程度(+送料)で裁断〜スキャンまでやってもらえるサービス。
スキャンは300dpi&一冊のページ数が多い場合は追加料金になる業者が多い。

裁断代行


本の裁断のみの代行サービス。
一冊数十円程度(+送料)。

(参考)

自炊機材レンタル

裁断機とスキャナのセットを一週間数千円や一ヶ月一万円程度でレンタルが可能。
一日あたり何冊程度処理できるかよくわからないので、費用面で代行業者や機材購入と比べるのが難しいところ。

(参考)

自炊機材を購入


自炊に必要なのは裁断機とスキャナ。
それぞれについていろいろ調べてみた。

裁断機

いろいろ調べたところ、裁断機は全体的に大きい。狭い部屋なことを考えると、少しでも場所をとらない方がありがたい。

という観点で調べると、それなりの枚数を裁断できるものであればハンドルをおろした状態で収納できるDurodex 200DX(\37,800-)がよさそう。
もしくは、一度に裁断できる枚数は少ないが圧倒的に安いCARL DC-210N(約\9,500-)か。

上記裁断代行の値段を考えると、Durodex 200DXなら400冊、CARL DC-210Nなら100冊以上裁断するなら買ったほうが安そう。


スキャナ

メインで使っているマシンがUbuntuなことを考えると、Linuxで使えるスキャナなことが望ましい。
Linuxでスキャナを使う場合、SANEを使ってスキャナにアクセスするのが一般的らしい。

自炊用で使われているスキャナについて調べたところ、候補がいくつかに絞られた。

  • 富士通 ScanSnapシリーズ(特に2009/02発売のS1500や2012/11発売のiX500)
    SANE対応済(S1500:complete, iX500:good)。
    一番メジャーなシリーズ。価格は3万円台後半〜4万円台前半。
  • Canon DR-C125 (2011/07発売)
    SANEではuntestedになっているが、Canon EuropeのサポートページにLinux用ドライバ(SANE backend用)があるのを発見。
    価格は2万円台後半。
  • EPSON ES-D350 (2012/05発売)
    SANE対応済(good)。
    2013/11に後継モデルのDS-510が発売された。さすがにこちらはドライバがないかと思ったが、セイコーエプソン株式会社が提供するLinuxドライバの中にDS-510も含まれていた。
    価格はES-D350、DS-510ともに3万円台前半〜中盤。
  • ブラザー ADS-2500W (2012/10発売)
    公式のLinuxドライバがある。
    Webの設定管理機能があったりPCを介さずクラウド上に保存する機能があったりと他社とは少々毛色が違う感じ。
    価格は3万円台前半。

400冊程度スキャンするなら自炊代行より買ったほうが安くなりそう。

ScansnapはLinuxで使った/使えたというblog等々見つかるので問題なく使えそう。
それ以外はそういった記事が見つからず、ドライバはあるもののホントに使えるのかが微妙によくわからない。

(参考)

ではどうするか?


家にある本は350〜400冊程度、これからも増えるんだろうな〜 ということを考えて一式揃えることに。
ということで下記2点を購入。
特にスキャナはUbuntuでどこまで使えるか半分博打なところはあるけど、それはそれで楽しめそう。

2014/01/11

SONY WALKMANでのAAC再生

SONY WALKMAN NW-A850


通勤中などに音楽を聞く用途の場合、ノイズキャンセリング対応&そこそこ小型、というのが重要。

ということで、普段はNW-A850を使用している。


こいつを使用する上で、不満だった点がいくつかあった。
  • 24h使用しないとスタンバイモードから電源OFFになるが、電源OFFになると再生していた場所を忘れる
  • Vorbisに対応していない
  • AACに対応と書いてあるが再生できない?

これらのうち、最後のAACの件について少しだけ進展したのでメモ。

aacの再生できなかった状況


NW-A850の仕様一覧を見ると、音声圧縮形式としてAACにも対応、と書いてある。

しかし、*.aacなファイルを入れても再生リストに出てこない。

実は再生不可能なフォーマットになっていて、そういったものはリストに出てこないのかと思って*.wmaで48kHzなファイルを入れてみた。

しかし、再生リストには出てくるが未対応のフォーマットです、と怒られる。ということで再生可能かどうかはあまり関係ないらしい。


aacが再生リストに表示されない原因


WALKMAN用のファイル転送ソフトであるx-アプリに関するWikipediaのページを見ると、aacに関するコンテナフォーマットとしてMP4(*.3gp,*.mp4,*.m4a)と書かれていた。

つまり、拡張子が*.aacで再生リストに表示されなかった理由はコンテナだった。

AACといえば拡張子はaac、と思っていたので、まさかコンテナの問題とは思わなかった…



aac→m4aの変換方法


aacからm4aへの変換はffmpegでできる。

ffmpegで音声変換を行う際の基本的な書式はffmpeg -i <input_filename> -acodec copy <output_filename>だが、どうやらffmpegでは出力ファイル名として*.aacが指定された場合には素のAAC、*.m4aが指定された場合にはMPEG4コンテナに格納されたAACを出力するらしい。

そのため、<input_filename>*.aacを、<output_filename>*.m4aを指定することでAACファイルをMPEG4コンテナに入れることができる。
今回は下記のようなシェルスクリプトを作って一括で変換。

#!/bin/bash

IFS=$'\n'

for input_file in $*
do
/usr/bin/ffmpeg -i ${input_file} -acodec copy ${input_file%.*}.m4a
done

変換した後にWALKMANへコピーすることでリストにも表示されるようになった。

しかし、再生してみると再生はされてるようだけど音が出ない…
詳細情報を見るとビットレートが0kbpsと表示されているのでまだ何かがおかしいらしい。
原因はなんだろうなぁ…


(追記)
いろいろ試してみたところ0kbpsと表示されても再生できるものもある。
  • ダメだったもの: 48kHz / 49kbps
  • 再生できたもの: 44.1kHz / 49kbps, 98kbps, 194kbps

ちなみにNW-A850の仕様には下記のように書いてある。
本体で再生可能なAACファイル形式フォーマット:AAC-LC
ビットレート:16-320kbps(VBR)(サンプリング周波数によっては規格外および保証外の数値も含みます)
サンプリング周波数:8/11.025/12/16/22.05/24/32/44.1/48kHz

サンプリング周波数によっては規格外および保証外の数値も含みますに引っかかってしまっているのかもしれない。


(追記 その2)
先日スペインへ行った際に、WALKMAN本体を紛失してしまった。
そのため試行錯誤も終了。


参考