2014年9月23日火曜日

最近、ディズニー・モバイルに乗り換えたのですが、iPhone6が予想通りショボかったので、乗り換えの判断は正しかったと思いました。

昨年だったか、一昨年だったか、僕は、iPhoneからAndroidに乗り換えました。そろそろ、Androidが機能的にiPhoneに追いついたと感じたからでした。

選んだ機種は、富士通のArrowsでした。

当時としては一番のハイスペックマシンでして、使っていてまあまあ楽しかったのですが、今年初めごろから、様々なトラブル、たとえば、使っている途中で突然再起動しはじめるとか、突然電源が切れるとか、が、発生するようになりました。

やっかいなことに、一度、再起動を始めると、何度も再起動を繰り返し続けるようになり、ほとんど使えなくなります。

富士通に修理に出しましたが、修理を終えて返ってきたあとも、再起動を繰り返す症状は全く改善しないまま、さらに、カメラが動かなくなっていたり(つまり、修理に出したら壊されて帰ってきたのです)と、まあ、ひどい状態が続いていたため、この8月、他機種に乗り換えることとしました。

iPhoneに戻ることも考えたのですが、残念ながら、iPhoneには、もう、ほとんど魅力を感じませんでした。

なぜなら、すでに、Androidのほうがほとんどの分野で機能的には上回っていましたから。また、その時点で喧伝されていたiOS8の新しい機能、たとえば、僕の場合は、HealthKitに関心があったのですが、その種のアプリ間のデータ共有は、とっくに、Androidでは、普通に実現されている機能でしたから。その他の機能も、すでに、Androidの後追いのものにしかみえませんでした。

他方、他のAndroidのマシンのどれにも、それほど強い魅力は感じませんでした。スペックの数字には少々の違いはあるものの、どのマシンも、ほとんど質的には同じに見えたのです。

これは、つまり、iPhoneも含めて、スマートフォンという商品分野が成熟してきたということなんだろうと思います。スマートフォン、つまり、2〜10万程度のお金で手に入れられる、タッチパネル搭載の通信機能付きのコンピュータの分野では、もはや、どの会社も、技術的に突出したものを作ることはできない。別の言い方で言えば、どの会社も、技術的には、同じような製品を作ることができる。そういう状態になったのです。

また、スマートフォンという分野が成熟したということは、今後、この分野では、どの会社も、少なくとも純技術的な方法では圧倒的に突出した体験を提供するマシンは作ることはできない。仮に、新しい何かを作ったとしても、他社は、簡単に真似できてしまう。ということになるでしょう。

つまり、お互いに、メモリーが増えたとか、CPUが高速になったとか、あるいは、安価な製品を作るとか、そういう、少々のスペックの差をつけることくらいしかできなくなったのです。

だからこそ、逆説的ですが、iPhoneの新製品は売れるでしょう。
技術的な差異が少なければ少ないほど、みんな、デザインやブランドや、メーカー独自の細かなサービスなど、技術以外の部分でケータイを選ぶようになるでしょうから。

では、今後は、この分野では、どういう製品が勝つだろうか?どういう製品が面白いだろうか?

そう考えた結果、僕は、ディズニー・モバイルの最新機種に乗り換えることにしました。

ディズニー・モバイルというのは、ウォルト・ディズニー・ジャパンがやっている携帯電話事業(実質的には、ソフトバンクかdocomoに委託して運営しています)なのですが、要するに、ミッキーマウスのデコレーションがついて、ディズニーのコンテンツが無料で好きなだけ見られる、(そのかわり、端末代金が他社よりも割高な)スマートフォンです。

通信サービスは委託先(ソフトバンクかdocomo)が普通に提供しているものと全く同じで、通信にかかる料金も同じ、ただし、ディズニー・モバイルの契約者は、委託先のソフトバンクやドコモの他のユーザーと違って、ディズニーが提供するコンテンツ(動画や音楽、ゲームなど)を無料で楽しめる、という形になっています(もちろん、この通信サービスの契約者以外でも、iTunesStoreやGooglePlayで、コンテンツごとにディズニーから購入すれば、同じコンテンツを楽しむことはできます)。一方、端末のハードは、基本的に、他メーカー、たとえば、SHARPとか京セラとかのOEMで、要するに、OEM先が普通に売っている製品(で、OEM先の製品の中でも、最新機ではなく、少し古い機種)に、ミッキーマウスのデコレーションがついただけなのですが、OEM先の製品より、大幅に高額な値段設定になっています。つまり、コンテンツの利用料を、実質的に、最初に払う端末代金に上乗せする形で支払わせているわけです。

