maaash.jp

what I create

ffmpegで動画に字幕を焼き込む

動画と字幕ファイル(.srtファイル)を別々に受け取り、動画に字幕を焼き込む(ハードサブ)お仕事のmemo

前提知識

srtファイルは、テキストファイルに字幕のテキストと、その表示開始時刻、終了時刻を書いたテキストファイル

assファイルは、srtファイルに加え、フォントやフォントサイズ、影などのスタイルを含んだテキストファイル

事前準備

ffmpegを --with-libass オプション付きでビルドする

1
brew install ffmpeg --with-libass

Aegisub Advanced Subtitle Editor をインストール

作業

ffmpegを使って、以下のようにsrtファイルをassに変換することができる。

1
ffmpeg -i subtitles.srt subtitles.ass

ところがこれで生成されたassファイルを動画に焼き込もうとすると、
(ffmpegが生成した)スタイルの指定に問題があってそれをffmpegがスルーするのか、
スタイルの設定が反映されず、16ptのArialフォントになってしまう。

ここで Aegisub を使う。
Aegisubでsrtファイルを開くと、srtファイルに文法エラーがあった時に、行番号を丁寧にも教えてくれるのでsrtファイルを修正する。
最後に Save Subtitles as でassファイルに書き出す。

で、焼き込む

1
ffmpeg -i in.mov -vf subtitles=subtitles.ass out.mov

とりあえずできた。

ニコ技シンセン深圳観察会に行ってきた #sz1208

ニコ技シンセン深圳観察会 というグループを発見、参加して、チームラボ高須さんに導かれ 2014-12-08 - 2014-12-13 と深圳に行ってきた。高須さんには本当に感謝。

(追記 2014-12-23)
他のみなさまのブログ記事も参考にどうぞ
第2回 ニコ技深圳観察会 2014年12月 感想まとめ(更新中) #sz1208

長い記事になりそうなので最初にまとめ

生産者として

Untitled

プロトタイプまでは深圳でやるのが最速そうだ。
dangerous prototypes のように深圳に住み、BBQをしてファーチャンペイの人達と信頼関係を育み、無限の玉石の中からよい部品屋さんを見つけられる関係性を築く。
基板は発注すれば24時間で届く。
haxlr8rの人達が一週間で一ヶ月分はかどるというのは控えめの表現だろう。
魅力的だ。

製品の生産はまだ日本でやりたい。
信頼関係が損なわれたら粗悪品が混じるかもしれないところからは製品向けの部品は買えない。
調達以降の工程も同様。
自分は信頼できる工場が国内に既にあるし、生産は得意な人に任せ、ストレスなく進めることが自分にとっては優先度が高いので、多少高くても日本でやろう。
もちろん日本の工場の人も偶然の積み重ねで出会えたわけで人次第。

Untitled

消費者として

Untitled

結果としてファーチャンペイで自分が買ったのは、カメラ&microSDカードスロット付きクアッドコプター@5000円のみだった。
小さなiPhoneやgoproコピーなどのように、機能に工夫を凝らしたコピーものはあるので、今後独自の発展を遂げて数年中には最新技術を使ったオリジナルの製品が果てしなく並ぶところになるだろう。
電動1輪車はそのようなものの1つか。
現時点で技術的に先端に近いものが最安で買えるのは確か。
コピーであることやルールを無視する生産者にお金を払うのは、コピーされる側、ルールを守る側の気持ちを考え、応援する人にお金を払いたいという意味では抵抗がある。
ハードウェアだけにお金を払う時代でもないが、、

Untitled

生活する場所として

Untitled

中華料理は、油多めとは思うが野菜多めで安心する。
食事のバラエティーは日本に勝てるわけもないが満足した一週間だった。
深圳の人達は人柄もよく、街は過去経験した中国の街よりは喧騒もおとなしく、治安もよく、笑顔も素敵でよかった。
空気は日本よりは悪く、商業地区の周りはゴミが落ちてるし汚いが、OCT周りなど自然が多かったりおしゃれだったり綺麗な地域もある。
地価は日本の地方くらいか。
結論、住むのはあり。


seeeedstudioでプレゼンした資料


#sz1208の自分の全写真

以降は日記および記憶の引き出しを開けるきっかけ

2014-12-08

羽田からキャセイで香港へ
キャセイの機内食ひどいな、こんなだったっけ
Tom Cruiseのまどマギぽいシナリオの映画が見れたのでよかった

香港からは一度も出ずにそのままフェリー経由で深圳へ
スムーズ
無人の電車なんて運用できるの日本くらいだろと思ってたがきれいに裏切られた

蛇口でGlobal WiFiで借りたWiFiルータ、日本で契約したhopemoonというVPNアカウント使ってGmail, Facebookにつなぐと一安心。
地下鉄に乗ってヤンナン到着、そこから徒歩5分ほどで宿へ

蛇口のタクシーの客引き、ホテルの受付のお姉さんがもう1人の masakazu と間違えそうになる、予約が見つからない、宿代ちょっとぼったくろうとする、
といった小トラブルはあるものの中国にようこそ、といった挨拶みたいなものか

