Nexus 5X + IIJmio に乗り換えて感じたこと

SIMフリーなNexus 5xを購入し、IIJmioを契約しました。 f:id:yuki_tkd:20160401174354j:plain

大手キャリアからMVNOって言うと料金的なメリットが大きいように見えるけれど、 2年縛りからの脱出と削除不可なキャリアアプリからの解放が個人的には大きなキッカケでした。 もちろん安いほうが嬉しいけれど、MVNOが安いのはサポートが少ない(端末の保証無し & 困ったときに聞ける実店舗無し)から安いという感じなので、 個人的には料金面以外の2つも結構嬉しい。

Nexus 5x

Nexus 5X LG-H791 32GB グローバル版SIMフリーを購入。eXpansysが異様に安くて、購入時はNexus 5X + Nexus 5X用ガラスフィルム + USB-A to USB-Cケーブルのセットが35,910円だった。 その代わり色はブラックのみ。ホワイトが良かったけど、Google Playで購入したら5万円とかだったので諦めてeXpansysで購入した。 香港から配送されるため、送料1,600円と関税1,400円を払う必要があり、支払総額は38,910円でした。 注文してから5日くらいで届いたんだけど、途中でクレジットカードから代引きに変更したりしたので、実質eXpansysが出荷作業初めてから3日くらいですね。

IIJmio

IIJmioの契約には初期費用が必要なんだけど、説明書と初期費用がセットになっているパッケージ版がAmazonで安く販売されていたのでこちらを使いました。 (何故3,000円の登録費用+説明書が324円で販売されているのか)

IIJ IIJmio SIM 音声通話 パック みおふぉん IM-B043

IIJ IIJmio SIM 音声通話 パック みおふぉん IM-B043

パッケージ版が届いたら、中に入っている説明書に従って契約を進めるだけ。 Webサイトへアクセスして、必要な情報を記入したら数日後にSIMカードが送られてきます。 支払い方法が本人名義のクレジットカードのみっていう制約と、身分証をスキャンしたファイルをアップロードする必要があるという2点で身分確認を行っているみたい。 大手キャリアの契約みたいに店に行って書類書いて身分証渡してやり取りするみたいな手続きは無い。

Nexus 5X + IIJmio

普通に繋がりました。APNもAndroidだと予め登録された一覧の中にIIJmioのやつがあるので、それを選択するだけでした。 あと、セットアップ作業してるさなかに地震があったんだけど、ちゃんとNexus 5x + IIJmio緊急地震速報が鳴りました。 この組み合わせだと(少なくとも僕の住む地域では)ETWSに対応してるみたいです。

感じたこと

僕が書き残しておきたいのは、今回の体験で得た感覚。主にIT技術がもたらす効率について。

まず、海外から3日で商品が届くという物流の凄さ。

夜中の10時くらいに出荷メールが来たと思ったら、次の日の朝には空港に運ばれていて夕方には商品が羽田に到着していた。 そこから夜通しで関西に運んでくれて、朝一で自宅まで配送。

全ての伝票を目視で確認して、配送先決めて...ってやってたら絶対に3日じゃ間に合わないはず。 データベースで商品を管理し、Webを使って情報を世界中で共有し、データベースのIDとモノ自体はQRコードやバーコードで紐付けしてるからこそ出来る仕事。 Webは手軽に使えるし、QRコードも印刷するだけで使用可能っていう、安価で実現可能な技術がこういう世界を支えてるんだなぁと思う。 専用線のネットワーク + コストが掛かるICタグしかない世界だったら絶対こんな世界は実現していないだろうな。 GoogleのCardboardもそうだけど、安くて手軽っていうメリットの大きさは凄い。

それから、人が介在しないサービスについて

車を持っていないので、車が必要なときはカーシェアリングのTimes Car Plusを使うんだけど、IIJmioの契約はそれを始めて使った時と似たような感覚を味わった。 Times Car Plusで車を借りるときは、ICカードを窓にかざすだけ。返すときも窓にカードをかざせば完了。15分単位で料金が課金されてクレジットカードから引き落とされる。 IIJmioの契約は、情報をWebに打ち込んで身分証をアップロードすれば、自宅にSIMが郵送されてくる。Webフォームの先は人が登録作業してるのかもしれないけど、手続き自体は物凄く効率化されてる。

