“先取り! Apple Watchアプリ開発入門セミナー” に参加してきました!

先日 “先取り! Apple Watchアプリ開発入門セミナー” に参加してきました。
その際に学んだ事を備忘録として残しておこうと思います。

1. WatchKitって何さ?
そもそもWatchKitが何か分からない方は公式ドキュメントをご覧になるのが良いと思います。
公式のドキュメントはこちらで公開されてます。

あとは公式のサンプルコードですね。
・WatchKit Catalog
Apple Watch で利用可能なUI一覧を確認する事が出来ます。
今回のセミナーではこちらをベースとして話が進みました。
サンプルコード
・Lister
今回のセミナーではあまり触れられませんでしたが、iCloud経由でiPhoneやMacとTODOリストを同期するアプリみたいです。
サンプルコード

2. どうやって開発するの?
開発には現在公開されている最新のXcode 6.2 beta 4を使用します。(2015年1月27日時点)
https://developer.apple.com/xcode/downloads/
※iOS Developer Programs へ登録している人がダウンロード可能です。

2.1. Apple Watchアプリを作る
現時点ではApple Watchアプリのプロジェクトを作成する機能は提供されていないようです。
ですので、 [iOSアプリプロジェクトの作成] > [AppleWatchターゲットの作成] という2段階でプロジェクトを作成する必要があります。
プロジェクトを作成した結果 WatchKit Extension グループとWatchKit Appグループが作成されるわけですが、WatchKit Extension グループには iOSアプリとしてiPhone上で動作するコード、WatchKit AppグループにはAppleWatch上で利用するリソースが置かれるようになっています。
何故このようにグループが分けられているかという点に関しては追々記載します。

さて、WatchKit Appグループには、作成した段階で Storyboard が作成されます。
Storyboard はGUIで画面遷移や画面レイアウトを作成できるXcodeの便利な機能ですね!
まずはこの Storyboard に対して編集を行っていきます。
iOSアプリでは ViewController という画面を管理する要素がありますが、WatchKitでは IntefaceController というAppleWatch上の画面を管理する要素を使用します。
といってもInterfaceController上にラベルやボタン等を設置する事で簡単に画面デザインが定義できるので、iOSアプリとほとんど変わらないです。

画面デザインが出来たら、次は WatchKit Extension グループに作成されているコードを編集します。
基本的には WatchKit App グループで定義した画面から入力を受けとり、何らかの処理後に画面を更新するプログラムを記述することになると思います。
この際にアシスタントエディタを使用すると Storyboard 上の画面要素とコードを簡単に紐付けることが出来ます。

画面デザインと入出力を処理するコードが作成できたら、AppleWatchアプリの完成です。
あとはAppleWatchアプリをビルドして実行する事でシミュレータが立ち上がり、アプリが実行されます。
現在はAppleWatchが発売されていないのでシミュレータ上での確認になりますが、それでも AppleWatch の簡単な動きは確かめる事が出来ます。

ボタンを押したらラベルの文字列が変わるアプリをセミナーでは作成したのですが、InterfaceController上にLabelとButtonを設置してラベルを変更するコードを一行追加するだけで簡単なアプリができました。
これまでにiOSアプリを作成した事があれば、特に違和感なくAppleWatchアプリを作成できそうです。

2.2. UIの種類
AppleWatchで利用可能なUI一覧を確認する公式サンプルコードとして WatchKit Catalog が用意されています。
iOSアプリとはデザインが若干異なるので、AppleWatchアプリを作成する場合はこのサンプルコードを実行して一度全てのUIを見ておくのが良さそうです。

・ラベル(Label)
指定した文字列を表示する要素
・ボタン(Button)
タップ時にアクションを発生させる要素
・テーブル(Table)
列形式で表示する要素
UITableViewに似ているが管理方法はWatchKit独自
・画像(Image)
AppleWatch内で保持している画像を表示する要素
基本的にオンラインで画像情報をやり取りする事はできない
パラパラ漫画レベルのアニメーションは適用可能
・グループ(Group)
UIをグループでまとめ、レイアウトを管理する要素
iOSではUIViewの階層構造により表現されていたが、WatchKitにUIViewの概念はないためこちらを使用
・コンテキストメニュー(Menu)
画面を長押しすると表示されるメニュー要素
最大4つのメニューボタンを定義可能

その他セミナーでは触れられませんでしたが、SwitchやSlider等、iOSでもなじみのあるUIが提供されているようです。

