SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

EDN CodeZine出張所(AD)

DelphiアプリケーションをWindows 10対応したついでにiOSとAndroidにも対応してみた

最新のマルチデバイス開発環境で、Windows 10とモバイルデバイスの双方に対応したアプリケーションを構築

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

FireMonkeyでマルチデバイス対応にしてみる

FireMonkeyフレームワーク

 外見がすっかりWindows 10ライクになったので、もう十分仕事をした気になってしまいましたが、ここまでわずか数十分の作業なので、もう少し欲を出してみることにしました。

 Delphi(そしてC++Builder、RAD Studio)が最近ホットなのは、マルチデバイス対応だからです。アルバムアプリも、いつまでもWindowsに閉じこもってないで、実際に写真を撮っているスマホに対応させたいところです。

 でも、その前に、どうしてFireMonkeyだと複数のOSで動くのでしょう。OSが違うのはもちろんですが、画面サイズも解像度も違うのだから、結局UIは別々に作らないとだめなんじゃないか?と思ってしまいます。

 FireMonkeyをよく表した図を入手しました。

図9 FireMonkeyの構造

 FireMonkeyはコンポーネントフレームワークなので、アプリケーション開発者は、部品として扱えます。部品と開発者の間には、プロパティ、イベント、メソッドがあり、どのプラットフォームでも共通です。

 FireMonkeyの内部には、Windows向けのコードやiOS、Android向けのコードがそれぞれ含まれていますが、開発者はそれを知る必要はないのです。コンパイラはネイティブコンパイラなので、ターゲットOS固有のコードを含むネイティブコードを生成します。開発者から見れば、同じコードからそれぞれのバイナリを、ターゲットを切り替えて作り直しているだけになります。

FireUIマルチデバイスデザイナ

 ただ、これでもひとつ問題が残ります。共通のコードが使えるとしても、スマートフォンとタブレットでは画面サイズも違います。デスクトップでは、さらにキーボードやマウスを使うので、操作性がもっと違います。また、Androidでは[戻る]ボタンはOSが提供してくれるのに対し、iOSの場合はアプリ側で実装しなければなりません。iOSのことを考えてアプリ側で[戻る]ボタンを追加しておくと、Androidには余計ですよね。

 そこで用意されたのがFireUIです。FireUIは、ひとつのフォームの設計を継承して、複数デバイス向けに対応できるようにしたものです。通常のUI設計(これがマスターフォームになります)をしてから、必要に応じて特定のデバイス向けのUIを、マスターを継承して作ります。

図10 FireUIマルチデバイスデザイナの仕組み

 定義するのは、マスターと違う部分だけです。継承関係にありますから、マスターで変更を加えると、継承した子フォームにもその変更は反映されます。親子関係が維持されていないと、後からいろいろ変更が加わったときに、作った分だけ何倍も修正を加えなければならなくなるから、この機能は便利ですね。

 FireUIの機能の説明を聞いて、すぐにDelphiのフォーム継承の機能を思い出しました。Delphiはオブジェクト指向で作られていますから、フォームも継承できるのです。ただ、この場合は、コードもすべて継承していますが、FireUIの場合、UIの設計だけを継承しているというにがユニークな点です。コードは引き続きひとつだけなのですね。面白いです。

次のページ
マルチデバイス向けのマスターフォームを作る

修正履歴

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
EDN CodeZine出張所連載記事一覧

もっと読む

この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8955 2015/10/21 18:13

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング