Snippets

対抗して作ってみた。

WIndowsの入力回りがだいぶまともに

二週間ぐらい前に Vaio Pro買ったよ報告をしたが、やっとキーボード回りが快適な状態になって来て使えるようになってきた。のでみんなに公表。我ながら偏った設定だと思うが、Unix系から流れた人には参考になることを希望しつつ。

のどか

autohotkeyymmyも試してみたが、のどかにした。

英語モードだと default2.nodokaをちゃんと読んでくれない (SJIS encodingになっていたらしい) とかではまったが、まともに使えるようになってきた。やはり emacs bindingから離れられない。

ということで、現状の設定ファイルをhttps://github.com/dagezi/nodokarc に置いといた。

Thumbsenseも当然ながら有効になっている。 やや困るのが、touch trackpad -> D-F -> untouch trackpad -> U-F のシーケンスで、最後に MouseUpではなく U-Fがそのままはかれてしまい、いろいろ整合性が取れなくなる。ここはちゃんと shift状態を保持してほしいが、設定ファイルでいじるところではない気がする。

やれやれ、subversionをinstallしないと。

Synaptics track pad

本当にこれはひどいMacBookユーザが Windowsに移行して使いにくいという原因の 8割がたは、この tuneされていない trackpadに起因しているのではないかとさえ思う。コンピュータに意志を伝える第一段階、マウスカーソルの反応が遅いと、どれだけ普段の生活にストレスを与えるかの好例。しかも脳みそは、それを trackpadのせいだと認識できず、Windows全体に非難は分散する。Windowsかわいそうだ。

てっきり、そういう tuneされていないデバイスは台湾製の PCだけかと思ったら、元Sony製の Vaioですらその状態だったというのはがっかりである。

ということでこの tuneはむちゃくちゃ重要、かつ生産性に聞くと思う。まだ Windowsで何も生産してない俺がそういっても説得力ないが。

以下、defaultから変更した設定項目を書いてみる:

  • Tapping: off。カーソルを移動しようとしてクリックになるかと思うと、怖くてカーソルも移動できない。
  • SmartSense: とにかく off。default onなのが信じられない。これを切ったらむちゃくちゃ反応性がよくなって快適になった。
  • Pointing-Sensitivity: これは一番 lightに。すぐに動け。
  • Button-Right Button Zone: Thumbsenseがあるので 0
  • Clicking-Two finger click action: Primary clickに。間違えて触ってしまって右ボタンメニューが出てびっくりするので。

でもまだ2本指スクロールがちょっと不満。MacBookほど反応性がよくないのは、deviceだけのせいではない気もする。

あと inactiveな window上での振る舞いが MacBookとちょっと違う。Macはカーソルがある部品がスクロールする。論理的整合性がないなあ、とか思ってたが結構便利だったことが、Windowsに移行してわかった。xmouseも試してみたが、active windowだけの問題ではなく、windowsの中の focused controlもあって、単にカーソルの下の controlが scrollするようにはならず、ちと不満。

windowsいいね

先週末に Windows 8.1搭載の VaioPro11を買った。というか正確には注文してたのが届いた。たぶん、ものを知ってる人にはなんで今更 VaioProなの、と言われそうな気もするが、Buildをみて Windowsに興味を持ち、いきなり店頭を見て現状のもので一番よさそうなのを探したらそうなっただけである。もう少し待てばいいのが出たのかもしれないが (実際、VaioPro mk2とか出て少しびっくりした) 果報は寝て待てじゃなくて思い立ったら吉日だし。

現状の感想を言うといろいろ面白い。まだ、Android Studioも入れてなくて実用段階にはなっていないのだが、それ以前のところではまって遊べている。単なるカスタマイズ厨になってるだけかもしれない。

そういう段階ではあるが、同僚に「windowsにもいいところあるんですか」とか煽られたので現状を書いてみる。

大きさ

まず、MacbookProなんかより軽い。900gぐらい。鞄に入れて移動しても腰が痛くならない。 Air対抗でしょうが、RAM 8GiBなので実力的には MBP相当だと思ってます。CPUは i5の 1.7GHzだけど RAMのほうが重要でしょう。

PocketBSDのころ、とまではいかないけど、FIVAと同じぐらいに気軽に、必要性をあまり考えずに持ち歩けるのではないでしょうか。

