UI考(番外編) AppleWatchについて、あまり語られてない視点 | fladdict

Android + Android Watch + Nexus PlayerというGoogle信者状態でいうのもなんですが、この間飲み会で話してて出た話。

Apple WatchはすごくないけどSiriはすごい。そんでSiriの凄さを最も発揮できて現実的なガジェットはBluetoothヘッドセットなんじゃないかってこと。

Bluetoothヘッドセットっていっても↑こういうちっちゃいやつ。

自転車でツーリングに出かけるときにこういうの付けてるんですが、すごい便利。

ふたてに別れた後も特に切る理由が無いのでしばらく俺は家の中で相手が整体行ってる音とか聞いてました。(良いトランシーバーアプリあればいいんですが、知らないのでLINEとかHangout使ってます)

「どの辺を重点的にやりますか?」

「肩を、この辺をお願いします。」

俺「混んでますか?YESなら咳払いを1度、NOなら2度してください」

みたいなことを家で言ってて笑えます。片耳のBluetoothヘッドセットって小さいやつはすごく小さいので補聴器と変わらんし、付けてても意外とみんな気にしません。(整体師は特に気にしてないらしい)

攻殻機動隊の電脳通信みたいですげー便利だなと思います。

電脳通信と違って不便に感じるのが、声に出して発声しないといけないところ。信号待ちで発声したら前にいる人振り返りますから。でもまあスーツの人が使ってると「忙しそうな人だなあ」と認識できるし、海外ドラマだと嫌な弁護士役とかがよく使ってるよねって話してました。普及すれば当たり前になるのかも。

Apple Ear(by beats)が最強のガジェットなんじゃない?通信にiPhoneは必須だからApple損しない。もっと進化したSiriで全ての命令をし、通知は音声で受け取る。

Bluetooth4.0で大幅に省電力になったのでちょっと高価なやつにすれば日中外出中ずっと(10時間ぐらい)バッテリー持つのできると思います。

キラーアプリはイイ感じで相手とタイミングをフィルターできる複数人ボイスチャットと本当のバーチャルアシスタントと化したSiri。

グラスと違ってファッションに与えるギャップが少ないし、片耳なので法的な問題も少なそう。

飲み会でも「最近のSiriは結構すごい」とみんな話してましたが(俺はGoogle Nowしか知らん)一般の人でも問題無いほどSiriが進化した時、Apple Earが出たら便利なんじゃない?こう使うべし、こういうライフスタイルにせよ!という提案ベースのガジェットがいいよなあと思った次第です。

かの文豪、夏目漱石は"I love you"を「月が綺麗ですね」と訳したそうです。

コードレビューで"LGTM"と聞きかじった英語でばかり書いていた俺は猛省し、きちんとした日本語で書くことにしました。八紘一宇、玉と砕けよ!

Initial content

$ CONFIGURE_OPTS="--with-openssl-dir=`brew --prefix openssl` --with-readline-dir=`brew --prefix readline`" rbenv install 2.2.1

debianだと2.1.2から2.2.1にアップデートするのに必要なpackageにlibffi-devが増えてるので注意。

rails4.2系にアップグレード中に嬉しい情報が。

~/code/kowabana[upgrade-to-rails4.2.1]% rake test:all
DEPRECATION WARNING: rake test:all is deprecated and will be removed in Rails 5. Use rake test to run all tests in test directory. (called from mon_synchronize at /usr/local/var/rbenv/versions/2.1.2/lib/ruby/2.1.0/monitor.rb:211)

$ rakeで済むところが$ rake test:allって書かなきゃいけないのクッソうざかったんですよね。デフォルトテストスイートの嬉しさ減的な。

CIの設定でも$ rakeで済んだら素敵なのにと思ってたんです。

CloudFlareで無料SSLが使える今日び、本物の証明書もStartSSL.comで無料でもらえるんすね。下記を参考にさせていただきました。

無料のSSL証明書StartSSLを活用する - Qiita

怖話で部分的に必要になったため取得・設定しました。

ただ、Google AdSense以外の広告ってほとんどSSLで表示できないんすね。広告ネットワークにとっては情報が取れないSSLは推進してくメリットがないんだろうから(ユーザーにとってはたまったもんじゃないが・・・)HTTP/2はどう進んでくのか気になりました。

素のTerminal.app、

出る。

screen、

出ない。

tmux、

で、出ますよ・・・。

ざっとscreenのmanを見てググった感じ出し方がわからなかった。

こんなかんじで絵文字をSQLに含めたりする必要があるので表示できないと普通に困るんですよね。(素のTerminal.appで撮影)

(関係無いけど、このテーブルコメント用なのに絵文字受け付けないCHARSETになってるやんけ!)

tmuxに移行しなきゃかなあ・・・。

正確にはAndroid Wear搭載のSamsung Gear Live

発売日ちょっと過ぎに買ってから今まで半年以上毎日着けてた感想です。

Google信者の義務として取り敢えず発売されたガジェットは買っていくスタイルで、あんまりいじり倒してないですが、普通に時計として使ってたら半年以上立っていました。

まず悪いところですが、電池が2日持たないのはヘボいですね。僕は最近まで四分の三日ぐらいしか持たないスマホのGalaxy Nexus αⅢを使っていたのでスマホと時計は毎日充電するのが日課になっており、そこまで気にならなかった。(Nexus6に変えてからはバッテリーが持つので時計の持たなさが気になる)

UIも今現在の状態がONなのかOFFなのか、それともONにするボタンなのかOFFにするボタンなのか、わかりづらかったり、スワイプを画面を全部横断させないとダメだったりと直感的じゃないところは嫌ですね。しかしこれもアップデートされるごとにちょっとづつ改善されているのを感じてます。