2.3. 画面遷移の種類
画面遷移は主に3種類の方法が提供されており、こちらもiOSアプリを作成する際の指定方法と似ています。
それぞれの画面遷移は Storyboard 上から指定する事が可能です。

・左右のスワイプ(横になぞる)で画面遷移
Interface Controller同士をSequeで結ぶとページングUIが作成できる
・ナビゲーションバーを利用した画面遷移
Button等からInterface ControllerへSequeを結び、Push Sequeを選択するとナビゲーションバーを活用した画面遷移が可能になる
・モーダル表示形式による画面遷移
Button等からInterface ControllerへSequeを結び、Modal Sequeを選択するとモーダル遷移で画面が表示される

3. Apple Watch の特徴
これまでに WatchKit の概要をまとめてみましたが、この内容から Apple Watch のハードウェア的な仕様が伺えます。
先程説明したように、 AppleWatch アプリのプロジェクトは WatchKit Extension グループと WatchKit App グループの2つに分けられて管理されており、WatchKit Extension は iPhone 側、WatchKit App は AppleWatch 側にインストールさせることで AppleWatch アプリを動作させます。
つまり、AppleWatch アプリは必ず iPhone と連動しなければ動作させる事が出来ないということです。

何故このような構成なのかというと、AppleWatch は iPhoneよりも駆体が小さく、やはりバッテリーの容量に問題があります。
(一日一回充電しないとバッテリー切れになるという話が一時期話題になりました。)
このバッテリー問題を解決する方法として、AppleWatch側では電力を極力消費しないようにリソースを管理するのみに留め、電力を消費する演算処理はiPhone側で行う方式を採用したようです。
この点がiOSアプリの開発とは若干考え方が違うように感じますね。

4. 終わりに
さて、その他気になる点としてはAppleWatchにはどのような入力インタフェースが提供されるのか(GPSや電子コンパス等)といったところでしょうか?
セミナー後に簡単に調べてみたのですが、そのような入力インターフェースに関するAPIは現時点では確認できませんでした。
今後APIが更新されることでそれらの情報も明らかになってくるのでしょうか?

また、2/24にアップルのスペシャルイベントが開催されてAppleWatch実機が披露されるとか、4月にはAppleWatchが発売されるとかの噂が色々と出回っています。
早くAppleWatch実機を拝んでみたいものですね!

Tarning for Windows – MacやLinuxでの安全なtarファイルの作りかた

LinuxやMacで作成したtarアーカイブをWindowsで展開したときに,本来なら深い階層にあるはずのディレクトリが一番上の階層に展開されてしまったことはないでしょうか?展開したファイルの中に”PaxHeader”という見慣れないディレクトリが作られてしまったことは?これは,tarアーカイブの各種フォーマット規格の違いと.それぞれが持つ制約が原因となって起こる現象です.今回は「”Tarning” for Windows」と題して,Windowsで安全に展開可能なtarアーカイブを作成する方法について考えてみたいと思います.

“Tarning for Windows – MacやLinuxでの安全なtarファイルの作りかた” の続きを読む

NEXCOはQuartzComposerでヒラギノフォントの夢をみるか。

正月休み。TVで恒例の高速道路I.Cの渋滞映像を眺めていたら、ふと思い出したニュースがある。高速道路の案内標識に長年親しまれてきた書体が「ヒラギノ」に変わるというものだ。

asashi.com – 高速道路の標識、「ヒラギノ」書体に iPadと同じ

従来用いられていた書体は「公団ゴシック」という名称で親しまれており、昭和30年代当時のモダンな雰囲気を醸し出す味のある書体だ。
今回の改定に至った経緯は、過剰な略字であったり、新たな文字を製作する際に属人性が高すぎる為に統一感に欠けるいった理由なのだそうだが、未だ根強いファンも多く、収集したり個人で制作したりする人が後を絶たない程の人気ぶりだ。興味のある方は下記を一読頂きたい。

@nifty – デイリーポータルZ:高速道路フォントめぐり
高速道路の文字を再現しよう GD-高速道路ゴシックJA-OTF

次にバトンタッチされた「ヒラギノ」は、先のニュース記事にはiPadと同じなどと記載されているが、実はかなり以前からMacOS Xに標準で搭載されている日本語フォントだ。そこで、早速手元のフォントを使って一足早めにI.C案内標識をつくって雰囲気を確認してみよう。
“NEXCOはQuartzComposerでヒラギノフォントの夢をみるか。” の続きを読む