Metro

すまん、ちっとも使ってない。タッチパネルにはいいのかもしれないなあ。でもキーボード厨の自分には合わなかった。

キーボード回り

実を言うと、一番はまってるのがここだ。

昔は窓使いの憂鬱を使っていたもんだが、今は動かなくなってる。yamyというのが後継に当たるらしいが、ThumbSenseとの絡みで、同じニッチを占める autohotkeyを入れてしまった。また、xkeymacsもうまく動いていない気がする (現にいまこの textfieldで動いてくれない!) ので何とかしたい。

autohotkeyというのはいろいろ怪しいマクロみたいなのを書いてカスタマイズできて、ThumbSenseっぽい機能もこれで実現しているのだが、どうにも怪しい。Vzマクロに BASIC風味を入れたみたいな (Gosubとかある!) 21世紀にいるのが信じられなくなる奴だ。そこらへん、どうにかしたい。

IME

実を言うと、一番いいのがIMEかもしれない。自分は boiled-eggにかぶれて以来、勝手にローマ字かな変換してほしくない派なので、MS-IMEの「半角英数からローマ字かな漢字変換」というのを愛用していた。Macにはなかった気がする。GoogleIMEにちょっとパッチを書いたことはあるのだが、メンテするのが面倒臭くなってやめてしまった。

ということで、MS-IMEに戻ってその機能が使えるようになったので、かなり日本語が楽に打てるようになった。Macでは日本語打つのが面倒なので英語で memoをとったりしてたので、それはそれでよかったが。

開発環境

とりあえず、Visual Studio 13 Community Edition(だっけ)をダウンロードしただけです。C#とかちっとも書いてません。

開発環境じゃないけど、PowerShellもちょこっとやり始めてるところ。「使う気がない人向けの PowerShell入門」とかからリンクをたどってる。

やせ我慢

とりあえず、emacscygwinを入れずに当面は頑張ってみる。editorは Atomメインでやってみてます。 gitとかは scoopってので入れてみた。windows版 homebrewらしい。Rubyとかまともに使えるのかなあ。

Linuxとかも多分入れなきゃいけないことになりそうdけど、とりあえず 100GBほどパーティション切って放置してる。

まとめ

実用性を考えるなら、まだ MacBookProを買ったほうがよかったのかもしれないな。まあ、所詮趣味のPCだし。

Infield Top Aligned Label on Android

知り合いの facebook経由で以下の様な記事を見た。

hail2u.net

普通の infield labelは消えちゃうから駄目だし、かといって上に label 書くとうざいから fieldの中に書こうぜ! という話。一読してから、Androidでは難しいのではないかなあ、と反応したものの、本当は難しくないような気もしてきたので作ってみた。結果、そんなに難しくなかった:

github.com

あんまりオリジナルほどかっこよく見えないのは、自分のデザインセンスのなさです。あと、生年月日と性別を横に並べると Nexus Sぐらいの画面では切れちゃうので縦にしたのもいまいちですね。

そもそも使いやすさとは

元ネタでは「紙のフォームっぽいから使いやすい」とか書いてあった気がするのだけど、考えてみると紙のフォームそのものが使いにくかったことも多い。こういう枠が書いてなくて、下線の下にラベルが書いてあるのを勘違いして、ラベルの下 (つまり下線のさらに下) に書いてしまったりしたこともよくあった。世にはびこる UIを真似しても、実は BADUIだということもあるので気をつけねばなるまい。

4月にやったこと

ふと思いついて、4月にやったことのまとめ。なんとなく頑張ったなあ、と思ったので。

フレッシュ完走

自転車で 24hで 360km以上走るというマゾヒスティックなイベント、フレッシュ2015 に参加して完走しました。 コースとしては、山形は天童から裏磐梯、喜多方、鬼怒川を通って武蔵小杉に向かうという、最初山あり、後半平坦で楽に走れるコースのはずでした。でも最後の環七のアップダウンの多さでヘロヘロになり、時間切れしそうになって危うかった。 ブルベは、後半疲れてネガティブなことをいいあうのが楽しいと思いました。

自転車修理いろいろ

で、思い起こしてみるとフレッシュ以降も自転車をいじっていろいろ楽しかったのが 4月の充足感につながってるなあ、という気がする。

