さて、前回紹介したように、新しいアンドロイドウェア向けのSDKの配布が開始され、Watch Face、つまり時計の文字盤をアプリとして開発できるようになりました。

すでにPlayストアには、多くの文字盤アプリが出ています。ただ、せっかくのスマートフォンなので、ここは機能を追求したいところです。凝ったデザインといっても所詮はディスプレイ上のビットパターン、パソコンの壁紙、携帯電話の待ち受け画像でしかありません。基本的には、好みの物を使えばいいんですが、まあ、なかなか気に入るものがない場合もあるでしょう。

そういう場合には、文字盤作成アプリがあります。これは、スマートフォン上で自分で文字盤をデザインして、これを文字盤アプリとして表示させるものです。

すでに似たようなものがいくつかありますが、筆者は、「Watch Maker」というアプリが気に入っています。理由の1つは、文字列として「数式」が使えることです。これを使えば平成で年を表示することも可能です。そもそも、現時点では、多くの文字盤アプリは海外で作られており、いくつかある文字盤作成アプリも海外の人が開発しています。このため、日本の元号のような表示を行うことはできません。しかし、このWatch Makerでは、文字列の一部に数式を組み込むことができるため、西暦から元号への変換が可能なのです。

ただ、他の文字盤作成アプリもそうなのですが、お世辞にも完成度が高いとはいえません。品質的には、まずまずの部分もあるのですが、タッチ操作で多少複雑なことをするユーザーインターフェースはまだまだこなれていない状態です。おそらく、このWatch Makerを使い、少し凝った文字盤を作ると、肩が凝ってくるでしょう。また、ときどき、「あーっ」と声を上げることになります。

問題の1つは、タッチの精度は高くないので、タッチした場所のそばにある別のものをタッチしたことになってしまうことがあり得、それが「取り消し」みたいな回復不可能な操作だったりすると、最悪の使い勝手をもたらします。

Watch Makerだと、デザインする画面の右下にUndoボタンがあり、そばにオブジェクトを配置して、これをタップして選択しようとして間違ってUndoしてしまい、いま行ったばかりの編集作業が無効になってしまうことがあります。一応、対策として、文字盤に配置されるオブジェクトのアイコンリストがあり、こっちをタップして選択することで文字盤デザインの部分に触らないで作業ができるのですが、直接的なので、ついつい文字盤デザインのほうを触ってしまいます。

このあたりを見てみると、開発者の「慣れ」や「センス」のようなものとは別に、タッチで見たままのものを編集するのにどうしたらいいのか、という「文法」というか「スタイル」のようなものが確立していないと感じます。

たしかに、Windowsの初期の頃には、マウスで操作に難のあるアプリが少なくありませんでしたが、開発者のスキルが上がったり、提供されるフレームワークで基本的な「スタイル」が提供されたりして、だんだんとマウスでも、見えているものを直接操作するというスタイルが確立してきました。おそらく最近のユーザーの方は知らないでしょうが、初期のエクセルでは、セルをドラッグして移動させることはできず、カット&ペーストで行っていました。そのうち、Windows自体に「ドラッグ&ドロップ」という概念が入り、たとえば、ファイルなどをドラッグ&ドロップで別のフォルダへ移動させることができるようになり、エクセルもセルをドラッグして移動させることができるようになりました。このようにGUIは、段々と進歩していくわけで、そのためには、いろいろな試みが行われ、最終的に確立された方法が、アプリケーションを開発するときに提供されるフレームワークに組み込まれていくわけです。

ちょっと話がずれましたが、このWatch Maker、操作性に少し難はありますが機能は低くありません。前述のように、計算式を利用できるなど、かなり高級な機能があります。Watch Makerは、無料のアプリですが、有料のPro版も用意されています。ただ、実際に使ったところ、無料版で十分な感じです。また、Watch Makerは、自作の文字盤を作れるだけでなく、Watch Makerで作られた文字盤データの販売などを行うストアも組み込まれています。

Watch Makerの起動画面。あらかじめ登録された文字盤や有料の文字盤などがある

自分で作成、編集した文字盤デザインは「My Watches」に登録されていく

My Watchで作成した文字盤デザインの1つを選択したところ。ここでは、文字盤デザインの編集や文字盤デザインのコピー、エクスポートなどが可能

デザインは画面の形状(丸か四角か)を選んで、表示される仮想的な文字盤上にテキストや図形などを「オブジェクト」を配置していきます。配置できるのは、テキストや図形、画像などのプリミティブなものや、インデックス(文字盤の周囲に配置された数字や線など)や針(ハンド)、デジタルの時刻や日付表示などの具体的なオブジェクトなどがあります。配置は、オブジェクトをドラッグして行うこともできるのですが、X、Yの座標値などを数値で指定することもできます。同様にサイズや角度なども指定することができます。アナログ、デジタル両方の文字盤を作ることが可能です。

そういうわけで、とりあえず、作ってみました。日付や天気、スマートフォンのバッテリ状態や無線LANの信号強度、スマートウォッチのバッテリ状態などを表示できます。また、Watch Makerは、現在時刻(スマートフォンに設定してある日時)のほかに3つのタイムゾーンの時計を表示可能です。また、平成と西暦の表示、当日の予定(最大2つまで)を表示できるようにしてあります。時計としては盛り込みすぎですが、スマートウォッチなのですから、情報表示は多くてもかまわないでしょう。もちろん、人の好みというのもありますが。筆者は、基本的に西暦を使っているのですが、役所の書類などでときどき年号で表記しなければなりません。このため、元号の表示もいれてあります。もっとも、いまの形式だと平成の間だけしか正しい表示ができません。とはいえ、元号はそう簡単に変わらないので、実用上問題はないでしょう。