夜は日本人のみなさまとお鍋。新宿で食べた、白・赤のスープに串をセルフサービスで選んできて食べる方式。うまい。

(ここでぼったくろうとしていると思ったのは中国に対する過去の悪いイメージの影響で、チェックアウトする時に余計に払った分を普通に返してくれたので自分の疑い深い心を反省したし悪いイメージがふっきれた)

2014-12-09

深圳の治安がよい
深圳は、景気がいいから、頭のいい人たちはみんなまともな仕事したほうがもうかる=治安がよくなる
日本では景気が悪いから、頭のいい人たちが巧妙な犯罪を犯すようになる=治安が悪くなる
とtksさんとバスの中で話したのが印象に残る。
日本でこれから一番心配なのは基本的な治安が維持されるかどうか。

seeedstudio

たかすさん解説付きのseeedstudioプレゼン
seeedの売り上げの内、オンラインの販売が一番多い、その中でもアメリカ、フランス、ドイツ、その次が日本。

Googleで “製造” と検索すると深圳に1万件以上ヒットする。

Untitled

seeedの人に何度も話を聞いているというたかすさんの知識がすごい。
もっと具体的な生々しい話が聞きたかったがそれは今後自分のプロジェクトを持って行く際のお楽しみにしましょう。

IRKitをseeedstudioで売ってくれないか、プレゼンをして個別にも話す。
seeedの方でまとめ買いする形もOKだし、売れたら払う形式でも可。
製造の方もだけど若い人達だからか、なんでも柔軟に対応するからやりたいことを言ってよ、という感じ。

秋田さん、江藤さん、稲見さんの研究内容の話、おもしろかったのでプレゼン資料公開されたらじっくり見よう。
LEDは光りを受けると微少な電流が流れる、という秋田さんのデバイスもおもしろいし
ニコニコ学会の理念に共感し、jins memeの実物を見られた。

seeedstudioのオフィスと同じビルにある工場を見学、その後外部の委託先の工場(金属CNC,基板製造,樹脂射出成形) を見学。
IRKitをつくっている岐阜、都内の工場でも似たものは見たが、
規模(でかい)、清潔さ(汚い)、安全性(危ない)、働いている人の年齢層(若い)、時給(安い)が全然違う。
程度問題だが、規模については、量が質に転換するラインを越えている。
5階建ての団地がぽこぽこならんでる上から下まで全部工場という。。
地平線まで全部工場。。

Untitled

これは50年前の日本だろうか。
公害病が発生して安全性が問われ、労働組合ができ、子供が減り、日本のように成熟していくのだろうか。
そこに文化の違い、時代の違いによって成熟の仕方が異なって違う形の製造業ができていくのか、継続的にみていきたい。
日本の時には、少しでも技術的に工夫をすればすぐにエンドユーザーが体感できるメリットが発生したが、今はそれが難しい時代な気がする。
日本の成熟の際には、ここにあるような多様性はなかったんじゃないかな。必要なかったから。
成熟のスピードは速いでしょう。世界に求められているから。

IRKitの次の自分のプロジェクトの生産を深圳でやりたいか、、
今日の印象ではどちらかというとネガティブな方に傾いているが、、もう少し様子を見よう。

生産者としてより、消費者としてここを楽しみたい気持ちが強い。

2014-12-10

Makeblock訪問

Makeblock

メカを含めたlittlebitsみたいなものを売っている会社。
歯車と金属の柱を組み合わせてあらゆるものを作れるキット。
ロボットハンド、二足歩行、3Dプリンタ、チップマウンタ、自動シール貼り機、お絵かきロボット、レーザーカッター、ライフルのようなものや意味もわからない構造。
なんでも作れる。

Untitled

プログラミングはScratchのインターフェースで、モータやフルカラーLED、超音波距離センサなどを操作可能にしていて、さらにそれをArduinoスケッチとして書き出せる。
書き込んでしまえばパソコンから切り離しても動作する。
Scratchは初めて使っ(ているのを見)たが、ドラッグアンドドロップで自由にできるのは楽しい。
さらにその操作対象にモータがついていて動くのだからすごい。
なんでも作れる。(2度目)

Untitled

PCと、センサやモータ等とのインターフェースとなるボードも電話線のケーブルにI2Cと電源を通していて賢くコストダウンしている。
これはしっかりワークショップなど開けば広まる可能性があるな〜
開いているワークショップのビデオ見ても作例が幅広くて楽しい。
Fablabにも向いている。
IRKit連携もできるかな??
でもまだちょっと高いな〜、木をレーザーカッターでカットして、モーター部分は手で回すことにして安価に同じような作例のバラエティを出せる、正確性などを犠牲にしたものが作れるんじゃ無いか。

中国では基本的にはあるものをぱくってベースにした上で機能を追加削除するメーカーか、生産に徹するものが多いという。
Makeblockのようなクリエイティブな会社は少ないという。
そうだろうか。

