スライド 1

Size: px
Start display at page:

Download "スライド 1"

Transcription

1 プレゼンテーション資料 Day 2 第 21 回エンバカデロ デベロッパーキャンプ 2012 年 3 月 9 日 ~10 日クロスウェーブ船橋

2

3 プログラム 3 月 9 日 時間 14:00~14:30 14:30~15:30 15:30~15:40 15:40~16:40 16:40~16:50 16:50~17:50 17:50~18:00 18:00~20:00 20:00~20:30 20:30~23:00 セッション概要 G1 オープニングセッション 2012 年 - エンバカデロの製品戦略 エンバカデロ テクノロジーズ日本法人代表藤井等 T2 テクニカルセッション 実践!Delphiデバッグテクニック 株式会社シリアルゲームズ取締役 シニアエンジニア細川淳 休憩 T3 テクニカルセッション Delphi/C++Builder + FastReport で作る実用レポート出力 株式会社ドリームハイブ代表取締役山本悟 休憩 T4 テクニカルセッション FireMonkey ファーストインプレッション 有限会社エイブル富永英明 休憩 W5 ワークショップ FireMonkey アプリケーション構築実習 司会 : エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏 休憩 移動 Party 懇親会 Developers Night in Funabashi

4 3 月 10 日 時間 9:00~9:50 9:50~10:00 10:00~10:50 10:50~11:00 11:00~11:50 11:50~12:00 12:00~12:50 セッション概要 W6 ワークショップ 挑戦!Delphi クイズで実力チェック エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏 休憩 T7 テクニカルセッション RadPHP でスマホアプリを作ろう! エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏 休憩 T8 テクニカルセッション Delphi 言語再入門 株式会社シリアルゲームズ取締役 シニアエンジニア細川淳東洋テクニカルシステム株式会社システム開発部福士光 休憩 T9 テクニカルセッション Delphi/C++Builder で ios/mac アプリを作ろう! エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏 ネットワークの使用について セッション会場では 無線 LAN をご利用いただけますが オンライン配信パフォーマンスに影響を与える恐れがあるため 会場無線 LAN を用いた Ustream GotoWebinar YouTube 等のビデオ視聴 その他のダウンロードなどはお控えください セッション資料のダウンロード セッション資料の最新版ならびに配布資料に含まれないプレゼンテーション資料については 後日 Embarcadero Developer Network 日本語版 ( からダウンロードいただけます

5 T7 テクニカルセッション 17 Th Developer Camp RadPHP で スマホアプリを作ろう! エンバカデロ テクノロジーズ エヴァンジェリスト高橋智宏 1

6 アジェンダ RadPHP XE2 に関するアップデート Web 画面のレイアウト調整デモ 横幅が重要 PHP & JavaScript のイベントの実装詳細 画面右端に張り付くボタンを実機で確認 ios (iphone 4, ipad 2) Android 2.2~ ( スマホ, タブレット ) Windows Phone 7.5 BlackBerry 少し本格的な Web アプリを作ってみる jquery Mobile 特有の注意点!! TMS 社の IntraWeb iphone Controls Pack のデモアプリと同様のものを Web アプリをフルスクリーンで ios Safari デモ 2

7 17 Th Developer Camp RadPHP XE2 に関するアップデート 1 3

8 アップデート 主な変更点 Update 4 ビルド番号 : ZendFramework のサンプルを追加 ZHttp, ZJson, ZJsonServer, ZRestClient, ZRestServer モバイル端末の背景を追加 各種 Android 端末 BlackBerry JQuery Mobile 1.0 final を統合 jquery を内蔵 PhoneGap を統合 生成コンテンツは Windows Phone 7.x でも利用可能 4

9 17 Th Developer Camp jquery Mobile 2 5

10 jquery Mobile とは? 2010 年 8 月 11 日に始まったオープンソースプロジェクト jquery をベースに モバイルデバイスの Web ブラウザに特化した GUI を提供する JavaScript ライブラリおよび CSS 先日 1.0 Final がリリースされました 6

11 サポートされるプラットフォーム A グレード ( フルサポート ) 7

12 横幅は重要 基本的に モバイル Web アプリは横スクロールしません もちろん 縦スクロールはします Web 画面の横幅は 端末ごとに異なります さらに ios, Android, WP7 では 端末の回転により変化します 横幅は JavaScriptの window.innerwidth で取得可能 8

13 端末の回転を検知するには? ios jquery Mobile の orientationchange イベントを利用する window.onresize イベントの監視は不要!! Android 2.2~ window.onresize イベントを利用する orientationchangeイベントが来ても無視する!! innerwidthは回転前の値を示すので使えない Windows Phone 7.5 window.onresize イベントを利用する そもそも orientationchange イベントが発生しない BlackBerry PlayBook も含め そもそも回転しない ( はず ) 9

14 viewport meta タグの width パラメータ スマホでもタブレットでも width=320 で OK!? WP7 以外の端末 window.innerwidth 端末の向きに応じた実際の横幅 Windows Phone 7.5 window.innerwidth 常に320!? 端末が横向きなら画面全体が拡大表示されてしまう!! viewoport で width=device-width を指定すると window.innerwidth 端末の向きに応じた実際の横幅 10

15 画面右端に張り付くボタン PHP 側の実装 手順その1 : MPageのOnCreateイベント WP7 に対処 手順その 2 : MPage の OnStartBody イベント ボタンの移動を行う関数を JavaScript で記述 jquery の API で ボタンの外側の div の CSS の left を変更 11

16 画面右端に張り付くボタン 手順その 3 : MPage の OnOrientationChange Javascript イベント Android に対処 手順その 4 : MPage の OnPageShow Javascript イベント Android, WP 向けに onresize イベントハンドラのインストール とりあえず すぐにボタンの移動を行う 12

17 実機で確認 画面サイズ, ボタンサイズ, 回転 iphone 4, ipad 2 Androidスマホ, Androidタブレット Windows Phone 7.5 BlackBerry 13

18 17 Th Developer Camp 少し本格的な Web アプリ 3 14

19 jquery Mobile 特有の注意点 複数の Web ページのイメージが 単一の Web 画面内で同居することがある Ajax を利用した画面遷移 例 : 横にスライドしながら新しいページが表示される場合 そのため あるページを設計 実装する際 その中に配置するコンポーネント名は 複数ページ全体で一意になるようにすべき 同一のidを持つHTML 要素が 同居して競合を起こすのを防ぐ 独自に コンポーネント名 ( 変数名 ) の命名規約を設けてください ios 5.0 の iphone の Safari 向けには MPage の touchoverflowenabled プロパティを false に設定!! 今後 jquery Mobile 以降は非推奨にもなる 15

20 まずは お手本となる Web アプリを確認 Delphi XE2(C++Builder XE2) IntraWeb XII TMS IntraWeb iphone Controls Pack( トライアル版 ) のデモアプリ 16

21 メインページ デザイン MList は PHP 側で動的に構築 MLink 画面遷移に使う 単にボタンとしても使える MobileTheme テーマを指定する カスタムテーマへの応用も可 MList リストビュー 行数は可変なので 高さが変わる項目クリック時に編集ページに遷移させる MToolBar 複数の Mlink を配置できる Setting クリック時に設定ページに遷移させる 17

22 メインページ コード MPage の OnCreate イベントで MList の項目を動的に生成 Web 画面の高さ およびツールバーの位置を調整 18

23 設定ページ デザイン Save ボタン : PHP の $_SESSION 変数を Ajax で更新 MLink 遷移元 ( 前 ) のページに戻る 特別なリンク MToggle 2 つの値を管理できるトグルスイッチ MButton 画面情報を PHP に送信 Ajax モードで RadPHP のイベントハンドラを起動可 19

24 設定ページ コード トグルスイッチの値を $_SESSION で管理 最初に画面を生成する際に トグルスイッチの初期値を指定 [Back] ボタンに関する処理は無い Web ブラウザ内だけで 前の画面を復帰させてしまう 前の画面の内容を PHP 側で更新できないので注意!! 20

25 編集ページ デザイン Back ボタンは Update ボタンで Ajax 更新後 モードを変更 MLink 遷移元 ( 前 ) のページに戻る 特別なリンク MEdit 文字列を編集する MSlider 例 : 最小値 (0)~ 最大値 (100) のスライダ MComboBox 項目を選択するコンボボックス 複数選択可 MButton 画面情報を PHP に送信 Ajax モードで RadPHP のイベントハンドラを起動可 21

26 編集ページ コード MSlider と MComboBox の値はテキトーに設定する [Save] ボタンを押して Ajax 経由で画面を更新 Back ボタンは [Save] ボタンで画面を更新後 メインページを明示的に呼び出すリンクに変化させる メインページの内容を更新して表示させたいので 22

27 17 Th Developer Camp ios で Web アプリを フルスクリーン表示 4 23

28 ios 専用のタグを <head> </head> に追加 MPage の OnShowHeader イベントを利用 スプラッシュ画像を用意 iphone,iphone(retina),ipad 用に3 種類のアイコンを用意 フルスクリーン可であることを知らせるmetaタグ ios の Safari で [ ホーム画面に追加 ] を利用 24

29 17 Th Developer Camp T8 テクニカルセッション Delphi 言語再入門 株式会社シリアルゲームズ 取締役細川淳 1

30 17 Th Developer Camp 1 Class について改めて 2

31 class Delphi を使う上で切っても切れない class 型 class 型について どの位の事をご存じですか? 良くは判らないけど component もクラスだし Form を作ったら強制的にクラスになっちゃうから ただ何となく使っている? ここでは そんな class 型について深く見ていくことにします ただ そもそも class とはなんぞや? という話はしません もう少し深く見ていきます 3

32 class 定義 class 定義はヘルプより下記の様になっています type classname = class [abstract sealed] (ancestorclass) memberlist end; abstaract, sealed って? ancestorclass? 4

33 class 属性 abstract 属性 抽象クラスを表す属性です この属性を指定するとクラスは抽象クラスとなり生成が禁じられ ません 下位互換性を保つために抽象クラスの生成が許可されています 実質 abstract 属性は あまり意味がありません しかし abstract メソッドがある場合 警告が出ます abstract メソッドについては後述 5

34 class 属性 sealed 属性 sealed を付けて宣言すると そのクラスを継承する事ができなくなります Java の final と同じです Delphi にも final はあるのですが メソッドに付けます ただし class helper は使えます 拡張するだけなので当然ですね class helper でメソッドを隠蔽可能です 6

35 class 属性 - sealed type TTestClass = class sealed public procedure Test; virtual; end; TTestClass2 = class(ttestclass) public procedure Test; override; end; ここで 下記のエラーが発生する [DCC エラー ] Unit1.pas(35): E2353 シールドクラス 'TTestClass' は拡張できません 7

36 class 属性 - sealed type TTestClass = class sealed public procedure Test; virtual; end; TTestClass2 = class helper for TTestClass procedure Test; end; class helper として拡張するのは OK メソッドを隠蔽して元の Test を呼ばないようにできる隠蔽した元の Test は inherited Test; として呼び出し可能 8

37 class 定義 - ancestorclass ancestorclass は継承元クラス 何も指定しないと TObject を継承します TObject もクラスとして定義されている (System.pas) ので TObject って一体なんだ! という話になりますが コンパイラマジックの一種と考えて良いと思います TObject TObject は特別なクラスです 全てのクラス型の大元になります TObject のメソッドを使えないクラスはありません record 型もメソッドを持てるようになりましたが class 型との最大の相違は TObject を先祖にもつか? ということです つまり record 型は TObject を先祖にもちません! 9

38 class とクラス参照型 ( メタクラス ) Delphi 言語では class も 1 つのオブジェクト ( ) です 例えば Application.CreateForm(TForm1, Form1); は 皆さん見たことがあると思います ここで 見て欲しいのが TForm1 と書いてあるところです class は型ですが 型そのものを引数として渡しています これは integer などでは不可能な事です このように class 型を参照する型を クラス参照型 といいます ( メタクラス ともいいます ) より正確にいうと VMT へのポインタです 10

39 class とクラス参照型 ( メタクラス ) Application.CreateForm の宣言を見てみます procedure TApplication.CreateForm( InstanceClass: TComponentClass; var Reference); TComponentClass = class of TComponent; こんな風になっています ここで 赤枠で囲った部分がクラス参照型の宣言です このようにクラス型そのものを渡す事によって Factory を作ったり 多態性を確保する事が容易になります 11

40 class とクラス参照型 ( メタクラス ) type TFigure = class(tobject) public procedure Draw; virtual; abstract; end; TFigureClass = class of TFigure; TTriangle = class(tfigure) public procedure Draw; override; end; TRect = class(tfigure) public procedure Draw; override; end; クラス参照型を定義 三角形を描画する 四角形を描画する TFigureDrawer = class(tobject) private FFigure: TFigure; public constructor Create(const ifigureclass: TFigureClass); procedure Draw; end; constructor TFigureDrawer.Create(const ifigureclass: TFigureClass); begin FFigure = ifigureclass.create; end; 渡されたクラスのインスタンスを作っている描画される内容を TFigureDrawer は知らない 12

41 class クラスメソッド class にはクラスメソッドといわれるものがあります 具体的には type TFoo = class(tobject) public class procedure Method1; class procedure Method2; static; end; このように宣言の前に "class" をつけたメソッドです クラスメソッドはインスタンスを必要としません つまり procedure Test; begin TFoo.Method1; TFoo.Method2; end; のように呼び出すことができます さて Method1(); と Method2(); の違いはなんでしょうか? 13

42 class クラスメソッドと静的メソッド 普通に考えるとクラスメソッドはインスタンスが存在しないため Self が存在しません それは Self とは インスタンスを表しているからです しかし! ここで Delphi では Class もオブジェクトである という事を思い出してください! Method1; の中で Self を参照できてしまうのです! type TFoo = class(tobject) public class procedure Method1; class procedure Method2; static; end; クラスメソッド中の Self はクラスオブジェクトそのものを指します なので このように Self をクラスのように使えるのです class procedure TFoo.Method1(); begin Self.Method2; Self.Create; end; 14

43 class クラスメソッドと静的メソッド それに対して "static" 指定をされたクラスメソッドは Self を持ちません このことから static 指定されたメソッドを特に 静的メソッド と呼びます type TFoo = class(tobject) public class procedure Method1; class procedure Method2; static; end; class procedure TFoo.Method2(); begin Self.Create; end; ここで 下記のエラーが出ます [DCC エラー ] Unit1.pas(149): E2003 未定義の識別子 : 'Self' [DCC エラー ] Unit1.pas(149): E2076 このメソッドの呼び方はクラスメソッドの場合に限られます 15

44 class クラスメソッドと静的メソッド type TFoo = class(tobject) public class procedure Method1; class procedure Method2; static; end; procedure Test; var Foo: TFoo; begin Foo := TFoo.Create; TFoo.Method1(); Foo.Method1(); TFoo.Method2(); end; ちなみに バイナリレベルでも違いがでます static 指令がない Method1 の呼び出しでは eax レジスタに Self を代入して呼び出しています しかし Method2 ではシンプルに何もせずに呼び出しているだけです 特にクラス参照型を欲しない場合は static 指令を付けた静的メソッドを使うとコードサイズが若干小さくなります Unit1.pas.58: TFoo.Method1; 0051A757 A16CA65100 mov eax,[$0051a66c] 0051A75C E call TFoo.Method1 Unit1.pas.59: Foo.Method1; 0051A761 8B45FC mov eax,[ebp-$04] 0051A764 8B00 mov eax,[eax] 0051A766 E call TFoo.Method1 Unit1.pas.61: TFoo.Method2; 0051A76B E call TFoo.Method2 16

45 class メンバの可視性 private, protected, public, published これらの指定を もちろん見たことがあると思います private, protected, public については 説明は不要かと思いますが 一応説明すると下表の様になります 可視性自分自身継承先クラス同一ユニット private protected public strict private strict protected 17

46 class メンバの可視性 - published published と public は 公開範囲は同じように思えます では 何が違うのでしょうか? published は public と違い RTTI を生成します RTTI とは 実行時型情報 です 本来 型 とは コンパイル時に必要なものです たとえば Integer 型に Class のインスタンスを代入しようとすればコンパイルエラーになります しかし Integer 型と Class のインスタンスは同じ4バイトです (32bitの時) CPU から見たときに違いはありません 本来の 型 とは プログラマを助けるために導入された概念とみなすことができます 18

47 class メンバの可視性 - published published 指定されたメンバは ソースコードレベルの可視性は同じ RTTI が生成される RTTI を介して外部のプログラムがメンバーを参照できる オブジェクトインスペクタでプロパティを編集できるのは このためです メソッドの overload はできない もちろん public では overload できます 19

48 class メンバの可視性 - published public, published の違いについて誤解を恐れずにいうと public は ソースコードレベルで公開 ソースコード中でメンバを参照できる published は バイナリレベルで公開 コンパイル済みのバイナリに対して 参照できる となります 20

49 class のバインディング RTTI が出てきたので ここでバインディングについても見ていきます バインディングとは virtual dynamic override のことです 21

50 class のバインディング virtual と dynamic virtual と dynamic はソースコードレベルでは同じ動作をします どちらも override 可能 abstract 指定可能です 違いをヘルプで引くと下記の様に書かれています バインディング最適化備考 virtual 実行速度を最適化最も効率的な方法 dynamic サイズを最適化たまにしかオーバーライドされない時に使用する 意味はわかるけど仕組みが判りませんね 22

51 class のバインディング 実際の所 実装上の違いは どうなっているかというと バインディング意味 virtual 派生クラスでもメソッドテーブルが生成される dynamic 基本クラスにのみメソッドテーブルが生成される となります 先ほどの表の たまにしかオーバーライドされない時に使用する というのは 派生先でメソッドテーブル が生成されないため コードサイズが小さくなる という意味です 23

52 class のバインディング - VMT VMT とは Virtual Method Table の事です メソッドの呼び出しは Table への参照に置き換わります概念的にはメソッドのポインタへの配列です VMT Method1 Method2 Method3 Method4 たとえば ソースコードに Method1(); という呼び出しコードがあった場合 VMT[0](); といったコードになる ということです Method1(); VMT 内の 0 番目の参照を呼び出す 24

53 class のバインディング - VMT と override override type TFoo = class(tobject) public procedure Method1(); virtual; procedure Method2(); virtual; end; TBar = class(tfoo) public procedure Method1(); override; end; Class Foo の VMT Method1 Method2 テーブルの内容が置き換わる! Class Bar の VMT Method1 Method2 // 擬似コードとして書くと VMT[0] // Method1 のアドレスが入った // TBar で TFoo の Method1 を override すると VMT[0] // TBar の Method1 アドレスに変わる // 呼び出し側では下記のように呼び出しているだけなので 中身が入れ替われば呼び出し先も変わる! VMT[0](); 25

54 class のバインディングと abstract abstract type TFoo = class(tobject) public procedure Method1(); virtual; abstaract; end; TBar = class(tfoo) public procedure Method1(); override; end; Class Foo の VMT Method1 Method1 Method2 場所が確保されているだけで中身は無い! Class Bar の VMT Method2 // 擬似コードとして書くと VMT[0] := nil; // アドレスは nil! // TBar で TFoo の Method1 を override すると VMT[0] // TBar の Method1 アドレスが入る 26

55 メソッドポインタ 今まで見てきた通り Class には 2 つの構成要素があります Self インスタンスのアドレスを表す Method メソッドのアドレス クラス参照型は クラスオブジェクトのアドレスを渡しています アドレスは 32bit のマシンでは 4 バイトで表されます VMT に格納されているメソッドのアドレスも 4 バイトです Self が指すクラスのインスタンスも 4 バイトです 27

56 メソッドポインタ ここで イベントについてちょっと見てます type TFoo = class(tobject) private FEvent: TNotifyEvent; procedure TestEvent(Sender: TObject); end; procedure Test; var Foo: TFoo; begin Foo := TFoo.Create; Foo.FEvent := Foo.TestEvent; end; Foo と TestEvent で それぞれ4バイト必要 Object 必要なバイト数 Self 4 byte Method 4 byte 計 8 byte Delphi の Pointer 型は 4 バイトしか格納できないけど どうやって アドレスを代入しているのか?? 28

57 メソッドポインタ Delphi では メソッドポインタ を使ってイベントを管理しています ヘルプを引用すると メソッドポインタは, 特定のクラスインスタンスの特定のメソッドを指す特殊なポインタ型です メソッドポインタはほかの手続き型と同じように動作しますが, 手続き型と違ってクラスインスタンスへの隠されたポインタを保持しています つまり メソッドポインタは コードを書いていると気づきませんが 実は8バイトのポインタなのです メソッドポインタの宣言には下記の様に of object を指定します type TTestEvent = procedure(sender: TObject; ifoo: TFoo) of object; var Event: TTestEvent; // Event は 8 バイト 29

58 メソッドポインタ - TMethod TMethod という面白い機構が存在します TMethod は 8 byte のレコードで メソッドポインタを保持できます type TFoo = class(tobject) private procedure Method; end; procedure Test; type TProc = procedure of object; var Foo: TFoo; Proc: TProc; Method: TMethod; begin Foo := TFoo.Create; Proc := Foo.Method; Method := TMethod(Proc); TProc(Method)(); Foo.Free; end; メソッドポインタは TMethod へキャスト可能です そして TMethod もメソッドポインタにキャストできます procedure Test; type TProc = procedure of object; var Foo: TFoo; Proc: TProc; begin Foo := TFoo.Create; TMethod(Proc).Data:= Foo; TMethod(Proc).Code:= Foo.MethodAddress('Method') Proc; Foo.Free; end; こんな風にも書けます 30

59 メソッドポインタ - TMethod TMethod は Code, Data という 2 つのメンバを持っています Code は メソッドのアドレス Data は インスタンスのアドレスです 下記の様に Data の値を入れ替えると? type TProc = procedure of object; TFoo = class(tobject) private FMsg: String; procedure Method; end; procedure TFoo.Method; begin ShowMessage(FMsg); end; procedure Test; var Foo: TFoo; Bar: TFoo; Proc: TProc; Method: TMethod; begin Foo := TFoo.Create; Bar := TFoo.Create; Foo.FMsg := 'Foo' Bar.FMsg := 'Bar'; Proc := Foo.Method; Method := TMethod(Proc); TProc(Method)(); Method.data := Bar; TProc(Method)(); end; 31

60 17 Th Developer Camp 2 Class の演習 33

61 TMethodCaller を作る いままで 通して来てクラスについての理解が深まったと思います ここで 少し演習をしてみます 34

62 TMethodCaller の要件 クラスとメソッド名を引数にもつ静的メソッド メソッドの名前は仮に execute とした場合 下記の様に呼び出せる TMethodCaller.Execute(TTestClass, 'Method'); このメソッドを呼び出すとクラスを生成し 該当メソッドを呼び出す つまり 上記の例は と同じ事をする (TTestClass.Create).Method(); なお 呼び出せるメソッドは引数を持たない手続きとします 35

63 TMethodCaller - RTTI RTTI を扱うクラスがあります それを使うとメソッドの引数なども簡単に取得できます それを使えば今回のように引数なしのメソッドではなくても 安全に呼び出すことができます 腕に自信がある方は 是非挑戦してみてください 36

64 TMethodCaller - 宣言部 unit umethodcaller; interface type TMethodCaller = class(tobject) private type TCalledProc = procedure of object; public class procedure Execute( const iclass: TClass; const imethodname: String); static; end; 37

65 TMethodCaller - 実現部 implementation class procedure TMethodCaller.Execute( const iclass: TClass; const imethodname: String); var Obj: TObject; Proc: TCalledProc; begin Obj := iclass.create; try TMethod(Proc).Data := Obj; TMethod(Proc).Code := Obj.MethodAddress(iMethodName); if (TMethod(Proc).Code <> nil) then Proc; finally Obj.Free; end; end; end. 38

66 TMethodCaller - 使い方 type TTestClass = class(tpersistent) // TObject から生成すると published のところで警告発生 published procedure Test; end; procedure TTestClass.Test; begin ShowMessage('TEST'); end; procedure TForm1.Button1Click(Sender: TObject); begin TMethodCaller.Execute(TTestClass, 'Test'); end; 39

67 17 Th Developer Camp T8 テクニカルセッション Delphi 言語再入門 ~ 拡張された RTTI を試してみる 東洋テクニカルシステム株式会社システム開発部福士光 1

68 アジェンダ 従来の RTTI でできること Delphi 2010 で新しく拡張された RTTI( 拡張 RTTI) でできるようになったこと 試してみる (1)~ クラス内のメンバの列挙 試してみる (2)~ クラス内のメンバの値の取得 拡張 RTTI と属性を使う上での注意事項 3

69 基本知識 ~RTTI とは? RTTI( 実行時型情報 ) とは? RunTime Type Information の略 (Information ではなく Identification とすることもある ) 実行時にメモリ上のオブジェクトのデータ型に関する情報を取得 操作できる Delphi では従来から published 宣言を行うことで RTTI が生成され IDE がコンポーネントの持つ RTTI を利用している Delphi 2010/XE/XE2 では RTTI が拡張され より多くのことが可能になった ( 実行バイナリのサイズが大きくなるという副作用がある ) 5

70 17 Th Developer Camp 2 従来の RTTI でできること 6

71 従来の RTTI でできること (1) (System.)TypInfo ユニット 実行時にプロパティの型情報を探す published なプロパティのみ ( コンパイラ指令 {$M+} または {$TYPEINFO ON} が必要 ) GetPropInfo 関数 GetPropList 関数など PPropInfo = ^TPropInfo ( レコード型へのポインタ ) 実行時に型情報を元に値を取得 設定する GetXXXXProp/SetXXXXProp 関数 (XXXX は対象となるプロパティの型による ) Delphi の IDE がフォームをストリーム化したりプロパティエディタで使用しているのはご存知のとおり 7

72 従来の RTTI でできること (2) 仮想メソッドテーブル (VMT) virtual/overrideと宣言されたメソッドのテーブル ( クラスごとに存在 ) 動的なメソッドのテーブル dynamic/overrideあるいはmessageと宣言されたメソッドのテーブル ( テーブル上では動的メソッドなのかメッセージハンドラなのかは区別されていない ) 8

73 17 Th Developer Camp 3 拡張 RTTI でできるように なったこと 9

74 拡張 RTTI でできるようになったこと (1) (System.)RTTI ユニット 実行時にフィールド プロパティ メソッドの型情報を取得する コンパイラ指令 {$RTTI} で拡張 RTTI をプロパティ フィールド メソッドのそれぞれに対してどの範囲 (published/public/protected/private) のものに付けるのかを制御 クラス型 (class) またはレコード型 (record) が対象 型情報そのものは全ての型 (Integer, Boolean,...) に存在している 10

75 拡張 RTTI でできるようになったこと (2) 実行時に型情報とインスタンスへのポインタを元に各種の操作を行う フィールドの値の取得 設定 プロパティの値の取得 設定 メソッドの呼び出し (invocation) 11

76 拡張 RTTI でできるようになったこと (3) 属性 (attribute) による注釈付け (annotation) クラス型あるいはレコード型に属性で注釈を付ける クラス型あるいはレコード型のメンバ ( フィールド プロパティ メソッド ) に属性で注釈を付ける.NET Framework と同様の記法を使う [<Attr>] [<Attr>(<parameterlist>)] 先頭の T と末尾の Attribute コンストラクタの.Create を省略できる [T<Attr>Attribute.Create] [T<Attr>Attribute.Create(<parameterlist>)] 12

77 拡張 RTTI でできるようになったこと (4) 属性 (attribute) による注釈付け (annotation) カスタム属性 (custom attribute) の宣言 ( プロパティやフィールドの値ではなく ) 属性クラスの型で区別する 例外ハンドラを記述するときに例外オブジェクトの型で区別を行うのと同様に コンストラクタで渡した値 ( 定数のみ ) をフィールドまたはプロパティに保存して参照することもできる TCustomAttribute クラスから派生したカスタム属性クラスを宣言して使用する 13

78 拡張 RTTI でできるようになったこと (5) 属性 (attribute) による注釈付け (annotation) 実行時にクラス型 レコード型に付けられている属性を抽出する 実行時にクラス型 レコード型のメンバに付けられている属性を抽出する 属性を使う状況 同じ型から派生していても区別して処理したい 同じ型のメンバでも区別して処理したい 14

79 拡張 RTTI でできるようになったこと (6) 拡張 RTTI と属性についての補足 拡張 RTTI はデフォルトでは以下の範囲に付けられている (System ユニットで定義 ) 可視性 private protected public published フィールド〇〇〇〇 プロパティ 〇〇 メソッド 〇〇 Delphi 2010 以降の実行ファイルが大きくなってしまう原因のひとつ {$RTTI EXPLICIT...} で ( 継承元クラスの指定とは独立して ) 拡張 RTTI を付ける範囲を指定できる 15

80 拡張 RTTI でできるようになったこと (7) 拡張 RTTI と属性についての補足 属性は検索 抽出されるときに実体が生成される 検索 抽出しなければ性能上のペナルティはない 実行バイナリ 占有メモリのサイズのペナルティはある 拡張 RTTI を扱うコードは遅い どのような場合に拡張 RTTI を使えばよいのか? クラスに対する汎用な処理の記述 ORマッパやXMLへのシリアライズ / デシリアライズ クラス構造のツリー表示 16

81 17 Th Developer Camp 4 試してみる (1) クラス内のメンバの列挙 17

82 クラス内のメンバの列挙 (1) TRTTIContext ((System.)RTTI ユニット ) 全ての操作はここから始まる 高度なレコード型 内部リソースの管理 解放のためクラスのコンストラクタ デストラクタのように class function Create と procedure Free を呼ぶことが推奨されています uses Rtti; var ctx: TRttiContext; begin ctx := TRttiContext.Create; try // RTTI を扱う finally ctx.free; end; end; 18

83 クラス内のメンバの列挙 (2) TRTTIContext GetType メソッド 指定されたクラス型の RTTI オブジェクト (TRTTIType から派生したクラスのインスタンス ) を取得 function GetType(AClass: TClass): TRttiType; 19

84 クラス内のメンバの列挙 (3) TRTTIType クラス型 (RTTI オブジェクトの基底クラス ) GetProperties メソッド 所属するクラスのプロパティの RTTI 情報を全て取得 function GetProperties: TArray<TRttiProperty>; GetFields メソッド 所属するクラスのフィールドの RTTI 情報を全て取得 function GetFields: TArray<TRttiField>; GetMethods メソッド 所属するクラスのメソッドの RTTI 情報を全て取得 function GetMethods: TArray<TRttiMethod>; 階層順に ( 継承先から継承元に向かって )RTTI 情報がリストアップされる 20

85 クラス内のメンバの列挙 (4) TRTTIType GetDeclaredProperties メソッド GetDeclaredFields メソッド GetDeclaredMethods メソッド そのクラスで定義したプロパティ / フィールド / メソッドの RTTI 情報だけがリストアップされる 21

86 クラス内のメンバの列挙 (5) TRTTIProperty クラスのプロパティの RTTI 情報 クラス型 (TRTTIMember から派生 ) Name プロパティ ( 名前 ) property Name: string; Visibility プロパティ ( 可視性 ) property Visibility: TMemberVisibility; 22

87 クラス内のメンバの列挙 (6) それでは実際に試してみましょう 新規作成 VCL フォームアプリケーション フォーム上にボタン (Button1) とメモ (Memo1) を配置 メモの Anchors に akright と akbottom を追加 crollbars を ssboth に変更 23

88 クラス内のメンバの列挙 (7) procedure TForm1.EnumProperties(AObject: TObject); const MemberVisibilities: array [TMemberVisibility] of String = ('private', 'protected', 'public', 'published'); var ctx: TRttiContext; prop: TRttiProperty; begin Memo1.Lines.Add('Class: ' + AObject.ClassName); ctx := TRttiContext.Create; try for prop in ctx.gettype(aobject.classtype).getproperties do begin Memo1.Lines.Add(' Property: ' + prop.name + ( + MemberVisibilities[prop.Visibility] + ) ); end; finally ctx.free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin EnumProperties(Form1); EnumProperties(Button1); EnumProperties(Memo1); end; 24

89 クラス内のメンバの列挙 (8) とりあえず実行してみましょう Memo1.Lines.Add の行にブレークポイントを設定し prop(trttiproperty) を評価してみる prop の実際の型は? 25

90 17 Th Developer Camp 試してみる (2) 5 クラス内のメンバの値の 取得 26

91 クラス内のメンバの値の取得 (1) TValue ((System.)RTTI ユニット ) 拡張 RTTI でデータを格納する 高度なレコード型 バリアントもどき ( バリアント型の軽量版 ) 実際のデータは FData フィールド (TValueData レコード型 共用体 ) に格納している 27

92 クラス内のメンバの値の取得 (2) TValue Kind プロパティ 型の種類を列挙として取得 property Kind: TTypeKind; TypeInfo プロパティ TypeData プロパティ 型の情報をレコード型として取得 property TypeInfo: PTypeInfo read GetTypeInfo; property TypeData: PTypeData read GetTypeDataProp; 28

93 クラス内のメンバの値の取得 (3) TValue IsXXXX メソッド / プロパティ 格納されているデータの状態を問い合わせる IsEmpty/IsObject/IsInstanceOf/IsClass/IsOrdinal/IsType/IsArray AsXXXX/TryAsXXXX メソッド 格納されているデータを特定の型で取得する AsObject/AsClass/AsOrdinal/AsType/AsInteger/AsBoolean AsExtended/AsInt64/AsInterface/AsString/AsVariant/AsCurrency TryAsOrdinal/TryAsType 29

94 クラス内のメンバの値の取得 (4) TValue 暗黙の型変換 (implicit conversion) データを格納する string/integer/extended/int64/tobject/tclass/boolean FromXXXX メソッド データを格納する FromVariant/From<T>/FromOrdinal/FromArray ToString メソッド データをとりあえず文字列化 30

95 クラス内のメンバの値の取得 (5) TRTTIProperty と TValue TRTTIProperty.GetValue 特定のインスタンスのプロパティの値を取得 function GetValue(Instance: Pointer): TValue; TRTTIProperty.SetValue 特定のインスタンスのプロパティの値を設定 procedure SetValue(Instance: Pointer; const AValue: TValue); TRTTIProperty が示しているのは型に関する情報であることに注意 31

96 クラス内のメンバの値の取得 (6) こちらも試してみましょう GetValueでプロパティの値を取得して TValue.ToStringで文字列化します GetValueは例外が起きるかもしれないので try...except...endで保護します procedure TForm1.EnumProperties(AObject: TObject); const MemberVisibilities: array [TMemberVisibility] of String = ('private', 'protected', 'public', 'published'); var ctx: TRttiContext; prop: TRttiProperty; V: TValue; Str: String; 32

97 クラス内のメンバの値の取得 (7) begin Memo1.Lines.Add('Class: ' + AObject.ClassName); ctx := TRttiContext.Create; try for prop in ctx.gettype(aobject.classtype).getproperties do begin try V := prop.getvalue(aobject); Str := V.ToString; except on E: Exception do begin Str := 'Error (' + E.Message + ')'; end; end; Memo1.Lines.Add(' Property: ' + prop.name + ' (' + MemberVisibilities[prop.Visibility] + ')' + ' Value = ' + Str); end; finally ctx.free; end; end; 33

98 クラス内のメンバの値の取得 (8) SetValue メソッドでプロパティの値を変更することも可能です GetValue で取得した TValue の TypeInfo.Kind が tkclass なら AsObject はクラス型のプロパティです あるいは TRTTIProperty や TRTTIField の Handle プロパティが nil でなければ PTypeInfo (=^TTypeInfo) なので Handle.Kind でそのプロパティ / フィールドの定義の型を知ることもできます 再帰処理で複合クラスのトラバースが実現できます 34

99 17 Th Developer Camp 6 拡張 RTTI と属性を使う上での注意事項 35

100 拡張 RTTI と属性を使う上での注意事項 (1) 配列に対するサポートが弱い Delphi XE2 では TRttiType に GetIndexedProperties メソッドが追加されて配列プロパティに関する情報を取得できるようになったが 通常のプロパティに比べて微妙に使えない 静的配列のフィールドもうまく扱えない 動的配列のフィールドは通常のプロパティ並に扱えるので 配列プロパティ 静的配列のフィールドの代替として動的配列のフィールドを用意してエイリアス的に使うという回避策が有効 36

101 拡張 RTTI と属性を使う上での注意事項 (2) 属性のコンストラクタ TCustomAttribute のコンストラクタはパラメータを持たないが 派生したクラスでコンストラクタを定義することで値を渡すことができる ( フィールド プロパティでその値を保持する ) constructor Create(const AFooValue: String); しかしコンストラクタのパラメータは定数しか使えない ( 文字列定数はOK) ポインタでも定数なら使えるはずだが 現実には内部エラーが発生してコンパイルできない 37

102 17 Th Developer Camp 7 参考文献 38

103 参考文献 (1) Delphi のヘルプ RTTI の操作 ( オンライン ) %E3%81%AE%E6%93%8D%E4%BD%9C%EF%BC%9A%E3%82%A4%E 3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9 Rob s Technology Corner Delphi RTTI & Attributes シリーズ 英語です 39

104 参考文献 (2) Delphi 2010 Handbook Marco Cantù 著 CreateSpace ( ISBN (ISBN ) 43.50USD( 書籍版 ) 28.00USD(ebook) ( 書籍 ) delphi2010handbook (ebook/pdf) 英語ですが表現は比較的平易 拡張 RTTI について記述があります (Chapter 3 4) 40

105 参考文献 (3) Delphi クイックリファレンス Ray Lischner 著 光田秀 竹田知生訳 オライリー ジャパン ISBN (ISBN ) 4,725 円 残念ながら絶版です 従来の RTTI について記述があります 41

106 参考文献 (4) Inside Delphi Ray Lischner 著 光田秀訳 大野元久 服部誠監修 アスキー ISBN (ISBN ) 9,240 円 こちらも残念ながら絶版です 従来の RTTI について記述があります 42

107 T9 テクニカルセッション 17 Th Developer Camp Delphi/C++Builder で ios/mac アプリを作ろ う! エンバカデロ テクノロジーズ エヴァンジェリスト高橋智宏 1

108 アジェンダ OS X で動的ライブラリ (.dylib) Delphi で作成して Delphi アプリから呼び出し C++Builder で作成して C++Builder アプリから呼び出し SQLite3 を利用する デモ C++Builder で OS X 内蔵の SQLite3 を利用する デモ OpenCL を利用する C++BuilderでOS X 内蔵のOpenCLを利用するデモ OS XでSOAPクライアントを作成する Win32/Win64のSOAPサーバーからのTClientDataSetを受信して FireMonkeyのStringGridに表示 Update 4 で新たに追加されたFireMonkey 向けモ デモ バイルコネクタ ios(4.x, 5.0) から FreePascal 向けプロキシで DataSnap を呼び出す 注意点あり デモ 2

109 17 Th Developer Camp OS X で動的ライブラリ (.dylib) 1 3

110 Delphi で作成 lib[ プロジェクト名 ].dylib が生成される 共有メモリマネージャ (ShareMem ユニット,BORLNDMM.DLL) は無い 4

111 Delphi アプリから呼び出し external xxxx.dylib ; 配置ウィザードで.dylib ファイルを追加 5

112 C++Builder で作成 [ プロジェクト名 ].dylib が生成される 共有メモリマネージャ (MEMMGR.LIB,BORLNDMM.DLL) は無い int32_t, char16_t などの型 (stdint.h) を使いましょう MacOS X では wchar_t は 4 バイト (32bit) です!! 6

113 C++Builder アプリから呼び出し #pragma link xxxx.dylib 配置ウィザードで.dylib ファイルを追加 7

114 17 Th Developer Camp SQLite3 を利用する 2 8

115 /usr/include/sqlite3.h, /usr/lib/libsqlite3.dylib [ ツール ]-[ オプション ]-[ 環境オプション ]-[ リモートプロファイル ]-[ リモートパス ] 必要に応じて.h と.dylib を PAServer からインポート [ ローカルファイルキャッシュの更新 ] を忘れずに! 9

116 データベースファイルの作成またはオープン #include <sqlite3.h> #pragma link libsqlite3.dylib sqlite3_open: 作成またはオープン sqlite3_close: クローズ 10

117 テーブルの作成および行の INSERT C++Builder の UnicodeString 型 (1 文字 16 ビット ) を使用 一部 UTF8String 型 (UTF8Encode 関数 ) を使用 テーブルの存在確認 システムテーブルにSELECT 文を実行 sqlite3_get_table / sqlite3_free_table テーブルの作成 sqlite3_exec で CREATE TABLE 文を実行 行の INSERT パラメータ付きクエリ ( 例 : =:param ) char16_t 版の関数を利用 sqlite3_prepare16 / sqlite3_reset: SQL 文の準備 sqlite3_bind_text16: 文字列パラメータのセット sqlite3_step: SQL 文の実行 sqlite3_finalize: SQL 文の後始末 11

118 テーブルの作成および行の INSERT ( 続き ) 12

119 SELECT 文で行を検索 sqlite3_step とその戻り値で結果セットをイテレート SQLITE_ROW: 行がある SQLITE_DONE: 行が無くなった sqlite3_column_text16 でカレント行の文字列を取得 戻り値の型を char16_t* 型にするのを忘れずに!! C++BuilderのUnicodeString 型に変換する 13

120 17 Th Developer Camp OpenCL を利用する 3 14

121 OpenCL on Snow Loepard, Lion OpenCL とは? 出典 : wikipedia C++Builder XE2 がサポートしている OS X 10.6.x, 10.7.x には OpenCL が標準搭載 15

122 OpenCL,OpenGL - /System/Library/Frameworks [ ツール ]-[ オプション ]-[ 環境オプション ]-[ リモートプロファイル ]-[ リモートパス ] フレームワークとして OpenCL と OpenGL をインポート OpenGL も忘れずに!! 必要なヘッダとライブラリが利用できるようになります 16

123 GPUに送り込むカーネルコードを定義 コンパイル前のカーネルコードを文字列で定義 C 言語的なコードを書きます char 配列でもファイルでも OK float 値を 2 乗して 結果を入れて返す : y[i] = x[i] * x[i]; 17

124 計算用の初期値, GPU に接続, コードのコンパイル アプリ ( ホスト ) 側で計算用の初期値 ( 配列 ) を準備 この配列の値を GPU( デバイス ) にコピーして渡します 1 個の GPU( デバイス ) に接続して コードをコンパイル OpenCL では GPU ではなく CPU を利用することも可 18

125 GPU で使用するパラメータの作成 パラメータ用の配列を GPU 内に作成して そこにアプリ ( ホスト ) 側の配列をコピーする 計算結果を格納する配列を GPU 内に作成 計算用の配列のサイズも渡しておく 19

126 GPU で計算実行, 結果を取得して確認, 後始末 GPU 内の複数の計算ユニットで並列実行 clfinish 関数で実行終了を待ち合わせ clenqueuendrangekernel 関数は非同期で実行される 計算結果の配列を GPU からホストにコピー clenqueuereadbuffer 関数で取得 ( 読み込みが終わるまで待たされる ) 試しに CPUの計算結果とGPUの計算結果を比較する 作成したリソース群を解放 20

127 17 Th Developer Camp OS X で SOAP クライアントを作成する 4 21

128 作成するサンプルシステムの目標 設計 SOAP サーバー Win32( または Win64) の Delphi( または C++Builder) で作成 スタンドアロン (.exe) サーバー ポート番号 8080 TClientDataSet を返すメソッドをクライアントに公開 ただし TClientDataSet そのものではなく XML 化した文字列 (string) を採用 SOAP クライアント MacOS X 向け FireMonkey アプリケーション Delphi または C++Builder で作成 WSDL から SOAP クライアント用プロキシを生成 Windows 版および MacOS X 版で共通!! サーバーから取得した TClientDataSet を TStringGrid に表示 22

129 SOAP サーバー データモジュールを用意 [ ファイル ]-[ 新規作成 ]-[ その他 ]-[Delphi プロジェクト ]-[Web サービス ]-[SOAP サーバーアプリケーション ] サンプルの SOPA サーバーインターフェースを作成 サービス名は Employee [ ファイル ]-[ 新規作成 ]-[ その他 ]-[Delphi プロジェクト ]-[Delphi ファイル ]-[ データモジュール ] TClientDataSet を配置 [ 項目の設定 ] でフィールドを追加 TIntegerField FieldName は id TWideStringField FieldName は fullname 23

130 クライアントに公開するメソッド function getemployeedatasetxml: string; stdcall; interface と実装 class を編集 [ サービス名 ]Intf.pas [ サービス名 ]Impl.pas TClientDataSet の XMLData プロパティで XML 表現を取得 24

131 SOAP クライアント WSDL をインポート [ ファイル ]-[ 新規作成 ]-[ その他 ]-[Delphi プロジェクト ]-[Web サービス ]- [WSDL インポータ ] FireMonkey フォームからクライアントプロキシユニットを参照 FireMonkey フォーム上に 以下を配置 TButton TClientDataSet TStringGrid [ 項目エディタ ] で項目 (TStringColumn) の追加 Id fullname 25

132 SOAP クライアント TClientDataSet を復元 TClientDataSet の XMLData プロパティに XML 表現をセットするだけ 26

133 17 Th Developer Camp 5 Update 4 で新たに追加された ios/firemonkey 向けモバイルコネクタ 27

134 Update 4 をインストールすると ios FireMonkey(FreePascal) 向けのモバイルコネクタがリポジトリフォルダに追加される RAD Studio 9.0 ObjRepos ja[en] dsrest connectors freepascal_ios42 フォルダ : ios 4.2 以降 freepascal_ios50 フォルダ : ios 5.0 向け DataSnap REST サーバーのプロジェクト Delphi の WebModule 用ユニットの uses( 例 : WebModuleUnit1.pas) Datasnap.DSProxyFreePascal_iOS C++Builder の WebModule 用ユニットの.h( 例 : WebModuleUnit1.h) #include <Datasnap.DSProxyFreepascal_iOS.hpp> プロジェクトの proxy フォルダにモバイルコネクタ ( 必要があればコピー ) サーバーを起動して Web ブラウザまたは専用ツールを起動 DSProxy.pas が自動生成される 28

135 モバイルコネクタをクライアントで利用する モバイルコネクタ用の.pas ファイル 15 個をプロジェクトに追加 接続先を指定デフォルトのプロトコルは http DataSnap サーバーへの接続サーバーメソッドの呼び出し DataSnap 特有の例外 DBXException 29

136 Windows 上で実行すると モバイルコネクタでサーバーメソッドの呼び出しをテストする Windows 上では メソッドの呼び出し時に例外が発生する仕様 XcodeとiPhoneシミュレータでのデバッグが必須 30

137 日本語などの Unicode 文字列が化けて送信される Update 4 に付属する DSRESTConnection.pas の不具合 QC# uses 句と EncodeUrlNS2 関数に加筆修正を施してください 予め リポジトリ内のファイル自体を書き換えておくと便利 31

138 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 でビルドして起動!! 32

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

21st Embarcadero Developer Camp T8

21st Embarcadero Developer Camp T8 17 Th Developer Camp T8 テクニカルセッション Delphi 言語再入門 ~ 拡張された RTTI を試してみる 東洋テクニカルシステム株式会社システム開発部福士光 1 17 Th Developer Camp アジェンダ 2 アジェンダ 従来の RTTI でできること Delphi 2010 で新しく拡張された RTTI( 拡張 RTTI) でできるようになったこと 試してみる

More information

21st Embarcadero Developer Camp T8

21st Embarcadero Developer Camp T8 17 Th Developer Camp T8 テクニカルセッション Delphi 言語再入門 株式会社シリアルゲームズ 取締役細川淳 1 17 Th Developer Camp 1 Class について改めて 2 class Delphi を使う上で切っても切れない class 型 class 型について どの位の事をご存じですか? 良くは判らないけど component もクラスだし Form

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

「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

10th Developer Camp - B5

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

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

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

Prog2_12th

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

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

「DataSnapユースケース研究」 多層技術の概要と最適化、実践テクニック

「DataSnapユースケース研究」 多層技術の概要と最適化、実践テクニック B4 Delphi/C++ テクニカルセッション DataSnap ユースケース研究 多層技術の概要と最適化 実践テクニック エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏 アジェンダ DataSnap の基礎 プロトコル サーバーメソッド 現実的な構成例 DMZ + ロードバランス ライフサイクル DB 接続のレイヤ 親クラス FireDAC デモ マルチデバイス対応 Tips HTTPS

More information

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

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

More information

Microsoft Word - Android_SQLite講座_画面800×1280

Microsoft Word - Android_SQLite講座_画面800×1280 Page 24 11 SQLite の概要 Android にはリレーショナルデータベースである SQLite が標準で掲載されています リレーショナルデータベースは データを表の形で扱うことができるデータベースです リレーショナルデータベースには SQL と呼ばれる言語によって簡単にデータの操作や問い合わせができようになっています SQLite は クライアントサーバ形式ではなく端末の中で処理が完結します

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

Delphi/400でFlash動画の実装

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

More information

Microsoft PowerPoint - chap10_OOP.ppt

Microsoft PowerPoint - chap10_OOP.ppt プログラミング講義 Chapter 10: オブジェクト指向プログラミング (Object-Oriented Programming=OOP) の入り口の入り口の入り口 秋山英三 F1027 1 例 : 部屋のデータを扱う // Test.java の内容 public class Test { public static void main(string[] args) { double length1,

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 12 回目クラス 今日の講義で学ぶ内容 クラスとは クラスの宣言と利用 クラスの応用 クラス クラスとは 異なる複数の型の変数を内部にもつ型です 直観的に表現すると int 型や double 型は 1 1 つの値を管理できます int 型の変数 配列型は 2 5 8 6 3 7 同じ型の複数の変数を管理できます 配列型の変数 ( 配列変数 ) クラスは double

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

PowerPoint プレゼンテーション

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

More information

Microsoft PowerPoint - はじめてのDataSnapアプリケーション_

Microsoft PowerPoint - はじめてのDataSnapアプリケーション_ 第 27 回エンバカデロ デベロッパーキャンプ A2 Delphi/C++Builder テクニカルセッション はじめての DataSnap 2013 年 X 月 X 日 田中芳起 Ver.1.0.0 1 http://www.avsoft.jp DataSnap の概要 多層型のデータベースアプリケーションを構築するためのフレームワーク Delphi3 で実装された技術で Delphi5 までは

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

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ 第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイルの作成方法 コンパイル方法について説明します IDL ファイルの作成にあたっては INTERSTAGE

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

Javaの作成の前に

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

More information

24th Developer Camp B1

24th Developer Camp B1 17 Th Developer Camp B1 Delphi チュートリアルセッション Delphi で学ぶ楽しいプログラミング基礎 デキるプログラマになる第一歩 株式会社シリアルゲームズ 細川淳 1 アジェンダ オブジェクト指向について Class について 付録 :Interface について 2 17 Th Developer Camp 1 OOP について 3 OOP とは? OOP = Object

More information

C#の基本

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

More information

Microsoft PowerPoint - visualprogram.ppt

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

More information

XNA Framework

XNA Framework XNA Framework 2.0 M@STER SESSION 01 XNA Framework の技術的背景 システム基盤は.NET Framework マネージ環境で実行 クロスプラットフォーム Windows, Xbox360, Zune DirectX, MDX から独立している 開発 実行環境の構造 XNA Game Studio (Visual Studio 2005) XNA Framework

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

平成 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

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

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

More information

PowerPoint プレゼンテーション

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

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

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~ .NET プログラマー早期育成ドリル VB 編 付録文法早見表 本資料は UUM01W:.NET プログラマー早期育成ドリル VB 編コードリーディング もしくは UUM02W:.NET プログラマー早期育成ドリル VB 編コードライティング を ご購入頂いた方にのみ提供される資料です 資料内容の転載はご遠慮下さい VB プログラミング文法早見表 < 基本文法 > 名前空間の定義 Namespace

More information

Javaプログラムの実行手順

Javaプログラムの実行手順 戻り値のあるメソッド メソッドには 処理に使用する値を引数として渡すことができました 呼び出し 側からメソッドに値を渡すだけでなく 逆にメソッドで処理を行った結果の値を 呼び出し側で受け取ることもできます メソッドから戻してもらう値のことを もどりち戻り値といいます ( 図 5-4) 図 5-4. 戻り値を返すメソッドのイメージ 戻り値を受け取ることによって ある計算を行った結果や 処理に成功したか失

More information

25th Developer Camp

25th Developer Camp C1 Delphi/iOS チュートリアルセッション エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏 アジェンダ OS X 側の準備 Windows 側の準備 画面の作り方 ( メインフォームとサブフォームム ) デバッグの基礎 ( ログの出力と確認 ) デバイスの回転に対応するには? iphone, ipad への対応方法 アプリのローカライズ手順 Delphi 言語の変更点 ( モバイル向け

More information

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

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

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

21st Embarcadero Developer Camp

21st Embarcadero Developer Camp 17 Th Developer Camp T2 テクニカルセッション 実践!Delphi デバッグテクニック 株式会社シリアルゲームズ 取締役細川淳 1 17 Th Developer Camp 1 IDE 統合デバッガ 2 Delphi の IDE 統合デバッガ IDE 統合デバッガについて 表示 デバッグ で表示される項目ごとに見ていきます 3 17 Th Developer Camp 1 ブレークポイント一覧

More information

PowerPoint プレゼンテーション

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

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

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

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

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

More information

UMLプロファイル 機能ガイド

UMLプロファイル 機能ガイド UML Profile guide by SparxSystems Japan Enterprise Architect 日本語版 UML プロファイル機能ガイド (2016/10/07 最終更新 ) 1. はじめに UML では ステレオタイプを利用することで既存の要素に意味を追加し 拡張して利用することができます このステレオタイプは個々の要素に対して個別に指定することもできますが ステレオタイプの意味と適用する

More information

Biz/Designer Vインストールガイド

Biz/Designer Vインストールガイド Biz/Browser AI 開発用 スタートアップガイド 株式会社オープンストリーム 目次 1. 事前準備... 3 2. Biz/Browser AI のインストール... 4 3. プロジェクトの作成 Hello World-... 5 4. Biz/Designer Mobile でリモートデバッグ設定をする... 13 5. Biz/Browser AI の設定... 14 6. リモートデバッグ...

More information

ミガロ.製品 最新情報

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

More information

Java知識テスト問題

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

More information

Microsoft PowerPoint - ruby_instruction.ppt

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

More information

CodeGear Developer Camp

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

More information

BizBrowser SmartDevice Android開発用スタートアップガイド

BizBrowser SmartDevice Android開発用スタートアップガイド Biz/Browser SmartDevice Android 開発用 スタートアップガイド 株式会社オープンストリーム Copyright(c) Open Stream, Inc. All Rights Reserved 1 目次 1. 事前準備... 3 2. Biz/Browser SmartDevice のインストール... 4 3. プロジェクトの作成 Hello World-... 5

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

PowerPoint プレゼンテーション

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

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 基本 Java プログラミング演習 第 13 回 担当 : 植村 今後の予定 7/15 第 13 回 今回 7/22 第 14 回 小テスト ( クラス ) 7/29 第 15 回 総まとめテスト レポート提出 期末テストの時間割に Java のテストの欄がありますが無視してください 再テストはまた別途連絡いたします 2 CHAPTER 11 はじめてのクラス前回の復習 クラスクラスを構成する要素

More information

デザインパターン第一章「生成《

デザインパターン第一章「生成《 変化に強いプログラミング ~ デザインパターン第一章 生成 ~ 梅林 ( 高田明宏 )@ わんくま同盟 デザインパターンとは何か (1) デザインパターンの定義 ソフトウェア開発におけるデザインパターンとは 過去のソフトウェア設計者が発見し編み出した設計ノウハウを蓄積し 名前をつけ 再利用しやすいように特定の規約に従ってカタログ化したもの (Wikipedia) 参考書籍 オブジェクト指向における再利用のためのデザインパターン

More information

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name クラス ( 教科書第 8 章 p.267~p.297) 前回は処理をまとめる方法として メソッドについて学習した 今回はメソッドとその処理の対象となるデータをまとめるためのクラスについて学習する このクラスはオブジェクト指向プログラミングを実現するための最も重要で基本的な技術であり メソッドより一回り大きなプログラムの部品を構成する 今回はクラスにおけるデータの扱いとクラスの作成方法 使用方法について説明していく

More information

Microsoft PowerPoint ppt

Microsoft PowerPoint ppt 独習 Java ( 第 3 版 ) 6.7 変数の修飾子 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 Object クラスと Class クラス 6.7 変数の修飾子 (1/3) 変数宣言の直前に指定できる修飾子 全部で 7 種類ある キーワード final private protected public static transient volatile 意味定数として使える変数同じクラスのコードからしかアクセスできない変数サブクラスまたは同じパッケージ内のコードからしかアクセスできない変数他のクラスからアクセスできる変数インスタンス変数ではない変数クラスの永続的な状態の一部ではない変数不意に値が変更されることがある変数

More information

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

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

More information

JAVA入門

JAVA入門 JAVA 入門後期 10 情報処理試験例題解説 H14 年度秋問 8 次の Java プログラムの説明及びプログラムを読んで, 設問に答えよ プログラムの説明 ディジタル論理回路シミュレータを作成するためのクラスとテスト用クラスである (1) ゲートを表す抽象クラス Gate のサブクラスとして, NOT ゲートを表すクラス NotGate 及び AND ゲートを表すクラス AndGate を定義する

More information

17th Embarcadero Developer Camp

17th Embarcadero Developer Camp 17 Th Developer Camp A2 Delphi/C++Builder/RadPHP テクニカルセッション次期 Delphi, C++Builder 詳説 いよいよ登場!RAD Studio XE の新機能 エンバカデロ テクノロジーズ エヴァンジェリスト 高橋智宏 1 アジェンダ Delphi XE, C++Builder XE の新機能 Subversion クライアント機能の統合

More information

Microsoft Word - CygwinでPython.docx

Microsoft Word - CygwinでPython.docx Cygwin でプログラミング 2018/4/9 千葉 数値計算は計算プログラムを書いて行うわけですが プログラムには様々な 言語 があるので そのうちどれかを選択する必要があります プログラム言語には 人間が書いたプログラムを一度計算機用に翻訳したのち計算を実行するものと 人間が書いたプログラムを計算機が読んでそのまま実行するものとがあります ( 若干不正確な説明ですが ) 前者を システム言語

More information

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

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

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

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

Prog2_9th

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

More information

PowerPoint Presentation

PowerPoint Presentation ソフトウェア演習 B GUI を持つ Java プログラムの 設計と実装 4.1 例題 :GUI を持った電卓を作ろう プロジェクトCalculator パッケージ名 :example ソースファイル : Calculator.java GUI.java EventProcessor.java 2 4.2 GUI とイベント処理 GUI の構成 :Swing GUI の場合 フレーム JFrame:

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 情報システム基礎演習 B 2016/01/28 (Thurs.) テーマ 4 JavaScript による電卓 Web アプリを作成しましょう 健山智子 (t.tateyama.es@cc.it-hiroshima.ac.jp) 広島工業大学情報学部知的情報システム学科知的情報可視化戦略研究室 (ival) 講義のアウトライン 2 1. グループの決定 : 1. 5 人での 6 グループ ( ランダム

More information

Microsoft PowerPoint - 09.pptx

Microsoft PowerPoint - 09.pptx 情報処理 Ⅱ 第 9 回 2014 年 12 月 22 日 ( 月 ) 関数とは なぜ関数 関数の分類 自作関数 : 自分で定義する. ユーザ関数 ユーザ定義関数 などともいう. 本日のテーマ ライブラリ関数 : 出来合いのもの.printf など. なぜ関数を定義するのか? 処理を共通化 ( 一般化 ) する プログラムの見通しをよくする 機能分割 ( モジュール化, 再利用 ) 責任 ( あるいは不具合の発生源

More information

Microsoft Word 基_シラバス.doc

Microsoft Word 基_シラバス.doc 4-5- 基 Web アプリケーション開発に関する知識 1 4-5- 基 Web アプリケーション開発に関する知識 スクリプト言語や Java 言語を利用して Ruby on Rails やその他 Web フレームワークを活用して HTML(4, 5) XHTML JavaScript DOM CSS といったマークアップ言語およびスクリプト言語を活用しながら Ⅰ. 概要ダイナミックなWebサービスを提供するアプリケーションを開発する際に

More information

使用する前に

使用する前に この章では Cisco Secure ACS リリース 5.5 以降から Cisco ISE リリース 2.4 システムへのデー タ移行に使用される Cisco Secure ACS to Cisco ISE Migration Tool について説明します 移行の概要 1 ページ Cisco Secure ACS から データ移行 1 ページ Cisco Secure ACS to Cisco ISE

More information

CubePDF ユーザーズマニュアル

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

More information

JavaScript 演習 2 1

JavaScript 演習 2 1 JavaScript 演習 2 1 本日の内容 演習問題 1の解答例 前回の続き document.getelementbyid 関数 演習問題 4 イベント処理 基本的なフォーム テキストボックスの入力値の取得 演習問題 5 演習問題 1 prompt メソッドと document.write メソッドを用いて, ユーザから入力されたテキストと文字の色に応じて, 表示内容を変化させる JavaScript

More information

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

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

More information

Developer Camp

Developer Camp 2F Delphi/C++ チュートリアルセッション Delphi でキカイを制御する アプリケーションの設計とテクニック 株式会社イマジオム代表取締役 高木太郎 1 はじめに この講演の内容 制御プログラムというもの 制御プログラム設計のポイント 制御プログラム実装のテクニック 3 どんなものを考えているのか? 例 :3 次元プリンタ ここに入っている PC がシステム全体を制御 3 次元プリンタ原理

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

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

データアダプタ概要

データアダプタ概要 データベース TableAdapter クエリを実行する方法 TableAdapter クエリは アプリケーションがデータベースに対して実行出来る SQL ステートメントやストアドプロシージャで TableAdapter で型指定されたメソッドと仕て公開される TableAdapter クエリは 所有るオブジェクトのメソッドと同様に 関連付けられたメソッドを呼び出す事に依り実行出来る TableAdapter

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション オブジェクト指向 プログラミング演習 第 2 回クラス インスタンス メソッド コンストラクタ 先週の出席確認 Webブラウザはどのようなプログラムでできているかこの問に答える前に Webブラウザとは 何か? 普段使ってますよね? Webブラウザを使ってできることと Webブラウザがやっていることを区別する必要がある 何をすれば Web ブラウザ と言えるのか NHK チコちゃんに叱られる! Web

More information

Ver.1.1

Ver.1.1 Ver.1.1 B3MLib ライブラリマニュアル / 使用環境 使用環境 Windows XP(SP2 以降 )/Windows Vista/Windows 7 各 32 ビット 64 ビット版 B3MLib.DLL と Extensions.DLL(B3M ライブラリセット ).NET Framework 2.0 以上 Windows XP サービスパック 2 以降 Windows Vista

More information

TFTP serverの実装

TFTP serverの実装 TFTP サーバーの実装 デジタルビジョンソリューション 佐藤史明 1 1 プレゼンのテーマ組み込みソフトのファイル転送を容易に 2 3 4 5 基礎知識 TFTP とは 実践 1 実際に作ってみよう 実践 2 組み込みソフトでの実装案 最後におさらい 2 プレゼンのテーマ 組み込みソフトのファイル転送を容易に テーマ選択の理由 現在従事しているプロジェクトで お客様からファームウェアなどのファイル転送を独自方式からTFTPに変更したいと要望があった

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

Prog2_6th

Prog2_6th 2016 年 11 月 10 日 ( 木 ) 実施 インテントインテントとは Android アプリは複数のアクティビティを持つことが出来, また, アクティビティ以外の要素も持つので, 複数のアクティビティ間, アクティビティとアクティビティ以外の要素との間といったオブジェクト間を結び付ける仕組みが必要となる その役割を担うのがインテントで, 複数のアプリ間やアプリとシステムとの間もインテントで結び付けることが出来る

More information

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき

More information

プログラミング実習I

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

More information

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成 KDDI ホスティングサービス (G120, G200) ブック ASP.NET 利用ガイド ( ご参考資料 ) rev.1.0 KDDI 株式会社 1 ( 目次 ) 1. はじめに... 3 2. 開発環境の準備... 3 2.1 仮想ディレクトリーの作成... 3 2.2 ASP.NET のWeb アプリケーション開発環境準備... 7 3. データベースの作成...10 3.1 データベースの追加...10

More information

WebReportCafe

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

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プロシージャ プロシージャの種類 Subプロシージャ Functionプロシージャ Propertyプロシージャ Sub プロシージャ Subステートメント~ステートメントで囲まれる 実行はするけど 値は返さない 途中で抜けたいときは Exit Sub を行なう Public Sub はマクロの実行候補に表示される Sub プロシージャの例 Public Sub TestSubProc() Call

More information

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid("text_box02_id"); if ("001" == statee

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid(text_box02_id); if (001 == statee 全体のヒント 1. テキストボックスの制御 1.1. 日付入力日付の入力ボックスは フォーカスが入った時にスラッショを消し フォーカスが他の項目等に移るとスラッシュが加わるようにする オンフォーカス 20100101 オフフォーカス 2010/01/01 1.1.1 オンフォーカス時にスラッシュを消す入力項目のスラッシュを消すには include/function.js ファイル内の var delslash

More information

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 ポインタ変数の扱い方 1 ポインタ変数の宣言 int *p; double *q; 2 ポインタ変数へのアドレスの代入 int *p; と宣言した時,p がポインタ変数 int x; と普通に宣言した変数に対して, p = &x; は x のアドレスのポインタ変数 p への代入 ポインタ変数の扱い方 3 間接参照 (

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

c5

c5 Delphi/C++Builder マルチデバイス対応アプリ開発の勘所 エンバカデロ テクノロジーズエヴァンジェリスト高橋智宏 www.embarcadero.com/jp アジェンダ 2 FireUI マルチデバイスデザイナ iphone 6(Plus), Android Wear 向けビュー, Yosemite(10.10) スタイル, Lollipop の新 ART メッセージボックス系はモバイルで要注意

More information

Embarcadero Developer Camp

Embarcadero Developer Camp 17 Th Developer Camp T5 Delphi テクニカルセッション Delphi 言語 再 入門ビギナーからエキスパートまで! 意外と知らない言語機能や落とし穴 株式会社シリアルゲームズ取締役細川淳 1 17 Th Developer Camp 1 Delphi ソースの構造 2 Delphi ソースの構造 プロジェクトファイル (.dpr) ユニット (.pas) リソースファイル

More information

PowerPoint Presentation

PowerPoint Presentation 製品ソフトウェアのセットアップ手順 UNIX/Linux 編 1. セットアップファイルの選択開発環境 / 実行環境 / バージョン /Hotfix/ インストール先 OS 2. 対象セットアップファイルのダウンロード開発環境の場合は 2 つのファイルが対象 3. ソフトウェア要件の確認 4. ソフトウェアのインストール 5. ライセンスの認証 1 1. セットアップファイルの選択 選択項目選択肢該当チェック

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

Team Foundation Server 2018 を使用したバージョン管理 補足資料

Team Foundation Server 2018 を使用したバージョン管理 補足資料 Team Foundation Server 2018 を使用したバージョン管理 Magic xpa 3.0/Magic xpa 2.5/uniPaaS V1Plus 補足資料 マジックソフトウェア ジャパン株式会社 2018 年 8 月 24 日 本ドキュメントは Magic xpa 3.0/Magic xpa 2.5/uniPaaS V1Plus で Team Foundation Server(

More information

KeyWeb Creator 概要 What s KeyWeb Creator? 動的なホームページを作成するためのツール!! 従来の Web ページ DB を利用した Web ページ <HTML> <HEAD> <TITLE>show_book</TITLE> </HEAD> <BODY> <DI

KeyWeb Creator 概要 What s KeyWeb Creator? 動的なホームページを作成するためのツール!! 従来の Web ページ DB を利用した Web ページ <HTML> <HEAD> <TITLE>show_book</TITLE> </HEAD> <BODY> <DI KeyWeb Creator R3.0 Beta 日本オラクル株式会社システム製品マーケティング部 1 KeyWeb Creator 概要 What s KeyWeb Creator? 動的なホームページを作成するためのツール!! 従来の Web ページ DB を利用した Web ページ show_book

More information

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

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

More information

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

Javaセキュアコーディングセミナー2013東京第1回 演習の解説 Java セキュアコーディングセミナー東京 第 1 回オブジェクトの生成とセキュリティ 演習の解説 2012 年 9 月 9 日 ( 日 ) JPCERT コーディネーションセンター脆弱性解析チーム戸田洋三 1 演習 [1] 2 演習 [1] class Dog { public static void bark() { System.out.print("woof"); class Bulldog

More information

GEC-Java

GEC-Java Copyright (C) Junko Shirogane, Waseda University 2019, All rights reserved. 1 プログラミング初級 (Java) 第 14 回継承 白銀純子 第 14 回の内容 継承 オーバーライド ポリモーフィズム Copyright (C) Junko Shirogane, Waseda University 2019, All rights

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

4-4- 基スクリプト言語に関する知識 コードの作成や修正が容易とされるスクリプト言語を学習し アプリケーション開発の手法を習得する 本カリキュラムでは まずスクリプト言語に位置づけされる Perl PHP Python JavaScript Ruby といった Ⅰ. 概要プログラミング言語の特徴に

4-4- 基スクリプト言語に関する知識 コードの作成や修正が容易とされるスクリプト言語を学習し アプリケーション開発の手法を習得する 本カリキュラムでは まずスクリプト言語に位置づけされる Perl PHP Python JavaScript Ruby といった Ⅰ. 概要プログラミング言語の特徴に 4-4- 基スクリプト言語に関する知識 1 4-4- 基スクリプト言語に関する知識 コードの作成や修正が容易とされるスクリプト言語を学習し アプリケーション開発の手法を習得する 本カリキュラムでは まずスクリプト言語に位置づけされる Perl PHP Python JavaScript Ruby といった Ⅰ. 概要プログラミング言語の特徴について解説し 動作環境の構築や基本的な構文について習得する

More information