作成した文字盤。とにかく機能をつめこんでみた。下にあるのは本日の予定

非アクティブ状態(暗転時)の表示。このときにオブジェクトには表示の有無や表示の色などを指定できる。消費電力を減らすため時計と日付のみを表示させている

Watch Makerはテキストの中に中括弧({})を使ったタグを入れておくと、これを時刻や日付の数値や文字列などに変換します。たとえば、「{dyy}」とすると4桁の西暦、「{dy}」とすると西暦の下2桁に変換されて表示されます。ここで「{dy}+12」とすると、今年の西暦の下2桁である15+12となり平成の年号となる27を表示させることができます。

Watch Makerは、時計の文字盤を想定して表示領域の中央がゼロとなる座標で文字列や画像などのオブジェクトを配置するので、横に並ぶ文字列は複数に分割しないで1つにまとめます。この文字盤デザインの「平成27年 2015年」という部分には、

'平成'..({dy}+12)..'年 '..({dyy})..'年'

という式が入っています。シングルクオートでくくったところは「文字列」と解釈されます。「({dy}+12)」や「({dyy})」の部分は数字として認識されています。間にある「..」は、連結演算子で、文字列や数字をつなげるためのものです。これを使わないと、数字の部分が正しく認識されず計算が行われません。エクセルを使ったことがあれば「..」は「&」と同じです。

元号以外の場所でもいくつか数式を使っています。1つは、他のタイムゾーン表示の地名表示です。地名は、組み込みなので書き換えることはできません。また、Watch Makerでは、テキストオブジェクトは、その長さは文字列によって変化します。そうなると、長い地名のとき、横に長くなり、短い地名では横に短くなります。これを最大の文字列の長さに合わせてフォントサイズを調整してしまうと、小さな表示になってしまうので、地名が9文字以上の場合、先頭の6文字を取ってきて後に「...」を付けます。その式は、

string.len('{tz1l}') >9 and string.sub('{tz1l}',1,6)..'...' or '{tz1l}'

になっています。これは、比較演算子「>」と論理演算子「and」、「or」を使って、タイムゾーンの地名部分の文字列の長さに応じて表示を切り替えるものです。「string.len('{tz1l}') >9」の部分は1つめのタイムゾーンの地名を表す「{tz1l}」が9文字を越えているかどうかを判定している部分です。その後にある「string.sub('{tz1l}',1,6)..'...'」は、地名の文字列の1文字目から6文字を取り出して、その後に「...」を付ける計算式です。この2つが「and」で結ばれているため、9文字を越えるときに後半の式が有効になりますが、9文字以下の場合、最後にある「'{tz1l}'」が有効になり、地名がそのまま表示されます。

画面の下には、今日の予定を最大2つ表示できるのですが、現在のWatch Makerでは、テキストオブジェクトの長さを制限できないため、写真のように非常に長いテキストだと画面をはみ出してしまいます。本来ならば、タイムゾーンの地名表示のように文字列の長さを判定して一部を残す式を使うべきなのですが、現在のWatch Makerには、バグがあって、日本語の場合、計算式が正しく働きません。それで、予定の開始時間と内容文字列を表示する「{c1b} {c1t}」というタグの先頭位置を基準に配置し、長ければ画面の外へはみ出すようにしました。ちょっとカッコ悪いのですが、いまのところ他の解決方法がありません。

作成した文字盤は、Android Ware側で、Watch Makerアイコンを選択するか、スマートフォン側のWatch Maker内で「SET WATCHFACE」ボタンを使ってAndroid Ware側に設定します。

LGのG WatchがLollipop Android Wareにアップデートされてからしばらく利用してみましたが、特に消費電力が大きいということもないようです。時計は、これまで、既存の商品の中から好みのものを探すしかありませんでしたが、このWatch Makerを使うと、少なくとも自分の必要な情報などをてんこ盛りにした文字盤を作ることが可能です。ボタンなどを使わなくても時間や日付に関連した必要な情報をほとんど表示することが可能になりました。

とはいえ、見た目は、作る人のセンス次第、人に見せて自慢できるようなデザインを作るのは大変ですが、個人的には、必要な情報を常に表示できるので満足度は低くありません。

文字盤デザイン編集画面。中央下の青い矩形がコマンドで左から「オブジェクト追加」、「表示切り替え」、「時間速度切り替え」、「時計へデータを送信」となっている。

オブジェクト挿入メニュー。この中からオブジェクトを選んで配置、プロパティを変更していく

文字盤上に配置されたオブジェクトが下に矩形として並び、これを選択することで文字盤内のオブジェクトを選択できる。このとき下にオブジェクトのプロパティが表示され、ここからオブジェクトの表示方法や位置などを変更する

テキスト入力画面。テキスト中には中括弧を使ったタグが利用でき、これらは表示時に時刻や日付などに変換される

Hot Wordは、音声入力が可能になったときに表示される「Ok Google」の文字表示。位置や半透明の背景の有無などを指定できる。ただし位置は、システムの制限から9カ所の固定位置からの選択しかできない

通知カードの表示を行わせて状態を確認することもできる。カードサイズは大小の2種類選択可能

Watch Makerの設定で3つのタイムゾーンをあらかじめ指定しておくことができる

本稿は、2015年1月11日にAndorid情報のWeb専門誌「AndroWire」に掲載した記事を再構成したものです。