昼食ではMakeblockで手伝っている Patrick と話す。
DNA,RNAを模した粘土の作品をつくる元アーティストであり、Maker。
ここでは物価の割に稼げるから滞在していて、英語を教えつつLEDが好きで何かをつくろうとしているが、
稼いだら旅に出たいという。
ドイツ人なのだから仕方が無い。
浄水器をつけて水道水を飲んでいる。水に重金属が入っていて沸騰させれば死ぬ細菌よりそっちの方が気になると。
食物の安全は気になるけど、、信じるしかないよね、、そうだよね、、

Untitled

日本人工場訪問

2000年代、大手メーカーくらいしか深圳へ進出していない頃に、日本企業の深圳への進出を支援している団体。

聞くほどに、中国人と日本人の文化、性格の違いを知ることになる。
旧正月の休みの間に実家に帰ると、工場の工員は一度雇用がリセットされ、50%程度が帰ってこない。
実家でお見合いしてそのまま結婚したり、古い友達からより払いのいい工場の話を聞いてそっちに移ったり。
電話もなく辞めていくことも多い。
旧正月をまたぐようにラインを動かさない方がいい。
管理職は別で、何年もいっしょにやってくれる人もいる。
当たり前の話で、管理職に昇進をしていけば仕事は単純でなくなるし大事にされていると感じるし賃金も上がる。

賃金は2014年が最低1800元(=36,000円)
来年には2000元を超えるだろう。残業代は多すぎてもだめ、少なすぎてもだめ、適切に出して、
社会保険料を出すと月3000元。
大手車メーカー(車は今作れば作るほど売れる市場)はそれにさらにボーナスを12ヶ月とか出す。賃金はすごい勢いで上がっている。
賃金が少しでも高いところにすぐに工員が移動するのでつらい。
年間離職率は100%を越えている。つまり1年以内に辞めるのがほとんど。
日本人は、「お世話になったから」という考え方があるが中国人には無い。
その状況に対応するため、日本人が作業工程を工夫して、なるべく経験無しにでもよい品質を出せるようにしている。

JENESIS訪問

JENESIS

むかしの?Cerevoの製品、Androidタブレットや独自製品geaneeブランド、イオンの携帯などをつくっている。
小ロット生産してくれる。
DMM Make.Akibaでプロトタイプをつくった後に、ここで量産してほしい。
JENESISみたいに小ロットを受けてくれる会社が増えないと、Makerムーブメントはキーワードで終わっちゃう。
樹脂は型にお金がかかるが、CNC削り出し(LiveShell Proで採用)は初期費用が少なく小ロットに向く方法や、鉄板を曲げてつくる方法もある(単価はあがるが)

Untitled

日本人の仕事を深圳の工場が受けてくれなくなっているという話。
注文は多い、出口を決めない(こうしてくれって言わずにだめだしだけする)、見下している、値切る、数が少ない。。
値切ったらしれっと途中から質の悪い部品を混ぜてきたりする。。
そりゃそうだ。

2014-12-11

HuaQiangBei (フアチャンペイ?) を巡る

電気製品に関するあらゆる部品や完成品がある。
LED、コネクタ、バッテリー、シール、コンデンサ等あらゆる電子部品の専門店が地平線遠くまで広がっている。
それぞれがただの2mx2mのブースであり、オンラインで買ったものをここで受け取り次の場所に運ばれていく。
カメラモジュールの専門店とレンズの専門店、そしてそれを組み合わせた監視カメラ、Webカメラの専門店がある。
素材を集めて合成して市場で売るオンラインゲームのよう。
果てしない。

Untitled

クワッドコプターを買ってしまった。
カメラ無しのものが 100元(=2000円), カメラ付きでSDカードに保存する(リアルタイムには映像を見られない)ものが 250元。
前者は150元から、後者は300元から値切れた。
その場で試させてもらってちゃんと動くし安定している、いいものだ。

交渉すると人の良さが伝わってくる。
深圳は人がいいな〜、今までの中国のイメージとは違う。
田舎の人なつこい表情をする。
若く、景気がいいからか。
こういう表情をする人がいるところを豊かというんじゃないか。

Dangerous Prototypes

自分はプロトタイピングを行って1品モノをつくり、ガーバデータと検査仕様をseeedstudioに送って生産及び販売をしてもらっている。
ファーチャンペイで部品を調達、300元(=6000円)払って24時間で基板が届く。
これは速いわ。

Q 無限にある部品屋の中からどうやっていいものを見つける?
A 安いものを買って品質が悪いのは当然、品質がいいものはそこそこの値段する、それでも他から買うよりは安い。
ここに住んで、毎日ファーチャンペイに通い、BBQをして近所の、ファーチャンペイで働いている人達を呼んで仲良くなっていいところを教えてもらう。

Untitled

Haxlr8r

ハードウェアスタートアップのチームを深圳に連れてきて、
困難を乗り越えられるよう支援して
クラウドファンディングをほぼ100%成功させているアクセラレータ

Meet OTTO - The Hackable GIF Camera の人

Untitled

