Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

iOSとAndroidのUXの違いを実際に作りながら理解してみる

Delphiを使ってマルチデバイス開発を実践し、OSごとの違いを学ぶ

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2016/03/11 14:00

目次

モバイルアプリの必須アイテム「リスト」

モバイルアプリで一覧表示に便利な「リスト」

 モバイルアプリでは、「リスト」をよく使います。ただ、その機能は、Windowsアプリケーションなどで慣れ親しんだリストとはずいぶん違います。

 スマートフォンを縦向きで使う場合、データは上下にスクロールしたほうが自然です。横幅に制限がある中で、データを分かりやすく表示するには、リストの項目に複数の情報を表示するようにしたくなるでしょう。

 モバイルアプリのリストは、このような発想から進化してきたと想像されます。当然、進化の過程を異にするiOSとAndroidでは、外観が異なります。

iOSとAndroidのリスト

 次の図は、iOSとAndroidの典型的なリストです。どちらも同じようにスクロールしますが、外観は少し違います。

図15 iOSとAndroidのリスト

 Delphiでは、TListViewコンポーネントがこの用途のリストに当たります。Windowsからの流儀でいくと、TListが対応するコンポーネントのような気がするかもしれませんが、TListは、Windows同様、オプション項目を選択するような限られた機能に利用します。

 TListViewを使用することで、アルバムアプリにも素敵な一覧機能が付きました。

プラットフォームコントロール

膨大なデータを扱う場合の問題

 TListViewをこのような用途に使った場合、ちょっと困った問題が発生します。膨大な量の写真をリスト表示したとき、皆さんはよくスワイプ操作でとても速くスクロールさせて、目的の写真の近くまで移動させようとしませんか?

 このようなときに、特にiOSでスクロールのパフォーマンス問題に直面することがあります。Delphiのマルチデバイスアプリケーションは、ネイティブコードで実行されますが、UIコントロールは、独自のレンダリング(GPUネイティブで実装されています)機能を使用します。つまり、外観はOSネイティブのコントロールのように見えますが、実際には、独自描画の機能を使っているのです。

OSネイティブのコントロールを使う

 大規模データを扱うリストのように、パフォーマンスにシビアな場面では、ネイティブコントロールでないことによる負荷が悪影響を及ぼします。このような場面のために、Delphiでは、プラットフォームコントロールと呼ばれる機能が用意されています。

 プラットフォームコントロールは、同じコンポーネントを使いながら、ControlTypeプロパティを切り替えるだけで、OSネイティブのコントロールに切り替わる機能です。これを用いれば、場面によってOSネイティブの機能を使い分け、パフォーマンスや機能面で満足いくものを提供できます。

図16 プラットフォームコントロールの仕組み

プラットフォームコントロールを使うには

 プラットフォームコントロールを使う手順は簡単です。コンポーネントを選択して、オブジェクトインスペクタで、ControlTypeプロパティをPlatformに設定するだけです。設計画面の外観は変わりませんが、プラットフォームコントロールであることを示すアイコンが右下に表示されます。

図17 ControlTypeプロパティをPlatformに切り替え

 現在プラットフォームコントロールは、iOS、Windowsを中心にサポートされており、TEdit、TListView、TMemo、TSwitch、TCalendarといったコンポーネントで利用できます。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • EDN編集部(イーディーエヌ編集部)

    エンバカデロ・デベロッパーネットワーク(EDN)は、ソフトウェア開発者とデータベース技術者のための技術情報サイトです。Delphi、C++Builderをはじめとする開発ツールやER/Studioなどのデータベースツールに関連する技術記事、ビデオなどを提供しています。EDN編集部は、EDN記事と連携...

バックナンバー

連載:EDN CodeZine出張所

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5