良いところはウォッチフェイスを変えて読みやすいものに出来るところですね。

「バカでかくデジタルで表示されていて、日付と曜日も知りたい」

とか、

「こじゃれたアナログっぽいのがいい」

とか時々気分が変わって変えたりします。

最近お気に入りで設定してるのは、時間をコミック風にザックリ教えてくれるしてくれるRelaxing Thoughtsです。

(96っていうのはバッテリーが96%ってことです。)

「2時20分すぎ」とか「大体5時」とか時間に追われてる感を減らしてくれます。

これ面白いので怖話Watch Face作りたいなと思いました。

あとは自転車通勤時にStravaで距離などを記録してるんですが、スマホアプリは記録開始までにプルダウンメニューとか選択する必要があってタップ数が多くて若干面倒臭いのですが、

「OK Google, サイクリングを開始」

でスタートさせられるのはちょっと楽です。

これ、発売されて最初の方は認識してくれなかったんですが、いつだかのアップデートでできるようになりました。

その他は、Facebook Messengerやメールなど、連絡待ちをしてる時にすぐわかるのもちょっとだけいいですね。

アプリは他にいくつか入れてますが全然使ってないです。

結論としてはGoogle信者かガジェットオタクの我々のおもちゃとしてはそこそこ使えるけど高いかね出して買うほどじゃないかなと思います。スマホあるしね。

Apple Watchも全く新しいキラーアプリがでてこないと似たようなもんじゃないかって気がしました。

PHPでハマったことをPHPの落とし穴と題して逐次書いていきたいと思います。

問題

ログインができない!動いている環境とPHPのバージョンも合わせたのになぜ!?

$_REQUEST$_COOKIEの値が入ってないぞ。

原因

$_REQUESTの中身はphp.iniのrequest_orderディレクティブの値に依存する。デフォルトではCookieのCが含まれてない。

PHP: コア php.ini ディレクティブに関する説明 - Manual

解決策

php.iniのrequest-orderディレクティブにCを追加する?

そうではなくCookieを使いたい場合はこういった環境依存のある$_REQUESTではなく$_COOKIEを使うべき。コードの意図も伝わりやすい。

しかし、一度大量に混入したcookie用途の$_REQUEST利用を全て修正するのは難しそうだ。単純にreplaceはできないので$_REQUESTでgrepして、文脈から判断するしかなさそうだ。

明確な理由がない限り$_REQUESTはおすすめできない。$_GET, $_POST, $_COOKIEを使うべきだ。

PHPのスーパーグローバル変数($_から始まるやつ)の扱いは名前が表す通り注意が必要だと思いました。

関連:レガシーPHP改善日記シリーズ

以前書いた下記を使ってport forwardしといてhttp://foo.lvh.me:8080/とかにアクセスする。

Macに複数サイトに対応したPHP環境を簡単に作る - komagata

virtualboxでprivate networkを使うとスマホ確認ができないし、public networkだとboxのポータビリティが下がるし、port forwardだとsslの確認ができないし(rootで起動して443で立ち上げらればいいけど非推奨だし)痛し痒しな感じ。

synced folder遅い問題も、docker使った場合も同じだけどみんなどうしてるんだろう?

週1日のペースで出社して作業してるんですが、なかなか手強いですね。

サイトが沢山問題

でかいレガシーシステム一個と戦うのではなく、30個ぐらいのサイトがあって、それをメンテしなきゃいけないので大変です。

システム的には殆ど同じなので、大元があってそれをコピーして使っています。コピーしたあとはそれぞれのサイトでカスタマイズが入るので分岐していきます。

これは壮大なコピペと同じことなのでメンテ対象のコード行数が増大していきます。一刻も早くこれをしないですむように設計しなおさないといけません。

共通開発環境問題

社内サーバー上に共通開発環境が一つあって、そこに上記の30近くのサイトが並んでます。そこをみんなでいじって、誰かが代表としてsvnにコミットします。

共通開発環境には、誰か一人が開発環境を作ればいいという利点がありますが、二つの問題点があります。

  1. 誰が変更したのかわからないのでレビューできない。一つ一つの変更がいい加減になり、いらないファイルが放置されて散らかりっぱなしになる。(スラム化)
  2. 複数人が同時に作業していると変更点が衝突する、壊れる。

進捗

とにかくまずはテストを書かないことには変更もできないのでテスト環境の作成を進めています。しかし、固定のパス設定などポータブルになっていないのでローカルやCircleCIで動くようにするまでが一苦労。

最近のPHPだと動かない機能を使っていたら修正。最近のMySQLだと動かない書き方を修正。結局、まずは共通開発環境と全く同じOSをVirtualBox上に用意して動作させることにしました。

これでphpunit + seleniumのテストはなんとか動きそうです。

悩んでいること

テストが動き、コードレビューを機能させるには各自が自分の環境を持つ必要があります。Windowsでは動かない機能も使っているのでVirtualBoxに環境を作ってそこで各自が上記の30超のサイトを開発しなければなりません。

VirtualBoxのSynced Folersは遅いのでWindowsの場合はsmb、Macの場合はnfsを使って・・・など、僕は構わないですが結構敷居が高くて、

「みんなホントにこれで開発してるのかな?」

と不安になってきます。

共通開発環境問題の問題点を解決しつつ、環境構築の手間を少なくする方法は何かないもんでしょうか・・・。

みんなどうしてるのか気になって仕方ないので次回のPHP勉強会東京に参加登録しました。

第88回 PHP勉強会@東京 - PHP勉強会@東京 | Doorkeeper

関連:レガシーPHP改善日記シリーズ