Quitbit - The first smart lighter and app to track smoking の人
喫煙者にとってはプレゼントによさそう

Untitled

共同創業者の貴重さについて話す。
IRKitにも次も共同創業者いないんだよね〜
アイディアを誰かと話しているときに思いつく、というような始まり方でもなければ、同じアイディアに対して複数人が同じ熱意を持って取り組むことなどできるのだろうか?
熱意が同じでなかったら、ハードウェアをつくる時の試練を複数人で乗り越えられる気がしないな。

カスタム仕様のモーターも2日でつくれる

次のプロジェクトのアイディアを伝えて、どう?って聞いてみた。
いいんじゃないかな、その先のビジョンは?

ビジョンは無いんだよね〜

Haxとしても、Exit時のリターン以外のビジネスモデルが無いことについては問題意識があるようだった。
全プロジェクトが上場や売却まで行くだろうか、そこまでいく可能性がないプロジェクトを支援できないというのはもったいないのでは。

2014-12-12

午前中は仕事
昼はホテル近くの高級レストラン。仕事のストレスで消耗すればアンパイを選びたくもなるものだ。こういう仕事は減らさなければ。
鉄観音うまい。青野菜が多いのが中華はよいなー、野菜が足りないと思うことはこの旅行ではなかった。

Untitled

16時
Hacker spaceへ向けて出発
最初のmakerfaireがあったというおしゃれな場所
なんだちゃんとクリエィティブじゃないか
スタバの似合う場所
たかすさん語彙で 美大生がいるような場所

Untitled

makerspaceは3Dプリンタとペーパーカッターや工具が並ぶ普通のfablabのような場所
そこでmakeblockのultimate robotキットを組む

Untitled

まずは一度マニュアル通りにやってみて、その後seeedstudioが持ってきてくれたセンサなどをつけて拡張していこうというところ、21過ぎてやっと完成したのでマニュアル通りに作るだけになってしまった
XYプロッターは先端にレーザつければカッター、エングレイバーにもなるし、3Dプリンタにもなるしわくわくする

Untitled

makeblockはマニュアルにミスが少なくとも3箇所あり、六角で締めるネジも六角形の穴が埋まってて使えなかったり、iPhoneアプリは落ちるし、クオリティは低かった
メインボードからモータなどにつなぐケーブルはわかりやすいかと思ったが、何番ポートにどのモータがつながってるかわからないからアプリのUIからポート番号を選ばないといけないし、これはもっと自動的に賢くできるだろう。
組み上がったものもモーターが一個動かず、これはもちろん自分達の組み方に問題があった可能性はあるが、ここからデバッグするのは大変そうだ。

まだまだ荒削りだが、体験は楽しかった。
IRKit連携して外からロボットを動かしたり状況を見れたり、といった応用をしてみたかった
手でものを組み合わせて形ができるだけでもレゴのように楽しいのに、それがスマホから操作できるし自律的にも動作させられるのだ
熱い

Untitled

夕飯は近くの鍋屋さん
これがまたうまい
蓮の実
鶏肉も牛の肉団子も締めの麺も

個人的な外交について話した。
I think non sense conversation like we’re having right now, is very important for our national security.
日本人ひとりひとりに中国人の友人がいれば戦争など起きない。

2014-12-13

チェックアウト
小籠包
電車
フェリー

Untitled

BLE Bootcampとwillpowerの話

BLE Bootcamp というイベントで 1台->1000台 IRKitの例 という話をしてきました。

振り返れば、「おれよくやったな〜」と思うほど大変でストレスフルな体験だったんだけれど、IRKitの販売までたどり着けたのは、willpowerをうまく使ったから なんじゃないかなあと思ったので、willpowerを軸に話を展開してみました。

willpowerとは、What You Need to Know about Willpower:… によれば、

Defining Willpower We have many common names for willpower: determination, drive, resolve, self-discipline, self-control. But psychologists characterize willpower, or self-control, in more specific ways. According to most psychological scientists, willpower can be defined as:

  • The ability to delay gratification, resisting short-term temptations in order to meet long-term goals.
  • The capacity to override an unwanted thought, feeling or impulse.
  • The ability to employ a “cool” cognitive system of behavior rather than a “hot” emotional system.
  • Conscious, effortful regulation of the self by the self.
  • A limited resource capable of being depleted. (強調は引用者による)

訳しつつ要約すると

  1. 使い果たす可能性のある限られた リソース
  2. 長期的なゴールのために短期的な誘惑に逆らう力
    迷惑な考え、感覚や衝動を乗り越える容量

で、中でもリソース、っていうところが心に残ったポイントです。

自分の解釈と経験では、
要はwillpowerとはやる気なんだけど、
willpowerは有限であり、長期的な目標を達成するためには、
自分のwillpowerの増減傾向を把握して、willpowerが枯渇しないようにコントロールすることが大事なんじゃないか。

例えば自分のwillpower増減傾向は

  • コードを書く間はwillpowerを消費しない
    むしろ満足できるコードを書くと回復する
  • 知らない人とコミュニケーションをとるのは
    willpowerを大量に消費する
  • めんどくさがりやである
    申込書を書くのはwillpowerを大量に消費する