どちらも僕とサービス提供企業の間に全然人が居ないのに成り立っているという効率の良さとその怖さを感じる。 人を沢山雇わなくて良い分、安くサービスを提供出来る。その代わりに、急にサービスが停止したらどうしようみたいな怖さがある。 カーシェアで借りた車に乗って、MVNOで契約したスマホ持って遠いところに旅行行ったのは良いけれど、スマホがいきなり繋がらなくなる & ICカードかざしても車の鍵が開かないっていう事態になったらかなり慌てそう。 自分の車なら物理キーで鍵開けたり、スマホは店に持って行ったり出来るけど、そういうわけにもいかないし。 機械だけで回る仕組みのほうが効率的だけど、不安感は増していく。

まだ万人に薦められるシステムでは無いなというのが正直な感想。 トラブルが心配な人はカーシェアリングしないほうが良いし、機械に詳しくない(or 身近に居ない)ならMVNOは辞めておいたほうが良いかも。 車は買ったほうが、スマホはキャリア契約したほうが、高いけど安心。

パーセプトロン作った

3年生後期の授業でパターン認識を受講していたんだけど、話聞いているうちに実際に作って試したくなったので作った。 まずは一番簡単そうなパーセプトロンから。

せっかくだしScalaの勉強にもなるようにScalaでやるかーと思って始めたけど、Scala線形代数の問題やるのキビシイ気がする。 ScalaNLPのbreezeっていう線形代数向けライブラリがあったので使ってみたけれど、Scalaっぽく書こうとすると型がNothingになってしまってキビシイ。 mapとかfor式が使えないのでforとrangeみたいなの使って添字で部分行列にアクセスしたりしないといけない。

それから、列ベクトルをtoDenseMatrix拡張メソッドで行列に変換すると1行の行列になってしまうという仕様?バグ?に悩まされた。 僕のイメージだと1列の行列になる気がするんだけど良く分からないので使わないようにした。

エクセルで適当に作った線形分離可能なデータ突っ込んだらこんな感じで分離できた。 f:id:yuki_tkd:20160214164631p:plain

マージン最大化とかしてないので、ランダムで生成される重みベクトルの初期値によって毎回結果が変わる。 f:id:yuki_tkd:20160214164636p:plain

機械学習面白い!!!

新年明けましておめでとうございます

2016年始まった

明けましておめでとうございます。 今年もよろしくお願い致します。

おみくじ

初詣は春日大社に行ってきました。 f:id:yuki_tkd:20160106092831j:plain

今年は初詣でノーマルなおみくじと恋みくじを引いたところ、大吉と中吉が出たので幸先の良いスタートが切れております。 ちなみに去年の初詣は末吉と凶だったし、その後もおみくじ3回くらい引いたけど一番良いので吉だった。

恋みくじによると、さそり座 or 山羊座でB型 or O型で同い年 or 1つ上の人と巡りあうのが良いらしいです。 一人の夜々は辛くとも、実に素晴らしい人に会い、熱い愛を交わす運勢の下にありますという神のお告げなので、 該当される方は是非ご連絡ください

今年の抱負

振り返ってみると、去年は楽しかったけれど少し保守的な一年になってしまいました。 アメリカ旅行行ったり、はてなにアルバイトとして入社出来たのはとても良かったのですが、 その後に自分の成果になるようなプロジェクトを増やせなかったのが残念だなぁと思ってます。 インプットが多めで、アウトプットが少なめでした。

なので、今年はアウトプット多めの攻める姿勢で行きたいと思っております! 今年もよろしくお願いします。

論文紹介『uniMorph - Fabricating Thin-Film Composites for Shape-Changing Interfaces』

はじめに

本エントリは, id:yumu19 さんが始められたヒューマンコンピュータインタラクション論文紹介 Advent Calendar 2015の5日目です.

今回紹介する研究は, デモ動画を見たときに, 純粋に未来感があってかっこいい!と感動したものの, 論文はまだ読んでいなかったものです. せっかくの機会なのでAdvent Calendarに参加して紹介させていただきます.

論文紹介

僕が紹介するのは, MIT Tangible Media Groupの『uniMorph - Fabricating Thin-Film Composites for Shape-Changing Interfaces』です.

