著作一覧 |
iOSでアプリケーション書いていて、popoverというダイアログビヘイビアの概念にぶつかって困惑した。
サンプルをふつうに見る限り、終わらせるというアクションがないからだ。
・ここまで、WindowsやXのGUIが念頭にあるので、何かポップアップされたら、OKとかキャンセルをユーザーが明示してクローズするのが当たり前と考えている。
で、しばらく眺めているうちに、一見モーダルな振りをしているが実際はモードレスで、したがってアプリケーションモデルとしては、ユーザー応答が返るわけではなく投げっ放しにすれば良く、ユーザーモデルとしては、やりたくなければ興味外とばかりに枠外をタッチすれば消えてなくなるので、なるほどそういうものかと理解した。
が、最初に見せると大抵の人は、どうやって終わらせるんだ? と戸惑うから、10代くらい(タッチパッドデバイスが最初のマシン)のユーザー以外には困惑のタネのような気もする(なので、明示的なdismissボタンをつけて、しかしselfはdismissできないのでdelegateを作って呼び出したViewControllerのメソッドを呼び出し、そこからdismissさせるとかやっている間にうんざりしてくるのは別の話。しかも途中からスケッチブックとかセグウェイでどうにでも実現できるように変わったからだと思うけど、普通にViewControllerで実装できるので、リファレンスのUIPopoverController Class Referenceが全然役に立たなくなっていて、セグウェイをselfを迂回させて呼び出すとかにたどりつくまでえらく回り道したりした)。
さて、そうやってpopoverというビヘイビアを理解したところで、Windows Storeアプリケーションを眺めると、ここにはよく似たビヘイビアのUI部品としてFlyoutというものが用意されていることに気づく。
ユーザはいつでもそれの外側をタップすればクローズできるとか書いてあるからiOSのpopover相当なのは間違いなしだ(が、ユースケースはより限定的になっている)。
が、このFlyoutがさっぱり見つからない。定義はあれどもモノがない(JavaScript用のやつはWinJSに入っている)。
で、いろいろ探した結果、Windows Store ForumでMSFTの人が、プラットフォームに入っているほうがいいけど、リリースビルドに間に合わなかったんだよ。に始まり、hidden panel使えだのなんだの実にややこしい話になっていて、たぶん、iOSのpopoverについて(MSプロパーなデベロッパーではなく、外部のJSデベロッパーから問い合わせがあって、WinJSへ組み込んだりしたのをデザインガイドを書く人が文書化して、C#(WinRT)側の連中が突然入り込んできた要素にとまどっているうちにリリース期日になってしまったというような、様子を想像したりして苦労を偲ぶのだった。
Building Windows Store Apps: Develop and Design(Sugrue, James)
Flyoutは出ているだろうか?
(なお、C# Flyoutサンプルが提供されるようになっている。)
新しいやつが発表されたからだろうけど、25%というか定価の3/4まで低下している。
APPLE MacBook Pro 13.3/2.5GHz Core i5/4GB/500GB/8xSuperDrive DL MD101J/A(-)
手持ちの2008年(あ、5年たってる)のMBP 17"で驚くのは、MBA11"の一番安いモデルよりもiOSシミュレータが遥かに遅い(間違いなくCore2Duoの仮想化がオフにされているからだと思うが、オンにする方法もわからなければ、オンにした場合の悪影響もわからない)ことで、使い物にならないレベルだ。
考えてみれば、MBPはほとんど家用で外部モニタに繋いで蓋閉めて使っているのだから、Ratinaモデルの必要は全然ないんだよな。
メモリ4GBは話にならないけど、8GBにするのは1万円もかからないんだから、不良在庫化している今のうちに買っちまおうかどうしようか、迷っている。
ジェズイットを見習え |
枠外のタップで消える要素って、Webページでは最近はわりと普通にありますよね。Lightbox系とか。だからとくに戸惑うことはなかったなぁ。だからスマホアプリで「閉じる」とか「保存する」があるUIはダサいイメージ。
あ、なるほど。言われてみればWebページのUIではありますね(なので、Windows Store AppでもJavaScriptには用意されているのか!)。それとは別に「保存する」は必要じゃないですか? キャンセルが枠外タップ(中に何か書き込んだとしても)ということは、「保存する」が無いとキャンセルできないのではないかと不安になるけど(Flyoutの例でも明示アクション(deleteとか)はボタンを付ける規約っぽいし)。
まだあんまり統一されてない感はあるけど、近年のUIでは「(明示的な)保存する」はなくて「(勝手に保存して)Undoで取り消せる」が主流になってると思います。もっとも今回のflyoutとはちょっと文脈が違うかな。
あ、それはそれとして、おれは今までLightboxでもXをクリックしていた(枠外クリックは想定外だった)。くそー(なんか口惜しいのは年を取ったがゆえの過ちを認めたくないものだなだからだなぁ)