【A4】C++テクニカルセッション「Visual C++ユーザーもバッチリ！
C++Builderによるマルチデバイス開発」(ver007)

株式会社NTTデータビジネスブレインズ
シニア・スペシャリスト 伊賀 敏樹

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

1
2

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

はじめに

はじめに
発表内容については私自身の見解であり、必ずしも所属企業および所属組織における立場、戦略、意見を代表するものではありません。

3

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

アジェンダ• はじめに• アジェンダ• 自己紹介• 統合開発環境のススメ• C++Builder
• デモ
• まとめ
• Appendix• Q&A
4

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

2
5

自己紹介

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

自己紹介【業務】• NTTデータビジネスブレインズに勤務– 多種多様なシステム構築に従事。
– 方式屋、フレームワーカー– 実プロジェクトにプログラマーとしての投入• NTTデータビジネスブレインズについて

NTTデータビジネスブレインズは、2003年にNTTデータおよび日本板硝子による 株式構成によって設立された、ITを活用したトータルソリューションを提供する会社です。さまざまな情報システム構築にたずさわり、またパッケージソフト の開発および販売をおこなうなど、多様なビジネスを展開しています。日本板硝子におけるシステム構築で培ったノウハウとNTTデータの高い技術力を武器 に、法人顧客を中心としてビジネスを拡大していっております。 詳細は、www.nttdbb.com をご覧ください。

6

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

自己紹介【ライター】• ブロガー
いがぴょんの日記

http://www.igapyon.jp/igapyon/
http://d.hatena.ne.jp/igapyon/• テクニカル・ライター
書籍 / 雑誌 / Web記事の執筆• いがぴょんの『C++言語入門 ～ C++Builderでビジュアルプログラミング』
http://www.embarcadero.com/jp/cbfan/cpp-lang/7

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

自己紹介【OSS】• blanco Framework 【開発フレームワーク】• Benten 【翻訳支援ツール】• Eclipse 日本語化 【翻訳作業そのもの】– 言語パック (サードパーティ版)– Pleiades への翻訳投込• その他多数の OSS を Develop

8

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

プログラミング言語経歴
業務におけるプログラミング言語の利用経歴分布

3(小学校・中学校時代のマシン語経験などは除く)

Java

単位: 年

C/C++

713

C++経験のほとんどはVisual C++ によるもの

9

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

C#.NET310

統合開発環境のススメ本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

統合開発環境 (IDE)• 統合開発環境– Integrated Development Environment→ IDE と省略

• 生産性向上– むしろ IDE を利用しないほうが稀

11

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

without IDE• vi + make など…
• 特殊な事情による「IDE 無し」は あり得る

12

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

with IDE
• ビジュアル開発• ソースコードバージョン管理• 新規プロジェクト・ウィザード• 各種支援機能• 注意: さまざまな初期コストが必要です– 例: ハードウェア増強費用、ソフト費用、学習コスト• 生産性向上– あるいはライバル対比の生産性劣化防止13

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

with IDE (デモストレーション)
• デモ

14

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

私の身近な IDE• Eclipse• RAD Studio–★C++Builder が含まれる• Visual Studio

15

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

IDE に必要なリソース• 潤沢な CPU とメモリとディスク!
– 今なら 64bit OS• リソースをケチると、生産性に致命的な悪影響!
• 広いディスプレイ
• イマドキの最低ラインの例– Intel Core i5– メモリ 4 GB
– ディスク 200 GBの空き (できれば SSD)
– Windows 8.1 (64 bit)16

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

IDE と仮想化• Visual Studio や C++Builder は 仮想化環境による利用が向いている!?
• VMware や VirtualBox などを用いた
仮想 OS 環境に IDE をインストール

17

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

IDE 導入計画• インストールには最低 1 日は必要
• 多くの場合ネットワーク環境も必要– Windows Update– インストールそのもの– デバイス用のドライバ導入• iOS の場合は、さらに 2～3週間は余裕を持ちたい…
– Apple iOS Developer Program への登録
18

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

ソースコード管理• git, svn, cvs は必須 (個人的状況)• Eclipse 最強 (個人的主観)–非常に優れた UI フロントエンド–デフォルトで git と cvs をサポート• 追加で svn をサポート–Eclipse を他の IDE と併用• こまめな「リフレッシュ (F5)」を忘れずに

19

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

4
20

C++Builder

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

C++Builder って どんなもの? (1/2)• とても長い歴史をもつ C++ 統合開発環境– 1997 年 ver.1– 2010 年 XE (ver.15)– 2014 年 XE6 (ver.20)– 参考: Visual C++ 1.0 は 1993 年• 統合開発環境は Windows 上で動作
• Delphi (Object Pascal) の C++ 版– 新機能は Delphi が基本的に優先される• 単体で動作できるロードモジュール (EXE) を生成可能• 2Way ビジュアルデザイナ
21

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

C++Builder って どんなもの? (2/2)• マルチデバイス対応• 強力なコンポーネント関連機能– コンポーネントの利用が便利• 同梱コンポーネントが充実– コンポーネントの作成が非常に簡単• 高い生産性を実現できる• そして、いよいよ iOS および Android の両モバイルデバイスに対応 New!
22

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

C++Builder アプリの特徴(1)C++Builder アプリ

C++Builder アプリ

コンポーネントコンポーネント

FireMonkey

FireMonkey

DirectX

LLVM

LLVM

OpenGL

Windows (64 bit)

Mac OS X

C++Builder アプリ

C++Builder アプリ

コンポーネントコンポーネント
凡例

FireMonkey
OpenGL ES

LLVM
iOS
23

FireMonkey
LLVM

OpenGL ES
Android

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

作成アプリ
C++BuilderOS