これ、技術では差がつけられなくなってきた(でも、デザインやコンテンツを作る能力には長けた)メーカーが取りうる、生き残りの方法の一つではないでしょうか?

さて、僕が、ディズニー・モバイルに乗り換えてしばらくして、iPhone6と6plusが発表されました。いずれも、予想通り、みんなをびっくりさせるような革新的な機能はなかったようです。Android対応の端末を売っている各社の製品に比べて突出した機能もありません。
画面サイズとCPUとメモリ、バッテリーと、スペックの数字上の少々の進歩が、一番の目玉のようです。

もちろん、ブランドやデザイン、関連するサービスなどで、iPhone6は、それなりに売り上げるでしょう。こうなると、アップルは、やはり、ディズニーになるしかないのではないでしょうか?

追記

ところで、買ってから気がついたのですが、ディズニー・モバイルには、他にはないメリットが、2つあります。

ひとつめは、「ハズレの機種」を掴まされにくいということです。
ご存知のように、携帯電話、特に、Android搭載のスマートフォンには、時々、「ハズレの機種」があります。やたら故障やトラブルが多かったり、妙な欠点があってやたら使いにくかったり、というような機種、つまり、僕が最初に購入した富士通のArrowsみたいな機種です。
「ハズレ」は、売られ始めてしばらくすると、ネットなどで、あの機種はハズレだという評判が経つので、それなりにネットでの評判に注意していると避けることができるのですが、いちいちそういう情報に注意しているのは大変です。また、販売されたばかりの最新機種を買うときには、そういう評判自体がない状態で購入することになりますから、やっぱり、ハズレを避けることは、難しいものです。
ディズニー・モバイルの製品は、各社の販売している一世代前の安価な機種のうちから、トラブルの少ないものをベース機種にして作られるようです。ですので、基本的に、「ハズレ」を引く可能性はない(もしくは、非常に少ない)と考えていいようです。

ふたつめは、キャリアが提供する、面倒なオプションサービスを勧められないですむ、ということです。
ソフトバンクの携帯を購入すると、様々な、不要なオプションサービスを勧められます。
「不要かもしれませんが入ってください。最初の一月は無料ですから、すぐに解約すれば、料金は発生しません。もし、不要であれば、本日以降、いつでも解約できます。」
とかいうアレです。
みなさんも、ご経験があるのではないかと思います。
僕は、アレ、ものすごく嫌いなので、絶対に加入しないことにしています。でも、これ、店頭で加入しないの、大変なんですよ。
「不要なものなど加入したくないし、解約も面倒だし、もし、解約忘れたら僕がお金を払わせられるわけだし、そんなの加入したくありません。」
って言っても、
「いや、システム上、最初は入ってもらうことになっているんです。」
とかなんとか。
「じゃあさ、どうしても最初に加入するっていうルールになってるんだったら、カタログの料金説明とか、契約書とかに、そのルールが明文化してあるんだろうから、その箇所を示してみせてください。」
ここまでいうと、シブシブ、オプションサービスに加入せずに契約を進めてくれます。
これ、本当は、最初は、この手のオプションサービスに加入しないといけないっていうのは、ウソなんです。ただ、このサービスを必ず勧めるように、店員のマニュアルに書いてあるらしいのと、あと、どうも、このオプションサービスに加入した人の数に応じて、店員にインセンティブを支払うことになっているらしいから、こういうことになっているんですよね。
ただ、毎回毎回、店頭でこういうバトルをするのは僕としても面倒臭い。
これ、ディズニー・モバイルを契約するときには、
「不要なサービスかもしれませんが、どうします?あ、入りたくないですか。わかりました。では、この4つのサービスは結構です。」
みたいな感じでした。
ソフトバンクの回線を使う場合、ディズニー・モバイルでも、ソフトバンクでも、全く同じ値段で同じサービスで、その不要なオプションサービスも同じなんですが、この、契約の時の対応が全然違うんですね。
後から聞いたんですが、どうも、建前上、別の会社のサービスなんで、ディズニー・モバイルでは、このオプション契約をとっても、ソフトバンク社員には、インセンティブが支払われないということらしいです(この情報は、まだ、裏を取っていませんけど、なるほど、って感じです)。

2014年9月7日日曜日

KindleのUI/UXについてのつれづれ。

本を、電子書籍リーダーやタブレットなどで読むことと、同じ内容の本を紙の本で読むことは、どれくらい同じ体験で、どれくらい違う体験なんでしょうか?

