Motohiro Takayama

Nov 28 '11

Time Card

IMG_0108

Thanks Giving 4連休の宿題のひとつは、 NFC を使って Android アプリをつくってみる、にしていた。

何かしはじめると時間の経つのが刹那のごとくで、それは脱線して YouTube にある無限 Watch it later リストにトラップされたり、風呂でえんえんと Kindle / iPad でコンテンツを消費している時間にもあてはまる。

はたして1日を有意義につかえてるんだろうか… かんたんに自分がやっていることを記録できたらいいんじゃないか。そういえば、4年前に Twitter の tweets を iCal で表示させる ていうのを試みたんだけど、いちいちキーボードを叩いて (マイクに話しかけて) tweet するというのはめんどうで、めんどうなことは続かない。

そのへんにある NFC タグ (Suica, PiTaPa, Clipper, …) を使って、それぞれに何をやっているか、というコンテキストを割り当てる。 Android でタグにタッチするとそのコンテキストがはじまり、もう一度タッチするか別のタグにタッチするとコンテキストが変わる、というのをやってみたらどうかと考えた。ばしっと Android なケータイを Suica に叩きつけるだけだ。めんどうさは少なくなるはず。

で、つくってみた。

abcdevice-2011-11-27-032632

左は、それぞれのコンテキストに費やした時間がどれくらいか、時系列に並べている様子。右は、新しい NFC タグをコンテキストに当てはめる画面。

やってみると、なかなか手軽に記録がとれていい。画面をタッチする必要すらないのだ (ただし Android デバイスはスリープから解除されていないといけない)。小さな画面をちまちま触るところから、3歩くらい進化している感じを受ける。

やっかいになるのは、コンテキストごとの NFC タグを持ち歩かないといけないということ。とはいえこれは些細だろう。都市部のひとなら財布に NFC なカードを2-3枚は常に入れているだろうし…

Feasibility study としてのプロトタイピングはできた。あとやるとしたら、その日いちにちの、それぞれに費やした時間を合計して Pie Chart で表示する、とか。自分のやる気の傾向を棒グラフで表示する、とか。もっとビジュアライズしたい。

コードは Github:mootoh/TimeCard に。


はじめてまじめに Android アプリの開発をやってみた。仕事でも Android (と iOS ) のコードを書いてはいるのだけれど、それは中間層づくりなので、アプリをつくるなかで分かることがいちいちある。

  • UI づくりの作法がまるで iOS のと違うのでいちいち調べる必要があって、手が遅かった。 Adapter とか LayoutParams とか
  • Interface Builder はすばらしくできていたんだなぁ
  • いわんや UIKit をや
  • Eclipse は機械に仕事させてる感があってとてもよい。 Eclipse があるなら Java も悪くない、というかがぜん生産性高い (C++ 比)

つくりたいものがあって、その UI を iOS と Android の両方でつくろうとしたら、やり方がまるで違ってわりとストレスになる。両方を同じテイストで、ひとりの人がつくるには、さっと取り出せないといけない知識が膨大で、なかなか大変だ。そりゃ Titanium などが流行るわけだよ。

開発者としてみたときの Android の美点は、 Intent の仕組みおよび Service (バックグラウンド処理) と、その気になればなんでもできそう (な気にさせられる) ところだろう。ダメなところをスルーしつつ、良いところの恩恵を素直に享受したい。


しかしこればかりやっていたために、他にやろうと思っていた他の宿題はこなせなかったな… Node.js さんともっと仲良くしたい。

4 notes Tags: android nfc

Nov 23 '11

iPhone 4 -> Nexus S

Since the iPhone 4 I had been using for a year got broken on both front and rear glasses, I started using Nexus S (OS 2.3.6) for my main mobile phone. Outlined an impression of 5days trials.

Pros

In a word: convenient.

  • Asynchronous. Just after pressing a button to send a tweet, I can safely switch to see Facebook. I do not have to wait for single task to be completed.
  • Intent. We can choose the destination of what we take with a Camera app. Openness to the future, for the developers, facsinating.
  • Widget. My home screen has Google quick bar, Remember the milk tasks, and Calendar. I don’t want to see the badge count saying just how many tasks I have today, or what day today is. To glance at everything at once is useful to catch the whole context.
  • Map app has bicycle direction navigation.
  • Car navigation speaks.
  • Developer friendly. we can launch an app by adb command from command line.
  • Submitting an app is painless and fast since there is no review.
  • Gentle in shape. iPhone 4 is solid, and Nexus S is rounded.

