DE-241 ビジネス環境の変化に伴うアプリケーションのリフォーム方法と技術選択 – The Microsoft Conference 2014

第2日目(2014年10月24日)の 田中 達彦さんのセッション「ビジネス環境の変化に伴うアプリケーションのリフォーム方法と技術選択 」のメモを共有します。

 

いつも和服の 田中 達彦さん の最後のエピソードがぐっと来ました。お爺様から受け継いだ着物は、たまたまリフォーム出来たけれど、業務アプリに「たまたま」はない。最初からアプリの寿命の予算に盛り込むべきって、いろんな意味で泣けます。

 

セッションのゴール

  • アプリには寿命があることを知る
  • アプリの寿命の原因を知る
  • 新規にアプリを作るときに、どのテクノロジを選ぶべきかを知る
  • アプリの寿命
  • 環境の変化
  • What’s Next

 

アプリの寿命

  • 既知のもの
    • 2000年問題
    • OSのサポート終了
    • ランタイムの日付処理 C言語 2038年問題
  • 環境変化によるもの
    • マルチデバイス 5年前にスマホは?
    • クラウド化 10年前にネットで買い物は?15年前に常時接続の回線は?
    • ハードウェアの進化
  • 開発者のコードに起因するもの
    • (※別の機会に)

 

クライアントOSのサポート期限

  • XP 2014/4/8
  • Windows Vista 2017/4/11
  • Windows 7 2020/1/14 – 東京オリンピックまでもたない
  • Windows 8 2023/1/10

サーバーOSのサポート期限

  • 2003 2015/7/14
  • Windows Server 2008 2020/1/14
  • Windows Server 2012R2 2023/1/10

 

.net Framework の進化

  • 1.0/1.1
  • 2.0 clickOnce, generics
  • 3.0 WPF, WCF
  • 3.5 LINQ, AJAX
  • 3.5.1 Entitiy Framework, Data Services
  • 4.0 ASP.net MVC, Parallel, F#, DLR
  • ストアアプリ、PCL, 非同期、One ASP.net, HTML5
  • 4.5.2 最新・・

新しい開発時に検討 古いテクノロジを使うと、そのあとの寿命が短くなってしまう

 

同じ値段で Android と Windows タブレット・・・ Windows を選ぶようになるよね

  • 会社が Windows PC ー連携ができる
  • セキュリティ – Windows PC と同じ
  • 2台持ちからの脱却
  • Office 互換ソフトの力不足
  • 周辺機器の活用
  • 導入コスト – Surface Pro3 はPCとしても使える
    • タブレット専用の予算ではなく、ノートPCのリプレースとして予算計上

 

PC環境の変化

  • タブレットはタッチ必須
    • ノートPCもタッチ可能に
  • 高解像度モニタ Surface Pro3 は 2160 x 1440
    • 4K は 3840 x 2160
    • 高解像度に対応していないと、非常に小さく表示されてしまう

 

タッチへの対応

  • Windows Form マウスはタッチと同等 、マルチタッチ非対応
  • WPF タッチイベント有、マルチタッチ対応
  • Windows ストアアプリ Pointer を使用、マルチタッチ対応

 

タッチに対応したUI

  • 各要素の大きさ 7mm ぐらい大きさがあれば 1%くらいのミスに
  • マウスならではの機能
    • ホバーはマウスのみ
    • 右クリック タッチでは長押しが必要
  • 手の位置
    • ボタンの上、下 説明文はどちらにあるべきか?(下だと自分の指で隠してしまう)
  • フィードバック
    • タッチしたときに、タッチされたことを表現するフィードバックを。

 

高解像度モニタのDPIスケール

  • 27″ 2560 x 1600
  • 11.6″ 1366×768
  • 従来 出来るだけ多く要素を表示したいから、外部モニタをつなぐ -表示できる情報量が増える
  • 今 11″ でも 2560 x 1600
    • 同じように情報量を増やすとすごく小さくなってしまって見づらい
    • スケールを 200% に拡大 - DPIスケール

 

DPIスケール

  • 画面の解像度の変更 - すべての項目のサイズを変更する
  • Surface Pro3 はデフォルトで 150%
  • 既定がハードウェアによって違う
  • Windows 8 まではOSで一つ、Windows 8.1 からはモニタごとに設定可能

 

アプリの DPI スケールへの対応

  • 高DPI非対応 Not DPI Aware
    • Windows Form など
    • いったん100%で表示したものを OSが無理やり拡大する
    • モニタだとボケる
    • 互換性 – 高DPI設定では画面のスケーリングを無効にする チェックで解除できる
      • ただし、同じアプリでも動きが変わる。TextBox だと表示される文字数が違ったり
    • Windows Form アプリケーションのマニフェストで動きを変えられる
      • app.manifest  コードレシピに上がっている
      • アプリケーションが高DPI対応 と宣言することで動きがかわる
      • 実際に対応した実装を追加する必要がある
      • 高DPI対応コードを自分で実装
  • 高DPI対応 DPI Aware
    • WPF 対応
      • モニタごとの対応は実装が必要
  • モニタごとの高DPI対応 Per Monitor DPI Aware
    • Windows Store アプリ 対応

 

今作ったものを いつリフォームするか?

  • 出来れば予算をとっておいて 何年か後にもう一度検討する

 

SHIN-ICHI の感想

時代の変化は予測できないケド、せめてOSサポート切れなどわかっていることについては、最初からアプリの寿命の予算に盛り込むべきって、いろんな意味で泣けます。実際、それらを議論しないで予算取りまで終わっちゃってる事って多い気がします。しかし、もう、寿命を語れるだけの年数開発を続けてるんだなぁ、20年ぐらいか。ちょっとびっくりしますね。

そういえば個人のアプリにも 高DPI 問題の問い合わせが来てるんですよね。対応、出来るかな。大学時代にフリーソフトを作った時は、こんなおっさんになってもメンテナンスしていると思っていなかった、というか何も考えてなかったんだよな~