僕は、AmazonのKindleが大好きで、Kindle端末を二台(Fireとpaperwhiteを一台ずつ)持ち歩いています。
特に、e-inkを採用したpaperwhiteが気に入っています。高画質のe-inkディスプレイは、通常のディスプレイに比べてはもちろん、紙のドキュメントに比べても、ずっと目が疲れにくく、紙の本よりも長時間の読書ができます。通常のディスプレイを使ったiPadなどのタブレットでは、そうはいきません。

元々、読書量は多い方だったのですが、kindle paperwhiteを手に入れてから、これまでよりも、さらに、ずっと多くの本を読むようになり、また、これまでは読まなかったようなジャンルの本も読むようになりました。おかげで自分の世界が大きく広がったと思っています。

こういう、コンピュータで自分の人生そのものが大きくかわったような経験は、大学時代にはじめてインターネットに接続した時以来です。

電子書籍バンザイ!

そんなふうに気に入っているkindleですが、いくつか、不満もあります。
現状、一番気に入らないのは、「本を読み進めている感じ」が足りないことです。

物理的な本を呼んでいるわけではないので、本の厚さ、つまり、全体でのお話の長さが実感としてわかりにくく、また、自分が、いま、その厚さの本のどのあたりを読んでいるのか、がわかりにくいのです。

それで、
「もう少しで終わってしまう。もったいないのに、面白くて、どんどん読み進んでしまう。」
とか、
「まだ、こんなにページがあるのか。これは、今日、全部読んじゃうんじゃなくて、じっくり腰を据えて、次の休みの時にでも、じっくり読んで楽しめる本だな。」
みたいな、そういう「本を読み進めている感じ」がどうしても感じにくい。
あの、「感じ」は、本好きにとっては、たまらない心地よさなのであって、あの「感じ」がないのは、やっぱり物足りないな、と思います。

・電子書籍に移行することで失われる読書体験の中身が少し判明
こういう記事がありました。

視点は少し違いますが、ここで書かれていることは、僕がここで書いているのと、ほぼ同じだと思います。

これは、やる気さえあれば、そういう読書体験を楽しめる電子書籍リーダーは簡単に作れると思うんですけれどね。要するに、本の厚さと自分が読んでいる場所が体感的にわかればいいのです。

たとえば、電子書籍を選ぶ画面で、表紙の表面の画像だけでなくて、本の厚さがわかるように背表紙の画像も見せるのです。
背表紙が並ぶ画面で一冊本を選んでタップすると、本の表紙が大写しになって(その際、何度も読んでいる本だったりしたら、本のヘリに付箋の画像なども見えるといいかもしれません)、さらに、本の表紙をタップすると、読書開始。
というふうにするのはどうでしょうか?

読み始めた後も、ページの左右に、未読のページと既読のページのヘリの部分がリアルに見えているような画面構成にしてはどうでしょうか?

また、タブレットや電子書籍リーダーに「動くおもり」を入れてもいいかもしれません。
日本語縦書のように、右から左に読む本の場合、読み始めでは、タブレットの左半分がずっしりと重たく、読み進むに連れて、左側が軽くなり、反対に右半分が重たくなってくるというのはどうでしょうか?紙の本を読んでいるときは、読み始めは、未読側のページを支えている手が重く、読み進むに連れて、既読側のページを支えている手が重くなってきますよね。アレをエミュレーションするのです。

今日は、そんなことばかりを考えているのですけれど、でも、今の電子書籍リーダーの、読んでいる場所がわかりにくいという性質は、悪いことばっかりでもないとも思います。
逆に、こういう、順序やページめくりの感覚が弱いという電子書籍の性質が、別の種類の読書体験につながることもあるかもしれません。
 
僕は、Kindleで谷崎潤一郎読んでて気がついたんですけど、小説の時間の流れが分かりにくくなると、あの種の変態的な人間関係の描かれる小説は、永遠に変態地獄が続くように感じられて、紙の本で読むより息苦しいのです。

同じように、ホラー小説のたぐいも、先が見えにくいほうが永遠に恐怖の時間が続くように感じられて、面白く読めるかもしれません。
 

映画館で映画見るのとテレビで映画見るのの違いみたいなもんで、コンテンツが同じでもメディアが違うと、体験は変わるのだと思います。

とはいえ、いずれ、こういう紙の本を模しただけの電子書籍はなくなっていくんでしょうね。コンピュータで動くのに、いつまでも、紙の本のシミュレーションをし続ける必要もないと思います。
将来は、絵本の挿絵が、立体動画になったり(僕は、できれば、そういう演出のついた電子書籍版の「くまのプーさん」が読んでみたいと思っています。たぶん、ディズニーのプーさんのオリジナルを見たことのある人なら、みんな、同意してくれると思います。)、あるいは、ゲームやバーチャルリアリティつきの本(VR体験付きの、「ネバーエンディング・ストーリー」などは、いかがでしょうか?)