ブルベのためにペダルを変えたんだけど、それをちゃんとはめてなかっせいでクランク壊して、交換してもらったんだけど自転車屋がいい加減でチェーンががたがたで、自分でチェーン切って直したり。今となっては快調に乗れるようになった満足感高いっす。

自分のはカネかけてないけど、自分が制御できる範囲でいろいろ変わるのが自転車満足度高い。ヘタしたら簡単に死にそうだけど。

生命保険見直し

生命保険とかいうのは面倒臭いなあ、と思っていたのです。でも結婚した時に嫁に言われたのとかで入ったのが、更新時期が来たのでエイヤッと見なおして、保険料が安くなったのがめでたい。具体的には、いわゆる生命保険はやめて、ほぼ医療保険だけにしました。俺が死んだら実家でも頼ってなんとか自活してくれ、という意味です。

医療保険はいまでも元はとってないんだけど、年取ってからだと入れないかなあ、という恐怖のためです。ここも冷静に考えるとどうなのかなあ、という気もする。

あと、営業の人はやたら要介護状態のことを話してたんだけど (まあ、俺が死亡時の保障はいらないっていったからそこしか攻めるところなかったのかもしれない)、鬱とか精神衛生が問題になって就労不可能になったときはどうなるんでしょうねえ。コの業界だとそっちのほうが切実だと思うんですが。そういう保険ってないのかしらん。

Kotlinかわいい

potatotip 16 っていうところで発表したんですが、Kotlinやりました。まあ、面白かった。というか、発表ドリブンになって、そのあとコードいじってないのがいけない。うむむ。

IntelliJがちゃんとサポートしていて、正しい書き方教えてくれるのがすごく楽です。新言語やライブラリを覚えるときの負担がものすごく少ない。逆に IDEがないとかけない身にはなるけど、まあ、Javaだってそんなもんでしょう。

Kotlin自体は、Javaの冗長なところを省いていていい感じです。Groovyほどの自由奔放さもなく、おしとやかな感じ。Scalaのような重装備感もない。使っていくうちに不満もたまるのかもしれないけど。

Rxは、ちょっと強力すぎて、逆にぐちゃぐちゃなコードをかけそうでこわい、というのがおじさんの最初の感想。何も考えずに Observerを継ぎ足していってこまったことにならないかなあと。まあ、それほどでかいものを書いているわけではないので杞憂だったり、すでにベストプラクティスがあったりするんでしょうが。

JavaDay + Java CCC 2015

両方共 Java関係のイベントなんで一緒にしちゃいますが、JavaCCCの方が面白かった。そこでも Groovyやら Clojureやら AltJavaの話が面白かったんですが。Kotlinネタはなかったな。

Groovyは、ちゃんと聞くと強力だというのがよくわかりました。Spockとかで使ってますが、確かに、書いた本人も構文解析できないような強力さがあります。スクリプトとか書くと便利そうだとは思いますが、現職では Rubyのほうが流行っているのでわざわざ使う必然性も低いのが辛い。

Clojureは、括弧が安心させてくれますね、やはり。自分は Clojureは STMの文脈で興味をもったのだけど、そうじゃなくてもちゃんと使えるというのを教えてくれました。Emacsおじさんとしてはすかすかとコードかけそうな幻想を抱かせてくれます。

JavaOneは、lambdaの実装の発表が面白かったっす。Androidで使えないのがフラストレーションだったので。発表してくれた Davidさん、日本語上手でした。

DroidKaigi

これは、キャンセル待ちにして忘れてたら、当日の朝繰り上げメールが着てて、あわてて嫁さんに許可とって 3セッションだけ聞きに行った。ほんとは Pixivのひとの企画からの話を聞きたかったんだけど、自転車の錠わすれて、渋谷の錠売ってる店探してたりして聞けなかった。

@kmt-t さんの ARTの話がやはり面白かったかな。でも、自分がしってもいまのところそんなに利用価値がない話ではあったりするんだよな。

できれば、ちゃんと予定をとって全部聞きたかったですねえ。

というか、ああいう人気のカンファレンスになると、行けるかどうかわからないけどとりあえず予約しておけ、っていう人が増えてキャンセルが増えるんですかね。俺みたいなキャンセル待ち順位が低い人でも行けたってことは。そこら辺、無駄な予約に対するインセンティブが問題になるっていうのは、ムーンライトながらみたいだなあ。

