iOS 版 Atok を入れてみた

iOS が 8 になり、アプリだけでなくデバイス ドライバサードパーティが提供できるようになった。というこの一文だけで、その意味が理解出来る人は少ないと思うので噛み砕いて説明し直すと、iOS は今までアプリしか Apple 以外の会社が提供することは出来なかった。
アプリ以外何があるんだよ、っていうとそれはデバイス ドライバと言われるモノで、特定のデバイスをコントロールするプログラムだ。デバイス ドライバのように常にメモリ上に常駐し、ハードウェアを制御するようなプログラムは、通常のアプリよりも高い権限が与えられる。
なぜ高い権限が必要かというと、デバイス ドライバは全てのアプリから利用できる必要があり、さらに必要に応じてアプリよりも優先度が高く実行されなければならないからだ。例えばキー入力や画面タップを扱うプログラムは、各アプリにキーや画面が押されたことを伝えなければならないし、アプリの動作に関係なく、人間は勝手にキーや画面をタップするので、アプリの動作をいったん止めてでも、その人間様の操作をとりに行かなければならない。なので、デバイス ドライバは通常のアプリよりも優先して動くように作られているのだ。
そのため、悪さをするソフトウェア(マルウェア)の自由度も広がってしまい、さらに通常のアプリからは排除できないなどの問題も出てくるため、Apple 以外では配布できないようになっていたのだ。
それをどのようにクリアしたのか、ボクは調べてないのだが(マテ)、iOS 8 からはサードパーティ(Apple とは関係ない存在)からもリリースできるようになった。

で、案の定 Atok という日本語を入力/変換するドライバの iOS 版が今日リリースされたので、さっそく入れてみた。
今まで iOS にも Atok はあったのだが、それはメモ帳として提供され、そのメモ帳でのみ Atok が使えるというものだった。常にメモリに常駐し、ユーザからの入力をすべて乗っ取って(プログラムでは、フックという)動作するようには今まで書けなかったからだ。

でね、解ったことは、スマフォで文章を入力する場合、圧倒的に単文節変換+予測変換なのよ。例えば、「今日は東京はいい天気です。そちら、青森の天気はいかがですか?」って入力しようとすると、パソコンの場合、最後の「いかがですか?」を入力したところで初めて変換ボタンを押す(ボクの場合は自動変換を用いているので、変換ボタンさえも押さないが)。
ところがスマフォだと、「今日は」「東京は」「いい天気です。」「そちら、」「青森の」「天気は」「いかがですか?」と文節毎に変換していき、その途中で予測変換で合致したモノがあれば、それを採用していく。
となると、文章全体から予想される同音異義語の変換(例えば「貴社の記者が汽車で帰社した」みたいな文章)というのは余り効果を発揮しない。結局、文節毎に変換するので、どちらかというと「過去に何を入力したか」の方が大事になってくる。
なので「頭がいい」と評判の Atok である意味が、あんまりないのだ。
もちろん既に変換し終わった文章からも推測してくれてはいるようだが、スマフォでは圧倒的に過去に変換したものと予測変換(但しこれも過去に変換したものに大きく影響される)を頼りにしているので、Atok じゃなくても特に問題ないのだ。

つまり正直な感想、Atok にする意味って……ないような気がする。

まぁ、スマフォでも連文節変換すれば Atok でもいいような気がするんだけど、ボクは今のところスマフォで連文節変換をする気にはなれない。なぜなら変換途中のままずらずらと長い文字列を表示できるほどスマフォの画面って広くないし、入力間違いや変換間違いを見付けたとき、そこまで戻ってそこを修正して、また文末まで戻るとかそういう操作がやりづらい UI なのだ。

あと Atok にはもう一つ難点があって、やはりまだデバッグ不足なのか、時々お亡くなり(フリーズ状態)になる。そうすると文字入力が一切出来なくなってしまうのだ。こうなってしまった場合、現在のアプリをいったん終了してから起動しなおすと文字入力できるようになる。
それともう一つ、Siri が使えなくなってしまうのも問題だ。標準の文字入力から Atok に切り替えると Siri の呼び出しボタンがない。
ボクは両手が塞がっているときなどに Skype や SMS に応答するとき、Siri を使って文字入力している。Atok にしておくと Siri が呼び出せないのだ。

そんなわけで、iOS 版 Atok、今のところ……うーん、イマイチという感じだ。

IMG_2302 IMG_2303

レスポンシブ デザインのめんどくささ

今回はレスポンシブ ウェブ デザインの話。レスポンシブ ウェブ デザインって何かっていうと、一つのデザインですべてのプラットフォームとブラウザに対応することである。つまり PC でアクセスしてもスマフォでアクセスしても、同じデザインで出力される……というわけではなくて、一つのデザインしか定義してないんだけどそれで PC でもスマフォでもちゃんと表示されることである。