いずれ、そういう電子書籍が出てきたら、僕達は、更に楽しめるようになるんでしょうか?
想像するだけで、わくわくします。

2014年9月4日木曜日

副業プログラマのための言語やフレームワーク、開発環境の選び方

プログラムの開発をする人の間では、いつでも、どのような開発環境、どのようなフレームワーク、どのような言語を選ぶのがいいか、みたいな話題が盛んです。

そういう話題を話したり、読んだりするのは、技術屋としては、大変楽しいことです。
ですので、技術関係のニュースサイトや掲示板、メーリングリストなどで、そういう話を見るのは、僕は大好きです。

ですが、最近、そういうニュースサイトなどで勧められているものは、自分に必要なものとは、ずいぶん違うことが多いな、と感じるようになりました。そういうサイトで勧められている開発環境のたぐいは、一言で言うと、専業プログラマのためのものであって、副業プログラマには不向きなことが多いのです。

ぼくは、医者をやりながら、時々、副業でプログラマをしています。
僕は、生活費の大部分は、本業の医者としての稼ぎで稼いでいて、プログラムを書いてもらっているお金は、それよりも少ない状況が続いています(ただ、そういう状況が今後も続くかどうかは、わかりません)。 

ぼくのような組み合わせの仕事のかけもち方をしている人は、それほど多くないようですが、プログラムを書く以外にも、営業とかナントカとか、やらなければならないことがある人というのは案外多くて、そういう人は、やはり、専業でプログラムだけをやっている人とは、必要な言語や環境の選び方が、少しちがうように思います。

最近、地方のお寺の住職をされながら、副業でプログラマをしてらっしゃる方とお会いする機会がありました。その方も、自分が使うべき技術について、僕と似た考え方を持っていらっしゃって、この話で、楽しく盛り上がりました。

そういうわけで、このエントリでは、僕が、自分が使う言語や環境を選ぶときに気をつけていることを書こうと思います。他の、僕達と似たような立場の人に、参考になるかもしれないと思うからです。

1,プログラムの動作環境は、できるだけ、「手離れのいいもの」を使う。
特に先方で指定した環境がない場合は、できるだけ、手離れのいい動作環境を選ぶようにしています(僕の場合、先方の指定した環境が手離れが良いと思えない場合には、仕事自体を断ることもあります)。
ここでいう、「手離れがいい」というのは、納品した後に、自分でサポートのために動かなくてもいい、という意味です。納品した時には、きちんと動いていたように見えても、その後に、何かトラブルが起こるかもしれませんし、納品先で何か変更を加えた結果動作がおかしくなるかもしれません。あるいは、納品したあとで、もっとスペックの高いマシンを用意するから、別のマシンでも動くようにセットアップしてほしいと言われることもあります。
そういう時、できるだけ、自分がいなくても先方のスタッフだけで対応できるように作っておくことは、副業プログラマにとっては、非常に重要です。というのは、副業プログラマには、副業よりも大切な本業がありますから、いつ本業が忙しくなって、過去の自分の作った製品のサポートのために客先の企業に訪問できなくなるかもしれないのです。
こちらに余裕があるときには、訪問してサポートを行ってお金をいただくけれど、余裕がない場合には、このとおりにやったらできるから、と先方のスタッフにメールで指示するだけでもどうにかなるように、あらかじめ準備しておくのが理想です。

