23rd Developer Camp

Size: px
Start display at page:

Download "23rd Developer Camp"

Transcription

1 プレゼンテーション資料 TRACK B 第 23 回エンバカデロ デベロッパーキャンプ 2012 年 9 月 4 日 ( 火 ) UDX GALLELY NEXT( 東京 / 秋葉原 )

2 Program 10:00~11:00 A1 Delphi テクニカルセッション Delphi 2009 Handbook 以降の Delphi 言語新機能 配布資料あり スピーカー : 福士光 東洋テクニカルシステム株式会社システム開発部 15 年来の Delphi ユーザ Delphi-ML( や公式フォーラムに生息しています B1 C++ テクニカルセッション 業務で使える!C++ 実践ワンポイントテクニック スピーカー : 服部励起 配布資料あり アナハイムエンジニアリング株式会社代表取締役 Delphi 1.0γ 版 (Windows 3.1) や Borland C++(MS-DOS) を使って業務系システム開発を始め 1990 年代はメーリングリスト等で積極的に普及活動を行なっていました 最近では株式会社フルネスの専属講師として Delphi や C++ Builder の研修講師を務めつつ ios や Android のアプリ開発も行っています 11:15~12:15 A2 HTML5 テクニカルセッション HTML5 アプリ開発入門 スピーカー : 高橋智宏 エンバカデロ テクノロジーズエヴァンジェリスト 配布資料あり Java Delphi C++ など幅広いプログラミング言語の知識と CORBA や J2EE をはじめとするシステム開発に関するコンサルティングサービス提供の豊富な経験を持つ 技術力に裏付けられたそのサービスには定評がある B2 Delphi テクニカルセッション 見た目で楽しい Delphi プログラミング スピーカー : 細川淳 配布資料あり 株式会社シリアルゲームズ取締役 シニアエンジニア PostPet V3 Windows 版の開発に関わるなど 主にエンターテインメント / コミュニケーション系ソフトウェアの開発を行う 高校時代に Turbo Pascal に触れたばっかりに 今では立派な? Delphi 使いに VM やスクリプト言語全盛の中 ネイティブ アプリケーションの復権を目指し活動しつつも 最近は Android のプログラムを書いたりもしています 13:30~14:30 G3 Delphi/C++Builder テクニカルセッション RAD Studio XE3 の概要 スピーカー : デビッド インターシモーネ エンバカデロ テクノロジーズチーフエヴァンジェリスト David I ( デビッドアイ ) の愛称で知られるデビッド インターシモーネは エンバカデロ テクノロジーズのチーフエヴァンジェリストとして エンバカデロ テクノロジーズをリードしています 1985 年プロダクト サービス ディレクターとしてボーランドに参画以来 言語 ツールの研究および開発に従事 ボーランド入社以前は Softsel Computer Products Inc.( 現 Merisel) のプロダクト サービス ディレクターとして活躍していました 2008 年 エンバカデロ テクノロジーズによる CodeGear 事業本部の買収により 同社に移籍し 現在に至ります カリフォルニア州立ポリテクニック大学サン ルイス オビスポ校でコンピュータサイエンス学士号を取得しています

3 14:45~15:45 A4 Delphi テクニカルセッション Delphi+IntraWeb+FastReport による Web モバイル タブレットアプリ開発 B4 C++Builder テクニカルセッション FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から スピーカー : 配布資料あり スピーカー : 配布資料あり 山本悟 株式会社ドリームハイブ代表取締役 IT コンサルタント 職業 IT コンサルタント メンドウクサイを IT の力でラクチンに変えるプロフェッショナルです 1978 年東京都目黒区生まれ 母はデザイナー 父は写真家 大学卒業後 就職せずに株式会社ドリームハイブを設立 今年 11 期目を迎えました 多くの企業様から相談を受ける 課題を IT で解決するプロ として 700 回を超えるセミナー講演や 多数のサービスを提供しています 橋本孔明 株式会社ウェブテクノロジ R&D 1 部 弊社デスクトップアプリケーション全般の開発に携わっているほか さまざまなプラットフォームおよび開発環境の技術検証の担当も行っています 16:00~17:00 A5 Delphi/C++Builder テクニカルセッション RAD Studio XE3 の新機能 B5 Delphi/C++Builder テクニカルセッション FireMonkey モバイル / タブレットアプリ開発 スピーカー : スピーカー : 配布資料あり デビッド インターシモーネ エンバカデロ テクノロジーズチーフエヴァンジェリスト 高橋智宏 エンバカデロ テクノロジーズエヴァンジェリスト J 17:15~18:15 G6 ライトニングトーク 共有! みんなの開発事例 開発経験 テクニック 司会 : はやしつとむ アナハイムテクノロジー株式会社代表取締役 本日のセッション資料の最新版ならびに配布資料に含まれないプレゼンテーション資料については 後日 Embarcadero Developer Network 日本語版 ( からダウンロードいただけます

4 17 Th Developer Camp B1 テクニカルセッション 業務で使える! C++ 実践ワンポイントテクニック アナハイムエンジニアリング株式会社代表取締役服部励起 1 17 Th Developer Camp 1 エンジニアとして 都市伝説!? 2 4 業務で使える!C++ 実践ワンポイントテクニック

5 近頃!? の見たり聞いたり 周りの技術レベルが低い 改修よりスクラップアンドビルドが効率的 オブジェクト指向だから開発工数が削減できる アジャイル開発なので各種標準化は不要 ソースコードレビューは不要 ( 出来ない ) ドキュメントよりもソースコードが重要 インデントが無いソースコードの方が読み易い コピペしただけなので バグは作成元に責任があり私では無い B1 プロフェッショナルの仕事では無い 3 それなら私がやるしか (; `) 技術指向より業務指向 ハイテクニック依存は属人的になりやすい 組織全体としての効率化とそのテクニック中心 プロフェッショナルとは何か? ソフトウェア品質特性 特に保守について C++ 言語特性を再確認 業務的視点から見たメリットとデメリット 4 5

6 17 Th Developer Camp 2 集団開発技術として 業務指向開発!? 5 技術指向と業務指向 技術指向とは 理解できる人のみ理解できれば良い 華麗なテクニックや最新ライブラリ等を駆使 自分が頑張って勉強したので 他人も同様の努力を要求 コメントは極力少ない傾向 業務指向とは 組織としての最大の効果を常に考える 技術レベルは 8 割が理解できるレベルで統一 他人がソースを読むことを常に念頭に 仕様変更を念頭にクラス設計を 6 6 業務で使える!C++ 実践ワンポイントテクニック

7 業務指向の効果とは 技術指向の罠は 属人化 担当した仕事の保守は 概ね元担当者へ ( 会社側は新たな仕事を担当させられない事に ) 属人的ソースコードの行方はスクラップアンドビルド ( スクラップアンドビルドの非効率工数は誰が支払う?) 但し ソフトウェア寿命がワンオフなら話は別 B1 業務指向では他人に任せられる点 面倒な保守は新人等に担当させたい 転職時にも面倒な引き継ぎ期間の短縮 特に複雑な部分をブラックボックス化する等の柔軟性も 7 17 Th Developer Camp 3 プロフェッショナルとして 期待される特性 8 7

8 ソフトウェア品質特性 (ISO9126) 機能性 : 要求通り実装されている等 信頼性 : バグが少ない等 使用性 : 使い易い等のUX 効率性 : レスポンス等 保守性 : 保守する場合の対応等 移植性 : 環境変更時の対応等 セキュリティ : 機能性の一部 要件定義に記載 非機能要件と呼ばれる内容! 9 Note. 移植性の補足 移植性の構成要素 環境適応性 インストール先変更しても問題が発生しない 設置性 インストールのしやすさ等 共存性 複数のソフトウェア同士で 共存することによる問題点回避 置換性 ソフトウェアの依存度や他ライブラリバージョン依存の回避 ソフトウェアアーキテクチャでの対応 10 8 業務で使える!C++ 実践ワンポイントテクニック

9 Note. 保守の重要性 ソフトウェア目標寿命まで運用できること 保守工数がソフトウェアライフサイクルの大半を占める 氷山に例えられることも 氷山は海上は全体の 10% 海面下は 90% 初期開発工数は 10% で 保守工数は 90% 保守工数を削減し利益へ貢献 経営環境が迅速に変化しているため ソフトウェア保守に時間を割くことが難しくなっている B1 参照 : Created by Uwe Kils (iceberg) and User:Wiska Bodo (sky). 11 Note. 保守の重要性 オブジェクト指向技術 保守工数の削減に利用を主眼に置き 開発工数削減を狙うと失敗する危険性が高い クラス設計や構成等は十二分に検討 ソースコードに対する技術不足 他人のソースコードを読み 理解し 推測できる技術が特に重要 優れたオープンソースを読む訓練は役に立つ 12 9

10 保守性の構成要素に対応するテクニック 解析性 コーディング規約全般 命名規約 コメント規約 標準化運用ルール リバースエンジニアリングツールを過信してはダメ 変更容易性 コーディング規約全般 クラス設計標準 各種ドキュメント 試験性 ソフトウェア変更標準 ユニットテスト Th Developer Camp 4 C++ の言語特性 業務で使える!C++ 実践ワンポイントテクニック

11 マルチパラダイムプログラミング言語 構造化プログラミング 階層的に抽象化されたプログラム記述形式 命令型 ( 手続き型 ) プログラミング プロシージャ ルーチン サブルーチン メソッド ( グローバル関数 変数 ) オブジェクト指向プログラミング オブジェクトの集まりとしてプログラムを構成 (C++ 標準 ) ジェネリックプログラミング データ形式に依存しないプログラミング方式 (C++ テンプレート機能 ) B1 15 マルチパラダイムプログラミング言語 マクロ テンプレートはマクロの発展系 C++ では問題点も多いと指摘されることも 演算子のオーバーロード 演算子を別の処理にコンパイル時に置き換える iostreamでは普通に使われている << 等 16 11

12 C++ の歴史 規格制定日 C++ 標準規格非公式名称 1998 年 9 月 1 日 ISO/IEC 14882:1998 C 年 10 月 16 日 ISO/IEC 14882:2003 C 年 11 月 15 日 ISO/IEC TR 19768:2007 C++TR 年 9 月 1 日 ISO/IEC 14882:2011 C++11 言語仕様が変遷しており 今後も変更される 関数型プログラミングも今後取り込む予定 恐らく前方互換性を持たせるため 旧規格で作成しても問題は無い 保守業務を考えると最新技術仕様を取り込む場合には注意が必要 Th Developer Camp 5 実践ワンポイント 標準化編 業務で使える!C++ 実践ワンポイントテクニック

13 1. クラス定義 コーディング標準 1 つの物理ソースファイルに 複数のクラス定義を実装するのを是か非か 関連性が維持できるクラス定義は統合するべき 但し 担当者が分散するケースが散見されるなら敢えて 1 ファイルを 1 クラスにするのも一考 B1 class HogeBase { protected: virtual int Get() = 0; virtual void Set(int st) = 0; public: HogeBase(); ~HogeBase(); }; 仮想クラスを多用する場合には 1 クラスの方が見通しが良い class HogeData : private HogeBase { public: int Get(); void Set(int st); }; メソッド行数制限と行内桁数制限 コーディング標準 メンバ関数行数制限 最大でも 200~250 行 それ以上は分割する 但し 初期化処理は例外とする 1 行内の桁数制限 ディスプレイサイズで決定すれば良いのかなと 個人的には 160~180 桁 昔は 80 桁以内か以上で論争がありましたねぇ 20 13

14 3. カプセル化方針 コーディング標準 内部変数のpublic 公開について 異論はあるが 内部変数をpublic 公開は禁止 getter/setterメンバ関数 ( アクセッサ ) を利用するべき 全てのクラス内定義は privateで作成すると便利 クラスデフォルトはprivateだが全て記述するべき class HogeBase { private: int st; protected: virtual int Get() = 0; virtual void Set(int st) = 0; public: HogeBase(); ~HogeBase(); }; DB データを扱うクラスも 継承してメソッドを public で公開すると 仕様変更時の柔軟性が上がる 継承方針 コーディング標準 多重継承の禁止 混乱と仕様変更時の柔軟性に影響 基底クラスを使い 継承を利用して公開する仕様も検討してはどうでしょう? // 基底クラス定義 class Calc_Base { public: Calc_Base(); ~Calc_Base(); }; // 計算クラスを継承して加算クラスを作成 class Calc_Add : private Calc_Base { public: int Opereation(int data1, int data2); }; // 計算クラスを継承して減算クラスを作成 class Calc_Sub : private Calc_Base { public: int Opereation(int data1, int data2); }; 継承階層が深くなり過ぎないように注意する必要はあります 業務で使える!C++ 実践ワンポイントテクニック

15 5. コンストラクタとデストラクタ コーディング標準 使用しない場合でも定義だけはコーディング 修正が必要となった場合に楽 継承時の実行順番は重要! 1 スーパークラスのコンストラクタ 2 サブクラスのコンストラクタ 3 サブクラスのデストラクタ 4 スーパークラスのデストラクタ B パラメタ設計方針 コーディング標準 大きく分類して 2 種類 getter/setter メンバ関数は欲しい結果を return で受け取る return で受け取るのは メンバ関数が動作した bool 情報とし 結果値は別メンバ関数経由で返却 getter/setter 系メンバ関数 結果情報を直接 return で返却する方式 class CalcAdd : private CalcBase { public: int Opereation(int data1, int data2); }; int CalcAdd::Opereation(int data1, int data2) { return data1 + data2; } 24 15

16 6. パラメタ設計方針 コーディング標準 return で bool 値 (int 値も可 ) で動作状態判別系 メンバ関数が正常に動作したのかを return で通知し その時メンバ関数が行なったデータは別メンバ関数 (getter) で行う class hoge { private: DB_EmpData data; public: hoge(); ~hoge(); bool getemployee(int empnumber); DB_EmpData getempdata(); }; // 社員情報の取得メンバ関数 // 取得した社員データ提供メンバ関数 構造体 共用体 コーディング標準 C++ ではクラスで代用できるため コーディング標準的には積極的には使用しない方向で C 言語開発経験者が多いプロジェクト等では C++ でも利用されている可能性も struct hoge { protected: int a; public: hoge(); int geta() {return a;} }; struct hoge2 : public hoge { private: int b; public: hoge2(); int getb() {return b;} }; 業務で使える!C++ 実践ワンポイントテクニック

17 8. 演算子のオーバーロード コーディング標準 一般的には極力控えた方が 保守性に貢献するものと想定します 演算子のオーバーロードを自由自在に操れる人は少数 属人的になりやすいため敬遠することが賢明 B1 演算子としか見えないため オーバーロードされていると気が付きにくい きちんと管理されていれば 利用することは吝かではない マクロの扱い コーディング標準 マクロとは コンパイラがソースコードをコンパイルする直前に プリプロセッサで実行される命令群 スコープがプロジェクト全体 コンパイラに近い言語と言え 習熟している人は少ない 基本的にマクロ使用は最低限度に抑え 保守性を向上させる方針を推奨 関数形式マクロを使うならテンプレート化を検討 オブジェクト形式マクロ文法 #define [ マクロ名 ] [ 置換文字列 ] 関数形式マクロ文法 #define [ マクロ名 ]( 引数リスト ) [ 置換文字列 ] 28 17

18 10. テンプレート コーディング標準 テンプレートのメリット マクロより型安全 テンプレートのデメリット 移植性が低い エラーメッセージが分かり辛い 実行ファイルが大きくなる危険性もある テンプレートの使用は テンプレート関数までとし複雑になりやすいテンプレートクラスは避ける 特に実行時デバッグでは分かり辛いため デバッグ効率性かも極単機能で分り易いものだけに限定 テンプレート コーディング標準 例 ) template <class X> int operation(x *obj, int data1, int data2) { return obj->operation(data1, data2); } void fastcall TMyCalc::bt_equClick(TObject *Sender) { int ans; switch(calc_kind) { case C_add: { CalcOpe_Add obj; ans = operation(obj, data1.get(), data2.get()); break; } case C_sub: { CalcOpe_Sub obj; ans = operation(obj, data1.get(), data2.get()); break; } } Panel1->Caption = IntToStr(ans); 業務で使える!C++ 実践ワンポイントテクニック

19 11.define, const, typedef コーディング標準 define はマクロのため コンパイル時に置き換え const は修飾子のため 全てに使用可 typedef は変数の型を独自に定義 B1 マジックナンバーはdefineかconstで定義しておく constは型を指定できるため こちらを推奨 スコープはdefineは全体 constはソース定義範囲 const int MAX_ARRAY_SIZE = 3000; #define MAX_ARRAY_SIZE 3000 typedef int myint16; #define myint16 int //myint16という型を定義 //typedefと同じ効果を持つ const メンバ関数 コーディング標準 メンバ関数に付与することで その関数内でメンバ変数の値を変更しない getter メンバ関数等で使うと非常に便利 class constclass { int i_test; const int MAX_SIZE; mutable int m_test; //mutableを使うとconst 中でも変更可だが public: constclass() : MAX_SIZE(10) {} // コンストラクタで初期化 int getmaxsize() const { //constメンバ関数 m_test = 3; // i_test = 10; コンパイルエラー // MAX_SIZE = 20; コンパイルエラー return(max_size); } }; 32 19

20 12. 各種命名規約 組織等で分り易い記述形式にし 変数からメソッド クラス名 例外エラークラス等ざっくりとでも決定 ハンガリアン記法 データ属性を小文字の接頭語として使用 キャメル記法 単語の区切りを大文字を利用する // ハンガリアン記法 int icount; char cname[10]; // キャメル記法 std::string lastname; // ローワーキャメルケース std::string FirstName; // アッパーキャメルケース コメント規約 ファイルコメント.cpp や.h ファイルの先頭に 作成者やファイルの概要や名前 修正履歴等を記入 ( ドキュメントの不備等に対応させる目的 ) クラス メソッドコメント クラス定義部と各メソッド実装部に 簡単でも目的 実装でトラブルがあった場合 トラブル内容等を簡易に記述する 実装コメント 例外処理や 規約違反している場合の詳細説明 実装に苦労した内容等を詳細に記載 業務で使える!C++ 実践ワンポイントテクニック

21 17 Th Developer Camp B1 6 実践ワンポイント ツール編 ユニットテストの活用 テストプロジェクトの追加 36 21

22 1. ユニットテストの活用 テストケースの追加 37 2.GExperts の活用 GExperts 機能が多すぎで分かりません (^^;; Editor Experts エディタの補完を行ってくれます Grep Results/Grep Search プロジェクト全体の Grep も出来ます Procedure List 今開いているファイル内の関数一覧 業務で使える!C++ 実践ワンポイントテクニック

23 17 Th Developer Camp B2 Delphi テクニカルセッション 見た目で楽しい Delphi プログラミング B2 会社名株式会社シリアルゲームズ名前細川淳 1 アジェンダ VCL / FireMonkey のスタイルの触りを紹介します VCL スタイル TStyleManager FireMonkey スタイル TStyleBook 2 23

24 17 Th Developer Camp 1 VCL スタイル 3 VCL スタイル Delphi XE 以前 TThemeServices OS が提供する テーマ を利用するクラス Windows XP Style (Luna など ) に対応するために追加されました XE2 以降でも依然として利用可能 Delphi XE2 以降 TStyleManager VCL / FireMoneky に新しく追加された スタイル を利用するクラス スタイルを利用すると OS のビジュアル ( 見た目 ) から解放されます 特にマルチプラットフォームである FireMonkey において重要 4 24 見た目で楽しい Delphi プログラミング

25 VCL スタイルの一番簡単な使い方 好きなスタイルにチェックを入れる スタイルを 1 個でも追加すると 120[KB] 程ファイルサイズが増加し スタイル一個につきファイルサイズが 40~60[KB] 増加する B2 デフォルトのスタイルを選ぶ たったこれだけ! 5 17 Th Developer Camp VCL スタイルを適用するデモンストレーション 6 25

26 17 Th Developer Camp 1 VCL スタイルをプログラムから使う 7 VCL スタイル - TStyleManager TStyleManager.TrySetStyle スタイルを設定するメソッド とりあえずこのメソッドさえ知っていればスタイルの適用は可能 procedure TForm1.Button1Click(Sender: TObject); begin TStyleManager.TrySetStyle('Amakrits'); // スタイルの名前 end; 8 26 見た目で楽しい Delphi プログラミング

27 VCL スタイル - TStyleManager TStyleManager.StyleNames 使用可能なスタイルを返すメソッド procedure TForm1.Button2Click(Sender: TObject); var StyleName: String; begin for StyleName in TStyleManager.StyleNames do ListBox1.Items.Add(StyleName); end; B2 名前をリストアップして それを適用します procedure TForm1.Button3Click(Sender: TObject); begin // SetStyle は内部で TrySetStyle を呼び出し 失敗すると例外をあげる if (ListBox1.ItemIndex > -1) then TStyleManager.SetStyle(ListBox1.Items[ListBox1.ItemIndex]); end; 9 17 Th Developer Camp VCL スタイルをプログラムから適用するデモンストレーション 10 27

28 17 Th Developer Camp 1 VCL スタイルを自分で作ってみる 11 VCL スタイル - VCL スタイルデザイナ 自分でスタイルを作成する場合 VCL スタイルデザイナを使います 見た目で楽しい Delphi プログラミング

29 VCL スタイル - VCL スタイルデザイナ スタイルは基本的に各部分部分を表す画像で提供されます ゲームのように一枚の画像からパーツを切り出して使います B2 設定項目が多い! 自分のスタイルをゼロから作ろうと思っても挫折します 既存のスタイルを修正していくと良いでしょう 13 VCL スタイル - VCL スタイルデザイナ 一枚の画像に全ての構成要素をいれます 選択部分が反映されています 14 29

30 VCL スタイル - VCL スタイルデザイナ スタイルデザイナ上で確認できます Th Developer Camp VCL スタイルスタイルデザイナのデモ 見た目で楽しい Delphi プログラミング

31 VCL スタイル - 自作スタイルの使い方 まず Object のトップのプロパティを設定しておきます Name プロパティがスタイルの名前になります B2 17 VCL スタイル - 自作スタイルの使い方 TStyleManager.LoadFromFile スタイルファイルを読み込むメソッド procedure TForm1.Button2Click(Sender: TObject); begin TStyleManager.LoadFromFile('C: Temp TestStyle.vsf'); TStyleManager.TrySetStyle('TestStyle'); // スタイルデザイナで設定した名前 end; 18 31

32 VCL スタイル - 自作スタイルの使い方 TStyleManager.IsValidStyle スタイルファイルの正当性チェック & スタイル情報取得 procedure TForm1.Button2Click(Sender: TObject); var StyleInfo: TStyleInfo; begin if (TStyleManager.IsValidStyle('C: Temp TestStyle.vsf', StyleInfo)) then with StyleInfo do 実行結果 ShowMessage( Name + slinebreak + Author + slinebreak + Author + slinebreak + AuthorURL + slinebreak + Version ); end; Th Developer Camp VCL スタイルスタイルファイル読み込みデモ 見た目で楽しい Delphi プログラミング

33 17 Th Developer Camp 1 VCL スタイルを使用するコントロールの作成 B2 21 VCL スタイル - コントロールの作成 一番単純な方法は Paint メソッドや WM_NCPAINT, WM_PAINT に応えて自分で実装します procedure TForm1.PaintBox1Paint(Sender: TObject); var DC: HDC; R: TRect; begin DC := PaintBox1.Canvas.Handle; R := PaintBox1.ClientRect; ノーマル状態のボタンを描画する例 StyleServices.DrawElement( DC, StyleServices.GetElementDetails(tbPushButtonNormal), R); StyleServices.DrawText( DC, StyleServices.GetElementDetails(tbPushButtonNormal), 'TEST CAPTION', R, TTextFormatFlags(DT_CENTER or DT_VCENTER or DT_SINGLELINE), StyleServices.GetStyleFontColor(sfButtonTextNormal)); end; 22 33

34 VCL スタイル - コントロールの作成 一般的に VCL スタイルの描画は TStyleHook を使います TStyleHook とは TStyleManager から呼び出されコントロールの描画を担います WM_PAINT や WM_NCPAINT などを フック して それらの応答をコントロールに変わって実行します ただし OS 標準スタイル時の描画には使われません 標準のスタイル時は 従来と同様に コンポーネントの Paint メソッドなどで処理されます 23 VCL スタイル - TStyleHook の実例 unit utestcontrol; interface uses Winapi.Windows, Vcl.Controls, Vcl.ExtCtrls, Vcl.Graphics, Vcl.Themes; type TTestControl = class(tpanel) private class constructor Create; // クラスコンストラクタは initialization に追加するのと同じ end; implementation type TTestControlStyleHook = class(tstylehook) protected procedure Paint(Canvas: TCanvas); override; public constructor Create(iWinControl: TWinControl); override; end; 見た目で楽しい Delphi プログラミング

35 VCL スタイル - TStyleHook の実例 { TTestControl } class constructor TTestControl.Create; begin // StyleHook とコントロールを結び付けます TCustomStyleEngine.RegisterStyleHook(TTestControl, TTestControlStyleHook); end; { TTestControlStyleHook } constructor TTestControlStyleHook.Create(iWinControl: TWinControl); begin inherited; B2 OverridePaint := True; // Paint メソッドをフックしますよ という意味 end; procedure TTestControlStyleHook.Paint(Canvas: TCanvas); begin // TTestControl の Paint の代わりにこちらが呼ばれる ( ノーマル状態のボタンを描画する例と同様のため中略 ) end; end. 25 VCL スタイル - TStyleHook の実例 Windows 標準時 TTestControl が継承している TPanel の標準の見た目が描画される VCL スタイル適用時 TTestControlStyleHook がスタイルに応じた見た目を描画する 26 35

36 17 Th Developer Camp VCL スタイル TStyleHook デモ Th Developer Camp 1 FireMonkey スタイル 見た目で楽しい Delphi プログラミング

37 FireMonkey スタイル FireMonkey のスタイルは VCL スタイルとはまったく異なります 個々のコントロールがスタイルを持っている TStyledControl を継承したコントロール 個別に設定できる B2 スタイルは TStyleBook で管理される TStyleBook で定義済みのスタイルリソースを読み込むとスタイルを一括で変更できる 29 FireMonkey スタイル 一番簡単な使用方法は Form に TStyleBook コンポーネントを貼る TStyleBook コンポーネントの Resource プロパティをクリックしてスタイルエディタを開く スタイルエディタから定義済みスタイルを読み込む 適用して終了 を押す 30 37

38 FireMonkey スタイル簡単な設定方法 スタイルエディタを開く 定義済みスタイルを開く 31 FireMonkey スタイル - コンポーネント毎 個々のコンポーネントごとに編集する方法は コンポーネントを右クリックして カスタムスタイルの編集 デフォルトスタイルの編集 のどちらかを選ぶ スタイルエディタが開く 適用して終了 を押す 個々のコンポーネントのスタイルを編集すると 自動的に TStyleBook コンポーネントのインスタンスが生成される 見た目で楽しい Delphi プログラミング

39 FireMonkey スタイル - コンポーネント毎 スタイルエディタを開く B2 スタイルの要素のプロパティはオブジェクトインスペクタに表示され編集可能 33 FireMonkey スタイル - コンポーネント毎の例 フォーカス時に使われる TGlowEffect の色を変えてみる GlowEffect の色 GlowEffect が発動するトリガーほかにも IsMouseOver などがある GlowColor を Crimson ($DC143C) に変更 34 39

40 FireMonkey スタイル - StyleLookup コンポーネントの StyleLookup プロパティを設定するとデフォルトのスタイルを変更できます StyleLookup プロパティは このコントロールが使うスタイルの名前です このプロパティが設定されると FindStyleResource メソッドによって適切なスタイルが設定されます 35 FireMonkey スタイル - StyleLookup TPanel の StyleLookup を変更して見た目をボタンのようにしてみます 見た目で楽しい Delphi プログラミング

41 17 Th Developer Camp FireMonkey スタイルデモ B Th Developer Camp 1 FireMonkey スタイルそのほか 38 41

42 FireMonkey スタイル スタイルの個々の要素をプログラムから変更することができます ( 本当は ) 現状では小細工しないと変更できません Delphi XE2 Update4 で確認 (QC 既に Closed) これについては EDN TeamJapan の高橋さんのブログ記事が詳しいです 上記記事より引用 FireMonkey のコンポーネントの FindStyleResource メソッドを呼び出して スタイルにアクセスしようとしますが なぜか nil( 見つからなかったということ ) が返ってきてしまいます この問題 ( 現象 ) は QualityCentral にも報告されたのですが トップレベルのスタイルの場合 親クラスである TStyleControl クラスの protected なメンバである FResourceLink にアクセスする必要がある (As Designed, 仕様 ) という結果になりました Th Developer Camp 1 付録 :UI 設計の指針 見た目で楽しい Delphi プログラミング

43 UI 設計の指針 VCL / FireMonkey スタイルを利用することで OS の見た目から解放されます しかし OS の UI から解放されるわけでありません そのため OS で提供されている一般的な操作が犠牲になる場合があります 例として Flash (Air) Win / Mac / Linux で動作するが 一般化のためにコンテキストメニューが廃止されている Unitiy Android / ios などで動作するが 一般化のために 戻るボタン による Activity 遷移がサポートされていない FireMonkey の場合は特に OS の提供する UX の犠牲を最小限にとどめる必要があります VCL は Windows アプリケーションとなりますが 見た目が自由になったからといって 独自すぎる UI を提供すべきではありません B2 41 UI 設計の指針 - 一般的論としての UI 視線は左から右 上から下に流れる 視線の流れ このコンテキストで一般的な動作は右側にイリーガルな操作は左側に ここには視線が最後にたどり着く左上から見ていって 途中に問題がない事を確認していくので UI の右下に OK や 確認 といったボタンがある 上記原則に反するが Windows は MacOS との類似を避けるために OK ボタンを左にした FireMonkey の場合は MacOS に合わせるか Windows に合わせるかはメインターゲットによる もしくは プログラムで動的に変更する 参考として Android は 2.x までは左側 3.x からは右側に変更されている 42 43

44 UI 設計の指針 - 一般的論としての UI 視覚効果は感覚に合わせる グレーアウトされていれば押せない MouseOver で凹むボタンなど言語道断 感覚としてボタンは押されると凹むもの 曖昧なアイコンは使わない グレーアウトされているボタンは押せない マウスオーバーするとグレーが解除されたり ポップアップしたりして押せる事をアピールする変な動作がウェブにあふれていますが 間違い このアイコンをクリックすると起きるアクションは? 音が OFF になる 音が ON になるどっち? 43 UI 設計の指針 - 一般的論としての UI その UI で正しいかどうか考慮する TComboBox と ListBox TLabel と TImage TMainMenu と TPopupMenu etc. 都道府県の選択の場合 どの UI が正解だと思いますか? 見た目で楽しい Delphi プログラミング

45 UI 設計の指針 - その他の事 ターゲット UI はターゲット層で決まる ターゲット層ターゲットデバイスターゲット UI 色覚異常への対応 B2 それぞれが判別可能か? ユーザビリティテスト 独りよがりな UI になっていないか? Th Developer Camp 1 質疑応答 46 45

46 17 Th Developer Camp B4 C++Builder テクニカルセッション FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から 株式会社ウェブテクノロジ R&D グループ橋本孔明 (Yoshiaki Hashimoto) 1 はじめに 本日はご来場いただきありがとうございます 2 46 FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から

47 自己紹介 橋本孔明 ( はしもとよしあき ) 経歴 勘違いから PC 入門と同時にプログラミング入門 中高生時代 VC++ Delphi などいろいろな環境でオンラインソフトを作っていたことがきっかけで入社 現在 Windows Mac スマートフォンなどなんでも手がける プロダクト開発のほか 各種プラットフォームおよび開発環境の調査や導入決定などにも携わる 基本的に C++ 屋 (STL/Boost/C++11 などを多用 ) その他 趣味人間 ( 鉄道 釣り アクアリウムとか ) hashimoto@webtech.co.jp B4 3 会社紹介 - 株式会社ウェブテクノロジ 各種製品 サービスの企画 開発 販売 サポート 画像最適化ツール OPTPiX imésta ゲーム業界国内シェア 100% スプライトアニメーション作成ツール SpriteStudio 携帯電話向け画像最適化 ASP OPTPicture 絵を描かずにマンガが作成できる コミ Po! 受託開発 大手電機メーカー向けデータ放送用画像変換モジュール 大手コンテンツプロバイダ向け高機能画像変換システムの提供 大手光学機器メーカー複合機内蔵 PDF 生成用減色モジュールの提供 4 47

48 アジェンダ 1. ソーシャル開発におけるプラットフォームの変遷 2. SpriteStudio の紹介 3. クロスプラットフォーム開発環境の模索 4. C++Builder XE2&FireMonkeyとの出会い 5. FireMonkey 苦労話 ( 今回のメイン ) 6. まとめ 5 17 Th Developer Camp 1 ソーシャル開発におけるプラットフォームの変遷 6 48 FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から

49 ソーシャル開発環境の変遷 ソーシャルゲーム :ios デバイス Android デバイスなどで動作するゲームの呼称 必ずしもネットワーク要素を含まない 従来 ゲームプログラム開発は Windows 環境が主流 ios の台頭により MacOS X 上での開発が必須に MacOS X 上では Android 開発 (Eclipse) も行える すべてを Mac 上で済ませるベンダーが増えた 開発ツール類の Mac 対応要望が増加 B Th Developer Camp 2 SpriteStudio の紹介 8 49

50 SpriteStudio とは (1) SpriteStudio( スプライトスタジオ ) は 汎用的なアニメーションデータ作成ツールです イベントデータ の編集と管理 ドラッグ & ドロップなどの簡単な操作 キーフレーム方式で楽に編集 トラッキングモードによるキーフレーム化 タイムチャートによる視覚的な管理 SpriteStudio SDK ソフトがなくても確認できるビューア 動きを組み合わせるシーン編集モード for Designers for Programmers for All Developers ドラッグ & ドロップなど直感的な操作で アニメーションデータの作成が可能に タイムチャートとグラフでアニメーションデータを視覚的に管理 動きを付ける作業をデザイナに任せることにより 負担が軽減 SDK を使って アニメーションデータのコンバータにも簡単に作成可能 SpriteStudio が アニメーションの開発効率を向上させる! 9 SpriteStudio とは (2) スプライトアニメーション編集ツール 著名コンシューマーゲーム ソーシャルゲーム等での採用事例多数 FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から

51 SpriteStudio とは (3) リリース中のバージョンは Windows 専用 VC++ ネイティブ C++ および Win32 API で開発 MacOS X にて 仮想環境上の Windows による動作も可能だが Mac 版の要望を多数頂戴 開発決定 B Th Developer Camp デモンストレーション SpriteStudio 開発途上版 12 51

52 17 Th Developer Camp 3 クロスプラットフォーム開発環境の模索 13 要件定義 MacOS X と Windows の GUI の違いを吸収したい メニューバー位置などは OS ネイティブに合わせたい OS ネイティブではなく ダークグレーベースの外観としたい 他のデザイナー向けプロフェッショナルツールでも導入事例が多い (Adobe CS6 3D ツールなど ) 見た目が良いというだけではなく デザイナーの長時間利用に耐え 目に優しい色遣いとなっている プロフェッショナルユースに耐えうる UX 設計 社内ツールや簡単なフリーソフトなどとは違います FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から

53 クロスプラットフォーム開発環境の模索 いくつかの候補を調査 C/C++& ネイティブAPI Mono Qt wxwidgets C++Builder XE2 主観がかなり入っています B4 15 C/C++& ネイティブ API UI はそれぞれのプラットフォームに合わせて細かく設計可能 確実な開発環境 (VC++/Xcode) の存在 標準コントロールのみを使用していると 古くさい UI になる ( 特に Windows) 標準コントロールのカスタマイズが難しく なんでもかんでも自作していく羽目に 昔は実際にやっていましたが MacOS X ネイティブ開発技術の習得 ただし ios 学習である程度の Objective-C の知識有り 16 53

54 Mono C# および.NET を用いたクロス対応開発環境 IDE として MonoDevelop を使用 C# で RAD 風の開発が可能 (Windows Forms).NET(Windows Forms) 開発知識が転用可能.NET の最新潮流である WPF は使用できない UI が OS ネイティブに準じてカスタマイズしにくい 中間コードで出力されることによるソフトウェアプロテクトへの不安 17 クロス対応 GUI フレームワーク C++ で記述可能な GUI フレームワーク (Qt wxwidgets など ) C++ やネイティブ API が使用できる 商用サポートを受けるためにはライセンス料金が高額だったり そもそもサポートが無かったり 他はネイティブと同じデメリット 日本語情報の不足 ( 微妙に不安 ) 試そうとしたがビルド環境構築 (OSX) で挫折 FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から

55 C++Builder XE2 実は当初候補に入っておらず 他のダメ出しをした 後で存在を思い出し 検討を開始 C++ で開発可能 昔の VCL の知識が役立つ? Windows 上で同時開発し MacOS X プログラムのデバッグがリモートで可能 柔軟な GUI 設計が可能 Mac 開発の実績がいまいち不明 B Th Developer Camp 4 C++Builder XE2& FireMonkey との出会い 20 55

56 試用版で FireMonkey プラットフォームを学習 Delphi/C++Builder の知識は Ver6 くらいで止まっていた & かなり忘れていた 久々に起動した C++Builder はすっかり変わって FireMonkey プラットフォームは VCL の面影がなんとなく残っていた スタイル編集により GUI 要素の外観カスタマイズが自在 これはいけそう 21 早速開発に着手 アプリケーションの性格上 いきなり OpenGL の導入など高度な要素から挑戦 後から 無理 と判明すると困る 買って数日でランタイムライブラリの内部を覗いたりする羽目に C++Builder 単体より ランタイムソースの付いている RAD Studio を持っていた方がよさそう ランタイムは Delphi 製 忘れかけていた Delphi 言語知識をなんとか思い出す FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から

57 17 Th Developer Camp 5 FireMonkey 苦労話 ( 今回のメイン ) B4 23 注意事項 基礎知識的なものは省略します 独自調査に基づく項目が多く含まれます 他開発環境 (VC++) からの移行も重視しています 弊社の開発スタイルの都合に合わせるための対策も含まれます 実際には別の解決策があったり 公式には他の方法が推奨されている可能性があります XE3 になると解消する問題もありそうです Windows を Win MacOS X を OSX と省略 24 57

58 17 Th Developer Camp C++ 環境レベルでの違い 25 C++ 環境レベルでの違い (1) ビルド分けしたい場合 #ifdef APPLE でOSXを識別 #ifdef _WIN32(#ifdef _WINDOWS) でWinを識別 Winのx64では _WIN64が加わります(_WIN32も存在) CRT 関数の違い Windowsで使われるwcscpy_s() などがOSXには無い OSXはPOSIX 準拠 +α 程度のCRT 関数しか無い VC++ などで書いたコードの移植時に注意 汎用処理はRTLの機能か STL Boostに頼る FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から

59 C++ 環境レベルでの違い (2) Win32 構造化例外は OSX にはありません アクセス違反などはシグナルハンドラで捕まえます 他コンパイラで try-catch を流用していたコードも注意 Boost の一部機能が使えない (XE3 で解消?) OSX ではスタティックライブラリを要する Boost コンポーネントの大半が使用不可能 ( ヘルプに記載はあったが ) serialization filesystem など 文字列リテラルの文字コード Windows はシステム依存 OSX は基本的に UTF-8 この問題は深いので各自研究してください B4 27 C++ 環境レベルでの違い (3) wchar_t の違い ( 公式でも解説されている ) Win では 2bytes OSX では 4bytes UnicodeString(String) 型 WideChar 型はどちらの OS でも 2bytes ベース このため OSX では wchar_t を使用する CRT 関数std::wstring Boost などへのアクセスが不便 UnicodeString から std::wstring への変換関数を自前で用意しました ( ただし重そう ) テンプレートに WideChar を適用した型を自分で定義して使う方法もある std::basic_string boost::basic_format など 28 59

60 コードサンプル inline std::wstring wstring_from_unicodestring( const UnicodeString& str) { #ifdef APPLE return (wchar_t*)pucs4chars( UnicodeStringToUCS4String(str)); #else // 手抜き 将来の ios や Android を考えると非推奨 return str.w_str(); #endif } 29 C++ 環境レベルでの違い (4) L hello と u hello と _D( hello ) L hello はWinで2バイト文字 OSXでは4バイト文字 厳密にはwchar_tの配列 ( 環境ごとにサイズ可変 ) u hello はOSXでも2バイト 厳密にはchar16_tの配列 (C++11で導入) char16の名の通り どんな環境でも 最低 2バイト 大文字のU にするとchar32_t _D( hello ) にするとどちらでも2バイト UnicodeStringに渡すならとりあえずこれがいいらしい マクロなので何かあっても後で再定義すればいい FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から

61 17 Th Developer Camp OS ネイティブ API の呼び出し B4 31 OS ネイティブ API の呼び出し FireMonkey だけでも結構なものは作れる 細かいユーザーインターフェースの改良にはどうしてもネイティブ API のサポートが必要となる SpriteStudio の場合 アニメーション再生に OpenGL が必要となった OSX のネイティブ API は Objective-C だが? 32 61

62 OS ネイティブ API の呼び出し :Windows 大半がただの関数なのであまり難しくない ( 必要なヘッダを include して呼ぶだけ ) ハンドルの取得方法さえわかれば大丈夫 #include <FMX.Platform.Win.hpp> FmxHandleToHWND(this->Handle); (HMENU)(pMenu->Handle); // TForm* からHWND // TMenuItem* からHMENU 33 OS ネイティブ API の呼び出し :MacOS X Cocoa API:Objective-C の知識が必要 ランタイムが Objective-C クラスを C++ クラス ( インターフェース ) として呼び出せる高度なラッパーを提供している Delphi 向けのため C++ での記述方法がかなり特殊 私もまだ完全理解には至っていません 公式の説明が見あたらない Carbon API なら簡単です Win32 API と同じく C 関数呼び出し方式 最新の OS 機能には非対応 FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から

63 コードサンプル // 必要となるヘッダ #include <FMX.Platform.Mac.hpp> #include <Macapi.Foundation.hpp> #include <Macapi.AppKit.hpp> // TForm* から NSWindow を得る // Cocoa クラス名に接頭辞 _di_ が付くものと T が付くものがあり役割も分かれる _di_nswindow wnd = TNSWindow::Wrap(_di_ILocalObject( FmxHandleToObjC(pForm->Handle))->GetObjectID()); // 自アプリの NSBundle を得る ( クラスメソッド呼び出し ) // 生の ObjC クラスポインタは Wrap してラッパクラス ( スマートポインタ ) 化する Void* pmainbundle = TNSBundle::OCClass->mainBundle(); _di_nsbundle bundle = TNSBundle::Wrap(pMainBundle); B4 // 得られた NSWindow インスタンスのメソッドを呼んでみる // NSString 生成には RTL 提供の NSSTR 関数が利用可能 // [wnd Hello World ]; ObjC の記法 wnd->settitle(nsstr(_d( Hello World ))); // C++ 同等に呼べる 35 コードサンプル // TForm* から NSView を得る TObject* pobj = _interfacetoobjectcast<tobject>(fmxhandletoobjc(this->handle)); if(pobj) { boost::scoped_ptr<trtticontext> prtticontext(new TRttiContext); TRttiType* prttitype = prtticontext->gettype(pobj->classtype()); if(prttitype) { TRttiProperty* prttiproperty = prttitype->getproperty("view"); if(prttiproperty) { _di_nsview view = prttiproperty->getvalue(pobj).asinterface(); return view; } } } 36 63

64 17 Th Developer Camp OS ごとのメニューの違い 37 OS ごとのメニューの違い 結構マニアックな内容に しかし メニューはアプリケーション GUI の基本中の基本 中規模以上のアプリケーションを開発するには メニューを柔軟に制御する必要はどうしても出てくる GUI 要素で OS ネイティブなのは基本的にメニューだけ ( それ以外のコントロールは FireMonkey 経由 ) 以上の理由により 複雑になりがちですが ちょっと詳しくまとめてみました FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から

65 OS ごとのメニューの違い - Windows ショートカットキーとアクセラレータが別の概念となっている B4 39 OS ごとのメニューの違い MacOS X(1/2) Windows でいう ショートカットキー が無く アクセラレータ 相当を ショートカット と呼称 40 65

66 OS ごとのメニューの違い MacOS X(2/2) アプリケーションメニュー の存在 Windows でいうところの システムメニュー ツール ヘルプ などの内容に相当 41 OS ごとのメニューの違い その他 メニュー配置の 常識 の違い OSX では 終了 は ファイル の中ではない バージョン情報や環境設定はアプリケーションメニューに入っている 同じ内容でも微妙に表現が違う Win: 切り取り コピー 貼り付け OSX: カット コピー ペースト ショートカット文字列の有無 Ctrl キー vs. Command キー FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から

67 OS ごとのメニューの違い 解決策 フォーム上に別々の TMenuBar を作っておき OS ごとに割り付けすることで ある程度解決可能 しかし 今後の変更やローカライズを考えるとフォーム上のアイテムでの個別管理はわずらわしい そこで メニュー内容を XML 化しリソースに格納 属性として Windows 用 MacOS X 用などのフラグを追加 ショートカットも OS 別に指定可能とした これを RTL の TXMLDocument で読み込み TMenuBar/TMenuItem を構築するライブラリを開発 B4 43 メニュー定義用 XML サンプル ( 抜粋 ) <!-- Command にコマンド文字列 ( イベントハンドラ関数に渡される ) を指定する --> <!-- WinShortcut で Windows ショートカットキーのアルファベットを指定する --> <!-- Accel にアクセラレータキーのキーコンビネーションを文字列で指定する --> <!-- 一般的な流儀に沿い Win で Ctrl+ Mac で Cmd+ をアクセラレータにする ( 核キーが同じ ) 場合 Accel アトリビュートに Def+ と書いて共通化できる --> <Item Name=" 新規作成 " Command="New" WinShortcut="N" Accel="Def+N" /> <!-- セパレータを作る場合はこのように指定する --> <Item Name="-" /> <!-- Win と Mac で名称を分けることもできる Win 用にショートカット文字列を入れてしまう (WinShortcut 省略 ) ことも可能 --> <!-- アクセラレータキーを Win と Mac で別々に定義 ( または片方だけ定義 ) したい場合 WinAccel と MacAccel を両方定義することで分けられる --> <!-- OpenDlg=1 とすると項目名の後に... を付与する --> <Item WinName=" 開く (&O)" MacName=" 開く " Command="Open" WinAccel="Ctrl+O" MacAccel="Cmd+O" OpenDlg="1" /> <Item Name=" 上書き保存 " Command="Save" WinShortcut="S" Accel="Def+S" /> <!-- Win のみで表示したい場合は MacHide=1 逆は WinHide=1 とする --> <Item Name="-" MacHide="1" /> <Item Name="Application の終了 " Command="Exit" WinShortcut="X MacHide="1" /> 44 67

68 OS ネイティブメニューへの対応 作った TMenuBar を OS ネイティブのメニューに設定する方法 構築完了してから UseOSMenu() メソッドを呼べば OK UseOSMenu() してからアイテム追加しても反映されない OSX アプリケーションメニューに設定する方法 別の TMenuBar を構築し Application->ApplicationMenuItems に代入する 45 OS ごとのメニューの違い 実装してみたが Win では特に問題無く動作 した?( 後述 ) OSX でトラブル発生 XML の Command の内容を TMenuItem の TagString に格納し 共通の OnClick ハンドラから読み取って識別しようとした TMenuItem の OnClick に指定したメソッドで Sender 引数を TMenuItem* にキャストして使用したところアクセス違反 ランタイムライブラリのソースコードを漁ったり検索したり QC にて既知不具合と判明 FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から

69 コードサンプル void fastcall MenuLoader::MenuItemClick ( TObject *Sender) { pmenuitem = (TMenuItem*)(Sender); ProcessCommand(pMenuItem->TagString); // Error on OSX } B4 47 コードサンプル #include <FMX.Platform.Mac.hpp> #include <Macapi.Foundation.hpp> #include <Macapi.AppKit.hpp> TMenuItem* pmenuitem; #ifdef APPLE // パラメータクラスが誤って渡されているので 同じメモリモデルのクラスに // 無理矢理キャストして中身を取り出す ( 暫定対応 ) class TFMXOSMenuItem : public TOCLocal { public: TMenuItem* FMXMenuItem; }; TFMXOSMenuItem* posxmenuitem = (TFMXOSMenuItem*)Sender; pmenuitem = posxmenuitem->fmxmenuitem; #else pmenuitem = static_cast<tmenuitem*>(sender); #endif 48 69

70 OSX ショートカットキーの対応 環境設定 に [Cmd+,] を指定したい TextToShortcut("Cmd+,"); が動かない TextToShortcut はアルファベット程度しか対応していないらしい TextToShortcut 同等品を自作して差し替え ( 今回のプロジェクトに対応できる程度の簡素なもの ) 49 メニュー項目の有効無効 チェック対応 TMenuItem の Enabled や IsChecked を変更しても正常に反映されない場合がある (Win OSX とも ) さらに はっきり確認できていないが OSX で IsChecked を変更すると メモリ破壊か何かが起こって他のところにトラブルを招く模様? これらに対応するには OS ネイティブ処理を呼ぶ必要がある このほかツールバーボタンとの共用などもあり 総合的な管理クラスを設計して使っています FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から

71 メニュー項目の有効無効 チェック対応 :OSX チェック対応 TMenuItem から Cocoa の NSMenuItem オブジェクトを得て setstate(nsonstate または NSOffState) メソッドを呼ぶ 無効化対応 次のコードサンプル参照 ややこしいです 今覚えなくても なんとかなる と記憶しておいてください B4 51 コードサンプル // TMenuItem から NSMenuItem を得る static _di_nsmenuitem GetNSMenuItem(TMenuItem* pmenuitem) { _di_nsmenuitem item; if(pmenuitem->handle) { item = TNSMenuItem::Wrap(_di_ILocalObject( FmxHandleToObjC(pMenuItem->Handle)) ->GetObjectID()); } return item; } 52 71

72 コードサンプル ( 続き ) // メニューアイテムを無効にする場合 TMenuItem* pmenuitem = (TMenuItem 取得 ); _di_nsmenuitem item = GetNSMenuItem(pMenuItem); class_addmethod(object_getclass(item->target()), sel_getuid("validatemenuitem:"), &validatemenuitem, "C@:@"); item->setenabled(false); // 無効化対応のためのチェックメソッド用関数 static BYTE validatemenuitem(void* pthis, SEL cmdsel, void* sender) { _di_nsmenuitem item = TNSMenuItem::Wrap(sender); return item->isenabled()? 1 : 0; } 53 メニュー項目の有効無効 チェック対応 :Win チェック対応 TMenuItem の IsChecked を変更するだけで対応可能 ( ネイティブ対応不要 ) 無効化対応 次のコードサンプル参照 Windows APIを直接使用します OSXほどややこしくないです FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から

73 コードサンプル // メニューアイテムを無効にする場合 TMenuItem* pmenuitem = (TMenuItem 取得 ); MENUITEMINFO mii; ZeroMemory(&mii, sizeof(mii)); mii.cbsize = sizeof(mii); mii.fmask = MIIM_STATE; mii.fstate = MFS_GRAYED; // 有効化なら MFS_ENABLED SetMenuItemInfo((HMENU)pMenuItem->Handle, (UINT_PTR)pMenuItem, FALSE, &mii); B4 55 メニュー : その他 ツールバー等とも連携できる アクションリストが欲しい XE3 でサポート予定らしい? 現状では自作した 前述の不具合なども治っているといいのですが メニュー項目へのビットマップ表示ができない OSXでは使わないがWindowsでは標準的 これもネイティブコードを使えば可能 XP 以前とVista(+AeroGlass) 以降で扱いが異なる 56 73

74 17 Th Developer Camp その他 Tips 57 その他 Tips(1) GPU アクセラレーションをオフにする SpriteStudio のようにフォーム内のコントロールが多いとかえって遅くなるようです OpenGL とも動作が衝突するのでオフにします FMXMain() の最初で GlobalUseDirect2D = false; とすればオフにできます (Win のみ ) OSX では方法が無いようです ( けっこう重い ) FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から

75 その他 Tips(2) コントロールフォーカスエフェクトをオフにする デフォルトではフォーカスを得たコントロールの周囲にぼかしエフェクトが付きます これがかなり重い FMXMain() の最初で GlobalDisableFocusEffect = true; とすればオフにできます B4 59 その他 Tips(3) OSX で dynamic_cast がおかしい 複数のコントロールからイベントハンドラを共有している場合など Sender を当該コントロールの型に dynamic_cast して判定したいことがある OSX で使ったら落ちた 自分で new したもの同士だと問題ない ランタイムが生成したインスタンスが RTTI に対応できていない? static_cast し Tag で識別するなどして対応 60 75

76 コードサンプル void fastcall TForm1::FormCreate(TObject *Sender) { TForm* pform = dynamic_cast<tform*>(sender); if(pform) { pform->caption = _D("Hello World"); } } void fastcall TForm1::ItemClick(TObject *Sender) { if(dynamic_cast<tbutton*>(sender)) { // ボタンだった場合の処理 } else if(dynamic_cast<tmenuitem*>(sender)) { // メニュー項目だった場合の処理 } } 61 その他 Tips(4) OSX でのアプリケーション終了の挙動 OSX アプリはウィンドウを閉じただけでは終了しない OnClose イベントでメインウィンドウを隠しておき OS から通知を受けたら再表示する アプリケーションメニューの 終了 で完全終了 詳しくは前回の DevCamp 資料にあった ような FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から

77 その他 Tips(5) その他 ダイアログボックスでのボタンの順序 GUI デザインはオリジナルで作っても こういうところは慣れが出るので標準からあまり弄らないほうがいい IDE およびエディタの動作 謎のコンパイルエラー リンクエラーが出たら再起動 外部でソース編集する場合は齟齬に注意 B4 63 まとめ 一部愚痴っぽくなってしまった感もありますが C++Builder XE2 のクロスプラットフォーム対応は間違いなくすばらしいものです クロス開発で 一番大変な部分 の大半が FireMonkey によって片付けられます プロフェッショナルユースに耐えるアプリケーション開発を行うためには デベロッパー側での工夫や調整も必要です XE3 での改良にも期待します 65 77

78 B5 Delphi/C++Builder テクニカルセッション FireMonkey モバイル / タブレットアプリ開発 エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏 ttakahashi@embarcadero.com 1 アジェンダ FireMonkey カスタムコンポーネントの基礎 TMS Pack for FireMonkey FireMonkey ios アプリ開発テクニック DataSnap モバイルコネクタ モバイル / タブレット向け Web アプリ Delphi XE3, C++Builder XE FireMonkey モバイル / タブレットアプリ開発

79 FireMonkey カスタムコンポーネントの基礎 Delphi XE2 C++Builder XE2 FireMonkey ios Xcode 側に.pas をコピー B5 3 TMS Pack for FireMonkey Delphi XE2, C++Builder XE2, FireMonkey ios をサポート 注意 : トライアル版には FireMonkey ios は含まれない 4 79

80 FireMonkey ios アプリ開発 現時点で必要な環境 Delphi XE2 Update 4 Hotfix 1 Windows OS 上で開発 OS X SnowLeopard(10.6) Xcode ~ Xcode 4.2 OS X Lion(10.7) Xcode Xcode OS X Mountain Lion(10.8) は不可 ただし 5 FireMonkey ios アプリ開発テクニック iphone,ipad の種類 & バージョン判別 シミュレータ or 実機 キーボードの表示 非表示に適応させる 画面の回転を検知 TCP/IP クライアント CFSocket コールバック関数の呼び出し規約は mwpascal (MetroWerks Pascal Calling Convention) NSThread の利用と GUI の更新 ios アプリのフォルダ ( パス ) は? ExtractFilePath(ParamStr(0)) 6 80 FireMonkey モバイル / タブレットアプリ開発

81 DataSnap モバイルコネクタ DataSnap サーバー Delphi XE2 Enterprise Edition 以上が必要 FireMonkey ios 向けモバイルコネクタ freepascal_ios42 freepascal_ios50 3 点ほど不具合がありますので.pas の修正が必要 日本語パラメータの文字化け メモリ ( 参照カウント ) エラー NSURLConnection の使用法の誤り B5 7 iphone シミュレータの注意点 予め ターミナルから iphone シミュレータのプロセスを UTF-8 で起動しておく ( 日本語などの文字化け対策 ) QC# $ export LANG=ja_JP.UTF-8 $ cd /Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app/Contents/MacOS $./iphone Simulator Xcode でビルドして起動!! 8 81

82 モバイル / タブレット向け Web アプリ FireMonkey とは直接関係ないですが Web アプリのほうが良い ( 楽だ ) と考えている開発者向け Windows 8, iphone, ipad, Android, BlackBerry, WP etc IWCGjQuery が凄い!! ポルトガルの CentralGest 社が最近リリースしました IWCGjQuery Suite for IntraWeb 主にデスクトップ Web ブラウザ向け IWCGjQuery Mobile Suite for IntraWeb スマホ & タブレット Web ブラウザ向け Delphi 2007 ~ Delphi XE2 C++Builder 2007 ~ C++Builder XE2 IntraWeb ~ IntraWeb Delphi XE3, C++Builder XE3 FireMonkey 2.0 で Metropolis UI スタイル FireMonkey 2.0 でタッチ & ジェスチャー InterBase XE3 ToGo Edition dbexpress driver for SQLite FireMonkey モバイル / タブレットアプリ開発

83 Thank You B

84 東京都千代田区飯田橋 ロックビレイビル 8F TEL FAX

Embarcadero Developer Camp

Embarcadero Developer Camp 17 Th Developer Camp B2 Delphi テクニカルセッション 見た目で楽しい Delphi プログラミング 会社名株式会社シリアルゲームズ 名前細川淳 1 アジェンダ VCL / FireMonkey のスタイルの触りを紹介します VCL スタイル TStyleManager FireMonkey スタイル TStyleBook 2 17 Th Developer Camp 1

More information

Embarcadero Developer Camp

Embarcadero Developer Camp 17 Th Developer Camp B1 テクニカルセッション 業務で使える! C++ 実践ワンポイントテクニック アナハイムエンジニアリング株式会社 代表取締役服部励起 1 17 Th Developer Camp 1 エンジニアとして 都市伝説!? 2 近頃!? の見たり聞いたり 周りの技術レベルが低い 改修よりスクラップアンドビルドが効率的 オブジェクト指向だから開発工数が削減できる アジャイル開発なので各種標準化は不要

More information

Embarcadero Developer Camp

Embarcadero Developer Camp 17 Th Developer Camp B4 C++Builder テクニカルセッション FireMonkey クロス開発テクニカルエッセンス - アニメーションデータ作成ツール開発事例から 株式会社ウェブテクノロジ R&Dグループ橋本孔明 (Yoshiaki Hashimoto) 1 はじめに 本日はご来場いただきありがとうございます 2 自己紹介 橋本孔明 ( はしもとよしあき ) 経歴 勘違いから

More information

「RAD Studio XE5によるマルチ言語/マルチデバイス開発の進め方」

「RAD Studio XE5によるマルチ言語/マルチデバイス開発の進め方」 C1 Delphi/C++ チュートリアルセッション RAD Studio XE5 によるマルチ言語 / マルチデバイス開発の進め方 エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏 アジェンダ RAD Studio XE5 の概要 Delphi or C++ Intel or ARM Windows / OS X / ios / Android プロジェクトとは? FireMonkey HD

More information

25th Developer Camp

25th Developer Camp B5 Delphi/C++Builder ild テクニカルセッション エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏 B5 VCL ユーザーのための FireMonkey 入門 はじめに FireMonkey とは? FireMonkey と VCL アプリケーションの外観 FireMonkey の便利なコンポーネント FireMonkey HD/3D アプリケーション データベースアプリケーション

More information

24th Embarcadero Developer Camp

24th Embarcadero Developer Camp 17 Th Developer Camp B4 Delphi/C++Builder テクニカルワークショップ Delphi / C++Builder 旧バージョンアプリケーションの移行 エンバカデロ テクノロジーズサポートチーム with 高橋智宏 1 17 Th Developer Camp Delphi Q1 2 midas.dll Q. 別々のバージョンで作成したデータベースアプリケーションがあります

More information

Windowsユーザでも 手軽に作れるiPhoneアプリ

Windowsユーザでも 手軽に作れるiPhoneアプリ Windows ユーザでも 手軽に作れる iphone アプリ 株式会社フォーサイト バリュー テクノロジー 山本健一 1 2 はじめに iphone アプリを開発するために必要なもの ( 一例 ) OS 開発言語 開発キット Mac OS X 10.5.3 以降 Objective-C iphone SDK 開発環境 Xcode 4.3 iphone SDK は Windows 上では動かせません

More information

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1 ポリテクセンター埼玉セミナー資料 組込み技術者のための C# Monoを用いたマルチプラットフォームアプリケーション開発技術 第 1.2 版 2018 年 8 月 Microbrains Inc. 渋谷 目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い

More information

Prog2_12th

Prog2_12th 2018 年 12 月 13 日 ( 木 ) 実施クラスの継承オブジェクト指向プログラミングの基本的な属性として, 親クラスのメンバを再利用, 拡張, または変更する子クラスを定義することが出来る メンバの再利用を継承と呼び, 継承元となるクラスを基底クラスと呼ぶ また, 基底クラスのメンバを継承するクラスを, 派生クラスと呼ぶ なお, メンバの中でコンストラクタは継承されない C# 言語では,Java

More information

Windows開発者のためのFireMonkeyモバイル開発入門

Windows開発者のためのFireMonkeyモバイル開発入門 A1 Delphi チュートリアルセッション Windows 開発者のための FireMonkey モバイル開発入門 エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏 2 アジェンダ Delphi + FireMonkey の仕組み 各種コンポーネント, スタイル, プロジェクトマネージャ ios アプリの開発 準備するもの 実機に転送 Android アプリの開発 準備するもの 実機に転送

More information

21st Embarcadero Developer Camp T9

21st Embarcadero Developer Camp T9 T9 テクニカルセッション 17 Th Developer Camp Delphi/C++Builder で ios/mac アプリを作ろ う! エンバカデロ テクノロジーズ エヴァンジェリスト高橋智宏 1 アジェンダ OS X で動的ライブラリ (.dylib) Delphi で作成して Delphi アプリから呼び出し C++Builder で作成して C++Builder アプリから呼び出し

More information

7th CodeGear Developer Camp

7th CodeGear Developer Camp A3 C++Builder テクニカルセッション wxforms で始める wxwidgets プログラミング CodeGear 高橋智宏 1 アジェンダ wxwidgets とは? wxforms とは? wxforms のインストール & 使い方 MacOS X(10.4.x, Carbon) でのビルド Linux(CentOS 4.5, GTK2) でのビルド 2 wxwidgets とは?

More information

7th CodeGear Developer Camp

7th CodeGear Developer Camp A6 Delphi テクニカルセッション RTL ソースを利用する Delphi デバッグ技法 CodeGear R&D 有澤雄志 Copyright 2007 CodeGear. All Rights Reserved. 本文書の一部または全部の転載を禁止します 1 アジェンダ RTL の利用準備 IDE から使ってみる Copyright 2007 CodeGear. All Rights Reserved.

More information

20th Embarcadero Developer Camp

20th Embarcadero Developer Camp B3 PHPテクニカルセッション 17 Th Developer Camp RadPHP 新バージョン情報 + モバイル開発の可能性を探る エンバカデロ テクノロジーズ エヴァンジェリスト高橋智宏 1 アジェンダ RadPHP XE2 に関するアップデート RPCL components for Zend Framework(tm) 計 43 個 jquery Mobile 最近のトレンド RPCL

More information

JDK のインストール (2012 年 8 月時点でのバージョン ) Java の実行環境 開発環境は さまざまな企業 団体が開発 配布を行っているが 当テキストでは Java の生みの親である Sun MicroSystems 社 ( 現 Oracle 社 ) の実行環境 開発環境を使用する Ja

JDK のインストール (2012 年 8 月時点でのバージョン ) Java の実行環境 開発環境は さまざまな企業 団体が開発 配布を行っているが 当テキストでは Java の生みの親である Sun MicroSystems 社 ( 現 Oracle 社 ) の実行環境 開発環境を使用する Ja 開発環境 Windows 上で Java を学習するための開発環境を整えよう テキストエディタ Java Runtime Environment(JRE) Java SE Development Kit(JDK) ソースファイルを作成するのに必要 Java のプログラムを実行する実行環境 コンパイラ等を含んだ Java の開発環境 JDK は JRE を含む

More information

ゲームプログラミング講習 第0章 導入

ゲームプログラミング講習 第0章 導入 ゲームプログラミング講習 第 0 章 導入 ゲーム制作に必要なものをインストールします ゲームプログラミング講習第 0 章導入 1 ゲーム制作に必要なもの Microsoft Visual Studio DXライブラリ プロジェクトテンプレート C 言語の知識 ゲームプログラミング講習第 0 章導入 2 Microsoft Visual Studio とは C 言語でプログラミングして Windows

More information

CodeGear Developer Camp

CodeGear Developer Camp T2 Delphi チュートリアルセッション Delphiはじめて奮戦記 で学ぶ Delphiチュートリアル 株式会社フルネスコーチング事業部マネージャー田原孝 1 アジェンダ 株式会社フルネスについて Delphiプログラミングの基本 演習 : 計算機のテンキーを作る 演習 : 計算機の四則演算ボタンを作る 練習問題 まとめ 2 株式会社フルネスについて 事業内容 ハンズオン教育サービス コーチングサービス

More information

CodeGear Developer Camp

CodeGear Developer Camp T4 PHP チュートリアルセッション はじめての Delphi for PHP CodeGear エヴァンジェリスト高橋智宏 1 アジェンダ ハンズオントレーニングに必要なもの Delphi for PHP V2.0 の環境設定 VCL for PHP の基本的な動作を確認 フォトギャラリの製作 マスターページ 画像アップロード カスタムコンポーネントの導入 など 2 ハンズオントレーニングに必要なもの

More information

ミガロ.製品 最新情報

ミガロ.製品 最新情報 セッション No.1 ミガロ. 製品最新情報 株式会社ミガロ. RAD 事業部 アジェンダ はじめに 1. Delphi/400 最新情報 Delphi/400 バージョン 機能リリースの遷移 Delphi/400 で追加された新機能 2. JC/400 最新情報 JC/400 バージョン 機能リリースの遷移 JC/400 で追加された新機能 3. Business4Mobile 新製品 Business4Mobile

More information

新バージョンDelphi/400 XE7ご紹介 - マルチデバイスデザイナ機能で開発効率アップ! -

新バージョンDelphi/400 XE7ご紹介 - マルチデバイスデザイナ機能で開発効率アップ! - セッション No.2 新バージョン Delphi/400 XE7 ご紹介 - マルチデバイスデザイナ機能で開発効率アップ! - 株式会社ミガロ. RAD 事業部技術支援課吉原泰介 アジェンダ 1. マルチデバイス開発とは 2. 新バージョン Delphi/400 XE7 2-1.FireUI によるマルチデバイス開発機能 2-2. アップテザリングによるアプリ連携機能 3. まとめ 1. マルチデバイス開発とは

More information

10th Developer Camp - B5

10th Developer Camp - B5 B5 PHP テクニカルセッション Delphi for PHP で作るリッチコンテンツブログ エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏 アジェンダ コンポーネントをフル活用しよう お馴染み データモジュール Blog データの表示用ページ Blog データの登録用ページ 2 コンポーネントをフル活用しよう 開発環境の進歩と退化 80 年代の IDE が登場エディタ + コマンドライン型の開発から脱却

More information

Source Insight

Source Insight ソースインサイト プログラムエディタ Source Insight のご紹介 ソースを理解しながら 効率の良いコーディング エクセルソフト株式会社営業部 エクセルソフト株式会社 Copyright 2008 XLsoft K.K. All Rights Reserved. - 1 - 目次 プログラムエディタ Source Insight のご紹介 ソースを理解しながら 効率の良いコーディング 目次

More information

脱Windows XPから一気にマルチデバイス対応を目指す実践テクニック

脱Windows XPから一気にマルチデバイス対応を目指す実践テクニック A5 Delphi/C++Builder テクニカルセッション 脱 Windows XP から一気に マルチデバイス対応を目指す 実践テクニック エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏 アジェンダ はじめに 最近の導入事例より 多様化するシステム開発における問題 マルチデバイス対応 アプリ / システムの構造変革 モバイルアプリへの対応 5 つの落とし穴 Tips refind ユーティリティとは?

More information

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint - prog03.ppt プログラミング言語 3 第 03 回 (2007 年 10 月 08 日 ) 1 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 2/33 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/java06/ にアクセスすると 教材があります 2007 年 10 月 08 日分と書いてある部分が 本日の教材です

More information

Embarcadero Developer Camp

Embarcadero Developer Camp G1 オープニングセッション エンバカデロ テクノロジーズ - コーポレート & プロダクトアップデート エンバカデロ テクノロジーズ藤井等 アジェンダ エンバカデロの 2008 年 CodeGear 製品と DatabaseGear 製品 新製品情報 Delphi for PHP 2.0 Update 3rdRail 2.0 CodeGear RAD Studio 2009 Delphi Prism

More information

Enterprise Architect 12.0 機能ガイド

Enterprise Architect 12.0 機能ガイド Enterprise Architect 12.0 feature guide by SparxSystems Japan (2015/2/18 最終更新 ) Copyright (c) 2015 Sparx Systems Japan 1 このドキュメントでは Enterprise Architect 12.0 で追加 改善された機能についてご紹介します 青字の 文字は操作方法を示しています なお

More information

Prog2_9th

Prog2_9th 2017 年 11 月 30 日 ( 木 ) 実施 Canvas による描画 Canvas とは Canvas は, 描画コールを保持するためのクラスである 描画には, 次の 4 つの要素が必要である (1) ビットマップピクセル ( 画素 ) を保持 (2) キャンバス描画コール ( ビットマップへの書き出し要請 ) に対応 (3) 描画プリミティブ描画領域, パス, テキスト, ビットマップ等

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 5 月 Java 基礎 1 タイトル Java 基礎 2 日間 概要 目的 サーバサイドのプログラミング言語で最もシェアの高い Java SE の基本を習得します 当研修ではひとつの技術ごとに実用的なアプリケーションを作成するため 効果的な学習ができます Java SE の多くの API の中で 仕事でよく利用するものを中心に効率よく学びます 実際の業務で最も利用される開発環境である Eclipse

More information

Rational Roseモデルの移行 マニュアル

Rational Roseモデルの移行 マニュアル Model conversion from Rational Rose by SparxSystems Japan Rational Rose モデルの移行マニュアル (2012/1/12 最終更新 ) 1. はじめに このガイドでは 既に Rational( 現 IBM) Rose ( 以下 Rose と表記します ) で作成された UML モデルを Enterprise Architect で利用するための作業ガイドです

More information

コードテンプレートフレームワーク 機能ガイド 基礎編

コードテンプレートフレームワーク 機能ガイド 基礎編 Code Template Framework Guide by SparxSystems Japan Enterprise Architect 日本語版コードテンプレートフレームワーク機能ガイド基礎編 (2018/05/16 最終更新 ) 1. はじめに Enterprise Architect には コードテンプレートフレームワーク ( 以下 CTF と表記します ) と呼ばれる機能が搭載されています

More information

V8.1新規機能紹介記事

V8.1新規機能紹介記事 WebOTX V8.1 新規機能 EJB 3.0 WebOTX V8.1より Java EE 5(Java Platform, Enterprise Edition 5) に対応しました これによりいろいろな機能追加が行われていますが 特に大きな変更であるEJB 3.0 対応についてご紹介いたします なお WebOTX V7で対応したEJB 2.1についてもWebOTX V8.1で引き続き利用することが可能です

More information

20th Embarcadero Developer Camp

20th Embarcadero Developer Camp 17 Th Developer Camp B4 Delphi/C++Builder テクニカルセッション dbexpressとマルチプラットフォーム開発 エンバカデロ テクノロジーズ エヴァンジェリスト高橋智宏 1 アジェンダ dbexpress Driver のアップデート Win32 / Win64 dbexpress over ODBC Driver Win32 / Win64 例 : PostgreSQL

More information

C#の基本

C#の基本 C# の基本 ~ 開発環境の使い方 ~ C# とは プログラミング言語のひとつであり C C++ Java 等に並ぶ代表的な言語の一つである 容易に GUI( グラフィックやボタンとの連携ができる ) プログラミングが可能である メモリ管理等の煩雑な操作が必要なく 比較的初心者向きの言語である C# の利点 C C++ に比べて メモリ管理が必要ない GUIが作りやすい Javaに比べて コードの制限が少ない

More information

intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版  

intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版   Copyright 2012 NTT DATA INTRAMART CORPORATION 1 Top 目次 1. 改訂情報 2. IM- 共通マスタの拡張について 2.1. 前提となる知識 2.1.1. Plugin Manager 2.2. 表記について 3. 汎用検索画面の拡張 3.1. 動作の概要 3.1.1. 汎用検索画面タブの動作概要 3.2. 実装の詳細 3.2.1. 汎用検索画面タブの実装

More information

intra-mart Accel Platform

intra-mart Accel Platform intra-mart Accel Platform IM- 共通マスタスマートフォン拡張プログラミングガイド 2012/10/01 初版 変更年月日 2012/10/01 初版 > 変更内容 目次 > 1 IM- 共通マスタの拡張について...2 1.1 前提となる知識...2 1.1.1 Plugin Manager...2 1.2 表記について...2 2 汎用検索画面の拡張...3

More information

Delphi/400でFlash動画の実装

Delphi/400でFlash動画の実装 吉原泰介 株式会社ミガロ. RAD 事業部技術支援課顧客サポート Delphi/400 で Flash 動画の実装 YouTube プレイヤーの作成 Flash の機能を ActiveX を利用して Delphi/400 アプリケーションへ組み込む方法を紹介する Flash と ActiveX コントロール ActiveX コントロールの取り込み YouTube プレイヤーの実装 まとめ 略歴 1978

More information

Prog2_15th

Prog2_15th 2019 年 7 月 25 日 ( 木 ) 実施メニューメニューバーとコンテクストメニュー Visual C# では, メニューはコントロールの一つとして扱われ, フォームアプリケーションの上部に配置されるメニューバーと, コントロール上でマウスを右クリックすると表示されるコンテクストメニューとに対応している これ等は選択するとメニューアイテムのリストが表示されるプルダウンメニューと呼ばれる形式に従う

More information

Microsoft Word - VisualC++利用法2.doc

Microsoft Word - VisualC++利用法2.doc Visual Studio で VisualC++ をつかう --Visual Studio 2005 対応 -- 2003.10.1nk 05.10.5 07.5.23 07.6.6 Visual Studio 2005 にバージョンアップされた それに対応するように改訂した 最も単純な Visual C++.net のプログラムをつくるための方法 Visual C++ の使い方を示す ( 重要

More information

すると メインメニューと呼ばれる DC さくらのメインウィンドウ部が表示されます ( 下の画面がスクリーンシ ョットです ) メインメニューは ウィンドウ右上の ボタンを押すと閉じます リスト内のアイテムは ダウンロードのタスクを表します ダウンロード状況を把握できます メニュー項目やボタンの説明は

すると メインメニューと呼ばれる DC さくらのメインウィンドウ部が表示されます ( 下の画面がスクリーンシ ョットです ) メインメニューは ウィンドウ右上の ボタンを押すと閉じます リスト内のアイテムは ダウンロードのタスクを表します ダウンロード状況を把握できます メニュー項目やボタンの説明は DC さくらの画面構成 DC さくらが起動している間は デスクトップ右下のタスクトレイに DC さくらのアイコンが表示されます この DC さくらのアイコンを右クリックしてください ( 下の図はスクリーンショットです ) この青色のアイコンが DC さくらのアイコンです DCさくらのアイコンを右クリックすると 以下の図のような操作メニューが表示されます メニュー項目には 操作を行うための各コマンドが配置されております

More information

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y  小幡智裕 Java Script プログラミング入門 3-6~3-7 茨城大学工学部情報工学科 08T4018Y 小幡智裕 3-6 組み込み関数 組み込み関数とは JavaScript の内部にあらかじめ用意されている関数のこと ユーザ定義の関数と同様に 関数名のみで呼び出すことができる 3-6-1 文字列を式として評価する関数 eval() 関数 引数 : string 式として評価する文字列 戻り値 :

More information

Prog2_10th

Prog2_10th 2016 年 12 月 8 日 ( 木 ) 実施 効果音の付加 SoundPool とは Android には音を処理するクラスが複数用意されているが, その中で SoundPool は, 予め音のデータをメモリ上に読み込んで再生するため, 長い音楽よりも短い音を扱うのに適している また,SoundPool では遅延が無いので, 効果音を付加したい場面で用いられる 授業の準備 1)Android Studio

More information

Javaの作成の前に

Javaの作成の前に メディアプロジェクト演習 1 参考資料 Javaとは JavaScript と Java 言語の違い オブジェクト指向 コンストラクタ サーブレット 本資料内のページ番号は, 以下の参考書のページを引用している 高橋麻奈 : やさしい Java, ソフトバンククリエイティブ (2,625 円 ) はじめに プログラミング言語とは? オブジェクト指向とは? Java 言語とは? JavaとJavaScriptの違いとは?

More information

メディプロ1 Javaプログラミング補足資料.ppt

メディプロ1 Javaプログラミング補足資料.ppt メディアプロジェクト演習 1 Javaプログラミング補足資料 l Javaとは l JavaScript と Java 言語の違い l オブジェクト指向 l コンストラクタ l 継承 抽象クラス 本資料内のページ番号は, 以下の参考書のページを引用している高橋麻奈 : やさしい Java, ソフトバンククリエイティブ (2,625 円 ) はじめに l プログラミング言語とは? l オブジェクト指向とは?

More information

IronPython による柔軟なゲーム開発 筑波大学 AmusementCreators

IronPython による柔軟なゲーム開発 筑波大学 AmusementCreators IronPython による柔軟なゲーム開発 筑波大学 AmusementCreators 自己紹介 Amusement Makers ではありません 注意 IronPython って?.Net Framework および Mono 上で動作する Python.NetFramework Mono は共通中間言語 (CIL) のための仮想マシン CIL が動く仮想マシンの仕様は共通言語基盤 (CLI)

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 講座準備 講座資料は次の URL から DL 可能 https://goo.gl/jnrfth 1 ポインタ講座 2017/01/06,09 fumi 2 はじめに ポインタはC 言語において理解が難しいとされる そのポインタを理解することを目的とする 講座は1 日で行うので 詳しいことは調べること 3 はじめに みなさん復習はしましたか? 4 & 演算子 & 演算子を使うと 変数のアドレスが得られる

More information

フローチャート自動生成ツール yflowgen の使い方 目次 1 はじめに 本ツールの機能 yflowgen.exe の使い方 yflowgen.exe の実行方法 制限事項 生成したファイル (gml ファイル形式 ) の開

フローチャート自動生成ツール yflowgen の使い方 目次 1 はじめに 本ツールの機能 yflowgen.exe の使い方 yflowgen.exe の実行方法 制限事項 生成したファイル (gml ファイル形式 ) の開 フローチャート自動生成ツール yflowgen の使い方 目次 1 はじめに...2 2 本ツールの機能...2 3 yflowgen.exe の使い方...3 3.1 yflowgen.exe の実行方法...3 3.2 制限事項...3 3.3 生成したファイル (gml ファイル形式 ) の開き方...4 3.3.1 yed Graph Editor を使って開く...4 3.3.2 yed

More information

自宅でJava言語の開発環境を作る方法

自宅でJava言語の開発環境を作る方法 自宅で Android アプリ 開発環境を作る方法 2011 年 3 月 8 日現在 あいあいスクール代表 畠茂雄 ( はたけしげお ) もくじ はじめに... 3 第 1 章 : 開発に必要なソフトウェアのインストール... 4 (1)Java SE Development Kit (JDK) のインストール... 5 (2)Android SDK のインストール... 11 (3) 統合開発環境

More information

Visual Studio と.NET Framework 概要 Runtime Libraries Languag es Tool.NET Visual Studio 概要 http://download.microsoft.com/download/c/7/1/c710b336-1979-4522-921b-590edf63426b/vs2010_guidebook_pdf.zip 1.

More information

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード] 第 3 回 Java 基本技術講義 クラス構造と生成 33 クラスの概念 前回の基本文法でも少し出てきたが, オブジェクト指向プログラミングは という概念をうまく活用した手法である. C 言語で言う関数に似ている オブジェクト指向プログラミングはこれら状態と振る舞いを持つオブジェクトの概念をソフトウェア開発の中に適用し 様々な機能を実現する クラス= = いろんなプログラムで使いまわせる 34 クラスの概念

More information

Java言語 第1回

Java言語 第1回 Java 言語 第 2 回簡単な Java プログラムの作成と実行 知的情報システム工学科 久保川淳司 kubokawa@me.it-hiroshima.ac.jp 簡単な Java プログラム Java プログラムのファイル名 Java プログラムのファイル名命名ルール ファイル名とクラス名は同じでなければならない HelloJava.java public class HelloJava { public

More information

24th Developer Camp A4

24th Developer Camp A4 17 Th Developer Camp A4 テクニカルセッション RAD Studio XE3 による Windows 8 開発 Embarcadero Technologies, Inc. Manager, Documentation and Localization 新井正広 1 17 Th Developer Camp 1 Windows 8 2 Windows 8 10 26 発売 http://windows.microsoft.com/ja-jp/windows-8/new-look

More information

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版   Copyright 2018 NTT DATA INTRAMART CORPORATION 1 Top 目次 1. 改訂情報 2. はじめに 2.1. 本書の目的 2.2. 対象読者 2.3. サンプルコードについて 2.4. 本書の構成 3. 辞書項目 API 3.1. 最新バージョン 3.1.1. 最新バージョンの辞書を取得する 3.2. 辞書項目 3.2.1. 辞書項目を取得する 3.2.2.

More information

21st Embarcadero Developers Camp T3

21st Embarcadero Developers Camp T3 17 Th Developer Camp Delphi/C++Builder + FastReport で作る実用レポート出力 株式会社ドリームハイブ代表取締役 ITコンサルタント山本悟 1 ドリームハイブとは システム開発 IT コンサルティングの会社 http://www.dreamhive.co.jp/ http://twitter.com/dreamhive_jp dhive: ドリームハイブのコンテンツ配信サイト

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラマー勉強会 1 回 basic.h 補足 [ 修飾子 ] const 付けた変数は初期化以外で値を設定することができなくなる 定数宣言に使う unsigned 付けた変数は符号がなくなり 正の値しか設定できない [ 条件コンパイル ] #ifdef M ここ以前に M がマクロとして定義されていれば ここ以下をコンパイルする #ifndef M ここ以前に M というマクロが定義されていなければ

More information

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL:

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL: マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL: http://excel2010.kokodane.com/excel2010macro_01.htm http://span.jp/office2010_manual/excel_vba/basic/start-quit.html Excel2010 でマクロを有効にする

More information

CubePDF ユーザーズマニュアル

CubePDF ユーザーズマニュアル CubePDF ユーザーズマニュアル 2018.11.22 第 13 版 1 1. PDF への変換手順 CubePDF は仮想プリンターとしてインストールされます そのため Web ブラウザや Microsoft Word, Excel, PowerPoint など印刷ボタンのあるアプリケーションであればどれでも 次の 3 ステップで PDF へ変換することができます 1. PDF 化したいものを適当なアプリケーションで表示し

More information

作業環境カスタマイズ 機能ガイド(応用編)

作業環境カスタマイズ 機能ガイド(応用編) Customize Feature Guide by SparxSystems Japan Enterprise Architect 日本語版 作業環境カスタマイズ機能ガイド ( 応用編 ) (2018/05/16 最終更新 ) 1 はじめに このドキュメントでは Enterprise Architect を利用して作業を行う場合に より快適に作業を行うためのカスタマイズ可能な項目について説明します

More information

LightSwitch で申請システム Windows ストアアプリで受付システムを構築してみた 情報政策グループ技術職員金森浩治 1. はじめに総合情報基盤センターでは 仮想サーバホスティングサービスや ソフトウェアライセンス貸与といった さまざまなエンドユーザ向けサービスを行っている 上記のよう

LightSwitch で申請システム Windows ストアアプリで受付システムを構築してみた 情報政策グループ技術職員金森浩治 1. はじめに総合情報基盤センターでは 仮想サーバホスティングサービスや ソフトウェアライセンス貸与といった さまざまなエンドユーザ向けサービスを行っている 上記のよう LightSwitch で申請システム Windows ストアアプリで受付システムを構築してみた 情報政策グループ技術職員金森浩治 1. はじめに総合情報基盤センターでは 仮想サーバホスティングサービスや ソフトウェアライセンス貸与といった さまざまなエンドユーザ向けサービスを行っている 上記のようなサービスを利用する際 エンドユーザは利用申請を行うが 利用申請手段はメールや紙となっている そのため

More information

Microsoft Word - Mac版 Eclipseの導入と設定.docx

Microsoft Word - Mac版 Eclipseの導入と設定.docx Mac OS X 版 Eclipse の導入と プログラムの作成方法 このドキュメントは下記のシステムで検証しました -1- Copyright (C) Takashi Kawaba 2012 目次 A. Eclipse を日本語化する 1. ダウンロードと解凍 3 2. features フォルダ内のファイルをコピーする 3 3. plugins 内のファイルをコピーする 4 B. Eclipse

More information

Prog2_10th

Prog2_10th 2017 年 12 月 7 日 ( 木 ) 実施 効果音の付加 SoundPool とは Android には音を処理するクラスが複数用意されているが, その中で SoundPool は, 予め音のデータをメモリ上に読み込んで再生するため, 長い音楽よりも短い音を扱うのに適している また,SoundPool では遅延が無いので, 効果音を付加したい場面で用いられる 授業の準備 1)Android Studio

More information

ガイダンス

ガイダンス 情報科学 B 第 2 回変数 1 今日やること Java プログラムの書き方 変数とは何か? 2 Java プログラムの書き方 3 作業手順 Java 言語を用いてソースコードを記述する (Cpad エディタを使用 ) コンパイル (Cpad エディタを使用 ) 実行 (Cpad エディタを使用 ) エラーが出たらどうしたらよいか??? 4 書き方 これから作成する Hello.java 命令文 メソッドブロック

More information

レビューとディスカッション 機能ガイド

レビューとディスカッション 機能ガイド Review and Discussion Feature Guide by SparxSystems Japan Enterprise Architect 日本語版 レビューとディスカッション機能ガイド (2019/08/22 最終更新 ) 1 内容 1 はじめに... 3 2 モデルのレビューについて... 3 3 チームレビュー機能... 3 4 ディスカッション機能... 5 5 レビューの定義と開催...

More information

TestDesign for Web

TestDesign for Web 発行日 2012/6/21 発行元 株式会社アープ 本書は Web でのテスト自動化における Test Design の一連の操作方法まとめたものです Test Design のメニューの説明やより詳細な使い方については ユーザーズガイド を参照してください 目次 1. はじめに... 1 2. 環境構築... 2 2.1. Selenium のサイトについて... 2 2.2. Selenium

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション Scala( スカラ ) について 佐野尚之 1 本ドキュメントのライセンスについて この作品は クリエイティブ コモンズの Attribution 3.0 Unported ライセンスの下でライセンスされています この使用許諾条件を見るには http://creativecommons.org/licenses/by/3.0/ をチェックするか クリエイティブ コモンズに郵便にてお問い合わせください

More information

intra-mart EX申請システム version.7.2 事前チェック

intra-mart EX申請システム version.7.2 事前チェック IM EX 申請システム ver7.2 事前チェックシート 2015/12/22 株式会社 NTT データイントラマート 改訂履歴版 日付 内容 初版 2011/2/28 第二版 2012/11/16 環境シートのIEの設定について説明を追記しました 第三版 2014/4/18 環境シートおよび制限事項シートにExcel2013について説明を追記しました 第三版 2014/4/18 環境シートおよび制限事項シートよりExcel2003の説明を除外しました

More information

各種パスワードについて マイナンバー管理票では 3 種のパスワードを使用します (1) 読み取りパスワード Excel 機能の読み取りパスワードです 任意に設定可能です (2) 管理者パスワード マイナンバー管理表 の管理者のパスワードです 管理者パスワード はパスワードの流出を防ぐ目的で この操作

各種パスワードについて マイナンバー管理票では 3 種のパスワードを使用します (1) 読み取りパスワード Excel 機能の読み取りパスワードです 任意に設定可能です (2) 管理者パスワード マイナンバー管理表 の管理者のパスワードです 管理者パスワード はパスワードの流出を防ぐ目的で この操作 マイナンバー管理表 操作説明書 管理者用 2015 年 11 月 30 日 ( 初版 ) 概要 マイナンバー管理表 の動作環境は以下の通りです 対象 OS バージョン Windows7 Windows8 Windows8.1 Windows10 対象 Excel バージョン Excel2010 Excel2013 対象ファイル形式 Microsoft Excel マクロ有効ワークシート (.xlsm)

More information

開発ツールのコラボレーション機能を検証する

開発ツールのコラボレーション機能を検証する 開発ツールのコラボレーション機能を検証する ボーランド株式会社デベロッパーツールズ事業本部藤井等 開発ツールをとりまく環境 仕様変更 フレームワークのバージョンアップ コーディング規約 バグ対応 ドキュメント プロトタイプ 機能強化 テストバージョン リリース 2 どのサイズの開発でもなんらかの 管理 + コラボレーション が必要 個人で開発する場合数名で開発する場合チームで開発する場合 複雑さ 保管共有管理

More information

ボタンイベントアプリイベント処理を含むアプリとして, ボタンをもち, ボタンを押すと文字列を表示するアプリを作る. このアプリは,HelloWorld アプリを改造して作成するため, アプリ作成の途中からの手順を示す. 1. ボタンの設置 (1) レイアウトにボタンを追加するパレットの フォーム ウ

ボタンイベントアプリイベント処理を含むアプリとして, ボタンをもち, ボタンを押すと文字列を表示するアプリを作る. このアプリは,HelloWorld アプリを改造して作成するため, アプリ作成の途中からの手順を示す. 1. ボタンの設置 (1) レイアウトにボタンを追加するパレットの フォーム ウ ボタンイベントアプリイベント処理を含むアプリとして, ボタンをもち, ボタンを押すと文字列を表示するアプリを作る. このアプリは,HelloWorld アプリを改造して作成するため, アプリ作成の途中からの手順を示す. 1. ボタンの設置 (1) レイアウトにボタンを追加するパレットの フォーム ウィジェット からボタンのアイコンをドラッグして, ワークスペースにドロップする. 図 1 ボタンの追加

More information

Webコンポーネントのカスタマイズ入門

Webコンポーネントのカスタマイズ入門 佐田雄一 株式会社ミガロ. システム事業部システム 1 課 Web コンポーネントのカスタマイズ入門カスタムコンポーネントを開発できれば さらなる Web 開発の効率化が見込める VCL for the Web ならではのカスタムコンポーネント作成手法を述べる はじめに カスタムコンポーネントを利用するメリット Ajax JavaScript との連携 数値専用 WebEdit の作成例 まとめ 略歴

More information

Microsoft PowerPoint - visualprogram.ppt

Microsoft PowerPoint - visualprogram.ppt ビジュアルプログラミングとは Borland Delphi 6 でビジュアルプログラミング フォーム等を使うプログラム フォーム等の配置はマウス操作で行う 振る舞い ( ボタンを押したときの振る舞いなど ) をプログラムで書く フォームの例 ) フォーム 概要 TMemo コンポーネント ( 出力用 ) TButton コンポーネント ( 出力用 ) 例題 1. ボタンを押すと, メッセージを表示するプログラム

More information

内容 1 はじめに インストールの手順 起動の手順 Enterprise Architect のプロジェクトファイルを開く 内容を参照する プロジェクトブラウザを利用する ダイアグラムを開く 便利な機能.

内容 1 はじめに インストールの手順 起動の手順 Enterprise Architect のプロジェクトファイルを開く 内容を参照する プロジェクトブラウザを利用する ダイアグラムを開く 便利な機能. Viewer manual by SparxSystems Japan Enterprise Architect 読み込み専用版 (Viewer) 利用マニュアル 内容 1 はじめに...3 2 インストールの手順...3 3 起動の手順...6 4 Enterprise Architect のプロジェクトファイルを開く...7 5 内容を参照する...8 5.1 プロジェクトブラウザを利用する...8

More information

AppsWF ワークフロー設定ガイド Ver.1.1 株式会社オプロ

AppsWF ワークフロー設定ガイド Ver.1.1 株式会社オプロ AppsWF ワークフロー設定ガイド Ver.1.1 株式会社オプロ 改訂履歴 Ver. 改訂日改訂内容 1.0 2019/08/22 新規発行 1.1 2019/10/04 1.3 ワークフロー設定画面を開くには に 1.3.2 Salesforce 版の操作手順 を 追加しました 本書に記載されている会社名 製品名 サービス名などは 提供各社の商標 登録商標 商品名です なお 本文中に TM マーク

More information

Microsoft PowerPoint - ruby_instruction.ppt

Microsoft PowerPoint - ruby_instruction.ppt Ruby 入門 流れ Ruby の文法 画面に出力 キーボードから入力 数値 文字列 変数 配列 ハッシュ 制御構造 ( 分岐 繰り返しなど ) if while case for each 関数 クラス Ruby とは プログラミング言語 インタプリタ言語 オブジェクト指向 国産 ウェブアプリケーションフレームワーク RubyOnRails で注目 弊社での Web アプリケーション開発に利用 画面に出力

More information

プログラミング実習I

プログラミング実習I プログラミング実習 I 05 関数 (1) 人間システム工学科井村誠孝 m.imura@kwansei.ac.jp 関数とは p.162 数学的には入力に対して出力が決まるもの C 言語では入出力が定まったひとまとまりの処理 入力や出力はあるときもないときもある main() も関数の一種 何かの仕事をこなしてくれる魔法のブラックボックス 例 : printf() 関数中で行われている処理の詳細を使う側は知らないが,

More information

MultiLABELISTOCX と MultiLABELISTV4 MLOCX は MLV4 のレイアウト発行機能を継承しています したがって MLV4 の振分発行やプ リセット発行を使用するための登録情報は使用できません MLV4 のレイアウト管理でレイアウトを作成すると 拡張子が m lay

MultiLABELISTOCX と MultiLABELISTV4 MLOCX は MLV4 のレイアウト発行機能を継承しています したがって MLV4 の振分発行やプ リセット発行を使用するための登録情報は使用できません MLV4 のレイアウト管理でレイアウトを作成すると 拡張子が m lay 6. 注意事項 MultiLABELISTOCX と MultiLABELISTV4 使用しない登録情報 ( レイアウト管理 ) 使用しない登録情報 ( その他 ) 機能しない項目 全般 レイアウト情報およびプリンタ情報 プログラミングに関して COM LPT LANからの出力 LPTからの出力 LANからの出力ステータス4の使用税編集について レイアウト情報に関して 連番印字機能 小ラベル印字機能

More information

RAD Studio 2010で Webサービスを構築するための WindowsR 7上での IIS設定

RAD Studio 2010で Webサービスを構築するための WindowsR 7上での IIS設定 技術ノート エンバカデロ テクノロジーズ Michael Rozlog Sr. Director of Delphi Solutions 2009 年 11 月 102-0072 東京都千代田区飯田橋 4-7-1 ロックビレイビル 8F TEL 03-4577-4520 FAX 03-6843-0961 目次 概要... 3 Windows 7 に IIS をインストールする... 3 IIS の起動の確認...

More information

Microsoft Word - Training10_プリプロセッサ.docx

Microsoft Word - Training10_プリプロセッサ.docx Training 10 プリプロセッサ 株式会社イーシーエス出版事業推進委員会 1 Lesson1 マクロ置換 Point マクロ置換を理解しよう!! マクロ置換の機能により 文字列の置き換えをすることが出来ます プログラムの可読性と保守性 ( メンテナンス性 ) を高めることができるため よく用いられます マクロ置換で値を定義しておけば マクロの値を変更するだけで 同じマクロを使用したすべての箇所が変更ができるので便利です

More information

Microsoft Visual Studio 2010 Professional Data Sheet

Microsoft Visual Studio 2010 Professional Data Sheet Microsoft Visual Studio 2010 Professional はビジネスの要件やユーザ ーのニーズに最適なアプリケーションを選択し それを構築するために必須の機能を提供します RIA ベースのリッチな Web アプリケーション SharePoint ベースの高度な Web ポータル Windows Azure ベースのクラウドアプリケーションなど 最新テクノロジに対応したアプリケーションを既存の知識や経験を活かして開発することができます

More information

プログラミング基礎

プログラミング基礎 C プログラミング Ⅰ 授業ガイダンス C 言語の概要プログラム作成 実行方法 授業内容について 授業目的 C 言語によるプログラミングの基礎を学ぶこと 学習内容 C 言語の基礎的な文法 入出力, 変数, 演算, 条件分岐, 繰り返し, 配列,( 関数 ) C 言語による簡単な計算処理プログラムの開発 到達目標 C 言語の基礎的な文法を理解する 簡単な計算処理プログラムを作成できるようにする 授業ガイダンス

More information

1. 目次 PixiModule ターミナルアプリ (ios 版 ) ソース説明 2. ios 版ご利用の前に ソースファイル内の用語の説明... 4 サンプル 4. ソースファイルの構成 Main.storyboard の説明 ViewControlle

1. 目次 PixiModule ターミナルアプリ (ios 版 ) ソース説明 2. ios 版ご利用の前に ソースファイル内の用語の説明... 4 サンプル 4. ソースファイルの構成 Main.storyboard の説明 ViewControlle PixiModule サンプル ターミナルアプリ (ios 版 ) ソース説明書 発行 2016 年 6 月 1 日 1.0 株式会社ヌマタ R&D 1/9 1. 目次 PixiModule ターミナルアプリ (ios 版 ) ソース説明 2. ios 版ご利用の前に... 3 3. ソースファイル内の用語の説明... 4 サンプル 4. ソースファイルの構成... 7 5. Main.storyboard

More information

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター 平成 30 年度 プログラミング研修講座 岩手県立総合教育センター 目次第 1 章プログラミングについて 1 ソフトウェアの働き 1 2 プログラミング言語 1 3 主なプログラミング言語の歴史 2 第 2 章 Visual Basic について 1 Visual Basic とは 3 2.NET Framework の環境 3 3 Visual Basic と.NET Framework の関係

More information

2 セキュリティパスワード につきまして セキュリティパスワード は セキュリティ強度において ファイルを開くためのパスワードより低下します ソフトウェアによっては PDF の規格を遵守せず 印刷禁止等を守らないソフトウェアもあります このようなソフトウェアに対して セキュリティパスワード は効果が

2 セキュリティパスワード につきまして セキュリティパスワード は セキュリティ強度において ファイルを開くためのパスワードより低下します ソフトウェアによっては PDF の規格を遵守せず 印刷禁止等を守らないソフトウェアもあります このようなソフトウェアに対して セキュリティパスワード は効果が セキュリティ機能の動作条件 2015/05/19 intra-mart Accel Documents Secure Download Option / IM-PDFCoordinator for AccelPlatform のセキュリテ ィ機能を使用する場合 機能制限や注意事項があります 必ず 事前にこのファイルを確認して下さい 提供されるセキュリティ機能につきまして 提供されるセキュリティには

More information

ご利用のブラウザのバージョンによっては 若干項目名が異なる場合があります 予めご了承ください Windows をお使いの場合 [ 表示 ] [ エンコード ] [ 日本語 ( 自動選択 )] を選択 [ 表示 ] [ エンコード ] [Unicode(UTF-8)] を選択 Firefox をご利用

ご利用のブラウザのバージョンによっては 若干項目名が異なる場合があります 予めご了承ください Windows をお使いの場合 [ 表示 ] [ エンコード ] [ 日本語 ( 自動選択 )] を選択 [ 表示 ] [ エンコード ] [Unicode(UTF-8)] を選択 Firefox をご利用 FAQ よくあるご質問 宿泊予約申込 Web サイトについて Q. 1 設定は正しいのですが ログインできません LAN に導入されているファイアーウォール ( ネットワークのセキュリティのための仕組み ) が SSL によるデータ通信を許可していない場合があります その場合はログイン画面を開くことができません 詳しくは 所属機関のネットワーク管理担当部署までお尋ねください また プロキシサーバ経由でアクセスする場合は以下の設定に誤りが無いか

More information

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010 RW View Studio Getting Started (1) : 簡単な GUI アプリケーションを作成する 目次 第 1 章はじめに...1 1.1 アプリケーションの概要... 1 1.2 Views Studio とは... 2 第 2 章 Views Studio を起動する...3 2.1 起動画面 ( メインウィンドウ ) の説明... 4 2.2 ガジェットエクステンション...

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション オブジェクト指向 プログラミング演習 第 4 回継承 オーバーライド ポリモルフィズム 今日のお題 継承 オーバーライド ポリモルフィズム 継承 (inherit) あるクラス c のサブクラス s を定義する : このとき s は c を継承していると言う 何かの下位概念を表すクラスは その上位概念を表すクラスの属性や機能を ( 基本的には ) 使える 継承の例 大学生 長崎県立大学の学生 大学生を継承する概念

More information

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード]

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード] Borland C++ Compiler の 使用方法 解説書 (v1.1) 1 準備 (1/2) 1. スタートメニューから コントロールパネル を開いて その中に デスクトップのカスタマイズ フォルダーオプション があるので開く エクスプローラー内の ツール フォルダーオプション などからも開ける 2. 表示 タブにある 登録されている拡張子は表示しない のチェックを外して OKを押す これでファイルの拡張子が表示されるようになった

More information

Android Layout SDK プログラミング マニュアル

Android Layout SDK プログラミング マニュアル プログラミングマニュアル Version 1.3.0 用 更新履歴 年月日 バージョン 履歴 2014.09.08 1.2.0.0 新規 (Layout Utilities ユーザーズ ガイド ) 2016.08.16 1.3.0.0 モバイル端末用レイアウトで直線部品と矩形部品に対応 モバイル端末用レイアウトファイルを CLFX から XML へ変更 Layout Print Engine から

More information

まう不具合を解消 Windows10 バージョン1803で ディスプレイのサイズを125% 150% にすると STORM VのTOP 画面がズレてしまう不具合を解消しました 6. 動画 + 音声 コンテンツをインポートすると再編集出来なくなる不具合を解消 スライド+ 動画 + 音声 コンテンツをイ

まう不具合を解消 Windows10 バージョン1803で ディスプレイのサイズを125% 150% にすると STORM VのTOP 画面がズレてしまう不具合を解消しました 6. 動画 + 音声 コンテンツをインポートすると再編集出来なくなる不具合を解消 スライド+ 動画 + 音声 コンテンツをイ 文書番号 :17 製 -ST990602-01 STORM V リリースノート バージョン : 2.3.1 リリース日 : 2018 年 10 月 19 日 新機能 1. コンテンツに使用したPowerPoint ファイルをSTORM V からダウンロード出来るように対応コンテンツ作成に使用したPowerPointファイルをコンテンツ一覧画面からダウンロードできるようになりました 1. 編集画面 の

More information

「基礎から学ぶビジュアルAndroidアプリ開発 今日からあなたもAndroidデベロッパー」

「基礎から学ぶビジュアルAndroidアプリ開発 今日からあなたもAndroidデベロッパー」 C2 Delphi テクニカルセッション 基礎から学ぶビジュアル Android アプリ開発 今日からあなたも Android デベロッパー 株式会社シリアルゲームズ / エンバカデロ MVP 細川淳 アジェンダ Android とは Android 開発の心得 Delphi で Android プログラム! 2 1 Android とは 3 Android とは Google が制作 管理しているモバイル端末用

More information

intra-mart EX申請システム version.5.3 PDFオプション リリースノート

intra-mart EX申請システム version.5.3 PDFオプション リリースノート ver.5.3 リリース ノート 第二版 2011/3/31 1. システム要件 システム要件 Version.5.3 は以下の製品上で動作します 動作環境については 以下の製品のリリース ノートを参照してください BaseModule Version.5.0 BaseModule Version.5.1 WebPlatform Version.6.0 WebPlatform Version.6.1

More information

WebReportCafe

WebReportCafe 1 1. 概要 WebReportCafe for.net では 生成した PDF に VeriSign の不可視電子署名を付加することができます 電子署名を付加する事により 文書の作成者を証明することができ 作成された PDF を改竄することが不可能になります この文書では WebReportCafe for.net で電子署名を付加するために必要な ドキュメントサイン用 Digital ID の取得と必須ファイル作成

More information

25th Developer Camp

25th Developer Camp G3 ジェネラルセッション 1 Native Apps Over HTML5 For years, Zuckerberg has championed the Mobile Web's ability to deliver a consistent user experience across multiple devices with a single development effort. But

More information

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx シーケンスに基づく検索モデルの検索精度について 東京工芸大学工学部コンピュータ応用学科宇田川佳久 (1/3) (2/3) 要員数 情報システム開発のイメージソースコード検索機能 他人が作ったプログラムを保守する必要がある 実務面での応用 1 バグあるいは脆弱なコードを探す ( 品質の高いシステムを開発する ) 2 プログラム理解を支援する ( 第 3 者が書いたコードを保守する ) 要件定義外部設計内部設計

More information

Java知識テスト問題

Java知識テスト問題 Java 知識テスト SDAS プログラマ(Java 編 ) 運営事務局 このテストは J2EE プログラマとしての Java の知識を評価するものです 問題は 30 問, テスト時間は J2EE 知識テストとあわせて 90 分です 問題は全て択一式です 選択肢から 1 つだけ選択してください 資料の閲覧は禁止です テストが終わり次第 答案用紙を提出していただいてかまいません テスト終了後, 本テストの内容を他の方に話さないでください

More information

intra-mart EX申請システム version.7.2 PDFオプション リリースノート

intra-mart EX申請システム version.7.2 PDFオプション リリースノート intra-mart EX 申請システム ver.7.2 PDF オプション リリース ノート 第一版 2011/2/28 1. システム要件 システム要件 intra-mart EX 申請システム Version.7.2 PDF オプションは以下の製品上で動作します 動作環境については 以下の製品のリリース ノートを参照してください intra-mart WebPlatform Version.7.2

More information

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft PowerPoint - 計算機言語 第7回.ppt 計算機言語第 7 回 長宗高樹 目的 関数について理解する. 入力 X 関数 f 出力 Y Y=f(X) 関数の例 関数の型 #include int tasu(int a, int b); main(void) int x1, x2, y; x1 = 2; x2 = 3; y = tasu(x1,x2); 実引数 printf( %d + %d = %d, x1, x2, y);

More information

図 2 Excel スプレッドシートの世界 のウィンドウ 図 3 Visual Basic の世界 のウィンドウ 図 3 の VBA ウィンドウは 図 2 の Excel ウィンドウのメニューの ツール をクリックし 開か れるプルダウンメニューで マクロ /Visual Basic Editor

図 2 Excel スプレッドシートの世界 のウィンドウ 図 3 Visual Basic の世界 のウィンドウ 図 3 の VBA ウィンドウは 図 2 の Excel ウィンドウのメニューの ツール をクリックし 開か れるプルダウンメニューで マクロ /Visual Basic Editor Excel マクロ -Visual Basic の基本 - 1.Excel ファイルの構成 Excel ファイルは 右図のように 構成されている 一般に Excel と言えば 右図で Excel スプレッドシートの世界 と名付けた部分 すなわち Excel を起動したときに表示されるスプレッドシート (1ページの場合もあり 数ページの場合もある ) のみであるように思われている Excel ファイルには

More information

Android アプリを作るための環境設定 Android アプリを作るのに必要なものは Android SDK と Java 開発環境の Eclipse です 環境設定作業の概要はまず Android SDK と Eclipse をそれぞれインストールします その後 Eclipse を起動し An

Android アプリを作るための環境設定 Android アプリを作るのに必要なものは Android SDK と Java 開発環境の Eclipse です 環境設定作業の概要はまず Android SDK と Eclipse をそれぞれインストールします その後 Eclipse を起動し An Android アプリを作るための環境設定 Android アプリを作るのに必要なものは Android SDK と Java 開発環境の Eclipse です 環境設定作業の概要はまず Android SDK と Eclipse をそれぞれインストールします その後 Eclipse を起動し Android SDK の plugin を Eclipse にインストールします Eclipse のインストール時に

More information

Delphi/400活用! スマートデバイスアプリケーション開発

Delphi/400活用! スマートデバイスアプリケーション開発 吉原泰介 株式会社ミガロ. RAD 事業部技術支援課顧客サポート Delphi/400 活用! スマートデバイスアプリケーション開発拡張性の高い Delphi/400 ならでは jquerymobile を使用し 見栄えのよいスマート画面開発にチャレンジしよう スマートデバイスでの Web アプリケーション活用 Delphi/400 の Web アプリケーション開発 jquerymobile を利用したスマートデバイス開発

More information

プログラミング基礎I(再)

プログラミング基礎I(再) 山元進 クラスとは クラスの宣言 オブジェクトの作成 クラスのメンバー フィールド 変数 配列 メソッド メソッドとは メソッドの引数 戻り値 変数の型を拡張したもの 例えば車のデータベース 車のメーカー 車種 登録番号などのデータ データベースの操作 ( 新規データのボタンなど ) プログラムで使う部品の仕様書 そのクラスのオブジェクトを作ると初めて部品になる 継承 などの仕組みにより カスタマイズが安全

More information