となっていて、コントロール方法としては、

「知らない人と話すのはwillpower消費するから1日1回までにしよう」

というようなことになります。

こういった、辛いことを十分な睡眠をはさみつつあきらめてしまわない程度に
なんとかこなしていくことで長期的な目標を達成できる可能性が上がるのでは!

ということで、お金と時間と同様にwillpowerを貴重に消費しようと考えている次第です。


さてこのBLE Bootcampは本当におもしろいイベントでした。

気になっていたデバイス 鍵ロボットakerunSonyのmesh を開発している人達が来ていたり

@u_akihiroも恐れていたけどぶっとんでいておもしろく、猫とロボット社 の人やトリガーデバイスの方々にもお会いできてよかったです。 参加できてよかった。

参考

colloさんと財布をつくった

collo さんにフルオーダーで財布をつくっていただきました。

Untitled
数ヶ月使い込んだ今の姿

前の財布は実に約20年前にもらったもので、
ほぼ毎日使っていて思い入れも強く捨てられなかったのですが、

あらゆるところから小銭がこぼれ落ちるほど革が破れてきて
さすがにあれなのでcolloさんにお願いすることにしました。

自分の財布の使い方を思い返すと…

  • ずぼんの前ポケットに入れる
    通常の2つ折り財布くらいのサイズ以下であってほしい
    厚みは多少あっても問題無い

  • お金、カードを入れるものはいつでも財布1つだけ
    別に小銭入れや定期入れをもたない

  • カードのフォームファクタのものはいつでも10枚以上いれている
    クレジットカード、病院のカード、免許証、保険証、等
    そのうち半分くらいはよく使うもの

  • 小銭は財布にあれば優先的に使うのでたくさん貯まることは少ないけれど、重なったりして取り出しにくいといらっとするので広めに確保したい お札もそこそこ入れたい

というところ。

こんなレイアウトの財布を使っていて image
写真の奥の、糸がぺろっと出てるのが先代
特にカードが辛い。
たくさん入れると革が突っ張るし、カードが革との摩擦で止まっているので落ちやすい。
小銭ポケットが小さい、お札は余裕で入るがむしろ無駄

財布に何も入っていない状態が一番きれいに見えるようにデザインされてるんじゃないか?!

いつでもカードたくさん入ってるからその状態が一番きれいに見えるようにしたい。
ということでcolloさんといっしょに考えました。
これが楽しい。

中略 colloさんの記事 オーダー製作記/ 二つ折り財布

Untitled

o_8s-300x300
こちらの画像はcolloさんより

こんな構造見たこと無い!?
画期的や

カードたくさん入る!
マチがついてるから取り出しやすい!
カバーがあるからカードが落ちない!
小銭のポケットが広いし大きく開く!
にも関わらずレイアウトのおかげで縦横の長さが短くなってる!(分厚いけど)

ということで満足してるしすごく楽しかった。
自分の使い方からくる制約、素材の制約の中で自由に「こんなレイアウトどう?」とかって話しながら自分の満足を最大化する。
違う分野のエンジニアリングに触れる楽しさもある。

同じような財布の使い方をしている人は色違いやちょいカスタムで、
そうでない人はお値段もお手頃なのでみんなオーダーすればいいと思う。 http://collocollo.com/

mbed祭りに行ってきた

mbed祭り2014@夏の東銀座 に行ってきた。

積み基板大放出特設コーナー で STM32F0-Discovery をいただきましたー
ありがとうございます!
STM32はtokoro氏がいつも使っていて気になっていました。

以下はメモ

mbedの概要と最新情報

商用でも利用可能 オープンソース - Apache 2.0

IRKitはArduino派生でATMEGA32U4を使用しているけれど、
入手しにくいしそのおかげか価格もスペックの割に高いしROM,RAM容量が辛いので乗り換えたいところ。

mbed Enabledな製品ってもうあるのかな?
(うおーるぼっとBLEがそうなるようだけれど)

コミュニティが育ってArduinoを越えてほしいなー

Freescale

何か作ったらフリスケに宣伝してもらえる

GoProにKinetis入ってる

KL02(自分が持ってる)をmbed対応する予定ある?
「無い」とのこと
残念

ニコニコ動画の新着動画表示器

青mbed+有線LAN自分もやってて懐かしい。
インターネットにつながるのが簡単なのがmbedのすごいところと思う。

HTTPやJSONについて丁寧に解説してて違う世界に来たな〜って思った。

Github連携したい!!

mbedってなに

CMSIS-DAP

debugアダプタと開発環境の組み合わせが複雑だったものを統一しよう
普及してほしい

ツボLink2ってなんだろ

うおーるぼっとBLE

熱い
ほしい
けど1万円以上だと高い印象ある..
BLEモジュールはBL600だった

壁走りロボットうおーるぼっとBLEはmbed Enabled!!

node-red / MQTT

あとで調べる

switch-scienceのひと