仕事

最後になりますが、仕事の面でもそこそこやってます。

まず、Quipper社全体としていろいろ発展しそうなネタが出てきました。ここでは言えないのだけど、いままでやってきたことが認められた感じです。個人的には、なんとなく雰囲気で Quipper入っちゃった気はするけど、その選択は間違ってなかったかな、と。

個人の仕事としては、Android側だけではなく、サーバ側と協調してやらなきゃいけない機能が増えてきて、Rubyのコードも読んで設計するようになってきました。ただ、まだ書くのは時間かかるので頼んだりしてます。でもそろそろ挑戦する。MongoMapperよくわからねえ。

また、世界の趨勢、及び Quipperの狙ってるターゲットからすれば Androidっていうプラットフォームをもっとサポートするべきじゃねえ? という意気込みで、口出していってます。モバイルファーストとかぬるいこといってないで、オンリーモバイルなんじゃないの、と。まあ、そこは長年組み込みに関わってきたポジショントークもあります。

まとめ

なんとなく、連休初日に早起きして気分が良かったのでだらだらと書いてしまったのですが、お付き合いくださってありがとうございます。こんなところまで読んでる人いるのかなあ。 もしも読んでたらスターでもつけてくださると幸いです。

禅とロードバイク修理技術

ながらく乗っているロードバイクが、周期的にカチャカチャ音がなって力が抜けるようになった。なんでかよくわからないままとりあえず家まで 5kmぐらいのって帰ったんだけど、もしかしてフリーホイールのラチェットが壊れてるのかなあ、とか嫌な方向に想像は膨らむ。

で、ちゃんと明るい場所でチェーンを観察してみたのが次の動画:

www.youtube.com

かちゃっと音がするところで、チェーンの間隔が長くなって、プーリーから飛び出てるようだ。これで音がなる原因は分かった。チェーンを繋ぎ直せばすむだろう。大したことがなくてよかった。

これを見て思ったのは、ちゃんと落ち着いて調べれば、原因はわかるものだなあ、ということ。正直、疲れて帰宅しようとした時にこの音を発見した時は、ちょっと上から見ただけじゃさっぱりわからず、もうこの自転車だめかと思ったものだ。でも、ちゃんと工学的産物であるロードバイクは、いざとなれば異常の原因を把握できる (そのための技術もいまのところ低い) ように作ってある。

同時に、高度な技術的産物の全体のバランスは、細部の調整で容易に壊れてしまうものである、ということも痛感した。チェーン全体はちゃんとつないであっても、その一つの長さが少しずれただけで力は正しく伝わらない。プログラムを書いているうえで日々苦労していたことも、ちょっと離れてみればこの微調整を繰り返してるようなものなんだろうなあ。

結構、ロード歴は長いけど漫然と乗ってきたところもあるので、こういった修理技術をちゃんと学んでいこうかな。他のエンジニアリングのためにもなりそうだし。

Ara勉強会と言いつつ

Ara勉強会 というものを目にした勢いで申し込んでしまったので行ってきました。

Project Araっつのは、Googleによる組み合わせ自由な携帯電話をつくろうっていう計画っす。

Project Ara: Part of it - YouTube

おもちゃみたいな部品を Uniproって端子でくっつけて組み合わせて使うっていう、レゴみたいな感じで自分好みの携帯が作れるっていうのでものすごく面白そうなわけです。中二心というより、秘密基地作っちゃうぞっていう小ニ心、そういやちょうどうちの子がその歳ですがレゴでいろいろからくりを作るのに苦心してる、そんなところにスマッシュヒットするわけです。ほんとにそんなにうまくいくのかよ、というのに疑問を持ちつつも興味を持っていました。

あと、一応仕事的には、Araの謳い文句として「60億人のための携帯」とか言ってるわけです。発展途上国向けの教育をやっている Quipperとしては、やはりこれはチェックしておかなければなるまい、という後付の理由もあります。まあ、これは聞いてみた結果、ちょっとどうかなあ、というのもあるのですが、そこはあとで書きます。

