2015年1月30日

UIモックは「後で捨てるから見た目さえ守ればつくりはどうなっててもいいプログラム」ではない

UIモックを後輩が作っててイマイチだったので、その際のレビューで説明したことのメモ。

【※2015.01.31追記 UIモックについて】
「UIモック」というと、デザインカンプの画像に画面遷移だけをつけたものや、手書きでUI構造を書いたものを複数パターン用意するペーパープロトタイピング時に作成するものを差す方が普通と思われますが、本エントリでのUIモックは、ウォーターフォール的な開発行程の中で、「完成系のイメージを早めに顧客合意をとり、後ろでひっくり返されないこと避ける」ために作るUI・UX設計の上流行程の成果物としてのUIモックのつもりで書いております。紛らわしくてすいません。
# 紙芝居を見せて「できてるじゃん」系カンチガイの方とは相性が悪いのですが、僕はダサダサ見た目の機能プロトを作ってからデザインを刷新するよりは勝率が良いと思っています。とくにOSの仕組みと相性が悪い「見た目だけ華やかなクソデザイン案」が顧客から提示されてしまっている際に重要度が上がる認識です。


1. システムバー/ナビバー/アクションバーやドロワー/ダイアログなどOS標準にそぐわないデザイン案がベースの際には最初にひっくり返しましょう

システム・OS側UI要素や、iOS←→Android等のOS超え知識が不十分な人が書いたデザイン案は必ずこのあたりにムリがあります。最初にひっくり返しましょう。
最近は減りましたが右上に×ボタンとかちょっと前まではよく見ました。

デザイン案をもらったその日に「その絵を書いた人がOS毎のユーザーガイドラインを意識しているかどうか」を判定し、「モックではOS別のガイドラインにあわせた形のものをご用意させていただきます」あたりは先に言っておきましょう。


2. アプリ名・パッケージ・ランチャーアイコンは最初に時間を割きましょう

「(顧客名)試作」とか「通信アプリ」とか「com.(会社名ドメイン).sample」みたいなのにすると後で泣きます。ドロイド君ランチャーアイコンで開発を始めるのは自殺行為です。

今把握している限りのイメージを詰め込んで、アイコンはLauncher Icon Generatorで真剣に10分悩んで、テーマカラーも決めておくべきです。

Launcher Icon Generator
http://romannurik.github.io/AndroidAssetStudio/icons-launcher.html


3. テーマカラーとカラーチャートは最初に起こしましょう

Material Designを意識したものでなくとも、Colorだけはここから選んでおきましょう
http://www.google.com/design/spec/style/color.html

color.xmlでのカラー定義は"orange500"や"blue300"の様な物理(?)名と"color_main_bar", "color_accent_font"の様な論理(?)名を両方書いて二段参照にするのが望ましいです。

後者がstyleに綺麗に追い出せているのであればcolorは物理名だけで済みます。


4. UIリソースは構造を設計するつもりで最初から正式名をつけましょう

icon1.png icon2.png photo1.jpgの様な仮リソース名は避けましょう。

「どの部分が画像でどの部分がxmlなのか」とか「このアイコンはPNG画像としては64x64でmarginに12dpを入れる」というレイアウト構造は最初から設計しておきましょう。

すぐれたxml drawableは開発量を大幅に削減します。つくらないが一番。

リソースリスト(pxサイズ、xml-drawableなのか9patchなのか等)は起こしながら、できれば正式なファイル名のダミー画像を全て用意してしまいましょう。


5. Activity/Fragmentの名前は必死に考えましょう

最初に間違うとコードリーディングコストが上がってじわじわボディブローの様に効いてきます。

また、"開発対象のシステム用語"と"Android用語"の混在に注意しましょう。例えば、機能名が「イベント通知一覧」だからと言って"EventNotificationFragment"の様な名前を採用するとAndroidのNotificationと混ざって首が絞まります。

追加メンバが特にやられます。HogeBackgroundService extends Threadみたいなclassができると面白い様にみんな同じところで死にます。


6. ActivityやインスタンスがユニークなFragment/Service/BroadcastReceiverはクラスヘッダを書き、歴史的経緯とUI仕様の参照元など、根拠インプットをコメントで必ず書いておきましょう。