滑舌いいな〜

treasuredataのひと

こんなところでfluentdって単語を聞くとは
IoTなデバイスからデータをTDに投げ込むのか〜
おねえさんが、センサー + Raspberry Pi + fluentd + Treasure Data + αで自宅の揺れを検知&分析してみるよ①

人力飛行機シミュレータのひと

楽しそう〜

まとめ

Webの世界と組み込みの世界が交わってきてるな〜
楽しい

今度つくるものはARM,できればmbed Enabledにしよう

IRLauncher - Mac使用時に最速でエアコンをつけるために

IRKit というものを作るほど、エアコンに対する不満が強いようです。
というわけで、Macを使用している時に最速でエアコンをつけるためのアプリ IRLauncher をつくりました。

IRLauncher デモ動画をご覧くださいませ。

Terminalにいる時には ruby IRKit gemの提供するirkitコマンド が便利なのですが、
Macに向かっている時にはTerminal以外にもChromeやXcode,Emacsがアクティブな場合が多いので、グローバルなショートカット経由でよくアクセスするQuicksilver(or Alfred)にのっかるのがいいかな〜と思いました。

快適なエアコン生活をお楽しみください。

IRLauncher : Launch IR signals from your favorite launcher (Quicksilver, Alfred, ..)

IRKitはiOSのアクセシビリティ(スイッチコントロール、VoiceOver)に対応しています

iOSには、あまりメジャーでないかもしれませんが
設定画面にアクセシビリティという機能があり、これがよくできています。

IRKitシンプルリモコンアプリ では、過去ご要望があり、アクセシビリティのうち、スイッチコントロールとVoiceOverに対応しています(iPhoneのみ。iPadは未対応)
iOSの設定アプリ -> 一般 -> アクセシビリティ -> スイッチコントロール を開き、オンにした後、
リモコンアプリを開くと、以下のように、ボタンそれぞれの周りに青く枠が付き、スイッチコントロールの外部ボタンで選択(=赤外線信号を送信)できるようになります。

IRKit simple remote Accessibility

また、iOSの設定アプリ -> 一般 -> アクセシビリティ -> VoiceOver を開き、オンにした後は同様に、
このボタンの下に書いてある、「25暖房自然風」とかって文字列をiOSが音声合成して読み上げてくれます。

これを実現するのに追加で書く必要のあるコードが少ないのがiOSが「よくできている」と思うポイントですが、以下のような変更でこの対応を行いました。

この画面ではUICollectionViewを使っていて、各ボタンは、UICollectionViewCellを継承したクラスです。