勉強会は 4つの講演 + 懇親会という成り立ちで、それぞれに考えたことがあったので、章を分けてだらだら書かせていただきます。それぞれ興味が有るところをお読みいただければ幸いです。

「PROJECT ARAとものづくりの未来」丸山不二夫

まず、Project ARAの立ち位置、ビジョン、社会的役割みたいな話です。ポジショントーク的な「ARAすごいぜ」って話が多くなります。

ARAっつーのは、「現在の携帯が向かっている、統合された SoC 的なアプローチを少しバラして、エンドユーザにも組み合わせをいじれるようにしよう」というのが、私のような組み込み出身技術者には最もしっくり来る説明でした。つまり、大量生産の SoCで、すべての人が同じ組み合わせを使うようでは、新しい技術 (特に狙いとしては世界とコミュニケーションするためのセンサとか) が入る余地がない。そこをバラすことで技術の革新を進められるのでは、ということだと理解しました。

とはいうものの、ARAは一般ウケするようにか投資家向けにかいろんな顔をもっていて、それぞれの人向けのプロジェクトの理解の仕方を許してる気がします。ファッショナブルな自分好みの携帯を作れるよ、っていう側面もあるし、まだスマフォ持っていない人向けにカスタマイザブルな安い携帯もつくれるよ、っていう社会開発的なストーリーもあります。そういうのがまとまって同床異夢してたりするのが Project ARA (というか今晩の勉強会) のようです。

で、正直まだまとめ方にARA、もとい粗があるな、というのが感想です。

特に、デバイスの民主化って話がよくあったのですが、やっぱりこんなのが起きるのは金持ちの国だけだと思います。発展途上国にはまだ民主化は早いのです。というと語弊がありますが、組み合わせの自由より、まずまともにそこそこ使えるデバイスです。同じものを大量生産したほうが安くて品質のいいものが作れるのです。アラブの春の後には梅雨が来るのです。アラブに梅雨はなさそうですが。というわけで、60億人のためのデバイスというのは眉唾だと思います。同じく GoogleAndroid ONEの方が可能性があると思います。

で、製造業が Makerのムーブメントで復活する、というようなアオリもあった気がしますが、多分、その結果は「復活」というようなものとは違うような気がします。少なくとも、高度成長期みたいにみんなに恩恵が行き渡る、というようなものではない気がします。地方でも力のあるところはそこそこ生き残っていけたりするのかもしれませんが、それは少量生産の好事家たちのものでしょう。東北大学試作コインランドリーっていう MEMSの開発ラインを一般開放してるという話はすこし wktkしたけど、やはりそれを使いこなす能力のある人だけですし。

というわけで、製造業が復活するというより、日本の製造業が洗脳社会のニーズに合わせて生き残るべくあがいてニッチを見つけつつある、というのが正しい気がしました。いわゆる、おじさんたちが言う意味での「ものづくり」とは違うと思います。

まあ、そういうわけで両手を上げて賛成といわずとも、いろいろ考えるネタのある話ではありました。

「ARAモジュール間インターフェースUNIPROについて 」 永井 健一

ガチ技術の話です。こういう低レベルの話からはしばらく遠ざかっていたんですが、結構面白く聞けました。

現在の UniProは 12本端子で、8本が上下2リンクずつの平衡伝送になってて、1リンクあたり 4.6Gb/sとか。バスじゃなくて UniPro switchとの P2Pになってると。LCDもこれ経由で接続することになるので 60fpsだせるのか心配になったりとか。将来は非接触の inductiveにしてやるとか。

Linuxにも少しずつ実装ができてきて Greybus というプロトコルスタックができつつあると。その上に I2Cや USBを載せることもできるらしい。

まあ、ここらへんは多分いじる暇はないだろうなあ、と思いつつも面白かったです。

「METAMORPHOSYSでできること」 佐々木陽

プロトコルができても実際に ARAのモジュールを作るのはどうするのか、というのに対する回答が METAMORPHOSYSのようです。

ここらへんは素人なんですが、いろいろモジュールを組み合わせて回路を起こして、それをレイアウトして、熱のシミュレーションをやって、さらに見積もりまでしてくれちゃうシステムらしい。それをマニュファクチャーにオンラインで発注するシステムまでつくってしまって、モジュールづくりを一気に民主化しようという意図を感じました。