名前やJavadocの概要で示せるのは「現在の実装に関する正確なコメント」です。開発序盤での検討経緯や、意図を残しておくと、開発中盤で「作っているものは変えられないけどサービスの方向性は結構変わってしまった」場合などになぜそんなことになったのか合点がいきます。同時に、捨ててもいいものなのかどうかの判定が容易になります。


7. Activity/Fragment構成はその時点での最終系にしておきましょう

よっぽど特殊なUIを採用しない限りたいていの「どこかで見たことがある」ユースケースの画面構成は既存のフレームワークでサポートされています。よって見た目が決まった時点で適切なActivity/Fragment構成は決めることができます。

2015年1月 4日

クソゲーつくったよー^o^

shoot3.png

だいぶUnityに関するぐぐり力が上がってきた気がするのでチュートリアルのブロック崩しとUNIDRA本のアクションゲー以来、初めてシューティングゲームというものを作ってみた。ほどよく詰め込んでなかなかのクソゲー味が出せたと思うので次回またがんばりたいです。

Shooting1.zip(12.0MB)

2015年1月 3日

あいえるたんサマソ2

samaso2.png
samaso1.png

以前書いたエントリでUnity FreeとProのパフォーマンス差が疑わしかったのですが、新しくUnity4.6で作り直してみたところ、MMD4Mecanimの物理演算をオフにするとFreeビルドとProビルドでパフォーマンス差がないことが確認できました。

prosamaso.png

ビルドしたexeは以下のリンクからダウンロード可能です。

あいえるたんサマソ2
AielSamaso2.zip(20.4MBぐらい)

【開発環境】Unity Pro 4.6.0p1+Oculus SDK 0.4.4
【モデル】あいえるたん
【モーション】【第12回MMD杯EX】反動三段蹴り&サマーソルトキック・モーション配布(一部改造)

物理演算をオンにするとFreeだと2,3体、Proでも4,5体からfpsを維持できなくなるのでこのあたりはFreeとProのマルチスレッドのなんたらには関係がありそうです。Join Local Worldのチェックのオンオフで良くなったりもするみたいですがイマイチこちらは傾向がまだつかめてません(MMD4Mecanimのバージョンにも依存しそうですが...)

2015年1月 2日

uGUIでOculus Rift向けに大きな文字を表示する

ugui-text05.png

僕だけかもしれませんがUnity4.6でuGUIになって3D TextがCanvas+TextになったらOculus Riftで良い感じに大きめのTextを表示するのにやたらと苦戦したのでメモっておきます。

<結局のところ注意すべき罠は以下の2点>
1. uGUIのCanvasサイズは実際のpixel数ぐらいにすべし、と400x400ぐらいにするとでかすぎてまったく見えなくなってしまう罠は、Scaleを0.005とかに大胆に縮める必要があること。
2. フォントサイズ20程度じゃVRは厳しいので64とかにするとまったく表示されなくなってしまう罠は、デフォルトがTruncateなので表示範囲が足りてないだけということ。これデフォルトOverflowで良かったと思うんですよ...

続きを読む "uGUIでOculus Rift向けに大きな文字を表示する"

2015年1月 1日

2015年の目標

あけおめことよろ。

2014年度の目標の達成状況は以下の通りとなりました。

【2014年の目標】
× iOSアプリAppStoreに出す
× ゲームアプリ作る
○ MMD/Unity/3D何か手を出す(持ちこし)
△ BaaSかVPS使う(持ちこし)
× コンテンツ買ってブランド作る(持ちこし)

うーん。色々やった気がしますが計画通りに人生がさっぱり進んでいませんね。2014年に何をしていたか振り返ってみます。

1月 モバイル見積もり勉強会をした
2月 ウェアラブル詐欺師はじめた
3月 BLEまとめた
4月 JettyとWebSocketとかしてRESTful信者になった
5月 MMDに手を出した
6月 Google I/Oに行った
7月 BT-200とGoogle Glassと戯れた
8月 Oculus Rift DK2が来て覚醒した
9月 Unityはじめました
10月 VR部ができたりAndroid温泉の幹事をしたりした
11月 Oculus Game Jamに参加したりTechBooster本の原稿を書いたりした
12月 ABC2014 WinterでVR部屋をやった

【2015年の目標】
・Oculusデモ作る
・Cardboard/Unityゲームアプリ作る
・コンテンツ買ってブランド作る(持ちこし)

完全にVRプランテーション溢れるビジョンです...ウフフ...