プロジェクトページはこちら

vimeo.com

(Tangible Media Groupはデモ動画と論文へのPDFリンクを綺麗なページで簡潔に紹介してて良いですね. ACM入ってなくても論文読める...!)

概要

  • 一言で説明すると「形が変形するディスプレイ」なんですが、まずは動画を見て頂けると良いと思います.
  • 自分でカスタマイズ出来て簡単に作れる. プリンタとかトナー転写とか手書きとかでも作れる.
  • 本体がタッチセンサにもなっているので, 接触位置検知が出来る.
  • 電子回路を載せたりも出来る.
  • 主要部分はポリエチレンとカプトンで出来てる.
  • 電気を流して熱を発生させ, その熱で形を変形させている.
  • 変形するときに必要な熱は電気じゃなくても良いので, 太陽光とかで変形もする

応用例

  • 花びらが開いて電気が点くランプシェード
  • 栞のように挟んでおけるブックライト. 触ったら必要な形に変形してライトが点灯する. 閉じるときは, もう一度触れば元に戻る.
  • 重要な通知が来たときに開くiPadのカバーが物理的に開いて, 通知を知らせる.

まとめ

  • 薄く形がプログラマブルに変化する素材を作成した.
  • 受動的にも能動的にも形が変化してインタラクションすることが出来た.
  • 触って入力 + 形が変形して出力
  • 熱の伝え方を変えて応答速度を上げるのが今後の課題.

最後に

まだ空きがあるようなので, HCI関係でオススメな論文有る方は是非! qiita.com

Pomodoro technique

Pomodoro?

ポモドーロテクニックを導入したところ、生産性がかなり上がったのでその感動を共有したく久々にブログを書いている。

きっかけは、Rebuild.fmでパーソナリティのmiyagawaさんが、ポモドーロテクニックを活用してるっていう話をよくされていたので、 あのmiyagawaさんがやっている生産性向上術なら効果ありそうだ!と思って始めてみたのがきっかけ。

やり方

やり方は簡単で、タイマーを25分にセットして1つのタスクに取り組み、終わったら5分休憩を取って、また25分かけて1つのタスクに取り組むというのを繰り返す。 1つのタスクに取り組みっていうのが重要で、この25分間(これを1Pomodoroと換算するらしい)は、Twitterをしたり、メールの返信をしたりしてはいけない。 割り込みやマルチタスクを捨てて、1つのタスクに集中する。 これを繰り返すことで、タスクに取り掛かり始めた最初のほうのやる気と、休憩間際にギリギリまで頑張る時間が効果的に利用されて、結果的にタスクが早く終わるという仕組みらしい。

実はRebuild.fm聞く前からポモドーロテクニック自体は知っていて、簡単に始められるからという理由でやってみたこともあったけど、長続きしなかった。 そのときは、キッチンタイマーで25分計っていたのだけれど25分ごとにタイマーが鳴るのが煩くて、タイマーをしなくなってしまった。 このときの反省を活かして、音は鳴らないけど振動で教えてくれる、スマホアプリのポモドーロタイマーを使っている。

いろいろ試してみたけど、僕が一番良さそうだと思ったのは、充電しながらスマホをキーボードの前において残り時間がすぐ見れるようにしながらタスクに取り掛かる方法。 このアプリ立ち上げてると、自動画面ロックが解除される?みたいで途中で暗くなったりしないので快適。

ただ、課金しないと下に広告が出るのでチカチカして気が散る気がするっていうのと、ヘッドホンで音楽流しながら作業してると振動に気づかないときがあるっていうのが問題かな。 広告は課金すれば消えるらしくて、そんなに高くはないので気になるなら有料版買ってみても良いかなって思ってる。 振動に気づかないのは...スマホを机の上に置いてる限りは仕方無さそう。 これこそスマートウォッチを使うべきな気がする。

Pebble Time Roundとか良さそうだよね。

(この文章も1Pomodoroで書かれた)

Scalaハマりポイント

Scala始めて1ヶ月くらい経つけど、良くわからないことがまだたくさんある。

OptionとEitherってどう使い分けるんや !!

ScalaではOption型とEither型が使えて、どちらも正常値or異常値を入れられるみたいな感じなんだけど、どういうときに使い分けたら良いか分からなかった。

