2014 年の夏、私たちは iA Writer の Android 版を作るとはどういうことかをつかむために、Android SDK を少し触り始めました。頭の片隅にあった Android の怖い話とはほとんど無縁の、開発者にやさしい世界を発見したのです。

iA Writer for Android

iOS の人たちは、色も形もさまざまなテスト端末が増えていくのを見て、私たちの開発者の机がますます占拠されていくことを決して笑うのをやめませんでした。とはいえ、道のりの先でいくつかのつまずきはありました。それでも Android は、3 年前にあった見苦しい UX と低品質な端末の混沌から、ずいぶん前進しました。ここでは iA Writer for Android をリリースするまでに私たちが学んだことを紹介します。

断片化は選択の問題

Moto G は、SIM ロック解除で 200 ドル未満のスマートフォンです。HTC One M8 は、多くの iPhone ユーザーをうらやましがらせるでしょう。nVidia Shield のゲーム用タブレットには、コントローラーとスタイラスまで付いています。薄くて素晴らしい Galaxy Tab S。机の上に立てて使えるように作られた Yoga Tab 2。Nexus 7 の魅力的な妥協案。Android アプリを動かす四角い BlackBerry Passport……。今となっては、洋ナシ型の iCarly タブレットのスクリーンショットをベータユーザーが投稿してきても、私たちは驚かないでしょう。

次は UI です。nVidia のように素の Android に近いメーカーもあれば、かなり好き勝手に(そして妙なことに。Samsung を見てください)持っているものを何でも並べ替え、形を変えてしまうメーカーもあります。物理ボタンか仮想ボタンか。常時表示か、オプションでのみ表示か。ハードウェアキーボードはあるのか。アクションバーは 1 つか、分割型か、あるいはまったくないのか。選択肢はいくらでもあります。

ユーザー側も自分の印を残せます。システムフォントに Comic Sans を設定したい? もちろんできます。私たちは何でも見てきました。

中核は? Android はオープンソースです。なら自分で作ればいい。あるいは、Geeksphone Revolution のように、あらかじめ改造済みの端末を買ってもいいし、OnePlus One のように Cyanogen Mod のロゴが背面にすでに入っている端末でもいい。私たちはこの状況をウェブ開発から知っていますし、対処のしかたも知っています。開発対象の端末の物理的な性質について勝手な前提を置かないことです。

Android のキーボードを拡張するのは危険です。形や大きさについて前提は置けません。固定レイアウトで考えようとしてはいけません。ただし、いくつかの禁止事項を除けば、SDK は Android 本来の複雑さをかなりうまく抽象化してくれます。私たちが選んだ方法では、悪名高い Android の断片化問題は管理可能でしたが、ベータ工程では特異な端末や極端に改造された OS セットアップでいくつかの断片化問題にぶつかりました。

堅実なデザイン指針

オープンソースの世界に固有の「ニンジン」方式(Apple の「ムチ」戦略とは対照的に)に従わざるを得なかった Google は、最もデザインに疎い開発者にさえ理解できる指針を作る必要がありました。Lollipop 前の「Holo」テーマはすでに多くのアプリアイコンに UX の安定性をもたらし、Material Design は見た目の美しさを正しく整えました。Material Design のガイドラインは、印象的で簡潔な設計フレームワークです。

Android が「ノーデザイン」なルーツを完全に捨てたわけではありません。Lollipop でカスタムの行間が効かなくなったことは、小さな問題と見なされています。まあ、elegantTextHeight は使えますからね。フォントは? すみません、少し DIY しない限り、serif、sans、monospace の 3 種類から選ぶしかありません。つまり、いまのアプリがどれほどシンプルに見えても、すべてが順風満帆だったわけではないのです。

安定した API

Android SDK が提供する中核 API は、とても安定していることが証明されてきました。Lollipop は中核的にはまったく新しい OS で、新しい VM の考え方を持っていますが、最初の端末を更新したとき、アプリはそのまま動き続けました。これは驚くべきことです。iOS の人たちがテスト端末の山を見て笑うのをやめるたびに、彼らは次から次へと iOS のアップグレードに対応するため、自分たちのアプリを更新し続けていたのです。

Android の中核 API にどんな狂気が入り込んでいようと、それは残ります。これはコインの裏側とも言えます。インデントが正しく表示されない? ええ、2011 年からです。今では機能のひとつです。数千文字を超えるテキストを扱いたい? すみません、その SpannableStringBuilder クラスを書いた人は今ごろマリブで早期退職を楽しんでいます。Android の API は安定していますが、時にはもっと頑固でないほうがよかったと思うこともあります。

開放性の喜びと痛み

SDK のソースコードをデバッグステップで追えるのは喜びです。しかし、どんなスクリプトキディでも、あなたのアプリのコードにほぼ同じことができると知るのは、かなりぞっとします。

Android は今もオープンでハッカーにやさしい OS です。どんなアプリも、山ほどある端末上で中央の権威にほとんど監視されることなく動かされる運命にあります。その多くは jailbroken で、きちんとしたライセンス検証、リバースエンジニアリング耐性、改ざん耐性はほとんど期待できません。

もし今まさに私たちのアプリをリバースエンジニアリングしているなら(こんにちは!)、こちらは……対処するしかありません。もっと悪いことはいくらでも起こりえます。アプリが盗まれ、マルウェアと一緒に束ねられ、別の名前、あるいは同じ名前で再配布されるのです。Apple の安全な避難所を離れたばかりなら、あまりうれしくない展開です。

これまでのところ、Android の開放性が持つ欠点は、Android を取り巻く親しみやすく多面的な文化によって相殺されてきました。Google の堅実なドキュメント、Stack Overflow の頼れる人々、7 か国軍のようなベータテスターたち、いつでも使える段階的配信の見込み、Play Store に完全統合されたテスト工程。Android を使うなかで、私たちは Apple エコシステムの中でずっと前に去っていった開発者たちに向けられた、朗らかな感謝の気持ちを目にしてきました。

どうだった?

新しいものを作るために必要なイノベーションの暗いトンネルを逆向きに歩くより、既存の製品を複製するほうが簡単です。iA Writer for Android は出発点です。私たちは、2010 年にリリースされた最初の iOS 版 Writer と比べることがあります。みなさんの前向きなフィードバックと、Android がこのペースで進化し続けるなら、すばらしいことが待っていると感じています。

しばらくのあいだ、Android OS は「まあ、ときどきは見ないといけないよね?」という存在でした。いまでは、ある程度封じ込められた陽気な混沌と、手のひらの中で本格的なコンピューティングができるという約束によって、Android は新しいフロンティアを押し広げるときの興奮を私たちに感じさせます。

iA Writer for Android を入手して、ぜひ感想を聞かせてください!