2,最新のフレームワークやライブラリは、あまり使わないようにする。
最新のフレームワークやライブラリを避ける理由は、2つあります。
第一の理由は、新しいフレームワークを覚えることが、必ずしも労働時間の短縮につながらないからです。
新しいフレームワークの多くは、 一度操作を覚えると、短いプログラムを少し書くだけで、相当に複雑なプログラムを作れるように工夫されています。仮に、あるフレームワークを使えば、プログラムを仕上げるために必要な時間が10時間、短縮できるとしましょう。そうすれば、フレームワークの操作方法を覚えるために、30時間かかったとしても、同じようなプログラムを3つ以上作れば、時間については、元が取れることになります。多くのプログラマは、複数の顧客相手に、似たようなプログラムをたくさん作ることになりますから、こういうフレームワークは、覚えるときには少し時間がかかっても、大抵、覚えたほうが得になることになります。
でも、時々、専業プログラマであれば元が取れる場合でも、副業プログラマには、元が取れないことがあるのです。というのは、専業プログラマに比べて、副業プログラマは、そもそもプログラムを書く量が少ないことが多いからです。先の、3つ以上プログラムをかけば元が取れるフレームワークを、週5日のしごとで10個のプログラムを作っているプログラマが覚えるならば、確実に元が取れるでしょう。でも、週2日のしごとで3個のプログラムしか書かない副業プログラマはどうでしょう。フレームワークを覚えたことで大きく特をするとは、言い切れなくなりますし、場合によっては、少々の損になることもありうるのです(もっとも、新しい技術に触れること自体は良いことです。すぐにはメリットが出なくても、将来引き受けられる仕事の種類を増やすことにもつながりますから)。
2つ目の理由は、新しいフレームワークを使うことで、完成したプログラムが、手離れの悪いものになることが多いからです。複雑なフレームワークは、どうしても問題なく動くようにセットアップする手間がかかりますし、進歩の速いフレームワークの場合、バージョンアップにキャッチアップするための手間もバカになりません。
僕は、そういうわけで、Railsをやめました。Railsでコード書くのは、本当は大好きなんですけれどね。

3,でも、テストだけは、絶対やっておく。
最近のフレームワークの多くは、テスト駆動開発を前提にしています。たとえ、そういうフレームワークを採用しなくても、テスト駆動開発は、やっておくべきです。エラーが発生した時に、リカバーに時間を取られないようにすることは、サポートの手間を減らすために、絶対に重要です。

4,外部のライブラリやプログラムは、できるだけ使わない。
これも、手離れを良くするためです。特に、特定のバージョンのライブラリに依存したコードは書かないようにしましょう。
ウェブ関係だと、「とりあえず、apacheとmysqlが動いていれば、あとは、このディレクトリの中身をコピーしさえすれば、それだけで、どのマシンでも動きます」みたいな状態が理想だと思います。

5,開発環境は、枯れた軽いものを。
開発環境は、複雑な機能のついたビジュアルなツールよりも、エディタ、あるいは比較的軽量なIDEが良いです。また、GUIのツールよりもコマンドラインのツールのほうが良いことが多いです。 ちなみに、僕は、むかしは、eclipseを使っていましたが、今は、vimを使うようになりました。
そうすることで複雑なツールに起因する開発時のトラブルを防ぐ事にもなります。また、副業プログラマは、どうしても、本業の合間に、きまった仕事場以外の場所で開発をすることが多くなります。軽量なツールのほうが非力でポータブルなマシンを使うときに有利です。

6,言語は、できるだけ普及しているものを。
どの言語にも、メリットとデメリットがあります。しかし、副業プログラマにとっては、そういうことに関係なく、できるだけ、メジャーな言語で仕事をしたほうが、有利なことが多いです。そういうわけで、僕は、今は、ウェブ関係の仕事は、ほとんどPHP、ウェブ以外だと、ほとんどJavaでコードを書いています。
これは、必要なときに、他の人に仕事を引き継いでもらいやすいからです。「自分にしかできない仕事」は、抱えないことが大切だと思います。

 ほかにもあるかもしれませんが、とりあえず、思いつくのはそんなかんじです。
また、思いついたら、書き加えるかもしれません。

bootstrap以外のCSSフレームワーク、なにを選びましょうか?

これまで、CSSフレームワークとしては、Twitter bootstrapを使っていたんですが、今回は、もう少し軽いものを使いたいと思っています。
それで、bootstrapの代わりになるようなCSSフレームワークを探しています。
必要な条件としては、
1,軽量で、サイズが小さいこと。
2,Javascriptは、最小限しか使っていないこと(できれば、全く使っていないこと)
3,CSS以外の、CSSにコンパイルされるようなファイルは、できれば、使っていないこと。つまり、サーバーサイドで、いろんな設定とか、特別なプログラムのインストールとかが、不要なこと。
4,ユーザーが多くて、ネット上にドキュメントが多くて、たいていのトラブルは、ググったら解決策が見つかること。

で、このうち、4,が一番重視です。
で、どのフレームワークが一番メジャーなのか、調べてみました。
調査方法は、メジャーなフレームワークについて、グーグルで、「(フレームワーク名) CSS フレームワーク」で検索して、ヒット数を比較してみただけ。

結果、

Bootstrap 74200
foundation 43900
Pure 33000 (軽量)
atlassian 32700
INK 23900 (Sass製)
skeleton 17500 (これも軽量)
cardinal 4390 (LESS製)
gumby 2150 (Sass製)

という結果に。ふーむ。Pureにしますかなぁ。
他に、おすすめをご存じの方がいらっしゃいましたら、教えてください。