1
2
3
4
// SSButtonCell : UICollectionViewCell
- (void)awakeFromNib {
    self.isAccessibilityElement = YES;
}
1
2
3
4
5
6
7
// SSMainViewController : UICollectionViewController
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath; {
        IRSignal *signal = [_signals objectAtIndex: indexPath.row];
        SSButtonCell *cell = [cv dequeueReusableCellWithReuseIdentifier: @"SSButtonCell" forIndexPath: indexPath];
        cell.label.text         = signal.name;
        cell.accessibilityLabel = signal.name;
...

これだけだし、accessibilityLabelのところを、漢字もうまく読み上げてくれるのだからすごい。

accessibilityLabelが音声認識対象になって、アプリ内でSiriと話せるようになるとSiriも使えるし、
多くのアプリがアクセシビリティに対応するようになるし一石二鳥でいいと思うんだけどな〜
iOS9で待ってます。

参考

サービスをつくるときには 「こういうユーザー層にこういう使われ方をするだろう」 と考えてその予測の精度がよいと、 いい仕事をした、という満足感がありますが、
(予測は当った上で) さらに想像を越えたところで使われ、 自分の想像力の欠如をよい意味で裏切られるのも、 嬉しいものですね。

ということで、最近もまたアクセシビリティ関連のお問い合わせがあったので検索用に書いてみました。

リモコンNKとIRKit対応アプリの申請方法

自分以外の人がつくったIRKit対応アプリがAppStoreに出たよ!!!!
リモコンNK [AppStore]

すごい!!!!!!!!!
こちらのアプリは事前に聞いていなかったし驚きました!
AppStoreに “家電操作” のカテゴリができる日も近い!

公式アプリに対して “もっとボタンを置きたい” という要望をいただいておりますが
開発者の @nakano_koumuten さんもその点に気づいたのか
公式アプリの不満点を解消してより高機能になっていますねー。

さて、IRKitというデバイスとセットで動作するアプリをAppStoreに申請して、
AppleにIRKitが無いのにどう審査するんだ?
という話。

自分の場合はデバイスが販売開始もしていないときだったので、 Review Notes (Optional) に以下のように書きました。

I’m going to manufacture IRKit device starting this Decemeber, and here’s some pictures of it. http://www.flickr.com/photos/99687464@N00/11311616785/ And a demo video using IRKit prototype device with the app. http://www.youtube.com/watch?v=4MdpfICnl3I&feature=youtu.be

動画は、URLを知っている人だけが見られる限定公開設定にしておきます。
こうすれば再生数を見て “Appleの人が動画を見たようだな” と知ることも可能!!

リモコンNKの作者の @nakano_koumuten さんは、以下の動画をのせたそうです。

よくできていますね〜
iMovieで字幕をつけたそうです。

申請用であれば自分のやつのような簡易的なものでも動作がわかれば通るようですし、
一般向けのアプリの説明動画としても使うのであれば一石二鳥ですしこのように作り込んでもよいかもしれませんね。

もしIRKit対応アプリを作ろうかな、と思っている方いらっしゃいましたらお気軽にご連絡ください〜
@maaasho.masakazu@gmail.com 宛てにどうぞ。

IRKitのハードユーザーとして、もしよろしければテスターとしてご協力させていただきたいですし、
公式アプリからIRKit対応アプリ群にリンクする計画もあります!
ぜひぜひ。

IRKit 3rdロットとモールスWi-Fiセットアップの終了について

Wi-Fi機能を備えたデバイスのセットアップ、そしてモールスWi-Fiセットアップについて のようにしてがんばって モールスWi-Fiセットアップをつくりましたが、
非常に残念ながら、それを捨てるときが来ました。

モールスWi-Fiセットアップ はIRKitの2nd Lotまでで役目を終え、
今週からAmazonに入荷予定の3rd Lotからは外します。
モールスに期待していたみなさまには本当に申し訳ないです。

基板はしばらくはそのままですが、マイクやアンプ、マイク周りの周辺部品は未実装とします。

理由はたくさんありますが、
その最大のものは、部品の調達がしんどいから、です。

1st Lotで使ったマイクは Hosiden の KUB2823 を使い、
それが手に入りにくかったので、2nd Lotでは似た仕様の Kobitone の 254-ECM6044-RO に切り替えました。
基板だってマイク調達の選択肢を増やすため、6mm径のマイクと4mm径のマイクがどちらでも実装できるように工夫してみました(これはうまくいかなかったが)。

IRKitの仕様にあう特定のマイクの在庫を 500個 も抱えているところは無いし、部品を切り替えるためには評価することになるし、何ヶ月後に入荷するマイクをまとめて大量に買えるほど自信もない。
マイクがなかったとしても、個人がデバイスをつくるにあたって部品調達が一番しんどい(と私は感じた)、ということは IRKitの作り方 にも書いたとおりです。
なるべく部品を減らしたいのです。

他の理由も。。。
iPadやAndroidの機種達ではマイクの音量が大きく、IRKitの筐体の音響設計がなされていないためか、iPhone以外の対応機種を増やそうとすると認識精度を高く保つためにArduino側のマイク周りの回路やモールス信号デコード処理を改善する必要があるがプログラムメモリが足りない。
Wi-Fiアクセスポイントに接続できなかった時にその理由がフィードバックされないので、モールスが失敗したんだろう、と思い込みやすい。実際にはパスワードを間違えただけであったとしても。
などなど。

多くの場合はうまくいくし、うまくいった時の感動は素晴らしいのですが、残念です。

結局、これからはモールスの代わりに、
先の記事 の最初に書いた方法: IRKitがWi-Fiアクセスポイントになり、設定アプリからIRKitのアクセスポイントに接続する方法を使うことにします。

IRKitのアプリ側のデザイナーのしーほ の神デザインの助けもあり、この方法でも意外とスムーズにセットアップできるのではないか。
むしろかなりスムーズであると思います。
実際どうなのかは体験してみてください!
IRKit on Amazon

さて、モールスが大好きなあなたにとっての参考情報です。
IRKitはArduino派生商品であるので、IRKitの3rd Lotを購入し、モールスで遊ぶのに必要な以下の部品を購入し、IRKitの回路図 を見ながら未実装であるパッドに部品をハンダ付けし、Arduinoのプログラムを書き込むとよいでしょう。

回路図の下半分中央辺りに “MICROPHONE” と書かれたエリアがあります。
その部品番号と以下の部品表が対応しています。
少量購入する際に便利なショップのURLものせておきました。

Wi-Fi機能を備えたデバイスのセットアップ、そしてモールスWi-Fiセットアップについて

IRKitのように、スマートフォンとWi-Fiで接続するデバイスをつくる際には、
どのように家のWi-FiのSSIDやセキュリティの設定(WPA2なのかWEPなのか等)、パスワードをどのようにスマートフォンからデバイスに伝えるのか、ということが問題になる。

スマフォからは同時に1つのWi-Fiアクセスポイントにしか接続できないのだから、
家でも使うデバイスなのであれば、デバイスが家のWi-Fiアクセスポイントに接続することになる。

だがデバイスには入力用のインターフェースがない。

一番思いつきやすいのが、デバイスがWi-Fiアクセスポイントになり、スマフォからそれに接続して家のWi-Fiアクセスポイントの情報を伝える、という方法。
だがこれでは自分のアプリ内でセットアップが完結しない。iOSであれば一度設定アプリを開き、Wi-Fiの設定からデバイスのアクセスポイントを選択し、、となる。

興味深い事例をいくつかご紹介すると、
Eye-Fiカードでは、一度PCにつなぎ、PC上のセットアップツールを使い、Eye-Fiカードが接続するアクセスポイントの情報を直接カードに書き込む。

この方法だとアクセスポイントはプルダウンメニューから選択できるのでSSID等を手入力せずに済むし、Wi-Fiに接続できなかった場合にデバイスからのフィードバックもあるが、PCにつながくてもセットアップできるとなおよい。

Electric Imp というWi-Fiモジュールでは、光の点滅をデジタル信号のようにして使う BlinkUp Technology を使う。

スマフォのディスプレイがチカチカするのだ。かっこいい。
オープンソースにはなっていないし、Wi-FiモジュールとしてElectric Impを採用する必要があったがIRKitではそれは別の理由でできない。TELECも2014年3月現在取得していない。

IRKitをつくるときには、他のWi-Fiモジュールを使いつつこれをぱくろうかと最初は思ったが、
Patent Pendingと強調されているし、探すと申請中の特許 Optically configured modularized control system to enable wireless network control and sensing of other devices も見つかったのでびびってやめておいた。

光がだめなら音はどうか。
モールス信号はかっこいい。

(中略)ということで音でいこうと決めた。

Arduinoでモールス信号の送受信を試している人も何人かいて google: arduino morse 、それらを参考に組んでみた。

モールス信号 は、長音と短音、無音区間の比率を規定するもので、速度は WPM という単位を使い、可変である。
WPM は Words Per Minute の略。
Word は “PARIS” を基準とする場合が多い。
つまり .__. ._ ._. .. ... (ただし ‘_’ が長音, ‘.’ が短音, ‘ ’ が文字区切りとする) の長さである。
長音1つは短音3つに相当し、
各音の間には1短音分、文字区切りは3短音分、単語区切りは7短音分の無音区間があるので、
“PARIS” は 50短音分の長さがあり、
WPM は 1分間で 50短音分の長さ をいくつ再生できるのか、という速度の単位である。

SSIDとパスワード+アルファを送ろうとするのに、何分もかかるようでは困る。
ということで IRKit で採用する際には高速化をはかった。

まずは鳴らす側、iPhoneアプリではモールス音を高速に鳴らすライブラリは無かったので、書くことにした。
できあがったものはこちら。
IRMorsePlayerOperation.m
モールス信号をサイン波のサンプルから生成し、ローパスフィルターを通し(サイン波を鳴らしたり無音にしたりする境目で発生するノイズを落とすため)、マイクから鳴らす。
AudioUnit, AUGraphを使った。

Arduino側はこちら。
morse.cpp

モールス信号は、長音と短音の組み合わせにアルファベットをマッピングしていく。
その表はこちら。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// # standard morse tree
// T _    M _ _    O _ _ _    CH _ _ _ _
//                            Ö _ _ _ .
//                 G _ _ .    Q _ _ . _
//                            Z _ _ . .
//        N _ .    K _ . _    Y _ . _ _
//                            C _ . _ .
//                 D _ . .    X _ . . _
//                            B _ . . .
// E .    A . _    W . _ _    J . _ _ _
//                            P . _ _ .
//                 R . _ .    Ä . _ . _
//                            L . _ . .
//        I . .    U . . _    Ü . . _ _
//                            F . . _ .
//                 S . . .    V . . . _
//                            H . . . .

ところがSSIDには日本語が使えてしまうので、SSIDをモールスで送ろうとすると困る。

IRKitでは以下のように [0-9A-F] と区切り用に ‘/’ に特化したマッピングを採用した。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// # hex+/ morse tree
// # 4,5 should be used more frequently than others because they're used in ascii alphabet
// 4 _    3 _ _    0 _ _ _    ? _ _ _ _
//                            ? _ _ _ .
//                 1 _ _ .    ? _ _ . _
//                            ? _ _ . .
//        6 _ .    8 _ . _    ? _ . _ _
//                            ? _ . _ .
//                 9 _ . .    ? _ . . _
//                            A _ . . .
// 5 .    2 . _    B . _ _    ? . _ _ _
//                            ? . _ _ .
//                 C . _ .    ? . _ . _
//                            ? . _ . .
//        7 . .    D . . _    ? . . _ _
//                            ? . . _ .
//                 E . . .    F . . . _
//                            / . . . .

これで厳密にはモールス信号ではないのだろうが、しょうがない。
文字列はUTF-8にエンコードしたものを16進にして4bitずつ1文字として送る。
例: “あ” -> “E38182” -> ... __ _._ __. _._ ._

iPhoneアプリでモールス音を再生し、Arduinoでデコードする。
安定して認識できた速度 100 WPM を採用した。
これでそこそこ長いSSIDとパスワードの組み合わせ+アルファを送るのに 12 秒。
セーフか。

こんなふうにして再生する、 100 WPM のモールス信号の音を参考までに置いておく。

この方式を モールスWi-Fiセットアップ と勝手に呼んでいた。