So so

Call quality is as good as iPhone 4.

Cons

  • Font. I love Hiragino on iOS. I know it could be better if I rooted though.
  • Japanese Input method. Simeji is well crafted, but it requires two or three more taps to switch IM than iOS does.
  • Address Book. Sync between Address Book in Mac and Contact List in GMail is just a nightmare.
  • Misses Omni Focus. I’m back to the days using Remember the Milk after 2 years.
  • Official Twitter app does not support the pic.twitter.com photo sharing.
  • Edge network is so very slow. I installed the micro AT&T SIM for iPhone 4 to the mini SIM slot of Nexus S. After several trials, it worked well. However, it can just connect to the Edge network, not 3G.
  • No built-in timer app.
  • No good instapaper app
  • I’m always screwed up in editing UI layout on Eclipse.

Overall, I’m satisfied with its functional aspect. I would lean to purchasing Galaxy Nexus over iPhone 4S, especially if they provided SIM free one.

4 notes Tags: android iPhone

Nov 13 '11

最強の音楽サービス

21世紀も10%を過ぎて、合法的に音楽をインターネットで聴けるようになりつつありますね。 Spotify, Rdio, Grooveshark, Google Music, iTunes + iCloud + Ping, Turntable.fm, Pandra, Last.fm… 共通しているのはストリーミングであることで、 Napster でいそいそダウンロードしていた頃がなつかしい。

しかし、それでもなお決定打に欠ける。じゃあ自分が欲しい最強の音楽サービスってどんなんなんだろう?


自分の聴きたい曲がある こと。たとえば Spotify や Rdio には大量の曲があるんだけれど、日本の曲はほとんどない。そしてあんまり追加される見込みもない… Grooveshark にはけっこうあるんだけれど、アレがそれなのでアレだ。いや、自分の持っている曲をアップロードしてクラウドなライブラリとして使えるはずなんだ。しかしアップローダが DRM なしの mp3 形式しかサポートしていないから、けっこうな数のファイルが除外されてしまう。 Google Music は m4a もアップロードしてくれるけれど、 DRM は崩せない。

聴きたいときにちゃんと聴ける こと。せっかく家の Mac で曲を買ったのに同期してないから電車の中で聴けない、とか悲しい。その一方で、地下鉄や飛行機の中でも聴きたい。オフラインキャッシュに入っていてほしい。そして、どのモバイルデバイスからでも同じように聴きたい。 Spotify だと、オフラインで聴けるようにデバイスにキャッシュしておくことが可能だし、 iPhone と Android のアプリがあるのでいい線いってる。

自分のしらない曲を聴きたい。 Last.fm とか Pandora はラジオなので、自分のしらない曲ががんがんかかってきてステキだった。それ経由で知り、買った曲がたくさんある。レイハラカミ、 Luminous Orange, Baseball bear… Rdio や Spotify は、自分のしってる曲ならたいていそこにある。でも知らない曲にであうのは、今のところなかなかむずかしい。友だちの聴いてる好きな曲は、けっこう自分のツボにはまらないことが多い。

使いやすい。 たとえば Rdio だと、 Web のインターフェイスで聴いてる途中にモバイルデバイスで聴き始めると、いままさに Web で聴いていたところからモバイルデバイスで再生がはじまる。とてもシームレス。また、次に聴きたい曲をとりあえずキューにいれておく機能があって、これが便利。 Grooveshark の Web 版の下にある queue もとてもよくできてて使いやすい。 Spotify はキューがなくて使いづらいところがある。


ざっくり表にするとこんなところかな。

Service Songs Availability Stumble upon UI
Spotify ×
Rdio ×
Grooveshark ×
Google Music ×
iTunes + iCloud + Ping
Pandra ×
Last.fm ◎ (だった) × ◎ (だった)

理想としては。

自分のこれまでの iTunes ライブラリ資産をぜんぶクラウドのあっち側に投げ込みたい。欲しいものだけ好きなときに取り出したい。どの国のどんな曲もあり、どのデバイスからもすぐに買えて。知らない曲ともステキに出会えて。

現実には。

ちょっと前までは、 Rdio の unlimited plan に入っていた。 $9/mo くらいですべての曲を制限なしで聴けて、モバイルデバイスからも聴けるというもの。でも Spotify が US にやってきた。自分の iTunes ライブラリにある曲 (ただし DRM を除く) も Spotify アプリから聴くことができ、モバイルデバイスにも同期できることを知って 乗り換えた。これも $9/mo くらい。 Last.fm や Turntable.fm で適当に流しながらいい曲を知ったら Spotify か Rdio で探して聴く。たまに日本の曲がほしいときには iTunes store で買う。みたいに、複雑なんだな。きれいなソリューションはきっとあと10年くらいはこない。

