プログラミング生放送勉強会第25回@品川に参加しました。
Windows ストア アプリケーションのUIデザイン
- UX
- ユーザビリティテスト
- マニュアルは読まれない前提でUIを作る
Modern Style
- Metroと呼ばれていたもの
- 10フィート離れたところからリモコンで操作出来るように
- 日本の地下鉄は複雑だけど、路線図を見れば、なんとなくわかる→Metro UI
Application Design
- タブレットのデザインは難しい
→広い、統一できない、まとまらない - コンテンツが最優先
そぎ落とす
- Crome(余計な装飾・今使わないメニュー)は要らない
- 左上は一番重要
→コンテンツを置くべき - RSSリーダーに、3つもペインは必要ない。人間は一度にそんなに情報を処理できない。
- 重複なアイコン→共通メニュー(アプリバー)
- ほんとうに、今、これが必要なのかを考えて作る
- デベロッパーはデザイナーの下僕です。
構造とリズム
- タイポグラフィ
- 非デザイナーがなんとなく作って、なんとなくかっこ悪いのはルールがないから
- フォントも4つに絞る(9pt, 11pt, 20pt, 42pt)
- 文字サイズを大きくすると、細いフォントを利用する
- グリッド
- 1unit = 20px x 20px
- 1sub unit = 5px x 5px
軽快に、滑らかに
- ビジュアルなフィードバック
- スプラッシュスクリーンの本当の意味は、起動にかかる時間をごまかすため
- 5mm なら、30回に1回ぐらいタップミスする
- 7mm なら、100回に1回ぐらいタップミスする(だいたい大丈夫)
デザインガイドラインをぜひ見てください(MSDNのUXパターン)
Leap Motion ではじめるNUIプログラミング
NUI概要
- Project Natal(のちのKINECT)
- 3D深度センサー・RGBカメラ・マルチアレイマイク
Leap Motion概要
- 様々な言語で開発可能
- デモアプリがかっこいい
C#によるLeap Motionプログラミング
- センサーの視界領域にある手や指を追跡
- Controller, Listener などのクラスが用意されている
- PUSH形式とPULL形式のデータ取得が可能
- ListenerのOnFrameでFrameを取得して操作する
- Gestureは4種類
- onFrameはすごい勢いで呼び出される(秒間数十?)
- InteractionBoxクラス(箱状の領域を設ける)
ソフトウェアアーキテクチャの求め方
結局何を決めなければいけないのか?
- アーキテクチャという言葉の定義に「万人の合意」は存在しない
- 複雑さへの対処
- 整理・細分化を行う→「関心事の分離」
- 開発や運用が容易な大きさの集合に分解する
- モジュール化・カプセル化
再利用可能は必須ではない
設計パターンを用いた分離
- 設計パターンといわれるものは、本質をつかみづらい
用語の誤認と誤った情報が配信されているため - 関心事を分離する視点そのものが、いわゆる設計パターン
切った結果ではない
→サンプルコードから読み取ることは不可能 - 設計パターン→設計視点
実際の分離で使用する視点の例
- Presentation Domain Separation(PDS)
- 分離したいのは、プレゼンテーション部分は他のコードと別の知識・制約がかかるから
- 次の入力フォーカスをどこに置くべきかは、Domain側に書くべき
- 資料:「GUIアーキテクチャの基礎からMVVMパターンへ」
PDSとは、アプリケーション全体から「PresentationPlatform関連」を分離する「視点」
Domain Logic Pattern
- アプリケーションの状態の持ち方の特性で大きく分かれる
- TransactionScript or Domain Model
- 資料:「Modelの中身 - ドメインロジックパターン」
- TransactionScriptが有用な場面ではDRY原則は原則ではなくなる
DomainModelで継承してると、仕様変更で継承関係が変わってしまうと大変になる
大きな食べ物を順々に切り分けていく間隔
前のステップでの切り方によって、次のステップの切り方は変わってくる
まとめ
- すべては「関心ごとの分離」に通ず
- 「設計パターン」って言葉よくないよ!
- 大体いつも使う知見:PDS(MVC系の裏), Domain Logic Pattern
- なぜそうしたいのか?なぜこれが必要になったのか?から考え直す
- どこにも載ってない情報は自分で考えるしかない
Visual C++ は C++10.8 ←イマココ
delegating constructor
uniformed initialization
- "()"ではなく、"{}"でコンストラクタを呼び出す
cplx c0(); では、関数宣言になってしまう
initializer_list
- initializer_list という型の定義
追加・挿入・変更できないコンテナ
initializer_list<int li { 1, 2, 3 };
explicit conversion operator
- 暗黙の変換を抑止する "explicit"がないと、加算出来たりする
LT
@ZuQ9Nn 自作アプリの宣伝
- 虹人間カメラ - RainbowMainCamera
- あざとい感じのアプリ名
- なんの成果も得られませんでした
- 初日1桁DL
残念な原因 - アプリの説明がわかりにくい - 宣伝を全くしなかった - 露出が少なすぎるために、存在していないのと同じ
- 現在、App Storeのランキングはお金で買える
→個人が趣味で作って上位になるのは大変難しい
@@ww24 FlashAir x Node.js
@_kz6 Javaを勉強してわかったこと
@azyobuzin イカすJava Xtendの話
- Java嫌い
- 一般的な高校生には理解できない
- Java1.5相当に変換される
- Eclipseのプラグイン
- ラムダ式
- 拡張メソッド
- プロパティ
- null 処理
- No Statements
- 型推論
- defで戻り値の型を書かなくて良い
- ドキュメントに書いてあっても出来ないこともある
- それでもJavaよりまし
@mikan_x コミックマーケットでの携帯電話のお話
- いつも電波悪いよね
- C84では改善された
- 以前まではau, docomoが厳しかった
- 201THを使え(衛星電話高い)
- emobileはユーザが少ないから最強
- 電波が無いなら、迷子にならないで
- 将来的にwebカタログが使えるかも
@shinoblogavi お絵かきツールとしての Blend と Power Point
- パスで描く
- 部品管理とグループ化は大事
- 図形の結合
- トリミング・図形貼り付け・半透明化
- パワポまじ凄い
@daruyanagi プロ生ちゃんの声をアプリに組み込もう
- Expressでも使える
感想
- MSはUI/UXに頑張ってる
- Leap Motionすごい。欲しい。
- ソフトウェアアーキテクチャを考えるためには、視点を学ぶ必要がある
- gloops はアーキテクチャをしっかり考えて作ってるっぽい
- C++、言語としては残念
- FlashAirすごい
- PowerPointまじすごい。絵を描ける
- プロ生ちゃんって、結局なんだったのだろう(ぇ