今やっているスマフォのゲームも最初、レスポンシブ デザインで作っていた。
このレスポンシブ デザインの肝は簡単に言ってしまえば%で作ると言うことである(ぁ
どういうことかというと、例えば 2 段組をするとき、全体幅が 1024 ドット、左側がメイン コンテンツで 640 ドット、右側がメニューとかで 384 ドットにしよう……ってのが今までの作り方。
レスポンシブ ウェブの場合は、全体幅は 100% で作り、本文左側は 62.5%、メニューとかの右側は 37.5% にしようってこと。そうすればどんな機器だろうが割合で区切られるので、それらの機器に従った大きさになる。
これはレイアウトだけでなく、画像の大きさに至るまで何もかも%で指定する。

ところが、この作り方には二つの欠点がある。

  • 文字の大きさは変わらない
  • ドット単位の微調整は不可能

ブロック要素や画像などは画面の大きさに従って勝手に変わってくれるのだが、文字の大きさはそれに追随してくれない。なので細かいディスプレイに出しても、荒いディスプレイに出しても同じ大きさ(ドット)で表示されてしまうため、要素の中に表示される文字数が変わってしまい、結局レイアウトが乱れる。
これはディスプレイの画素数と CSS ピクセル比ごとに文字の大きさを定義しておく必要がある。
さらにゲームではインターフェースに凝るため、ドット単位でのボタンやゲージ(メーターやプログレス バー)などの表示が必要となる。ブラウザは小数点第三位くらいまでの%値しか見てくれず、ドット単位での微調整はできない。これの回避方法は、ドット単位で組んだあと、Javascript や CSS の ZOOM を使って最適な大きさに表示するのだが、iOS の Safari などでバグが発生し使えないことが多い。これに関しては、まだボクの中では特に解決策は見いだせていない。
今回はドット単位で調整が必要なところは、合成した画像を変化する種類分作って対応するというわりと原始的な方法で回避した(^^; どういうことかというと、下地があってその上にボタンをドット単位で並べなければいけないような場合、下地とドット単位で並べたボタンを合成してしまい、どのボタンが光っているかというパターン分の画像を用意することによって、ドット単位での調整をしなくて良いようにした。ただこの方法は、パターンが膨大にある場合は使えない……。

まぁ、一番いいのは Javascript の ZOOM である。コイツさえ正常に動いてくれれば、レスポンシブ デザインは一気に楽になる。何故かというと、ドット単位で自由に作れるからだ。従来の作り方のように、例えば全体幅を 1024 ドットとか 640 ドットとかと固定して自由にレイアウトした後に、Javascript で機器のディスプレイの大きさに合わせて拡縮するようにすれば楽ちんなのである(爆。

他にも Table を使うのが難しかったり、横幅を必要とするモノがどうしてもスマフォなどだレイアウトが崩れてしまったりなど、一つのデザインで様々な機器に対応するのは一筋縄では行かない。TAMA Networks も燃費なんかの表の部分や、説明付きの画像の場合はスマフォで見ると崩れてしまう。
この辺、何とかしたいなぁと思いつつ……。
写真はこの日食べたもの。バーガーキングのブルーベリーのハンバーガーと、秋葉原の万豚記。

1412080730 1412080731 1412080737 1412080740 1412080741 1412080747

Webkit オンリーで組んでも……

スマフォの開発を相変わらずしているんだけど、今回の案件は別に PC で動作する必要はない。で、スマフォというと iOSAndroid が主流で、他のプラットフォームに関しては、ほぼ無視して良い(ゲームの場合の話ね)。となると、ボクが思ったのは「じゃぁ、Webkit に対応して作ればいっか」であった。
iOS に搭載されている Safari も、Android の Chrome も Webkit というレンダリング エンジンで作られているからだ(Chrome は Webkit からさらにフォークして Blink となった)。

ところが、けっこう iOS と Android で表示が違うんですな。
更に困ったのが Android の標準ブラウザ。
実は Android に最初からついてくるブラウザというのは Google Chrome ではない。なんでなのかというと、これはボクの予想でしかないのだが、Android デビューに Chrome は間に合わなかったからだと思われる。ちなみにエンジンは Webkit である。
Android 版の Chrome は Android のバージョンが 2.3 だか 2.4 だかくらいにようやくデビューした。なので Android には「標準ブラウザ」という、別のブラウザがずっとついてきている(Android 4.4 でようやく標準ブラウザが Chrome となった)。

この標準ブラウザがとにかくタコい。
まず Javascript の実行速度が圧倒的に遅い。そして HTML5 からついた修飾(ぼかしや縁取り、グラデーション)などの再現率が低い。特にぼかしがおかしい。

次に Safari。コイツのフォント処理はおかしい。とにかく文字の大きさが合わない。
なんだこれー!?
しかもバグがあって、Javascript で拡縮をやると正しい大きさにならないという……orz(CSS でも ZOOM を使うと同じ症状が出るらしい)
これが実に問題で、先の記事の CSS ピクセル問題で、CSS を書き直しせず、Javascript で最適な大きさに拡縮するという風に逃げたのだが、この Safari のバグのおかげで結局この方法は使えなくなってしまい、CSS を全面書き直さなければならなくなった。

だ、ダメすぎる……orz

だが今回、「ブラウザの場合分けはしない」というポリシーで組んでいる。これは別にボクの勝手なポリシーなんだけど。場合分けってのは何かっていうと、Safari だとこっちの処理、Chrome だとこっちの処理というようにブラウザことに処理をわけることだ。
CSS / HTML は一種類の定義ですべてのブラウザで通用するように書いた。まぁ、なんだかんだ言ってもレンダリング エンジンが一つだったというのが大きいだろう。これが PC だとこうは行かなかったと思う。

機種変

機種変しに Docomo に行った。浅草橋には広くてあんまり人が来ない Docomo ショップがあるのだ。で、壊れかけたフィーチャーフォン(ガラケー)を iPhone に変えるのだ。
その前に、まずボクの回線契約状況を説明しよう。
ボクは何故か携帯回線を 4 回線も持っていた(汗)。内訳は、以下の通り。

  1. 主回線(Docomo)
  2. データ回線(Docomo) -> ノート PC とかでネットをするため
  3. 開発用回線(Softbank
  4. おまけ回線(Softbank)

Softbank 回線はまだ Docomo が iPhone を扱ってなかった時代に iPhone の開発案件があって契約したものだ。それが開発用回線で、当時 iPhone 4S だった。で、おまけ回線とは何かというと、iPhone 4S を iPhone 5 に機種変するとき、iPhone 4S にも何故か新しい電話番号をくれたのだ。そしてこれは無料で使って構わないという(但し、データ通信はできないし、電話をすれば電話料金がかかる)。そこでこのおまけ回線は電話受け専用& WiFi マシンとなった(Softbank が加入者数を増やすカラクリの一つかもしれない?)。

で、まず、おまけ回線を Softbank のショップに行って解約。
そして主回線を iPhone 6 に、さらに開発用回線を MNP を使って Docomo 回線にした。そうなのだ、今回機種変することになったのは、Softbank の二年縛りがちょうど  11/20 で切れるからなのだ。これをずっと待っていた。
これで完全に Docomo 回線一本となり、Softbank 回線からオサラバできた。今まで Docomo 回線に毎月 \15,000、Softbank 回線に \8,000 払っていたのだ。
Softbank から MNP するとき、Softbank のおねーさんからスゲー引き留められた(笑

で、Docomo には「パケットパック」という仕組みがある。今までパケホーダイは各機種毎に紐付けされており、それぞれにパケホーダイのお金が必要だった。このパケットパックはパケホーダイが回線契約者本人に紐付けされる。
つまりボク本人がパケットパックを契約し、ボクが使っている端末はそのパケットパックの中からデータが使用される。これによって回線数はコストとイコールではなくなった。おかげで大幅に毎月の支払が安くなった。
どれくらい安くなったかというと、月 10GB のパケットパックで 1 万円となった。
3 回線で 1 万円。Softbank とあわせて 23,000 円払っていたのが半分以下となった。

そしてさらに今回 iPhone 6 にしたおかげでテザリングが使えるようになった。つまり携帯回線を持たないノート PC とかも無線 LAN があれば iPhone 6 を経由してインターネットが利用できるようになった。と言うことはつまり 3 回線のウチのデータ回線も不要となる。ところがコイツは 2013 年の 9 月に機種変をしてしまって二年縛りがまだ残っている。こちらは今年の 10 月に解約できればいいなと思っている。

写真は会社帰りに寄った中野の定食屋さん(そして iPhone 6 で一番最初に撮った写真かもしれないw)。吉野家とかそういうチェーン店系以外でなんかないかなぁと思い、中野で車を降りて歩いて見付けた。夜中の 3 時過ぎだというのに、ほぼ満席だった。まぁそんなに広くはないけど。
そして出前もやってるらしく、料理を待っている間もじゃんじゃん出前の電話がかかってきていた。いったいどういうお客さんなのかしら??

味? んー、まぁ、見た通り予想通りみたいな。期待を裏切る味ではない。それが重要なんだと思う。麻婆豆腐と言われて何となく予想するそのままの味。美味しくいただきました。

1411230008 1411230004 1411230006 1411230007

iPhone 4S に iOS8 を入れる

iOS7 のセキュリティ ホールとかが色々と目立ってきて、ボクの iPhone 4S もいつまでも iOS7 じゃ問題だなぁと思っていた。とは言え、iOS8 は iPhone 4S ではもっさりという噂が流れてて、二の足を踏んでいた。
でも色々調べて見ると、iOS6 -> iOS7 にしたときのようなもっさり感と書いてある記事があって、うーん、それなら別にイイかと思ってやってみた。

iOS6 -> iOS8 にしたらかなりもっさりに感じるだろうけど、iOS6 -> iOS7 で iOS7 がもっさりと感じていないなら、意外にも大丈夫なんじゃないだろうか、と。

で、結果的に、ボクは大丈夫でした(その時のツイート)。
もっさりというか、確かにアプリの起動は少し遅くなったような気がする。
が、特に使っていてコレと言った遜色はなかった。それにもっさりだったとしても、そもそも iPhone 4S は 3G 回線なので、そんなに問題にならないし。

と言うわけで、今のところ快適に使えています。
とは言え、今月中に機種変しちゃうんだけどね(^^;

ガラケーがヤバい


ボクは携帯電話にいわゆるガラケー(F-04B)というのを使っているんだけど、こいつの動作がいよいよ怪しくなってきた。まずタッチパネルが正常に動作しない。全然違うところが反応したり、触ってもないのに色々な所が勝手に反応して、画面が勝手に切り替わる。
さらに充電部分がおかしく、正しく充電されない。またこの携帯電話はキーボードと表示部(こちらが本体)が別れるようになっていて、表示部にキーボード部の電池残量とか出るんだけど、それが正常に表示されなくなった。
ただ充電部分は掃除してやるとしばらく使えるようになるが、一週間もすると調子悪くなってしまう。
なので今は電話をかけるのも一苦労。タッチパネル部分は動作が変なので、アドレス帳を呼び出すまでが大変。一方、キーボードとの接続も変なので、キーボードを ON にしても表示部が認識せず、キーボード側からも電話がかけられない。
そんな状態が続いている(^^;

いよいよ機種変をしたいのだが、実はある計画を練っている。
ボクは Docomo 回線とは別に Softbank 回線も持っている。こちらは iPhone の開発をしていた頃に契約したもので、その当時は Docomo は iPhone を売っていなかった。これの二年契約が切れるのが 11/23 なのだ。二年契約が切れれば、今使っている iPhone を NMP で Docomo に変えそのついでにガラケーも機種変しようと考えているのだ。なのであと 2 ヶ月の我慢……。

UQ WiMAX 雑感

bs_yuta01i
今頃ではあるが一昨日の引っ越し騒ぎUQ WiMAX を契約したので、その感じたことなど。
まず今回はモバイル・ルータとして使うのではなく、完全に会社のネット回線として使用している(笑)。こんな使い方が許されるのかどうかは解らないが、WiMAX 以下の LAN には 10 台以上のマシンがぶら下がっていることになる。

まず UQ WiMAX には 2014 年 9 月現在で 3 つのモードがある。

  • ノーリミットモード(WiMAX)
    下り 40Mbps / 上り 15.4Mbps で、どんなに使っても帯域制限をされないモード。
  • ハイスピードモード(WiMAX 2+)
    下り 100Mbps / 上り 10Mbps で、最初の1年間はどんなに使っても帯域制限されないモード。
  • ハイスピード プラスエリアモード(WiMAX 2+ & AU LTE)
    ハイスピードモードを基本に、WiMAX のカバーされないエリアに関しては、AU の LTE を利用するモードで、AU の帯域制限がある。

端末は HUAWEIHWD15 という機種で、コイツはクレイドルを使うと有線 LAN ルータとして動くため、社内の端末をインターネットにつなげることができる。気になる速度だが社員 10 人程度がネットサーフィンをする分にはそんなに問題はないようだ。
社内にはサーバもあるため、通信モードはノーリミットモードを利用していたが、やはり上り速度は遅く、サーバ用としてはほとんど使い物にならなかった。常時、1Mbps くらいが限界。なのでウェブサービス(グループウェアとか BTS とか)は使えるが、FTP などは話にならない。
また、ルータとしての機能がショボいため、Virtual HostHTTPS はまったく使えず、ウェブサービスもかなり制限を受けてしまった。もっとちゃんとしたルータだったら、サーバ運用も可能ではないかと思う。
それよりも何よりもサーバ運用で困るのが IP アドレスが 24 時間に一回勝手に変わることである。これさえなければなぁ……。

引っ越しするまでの 2 週間とちょっとだが、緊急の回線としては充分だが、サーバなどを置いているとどうしようもないという感じである。もっとも UQ WiMAX もこんな運用のされ方は想定してはいないはずで、そう考えれば充分機能してくれたと言って差し支えないと思う。