そういえば、ここさいきん20代の人たちと遊んでいて気づいたのは、彼らがあたらしい音楽について聞くとすぐにブラウザの検索窓に youtube.com とうちこみ、そこで曲名を入れて、曲を聴くということでした。着実に世界は変わりつつある。

Tags: music

Oct 18 '11

Oct 18 '11

典型的な駐在員的一日

朝起きます。あっ今日はあさイチで テレカン だったんだ!バタバタと着替えて自転車でオフィスへ。

みんなと軽くハローハウズゴーイングと交わしながら冷蔵庫から炭酸水を取り、テレカンに出席。しようとしたら、1.5時間後にリスケされてて首をすくめる。

しばし仕事してるうちに スタンドアップミーティング になり、今日何やるかについてさらっと話す。リーダーのしゃべることはいつもキレがあっておもしろい。

テレカンの時間。よう聞き取れんなぁと思いつつ、こっちの伝えたいことをできるだけ大声で叫び、向こうの意図をパースして、んじゃあとでまた、サンクスバイと切る。

ランチどきになり、訪問客 がいるので外に食べに行く。ほうほうそんなことやってるんだ、うちはこんなでね、でも SF の路上で寝てたらやばいで、とかそういう話をする。

昼下がり、じわじわと仕事する。うちに、デザインの ブレスト っぽいのに呼ばれて横から口をはさむ。それでやる場合、どう速くなるのん?

席にもどってきたら、 IM で別のタスク が降ってくる。 ok, 1h くらいでできるんとちゃうかな、と返し、そっちをやっつけにかかる。しかし本筋じゃないとこでハマり、あうーやっぱり 1h でできんよなーとかもがきつつ道筋がついてきたころにピンポンのお誘いが。

30分くらいのハードコア ピンポン で汗だくになって帰ってきたら6pm で、オフィスのすみから香ってくる晩ごはんの匂い… を横目に、外の友人と街の外の寿司屋へ ドライブ 。夜景がきれい。

おいしいお寿司と楽しいお話。店を出て見上げ、星をかぞえる。海の向こうに見えるサンフランシスコの街の灯り。ああ今週もがんばった… っていう月曜の夜。もう10月も半分おわってるし、 2011年もあと少しで終わる。


なんか、小話にでてきそうな一日っぽいなーっていうきがした。要写真.

1 note

Oct 9 '11

30days #2 : Do not drink

2回目の 30days challenge は お酒を飲まない、というものだった (1回目のお題は feed を読まない)。 結果、だいたい達成できた感がある。

ことはどう運んだか

最初の2週間くらいは Google+ の方に記録を書いていたんだけど、仕事がバタバタしてくるにつれて書かなくなった。だからといって飲んでいたわけじゃないよ! 順調に呑まない記録を更新していた。

とはいえ、海の向こうでピクニックするよってお誘いにひょこひょこ着いていったときに梅酒とかワインとかちびっといただいた。ちびっと。これで禁忌は破られてしまった… そこで目標を変えることにした。

ひとりで飲まない

これならまだ続いている! じっさい、この 30days challenge の前まではほぼ毎晩ひとりで飲んでたわけなので、この差だけでもでかい。と自分を言いくるめた。

どうなったか

プラスの影響は大きい。朝めざめたときにすっきりしている。夜も集中して作業できる時間が増えた。ついうっかりネットの向こう側とのコミュニケーションに没頭する時間は減った。酒代ががっつり減ったことによる節約もあなどれない。そして余分なカロリー摂取をしないで済むようになった。いいことづくめじゃないの。

マイナスはなんだ… 友人と会ったときに飲まないと箍がはずれない、ていうところくらい?

これから

これを書いてる時点で、すでに 30日が過ぎて久しいんだけれど、これからどうなるかっていうと。

ばっさり断酒する、というふうにはならないだろう。ジョニーウォーカーおいしいです… (最近味を覚えた) とはいえ、飲まないことによるプラスの大きさ、特に集中できる時間が確保できるというのを実感できたので、毎晩飲むというのはなくなった。ある程度コントロールできるようになったというか。惰性で毎晩のんでたんだなーとわかる。のまなくていいんだっていう。

次の 30days challenge