C++Builder アプリの特徴(2)C++Builder アプリ

コンポーネント

FireMonkey

LLVM

DirectX /OpenGL / OpenGL ES

凡例
作成アプリ

Windows (64 bit) / Mac OS X / iOS / Android

C++BuilderOS24

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

C++Builder の導入• C++Builder または RAD Studio をインストールすることにより導入できる IDE• Windows 8.1 や Windows 7 などにインストールして利用する• Windows を起点に、Windows、OS X、iOS、Android アプリを開発できる• OS X および iOS アプリの開発のためには、追加で Mac が必要
25

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

C++Builder の画面イメージ

26

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

527

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

デモデモ環境• Apple MacBook Pro (A1398)– Xcode 5• Parallels Desktop 9 for Mac• Microsoft Windows 8 Pro (64 bit)
• Apple iPhone 5 (iOS 7.0.x)• Apple iOS Developer Program• Nexus 7 (2012)• インターネット接続環境– Wi-Fi 環境• エンバカデロ RAD Studio XE6 Enterprise– C++Builder は RAD Studio に含まれます

28

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

C++Builder の起動• Parallels Desktop から Windows 8 の起動• C++Builder の起動• PAServer の起動

29

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

新規プロジェクトウィザード• まず新規プロジェクトを作ってみる• コンパイルして配備する• 動かしてみる• マルチデバイス開発を体験!
• ウィザード重要30

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

631

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

まとめまとめ (1/2)• C++Builder によって、モバイルデバイスのアプリ
ケーション開発が簡単に• コンポーネントの充実ぐあいが重要– 開発したい機能に集中できる– XE6 で一層充実した• モバイルデバイスごとの UI デザインガイドライン– おのおのの UI 文化についても関心を• Delphi のコードを読めると いろいろ便利– Oracle PL/SQL のコードが読める人は有利!?
32

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

まとめ (2/2)• Delphi + LLVM / clang⇒ C++Builder• RAD Studio– 年間サポート／メンテナンスプログラム

33

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

734

Appendix

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

C++Builder のソースコード基本構成
ファイル名

35

ファイル
形式
XML

ProjectSample.cbproj

プロジェクトファイル

ProjectSample.cbproj.local

プロジェクトファイル

ProjectSample.cpp

エントリポイントを含む
ソースファイル

テキストファイル

ProjectSamplePCH1.h

プリコンパイル済みヘッダファイル

テキストファイル

UnitSample.h

フォームのヘッダファイル

テキストファイル

UnitSample.cpp

フォームのソースファイル

テキストファイル

UnitSample.fmx

フォーム (FireMonkey) のデザイン情報

テキストファイル

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

XMLProjectSample.cpp#include <fmx.h>#pragma hdrstop#include <tchar.h>
USEFORM("UnitSample.cpp", FormSample);

比較的シンプルで直観的なコード

extern "C" int FMXmain() {try {Application->Initialize();
Application->CreateForm(__classid(TFormSample), &FormSample);
Application->Run();}catch (Exception &exception) {Application->ShowException(&exception);}catch (...) {try {throw Exception("");
FireMonkey}
アプリケーションのcatch (Exception &exception) {Application->ShowException(&exception);
エントリポイント}}return 0;}36

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

ProjectSamplePCH1.h#include <fmx.h>#include <tchar.h>

シンプルで直観的なコード

プリコンパイル済み
ヘッダファイル

37

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

UnitSample.h#ifndef UnitSampleH#define UnitSampleH#include <System.Classes.hpp>#include <FMX.Controls.hpp>#include <FMX.Forms.hpp>#include <FMX.StdCtrls.hpp>#include <FMX.Types.hpp>

シンプルで直観的なコード

class TFormSample : public TForm {__published: // IDE で管理されるコンポーネント
TButton *ButtonSayHello;
TLabel *LabelMessage;
void __fastcall ButtonSayHelloClick(TObject *Sender);private: // ユーザー宣言
public : // ユーザー宣言__fastcall TFormSample(TComponent* Owner);};

フォームのヘッダファイル

extern PACKAGE TFormSample *FormSample;#endif38

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

UnitSample.cpp#include <fmx.h>#pragma hdrstop#include "UnitSample.h"

シンプルで直観的なコード#pragma package(smart_init)#pragma resource "*.fmx"
TFormSample *FormSample;__fastcall TFormSample::TFormSample(TComponent* Owner): TForm(Owner) {}void __fastcall TFormSample::ButtonSayHelloClick(TObject *Sender) {LabelMessage->Text = "ようこそ、こんにちは。";}
フォームのソースファイル39

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

UnitSample.fmx
object FormSample: TFormSample
Left = 0
Top = 0Caption = #12469#12531#12503#12523
ClientHeight = 152
ClientWidth = 233
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [dkDesktop, dkiPhone, dkiPad]
DesignerMobile = False
DesignerWidth = 0
DesignerHeight = 0
DesignerDeviceName = ''DesignerOrientation = 0
object ButtonSayHello: TButton
Height = 22.000000000000000000
Position.X = 72.000000000000000000
Position.Y = 96.000000000000000000
TabOrder = 0
Text = #12371#12435#12395#12385#12399'!'
Width = 80.000000000000000000
OnClick = ButtonSayHelloClickend
object LabelMessage: TLabel
Font.Size = 18.000000000000000000
StyledSettings = [ssFamily, ssStyle, ssFontColor]
Height = 41.000000000000000000
Position.X = 8.000000000000000000
Position.Y = 16.000000000000000000
Text = #25384#25334#34920#31034#38936#22495
Width = 217.000000000000000000
end
end40

通常は C++Builderのデザイン画面で編集

可読性の良いテキストファイル

フォーム(FireMonkey)のデザイン情報

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

841

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

Q&A