しばらく書いてたら分かってきて、Optionは成功or失敗を表すとき、Eitherは意味が正しいか正しくないかを表すときに使うってことが分かった。

とりあえず何か値を取り出せるかどうかみたいなときはOptionを使うと良くて、取り出した値が正しいか正しくないかみたいな判別をしたいときに、Eitherを使うと良い。

matchにtoRightするのは括弧つけなあかん !!

match式の戻り型は、各caseの共通の親クラスになっているけれど、それに対してメソッド呼びたいときは()で囲う必要がある。 例えば、こういうmatch式書いたとする。

foo match {
  case hoge => Some(fuga)
  case piyo => None
}

fooの型がhogeのときはEitherのRightにSome(fuga)を、piyoならEitherのLeftにエラーメッセージを入れて返したくなったときは、こう書く。

(foo match {
  case hoge => Some(foo)
  case piyo => None
}).toRight("error")

matchを囲っている()を忘れるとコンパイルエラーになるので注意

foo match {
  case hoge => Some(foo)
  case piyo => None
}.toRight("error")

matchの内側が部分関数みたいになってて、toRightを括弧を付けずに書くと、この部分関数全体にtoRightすることになる?みたい (良く分かってない) たぶん、forの後のyieldにtoRightとかを括弧無しで書くと同じことになるので、とにかくforとかmatchにtoRightしたいときは括弧つけたほうが良さそう。

点字ブロックは何故黄色なのか

f:id:yuki_tkd:20151007213416j:plain 写真: フリー写真素材ぱくたそ

大学に向かう途中、駅の点字ブロックを見て疑問に感じたので、調べてみたらすぐに答えが出てきた。

http://www.h-road-s.co.jp/service/texturedpavingblock/tpb05.html

答え

一言で言うと、 点字ブロック(視覚障害者誘導用標示)が黄色なのは、「弱視者は視覚障害者誘導用標示の色を見ながら歩くことが多い」からだそうだ。 視覚障害者の約7割は弱視者らしく、点字ブロックの色を見ながら歩いていることも多いそうだ。 先ほど記載したページに図を交えて分かりやすく解説されているので、詳しい話は見ていただいたほうが僕が説明するよりも良さそう。

気づき

こういう細かいことに気づけるかどうか、理解できているかどうかって大事だと思っていて、 自分がもし点字ブロックの設計をすることになったら、どういう点に気をつけて設計するだろうといったことを調べる前に考えてみた。

僕ならこう設計するだろう。

点字ブロックを設置するからには、その点字ブロックをすべての動線に繋ぐ必要がある。 街の地面はアスファルトやレンガで出来ているので、点字ブロックをすべて同じ色にすると目立つ箇所が出てくるはずだ。 ならば色を変えてアスファルト上では黒色、レンガ上では赤色にしよう。

ただ、こうすると街の景観は良くなるが、点字ブロックの存在に気づかない晴眼者が増えるだろう。 点字ブロックの上で立ち止まったり、居座ったりされると点字ブロックの意味が無い。

点字ブロックの上に居座らないような色... その場に立ち止まらないような、危機感を煽る色。 警告とかって赤色が多い気がする。緑がOKなら赤はNGっていうイメージは誰もが持っている。 よし、点字ブロックは赤色で統一しよう!

たぶんこんな感じになる。 が、これは明らかに晴眼者の考えでしか無いし、何よりも前提条件がいつの間にか視覚障害者から全盲視覚障害者に変わっている。 もうちょっと考えたら、色覚障害の人も居るのだから赤とか緑は良くないとか、色々考えるかもしれないが、 視覚障害者の多くが色を見ながら点字ブロックを歩くだろうなんて考えは、たぶん出ない。

実際に視覚障害者に聞かないかぎり。

視覚障害者っていうと全盲っていう固定観念を無意識に考えてしまうし、色眼鏡で見てるって気づくのも難しい。 良くないと思っていても、そう考えている以上仕方ないし、どうしても自分は中立の立場で考えていると思ってしまうだろう。

点字ブロックの話だけでなく、物事を当事者の視点で考えるのって、本当に難しい。 こういうことを考える経験を積めば、違う立場からの見方も出来るようになるのだろうか。