さて何しましょうかね… まぁ別に書くことにしよう。 Red Label に氷を入れて、からんからん。

Tags: 30days

Sep 3 '11

Shadowing

さいきん、英語をうまく話せているなぁ、と感じる瞬間がたまにある。それはどういうときに起こるんだろう?

アタマで考えず、口からしゃべっているとき。 楽しく雑談してるとき。プレッシャーがないとき。

たんに真似をしているんだと思う。 だれかの言っていたフレーズをそのまま使ってしゃべっている。そういうときは文法も前置詞も冠詞も気にしていない。

とはいえ、その会話の中で、相手の言ったことをそのまま繰り返すのでは芸がないし恥ずかしい。時間をおいて別の同僚で試してみたりしている。

使えるフレーズを自分の中に定着させることが、話すのには大切なのだ。あとボキャブラリ。 ボキャブラリはなんとかがんばる… (awesome, good, nice, great 以外の感嘆ことばを増やすとか) として、フレーズを一人で学ぶとしたら、 shadowing するのがいちばんよさそう。会話を聞きながら真似する。何度も真似して繰り返す。

目で読むだけじゃなくて、口と耳を使うのがポイントだなー。目で読んでるとアタマ使ってる感ある。

4 notes Tags: english

Aug 27 '11

Sync Multiple Remote Git Repositories

You have a git repository (repoA) as origin, which you only pull from. Sometimes the repoA is in the intranet and not accessible from the internet. You want to create a mirrored repository (repoB) in your local network for the convenience.

  • Clone the repoA in local (repoL): git clone --mirror remote.in.intranet:repoA repoL
  • cd repoL
  • Add a remote repository that is pushed only: git add remote --mirror=push repoB remote.in.local.network:repoB
  • git push repoB

That’s it. To sync them:

  • git fetch --bare
  • git push repoB

Will pull all refs, branches, and tags from repoA and push all of them to repoB.

Thanks to the stackoverflow discussion.


リモートにある複数の Git レポジトリを sync したいときにどうするか、という話。

2 notes Tags: git

Aug 24 '11

Google Translate をつかって日本語入力する IM のプロトタイプをつくった。実質1.5時間くらい。

英文を打ち込んで、 . で翻訳がかかり、変換される。 ローマ字もわからない英語話者が、他の言語を入力したいときに便利、かもしれない。

スクラッチで IMKit を使った Xcode project をつくると、どうしても Setting app から認識されなくて、それでもう2時間くらいはまった… 悲しい。 仕方ないので、サンプルコードのリソースをそのままつかって、情けないかんじに。

  • .1 で英語→日本語
  • $ で英語→フランス語

Google Translate API が deprecated 扱いで、もう少ししたらこれも使えなくなる運命にある。しかし、このあと何かやるとすれば。

  • 複数の translation site の訳を変換候補とし、ならべて表示
  • 打ってるそばから翻訳して補完表示

じっさいのところは、翻訳の精度がまだまだなので実用には耐えないのだけれど、未来都市ではコンピュータの翻訳がさらに自然なものになっているとして、その時のことを想像する。

ソースは Github に : https://github.com/mootoh/Konjac

11 notes Tags: hack

Aug 23 '11

Agree, Add

The End of Agile, PragProg Magazine August, 2011 を読んで、Agile 云々よりも、 improv するときのルールの話から考える。

  • Rule 1. Agree
  • Rule 2. Add

ブレストの基本だ。同意してのっかる。ネガティブなことは言わず、いいねいいね Like! を押して、かつ新しい何かをつけ加える。

遠く海の向こうで行われたと聞く、最後の RubyKaigi を思い出す。経験してないのに思い出すってのはなんか変だけれど。 これはいいものだ。というのを認め、そこにとどまらず、こだわらず、次に進む。はじまりの終わり。おわりの始まり。

日々、英語で会話するときに Agree どまりだなぁと反省する。 “How was your weekend?” “Great!” では終わってしまう。ふくらませたい。ボキャブラリが必要だ。

Like とちゃんとした意見、との間にある、取るに足らないコメントのことを思い出す。「すごいですね!」とか「へぇ」とかそういう。 Agree してるけど Add してない。そういうのは見るに耐えないのでフィルタアウトしたい… けれど、実生活では自分がまさにそれをやってるっていうのが痛い。

書いてみるとすごい単純だし、いろんなことわざが同じことを指している。 Agree から Add へのギャップをかるがると越えて、変なものを世界に Add したいものです。

88 notes