でも、本体は Windows上でうごいているので、なつかしい組み込み開発環境を思い出しました。統合環境と言いつつ使いにくくて、結局は makeないのかなあ、とか探すやつです。

民主化とか言うなら、開発環境の民主化もしなきゃイカンだろ、というのをちょっと感じました。これは JavaScriptAndroidの開発の違いのようなものです。

Androidは、Googleが頑張って Eclipse上の ADTとか emulatorとか一式開発しましたが、あまり使い勝手のいいもんじゃありませんでした。最近では Android Studioで改善してきたけど、これは build systemを gradleに出して民主化した、という影響もあると思います。

それに対して JavaScriptの開発環境なんて、長い間あってなきが如しでした。Script kiddy用の言語と馬鹿にされてきました。でも、nodeやら phantom.jsやら coffeescriptやら (そしてそれを影で支える Githubやら) がそれぞれバラバラに開発されニッチを競い合って、それこそ民主的に無駄も多く進化してきたわけです。馬鹿にしてた開発環境が劇的に進化する様を見てしまったのです。

というわけで Metamorphosysはすごいけど、機能面でひと通り揃った開発環境を用意しただけで物事がうまく転がると思うなよ、という感じです。民主憲法を押し付けたからって民主的に国が発展するわけじゃないんだからな。日本は発展しちゃったけど。

3Dプリンター、過去、現在、そして少し先の未来」 原 雄司

ARAと一番関係ない話でした。それだけに雑学的に楽しめました。

Perfumeマツコ・デラックスをスキャンした話とか、水族館で自分の描いた魚が泳ぐのを見て、チームラボかと思ったらライゾマティクスだったりとか。

一番びっくりしたのは 3Dプリンタで導電性の部分も一緒に作って、回路まで同時に作っちゃうとか。

まあ、最初の話の、製造業の民主化のはなしの具体例みたいなことですが、事例が面白かったです。

懇親会

さほど書くこともないっす。久々に A社で一緒に仕事をしてたすずきさんにあったぐらいでしょうか。お元気そうで何よりでした。

まとめ

まとめとしては、今の仕事に直接役立ちそうにないけど楽しめました。

うーん、でも ARAの教育用モジュールとかできないかな。三角定規モジュールとか。そういうニッチにもいけるのが ARAのいいところだよなあ。

Nexus5のマイク不調が直った

嫁にお古の Nexus5を使わせてたんだけど、電話が不調ということでいろいろ 文句をいわれていた。とはいうものの、再現性が低く、自分が実験するとうまくいったりしてたので、なだめながら様子見をしていたのだ。けど、電話だけじゃなくて、動画撮影しても音が入らないといわれて、8割ぐらいの再現性になってしまったので重い腰を上げて調べてみた。

なにしろ、Lollipopに上げたり、IIJ Mioの SIMにしたりと、いろいろ思い当たるフシがありすぎる。嫁は SIMが怪しいという。でも SIMじゃ録画機能まで影響でないだろうと、まずは Kitkatに下げてみた。Lollipopでマイクが使えなくなった という人も多数いるみたいだし。

しかし、4.4に下げても変わらなかった。直るはずだと信じてたのに。隣で見ている嫁の顔が険しくなるのが見えた。

しかし、SIM仮説もだめだった。自分の持ってる bMobileの SIMに差し替えてもやはり動画の音が入らない。おかしい。

で、いろいろ調べて辿り着いたのが Product forum。みんなやっぱり、Lollipopが悪いとか、プロパティを変えたら直ったとかいってるけど、効いたのはこれ

In short, after I pressed hard at the back of the phone, about 3/4 inch below the camera lens, now my mic issue is gone.

つまるとこ、裏面、カメラレンズの下、2cmぐらいのところを押したらマイクの問題はなくなった

いや、だまされたと思ってやってみたらほんとに直ってしまった。直った瞬間には笑ってしまった。こんなアナログな原因で直るなんて。

まあ、自分が携帯電話のエンジニアであるので、やっぱり自分の持ってる道具 (アップデートとか SIMカードとか) で解決したくなるのは、金槌を持ってれば釘に見えてくるのとおりだなあ。

対症療法的ではあるので、また不調になったら押さねばならないかもしれないけど、これなら嫁にもできるので簡単である。しばらくはこれで使ってみよう。