峯文さんの投稿
プログラミング言語に投稿されました 続きを読む

プログラミング言語で記述されるプログラムは、区切り文字で区切られた一連のトークンから構成されます。 
トークンとは、基本的な構文要素としてプログラム内で意味を持つテキストの最小単位であり、字句ともいいます。  トークンを組み合わせて、式や宣言や文を組み立てます。 文とは、プログラム内で実行可能なアルゴリズム動作を記述するものです。

このトピックでは、汎用的な視点から、プログラミング言語を構成する要素を説明します。 
プログラミング言語の構成要素には下記のものがあります。

  • 字句構造
  • データ型、値及び変数
  • ブロック
  • 構造化
  • オブジェクト指向
  • 例外処理

字句構造(英:lexical structure)とは、プログラミング言語の字句解析が想定するトークンの構造のことです。  トークンには主に以下のような種類があります。

  • リテラル(英:literal)
  • 識別子(英:identifer)
  • キーワード(英:keyword)
  • 演算子(英:operator)
  • 区切(英:punctuator)
  • コメント(英:comment)

データ型(英:data type)とはデータの扱いに関する形式のことです。データ型は、プログラミングなどにおいて変数(英:variable)そのものや、その中に代入されるオブジェクトや値(英:value)が対象となります。データ型は単純型と複合型2種類に分類することができます。

  • 単純型 
    単純型とはプログラミング言語の仕様に元から存在する型であり、組み込み型、原始型、プリミティブ型、基本型などと呼ばれることもあります。単純型は、数値型、文字列型、論理型、ポイント型などの種類があります。
  • 複合型 
    複合型とは、プログラマがソースコードの記述などにより新たに作る型であり、複合データ型、ユーザ型、ユーザ定義型、参照型、リファレンス型などとも呼ばれることがあります。複合型は構造体、クラス、インタフェース、共用体、列挙型などの種類があります。 なお、プログラミング言語により、一部型がなかったり、単純型か複合型かの分類が違ったりすることがあります。

式(英:expression)とは、言語によって定められた優先順位や結びつきの規定に則って評価される値、変数、演算子、関数の組み合わせのものです。
数学における式と同様、式は評価された値を持っています。 

文(英:statement)とは、一つ以上の式や関数呼び出しで作られる、手続き構造の分割できない基本単位のものです。 
if文のように分岐構造を表すものや、代入文のように変数の値を変更するものなどがあります。 

ブロック(英:block)は複数の文から構成されます。ブロックには、単純な複数文が並べられた「順次構造」や、if-else-endifのような「選択構造」、for-nextのような「反復構造」があります。  

プログラムの基本構造は、「順次構造」、「選択構造」、「反復構造」の3つからなると考えられます。 基本的にはプログラムは先頭行から順に実行されていきます(順次構造)が、実際にはその流れを条件によって分岐させたり(選択構造)、同じ箇所を繰り返し実行させたりすること(反復構造)を頻繁に行います。 

殆どのプログラミンググ言語では、プログラム中で意味や内容がまとまっている作業をひとつの手続きとして定義できる仕組みが用意されていて、手続きの呼び出しによりプログラムが成り立ちます。  

プログラミング言語により、手続きそのものは、サブルーチンやプロシージャ、関数、メソッドなどさまざまの呼び方が存在します。 

オブジェクト指向(英:object-oriented)とは、オブジェクト同士の相互作用としてシステムの振る舞いをとらえる考え方です。  構造化がデータとそれを処理する手続きを分離する考えに対して、オブジェクト指向はデータとそれを処理する手続きを纏めて、オブジェクトとして表現します。  

オブジェクト指向は、JavasSriptのようなプロトタイプベースのものと、c++、javaなどのクラスベースのものがあります。  クラスベースで実現されるプログラミング言語では、クラスやインタフェースの作成、クラスの継承などの仕組みが提供されています。 

例外処理(英:exception)とは、プログラムがある処理を実行している途中で、なんらかの異常が発生した場合に、現在の処理を中断(中止)して、別の処理を行うことです。 

 例外処理がサポートされているプログラミング言語では、異常が発生可能な処理をtryブロックに入れて、例外が発生した時の処理をcatchブロックに入れるのが多く見られます。

プログラミング言語に投稿されました 続きを読む

以下の表にて言語の主な歴史を示します。

キーワード年度言語開発者特徴&言語歴史への影響
機械語・アセンブラ言語-----
高級言語1957年FORTRANIBM社高級言語としては最初のものである、現在も科学技術計算など大規模な計算を必要とする分野で使用されている
1958年ALGOL58-構造化プログラミングの考え方を取り入れた最初の言語である、あまり普及しなかったが、後に登場するPascalやC言語など多くの言語に影響を与えた
1960年CobolJ.Sammet初期の高級言語の1つであり、事務処理言語として広く普及した。現在でも企業の事務処理系システムで利用されている
1960年LISPMITボーランド記法を使用した独特の文法を持つ言語であり、「純粋ではない」が最古の関数型言語でもある。現在でも人工知能やEmacsのマクロなどに使用されている
1964年Basicダートマス大学その後、1970年代にマイクロソフトがMS BASICを発表し、8bitマシン時代 (1970年代後半-1980年代前半)の中心的な言語となった
構造化言語1966年BCPLケンブリッジ大学現在のコンパイラ技術の基礎を確立し、後にB言語に影響を与え、C言語へと発展した
1967年Simulaノルウェー計算センタオブジェクトの概念をもつ言語としては最古の言語である
1969年Pascal-中期の代表的な構造化言語の1つ。その後、教育用言語として1980年代頃から広く普及した。1995年に登場するDelphiもPascalの血を引く言語である
1972年Cデニス・リッチープログラム開発の中心的な言語である
1979年Adaアメリカ国防総省ジェネリックプログラミング(総称、汎化)、例外処理など先進的な考え方が初めに取り入れられた
オブジェクト指向言語1980年Smalltalk-オブジェクト指向を導入した黎明期の言語の1つであり、「オブジェクト指向」という言葉を最初に定義した言語でもある。後のオブジェクト指向型言語に多大な影響を与えた
1983年C++-C言語にオブジェクト指向を導入した、C言語と同様に開発の中心的な言語になった
1987年Perlラリー・ウォール主にCGIなどの用途で広く普及している
1991年VBMicrosoft社Windows専用のGUIアプリケーション開発言語
1995年Delphiボーランド社Pascalの血をひくWindows専用のGUIアプリケーション開発言語
インタプリタ言語・仮想マシン1995年Javaサン・マイクロシステムズ社本格的なオブジェクト指向言語の1つ。構文はC言語とかなり類似しているが、内容はまったく新世代の言語である、JavaVMという仮想マシン環境で動作
1995年RubyまつもとゆきひろPerlのように使えるスクリプト言語を、純粋なオブジェクト指向言語として設計
1995年PHPラスマス・ラードフWebサーバ側スクリプト言語として現在までも広く使われている
1997年JavaScript-標準仕様としてECMAScriptが標準化された
2002年C#Microsoft社CLRという仮想マシン環境で動くオブジェクト指向言語。Javaの影響を強く受けており、C++とJavaの中間的な特徴をもつ
2009年GoGoogle社並列コンピューティングに配慮したコンパイラ言語。依存性の注入を言語仕様にとりこみ、例外処理やクラスの継承、アサーション、オーバーロードといった機能を排除している
2011DartGoogle社Webブラウザ組込みのスクリプト言語であるJavaScriptの代替となることを目的に作られた。 2014年ECMA-408と言う標準規格に登録
2014SwiftApple社Apple社のiOSおよびOS Xのためのプログラミング言語。従来から用いられていたObjective-CやObjective-C++、C言語と共存することが意図されている
プログラミング言語に投稿されました 続きを読む

プログラミング言語とは、コンピュータに対する一連の動作の指示を記述するための人工言語のことです。プログラミング言語で記述されたこの一連の指示はプログラムと呼ばれ、それを記述することはプログラミングと呼ばれます。

コンピュータは、機械語と呼ばれる中央処理装置が直接解釈できる命令を実行することによって動作するものですが、人間にとって機械語を扱うことは非常に難しいため、機械語の代わりにプログラミング言語を用いることによって、より人間にとって扱いやすい表現でコンピュータに指示を与えることができるようになります。

プログラミング言語は様々な視点から分類することができます。

実行形態による分類

プログラムがどのように実行されるかという観点(実行形態)から、プログラミング言語を以下のように分類することができます。

  • インタプリタ言語
  • コンパイル言語

インタプリタ言語

インタプリタ言語はプログラムの実行時にプログラムのソースコードを1行ずつ逐一翻訳しながら進めていきます。例としては、以下の言語があげられます。

  • Basic
  • Javascript
  • Perl
  • Phyton
  • Ruby

コンパイル言語

インタプリタ言語とは逆に、実行する前にすべてのソースコードを機械語に翻訳してしまい実行ファイルと呼ばれる形式に変換します。例としては、以下の言語があげられます。

  • Cobol
  • Fortran
  • C++
  • Pascal
  • Java
  • C#
  • VB.net

判断基準について

JavaやC#、VB.netなどの.net系言語はプログラムが機械語にコンパイルされないが、JAVA仮想マシンの上に動作するバイト・コードや、.net frameworkランタイムの上に実行するILなどの中間コードを予め変換しておく必要があり、実行環境にはソースコードが配布されないため、コンパイル言語に分類することとします。 
一方、Javascriptなどのスクリプト言語は、パフォーマンス最適化を求めるため、殆どのインタプリタが内部的にも中間コードに変換しておいてから実行することになりますが、ソースコードが稼動環境に配布しないといけないことと、中間コードがjava バイトコードのように仕様を標準化されておらず、各インタプリタの内部実装に依存することから、コンパイル言語に分類されません。

パラダイムによる分類

プログラムをどのように構成するかという観点(パラダイム)から、プログラミング言語を以下のように分類することができます。

  • 手続き型言語
  • オブジェクト指向言語
  • 手続き+オブジェクト指向の言語
  • 関数型言語

手続き型言語

手続き型プログラミングは、プログラムをデータ構造とルーチンの集合に分割し、「手続き呼び出し」の概念に基づきプログラミングを行います。「手続き」は実行すべき一連の計算ステップを持つもの、プロシージャ、ルーチン、サブルーチン、メソッド、関数(数学の関数とは異なるが、関数型言語における関数とほぼ同義)など様々な呼称があります。手続きはプログラム実行中の任意の時点で呼び出すことができ、他の手続きからの呼び出しも、自分自身からの呼び出し(再帰呼び出し)も含まれます。  例としては、下以の言語があげられます。

  • basic
  • C
  • pascal

オブジェクト指向言語

オブジェクト指向プログラミングは、プログラムをオブジェクト(クラス)に分割し、オブジェクト間の「メソッド呼び出し」の概念に基づきプログラミングを行います。例としては、以下の言語があげられます。

  • Java
  • C#
  • Javascript…

手続き+オブジェクト指向の言語

手続きプログラミングとオブジェクト指向プログラミングと両方をサポートしている言語です。例としては、以下の言語があげられます。

  • c++
  • Delphi(Object Pascal)
  • VB

関数型言語

関数型言語とはすべての計算や処理などを関数の定義の組み合わせとして記述していくタイプのプログラミング言語です。主に科学計算や人工知能の領域に利用されており、業務アプリケーション開発に使われることはほとんどありません。  例としては、以下の言語があげられます。

  • LISP
  • F#

構文による分類

プログラムの構文という観点から、プログラミング言語を以下のように分類することができます。

  • COBOL構文式
  • ALGOL構文式

COBOL構文式

下記のように英語の文章のように記述できるのが特徴です。

代入文move value to variable.
算術式add value1 to value2 giving variable s
ubtract value2 from value1 giving variable
multiply value1 by value2 giving variable
divide value1 by value2 giving variable
サブルーチンの呼び出しcall subroutine
 using para1 param2
 returning result

ALGOL構文式

BNF記号を利用します。

代入文variable=value.
算術式variable = value1 + value2
variable = value1 - value2
variable = value1 * value2
variable = value1/ value2
サブルーチンの呼び出しresult = subroutine(para1,para2);

※COBOL等の言語の一部は新しいバージョンから+,-,*,/,=を含む構文もサポートされるようになりました。

用途による分類

用途という観点から、プログラミング言語を以下のように分類することもできますが、判断の基準は難しいところがあります。

  • 汎用化言語
  • ドメイン特化型言語
  • Add-on言語

汎用化言語

より汎用的に使われることを目的として設計された言語のことです。例としては、以下のの言語があげられます。

  • C
  • C++
  • Java

ドメイン特化型言語

特定の分野で使われることに目的を特化した言語のことです。例としては、以下のの言語があげられます。

  • Fortran 
    科学技術計算用
  • Cobol 
    事務処理用
  • Php 
    WEBサイト作成

Add-on言語

特定のソフトウェアやプラットフォームの機能をカスタマイズや拡張するためのAdd-onを開発するための言語のことです。例としては、以下の言語があげられます。

  • PL-SQL 
    Oracle DBMS
  • Transact-SQL 
    Sybase/SQLServer DBMS
  • ABAP 
    SAP ERP
SAPに投稿されました 続きを読む

SAP Business Suiteとは、SAP ERPをはじめとするSAP社の業務アプリケーションのスイート製品です。

SAP Business Suiteは、NetWeaverというSAPのテクノロジプラットフォームに基づいています。

構成

SAP Business Suiteは、以下のアプリケーション製品から構成されます。

  • ERP(Enterprise Resource Planning)
  • CRM(Customer Relationship Management)
  • SCM(Supply Chain Management)
  • PLM(Product Lifecycle Management)
  • SRM(Supplier Relationship Management)

世代

SAP Business Suiteソリューションは、公式的にR/1、R/2、R/3、S/4の4世代に分けられるようになっています。
ここの「R」はリアルタイム、「S」はシンプルを意味しているそうです。

  1. R/1
    1973年  メインフレームで動作する会計システム
  2. R/2
    1979年   R/1の進化版
  3. R/3
    1992年 様々なプラットフォームで動作するクライアント・サーバ型の分散アプリケーションシステム
  4. S/4
    2015年   同社のインメモリデータベースHANAのみで動作する
JavaVMに投稿されました 続きを読む

Javaクラスファイルの構造は以下の構造体定義で示すことができます。

 ClassFile {
         u4 magic;
         u2 minor_version;
         u2 major_version;
         u2 constant_pool_count;
         cp_info constant_pool[constant_pool_count-1];
         u2 access_flags;
         u2 this_class;
         u2 super_class;
         u2 interfaces_count;
         u2 interfaces[interfaces_count];
         u2 fields_count;
         field_info fields[fields_count];
         u2 methods_count;
         method_info methods[methods_count];
         u2 attributes_count;
         attribute_info attributes[attributes_count];
     } 

マジックナンバー

ClassFile構造体の先頭はマジックナンバーです.その値は16進でCAFEBABE と決まっています.先頭がCAFE BABEでないファイルはベリファイをパスしません。

バージョン

次の項目はこのクラスファイルを作成したバイトコード・コンパイラのバージョンです.バージョン番号がJavaVMのサポートしていないものだった場合は,それを実行することは許されていません.

コンスタントプール

コンスタントプールは定数やクラス名などを保持するためのものです.
コンスタントプールは可変長の要素を持つ,0~ConstantPoolCount-1までの一種の配列ですが,クラスファイルには0番目の要素は含まれていません.0 番のエントリはJavaVM内部用に予約されており,クラスファイルで使用することはできません.同時に0番は無効なインデックスであり,これを使用するクラスファイルはベリファイをパスしません.
コンスタントプールは配列として表現されてはいますが,要素が可変長であるため,添字から各エントリへ単純にアクセスすることはできません.  

アクセスフラグ

このクラスの修飾子に対応するフラグです.access_flagsの各ビットが public,final,interface,abstractの各修飾子に対応しています.finalと abstract,finalとinterfaceのように,同時にセットすることが許されていないフラグもあり,もしそれらが同時にセットされているとベリファイをパスしません.
通常の修飾子とは異なるsuperというフラグもありますが,これは古いコンパイラとの互換性を保つためのものです.新しいコンパイラでは常にセットされていなければなりません.
現在のバージョンで使われていないビットもありますが,それらは将来に備えて予約されており,現在は常に0にしなければなりません.これはフィールド情報やメソッド情報にあるアクセスフラグでも同様です.

thisクラス

this_classはこのクラス自身を表しています.これはコンスタントプールへのインデックスになっており,コンスタントプール中の該当するエントリはこのクラスへの参照を表すCONSTANT_Class_infoになっています.

スーパークラス 
super_classは直接のスーパークラスを表しています.直接のスーパークラスを持たないクラス(即ちjava.lang.Object)やインターフェースの場合は,この数値は0になります.それ以外の場合はthis_classと同様です. 

スーパーインターフェース 
interfaces[]は直接のスーパーインターフェースを表します.スーパークラスとは異なり,直接のスーパーインターフェースは複数持つ可能性があるので配列になっています.直接のスーパーインターフェースを持たない場合は interface_countが0になり,配列そのものがなくなります.それ以外は this_classやsuper_classと同様です.
図4の例では,this_classが2,super_classが1になっています.これより順に辿ると,このクラスの名前はGalaxyで,そのスーパークラスの名前は Sovereignであることが分かります. 

フィールド情報

fields[]はfield_info構造体の配列で,このクラスで定義しているフィールドに関する情報を保持しています.

access_flagsの各ビットは,このフィールドの修飾子に対応しています. publicとprivate,finalとvolatileなどを同時にセットするとベリファイをパスしません.また,このクラスファイルがインターフェースを表していた場合, finalとstaticがセットされていないとベリファイをパスしません.
name_indexで指定されるCONSTANT_Utf8_infoはフィールド名として有効な文字の並びを保持していなくてはなりません.そうでなければベリファイをパスしません.descriptor_indexについても同様です.
コンスタントプール回りの例が図4にあります.もう見れば分かると思いますが,fields[0]がint型のNcc,fields[1]がint型のMiranda,fields[2]が iveLongAndProsper型のYouWillBeAssimilatedというフィールドを,それぞれ表しています.  

メソッド情報

methods[]はmethod_info構造体の配列になっており,このクラスで定義されているメソッドに関する情報を保持しています.method_info 構造体は形式だけならばfield_info構造体と同じですが,ディスクリプタやアクセスフラグの詳細などが異なっています.

access_flagsの各ビットは,このメソッドの修飾子に対応しています. publicとprotected,abstractとfinalなど,同時に使用できないフラグもあります.それらが同時にセットされていた場合は,ベリファイをパスしません.  

属性

属性とは,今まで紹介された以外の様々な情報を保持するものです. ClassFile構造体の他,field_info構造体,method_info構造体,そして属性であるCode_attribute構造体の中で使われます.属性には仕様書で定義されている定義済み属性と,新たにユーザーが定義する属性とに分けられます.
属性の基本フォーマットとなるattribute_info構造体を図8に示します.全ての属性はこのフォーマットに従わなければなりません.逆に言えばこのフォーマットに従っており,且つ定義済み属性で予約されていない有効な名前を持つ属性ならば,新たに定義することはユーザーの自由です.

当然のことながら,ユーザーによって新たに定義された属性の中には JavaVMが認識できないものも出てきます.このため,認識できない属性を単純に読み飛ばすことはJavaVMに必須の機能になっています. 

 
定義済み属性
JavaVM仕様書で定義されている定義済み属性の一覧を下記の表に示します.このうち,JavaVMが必ず認識しなければならない属性はCode属性,ConstantValue 属性,Exceptions属性,InnerClasses属性,Synthetic 属性の5つです.それ以外の属性については必ずしも認識する必要はありません.(もちろん認識した方がより良いのですが.)
表3:定義済み属性一覧

属性内容使用される場所
ConstantValue属性staticの定数フィールドの値field_info
Code属性 バイトコードなど,メソッドの実装に関する情報method_info
Exceptions属性メソッドがスローするチェック例外method_info
InnerClasses属性内部クラスに関する情報ClassFile
Synthetic属性このメンバーがソースコードに現れないものであることを示すClassFile
field_info
method_info
SourceFile属性 このクラスを定義しているソースファイル名ClassFile
LineNumberTable属性code配列への添字(即ちバイトコード)と,その元となるソースファイル中の対応する行番号Code_attribute
LocalVariableTable属性 各メソッドのローカル変数に関する情報 Code_attribute
Deprecated属性 クラス,インターフェース,メソッド,フィールドが,既に新しいものと置き換えられたことを示すClassFile
field_info
method_info

オープンソースに投稿されました 続きを読む

以下の表にて、カテゴリー別にdojoライブラリのモジュールをリストアップしてみました。

カテゴリモジュール名 概要
Dojo Kerneldojo/_base/kernelversionの表示や、deprecatedな関数を実行したときに警告を出すと言ったライブラリのごく基本的な機能を提供。
Dojo Configurationdojo/_base/configDojoの設定に関連。
Module Loadingdojo/_base/loader旧ローダー及びAMDローダー。
dojo/require
Loader Pluginsdojo/domReadyAMDローダーのプラグイン
dojo/i18n
dojo/has
dojo/node
dojo/text
Feature Detectiondojo/hasクロスプラットフォームの機能検出と管理
dojo/sniff
dojo/uacss
dojo/_base/sniff
Languagedojo/_base/lang基礎的な言語の拡張パッケージ
Classesdojo/_base/declare型システム
Deferreds and Promisesdojo/promise非同期処理関連
dojo/Deferred
dojo/when
dojo/_base/Deferred
dojo/DeferredList
Events, Connectionsdojo/onイベントハンドリング関連。dojo/_base/connectとdojo/_base/eventは実質的にdeprecated
dojo/_base/connect
dojo/_base/event
dojo/Evented
dojo/behavior
Aspect Oriented Programmingdojo/aspectAOP関連
Requestsdojo/requestAjaxのコアとなるリクエストのハンドリング関連
dojo/_base/xhr
dojo/io/iframe
dojo/io/script
Propertiesdojo/Statefulオブジェクトクラスのプロパティの管理。
Topics/Publish/Subscribedojo/topicpublish/subscribeパターン
Data and Storesdojo/storeクライアントサイドのデータハンドリング
dojo/data
Routerdojo/routerHashベースのコールバックの仕組み。dojo/hashを使っている。
Parserdojo/parserdata-dojo-typeが指定されたノードをDijitのウィジェットに変換する
DOM and HTMLdojo/domDOMとHTMLを操作する
dojo/dom
dojo/dom-attr
dojo/dom-class
dojo/dom-construct
dojo/dom-form
dojo/dom-geometry
dojo/dom-prop
dojo/dom-style
dojo/dom-html
dojo/_base/html
Query, NodeList and Selectorsdojo/queryDOMクエリとその結果に対する操作を拡張。
dojo/NodeList
dojo/NodeList-data
dojo/NodeList-dom
dojo/NodeList-fx
dojo/NodeList-html
dojo/NodeList-traverse
dojo/selector
dojo/_base/query
dojo/_base/NodeList
DOM Effectsdojo/_base/fxDOMのアニメーション関連
dojo/fx
Browser Windowdojo/windowクロスブラウザな表示領域関連の参照。
dojo/_base/window
Document Lifecycledojo/readyDocumentのライフサイクル関連
dojo/domReady
dojo/_base/unload
Browser Historydojo/backブラウザのヒストリの管理
dojo/hash
Cookiesdojo/cookieCookieの管理
Mouse, Touch and Keysdojo/mouseユーザインプットの正規化と管理
dojo/touch
dojo/keys
Drag and Dropdojo/dndDrag and Drop関連
Testingdojo/robotユーザ入力のエミュレーション
dojo/robotx
JS基本オブジェクト拡張dojo/_base/array配列関連の拡張
dojo/string文字列処理の拡張
dojo/jsonJSON関連
dojo/_base/json
dojo/_base/Color色関係のクラスと関数
dojo/colors
dojo/dateDateの拡張
URL and Query Stringsdojo/_base/urlURLとURLクエリストリングの管理
dojo/io-query
Internationalizationdojo/i18nアプリケーションの国際化関連モジュール
dojo/nls
dojo/cldr
dojo/number
dojo/currency
HTMLに投稿されました 続きを読む

iframe要素は、別の文書を埋め込むインライン・フレームを作る際に使用します。 

HTML5では、次の属性が廃止されました。

  • frameborder属性
  • marginheight属性
  • marginwidth属性
  • scrolling属性
  • longdesc属性

また、次の属性が新しく追加されました。

  • srcdoc属性
  • sandbox属性
  • seamless属性

srcdoc属性

srcdoc属性はiframe要素で埋め込むHTML文書の内容を指定します。つまり、表示したいHTMLを属性値として直接入力します。
srcdoc 属性値に入る 「“」 及び 「&」 は実体参照文字(それぞれ 「"」「&」)でエスケープする必要があります。

sandbox属性

sandbox属性を指定すれば、そのインラインフレーム内のコンテンツは次のような制限がかけられます。

  • 同じドメイン内の文書であったとしても別ドメインの文書として扱われます
  • ほかのウィンドウやフレームを操作できなくなります、子孫フレームは操作可能
  • 最上位のウィンドウを操作できなくなります
  • フォームの送信を無効化します
  • スクリプトの実行を無効化します

一部の制限は、以下のキーワードの指定によって解除することが可能です。

  • allow-same-origin
    親文書と同じドメインを持つものとする
  • allow-top-navigation
    最上位のウィンドウの操作を許可する
  • allow-scripts
    スクリプトの実行を許可する

seamless属性

seamless属性が指定されると、そのiframe要素で読み込まれたコンテンツは、親ドキュメントの一部としてレンダリングされるようになります。 

JavaScriptに投稿されました 続きを読む

概説

クロージャとは、「関数の外側で定義された変数を持つ関数の実行時オブジェクト」です。

 JavaScriptでは、関数もオブジェクトであり、生成から廃棄されるまでのライフルサイクルを持ちます。関数が外側の関数で定義されたローカル変数を参照していれば、関数オブジェクト生成時の実行環境も関数オブジェクトの属性の一部(クロージャスコープ属性)として維持し続けられます。

サンプル

下記のコードを例として説明します 。

var x = 1; 
function Counter() { 
  var n = 0; 
  return function () { 
     n = n + x;     
     return n;   
  }; 
} 

関数Counter()は、内部でローカル変数nを定義して、それを参照するクロージャを返します。

実行1  

var a = Counter(); 
console.log("a()=" + a()); 
console.log("a()=" + a()); 
console.log("a()=" + a()); 
console.log("a()=" + a()); 

上記コードの実行結果は次の通りになります。 

a()=1 
a()=2 
a()=3 
a()=4 

変数nの値が保持されていることは分かります。

Counter()実行後の環境の状態

┌────────┐     
     グローバル環境       ┌───────┐       
       x => 1         ←─  Counterの環境       
       a => function           n => 0      ←─ クロージャa   
└────────┘               └───────┘ 

実行2  

var a = Counter(); 
var b = Counter(); 
console.log("a()=" + a()); 
console.log("a()=" + a()); 
console.log("b()=" + b()); 
console.log("a()=" + a()); 
console.log("b()=" + b()); 

実行結果は次の通りです 。

a()=1 
a()=2 
b()=1 
a()=3 
b()=2 

関数Counter()が実行されるごとに異なる環境が生成されることはわかります。  

Counter()2回実行後の環境の状態 

┌────────┐                ┌──────────┐    
   グローバル環境    ←─  1回目のCounterの環境       
     x => 1                      n => 0          ←─ クロージャa       
     a => function        └──────────┘       
     b => function        ┌──────────┐   
└────────┘          ←─ 2回目のCounterの環境  
                                 n => 0          ←─ クロージャb 
                          └──────────┘ 
JavaScriptに投稿されました 続きを読む

構文構造を利用

例1:

var o = {
  a: 1
}; 

上記のoは Object.prototype をプロトタイプとして生成され、 o.hasOwnProperty('a') がtrueを戻します。

例2:

var a = ["yo", "whadup", "?"]; 

上記のaは Array.prototype をプロトタイプとして生成され、三つの要素を持ちます。

コンストラクタ関数を利用

JavaScriptに於ける「コンストラクタ」は、関数を new 演算子を使って呼び出す事で実現可能です。 

下記のコードを例とします。

function Graph() {
  this.vertexes = [];
  this.edges = [];
} 
Graph.prototype = {
  addVertex: function(v){
     this.vertexes.push(v);
  }
}; 
var g = new Graph(); 

上記のコードで生成されるg は「vertexes」と「edges」の自身のプロパティを持つオブジェクトであり、 g.[[Prototype]] はインスタンス化する時点の Graph.prototype の値になります。

Object.Create メソッドを利用

ECMAScript 5 は Object.create という新しいメソッドを紹介しています。このメソッドを呼び出すと、新しいオブジェクトが生成されます。
関数の最初の引数が、このオブジェクトのプロトタイプになります。 

var o1 = { // o1 ---> Object.prototype ---> null
  a: 1
};  
var o2 = Object.create(o1); // o2 ---> o1 ---> Object.prototype ---> null 
console.log(o2.a); // 1 (継承された) 
var o3 = Object.create(o2); // o3 ---> o2 ---> o1 ---> Object.prototype ---> null 
var o4 = Object.create(null); // o4 ---> null 
console.log(o4.hasOwnProperty); // undefined、なぜなら o4 は Object.prototype から継承していないからです。 
JavaScriptに投稿されました 続きを読む

プロトタイプベースとクラスベース

C++、Javaのようにクラス-インスタンスという概念を使用するオブジェクト指向言語のことを、クラスベースオブジェクト指向言語(Class Based Object Oriented Language)と言います。
それとは異なり、JavaScriptでは、クラス-インスタンスという考え方をせず、オブジェクトは別なオブジェクトを元(プロトタイプ)にして独自の特徴を付加することで存在する、という考え方をします。
このようなオブジェクト指向言語のことを、プロトタイプベースオブジェクト指向言語(Prototype Based Object Oriented Language)と言います。

JavaScriptでは、オブジェクト自身が独自の特徴を付加するので、オブジェクトにプロパティを追加したり削除したりすることができます。

コンストラクタという機構

JavaScriptでオブジェクトを生成するには、コンストラクタとnewという演算子を使用します。 
実はコンストラクタとは関数オブジェクトの事です、全ての関数はオブジェクトを生成するコンストラクタになる可能性がありますが、まずは一番シンプルな例を見てください。

単純なコンストラクタ 

function SimpleConstructor() {} 
var obj = new SimpleConstructor(); 

普通にfunction文で定義した関数にnewをつけて呼び出しているだけです。こうすることで、新しいオブジェクトが生成され、戻り値として返されます。 
return文を記述しなくても生成されるオブジェクトが返される事に注意してください。

通常、コンストラクタとして呼ばれる関数の中では、生成しようとするオブジェクトの初期化を行います。 

function PropSetConstructor() { 
  this.prop1 = 10; 
  this.prop2 = 20; 
} 
var obj1 = new PropSetConstructor(); 
alert(obj1.prop1);    // 10 と表示される。 
var obj2 = new PropSetConstructor(); 
alert(obj2.prop1);    // 10 と表示される。 

コンストラクタとして関数オブジェクトを実行した場合、thisには今新たに生成されようとしているオブジェクトが入ります。
従って、thisにプロパティを設定してやれば、newして作成されるオブジェクトの初期定義を行う事ができます。
こうする事で、同じコンストラクタを用いて複数のオブジェクトを生成すると、同じプロパティを持つオブジェクトを簡単に作成する事ができます。

もちろんdelete演算子を使用すればプロパティを削除できるので、同じコンストラクタから作成されても常に必ず同じプロパティを持つとは限らない事に注意してください。 

暗黙の参照

プロトタイプベースのオブジェクト指向言語では、オブジェクトトは別のオブジェクトをプロトタイプとしてできていると考えます。JavaScriptではこれを暗黙の参照という形で実現している。オブジェクトAをプロトタイプとしているオブジェクトBは、オブジェクトAに対し暗黙の参照を持っているという状態になります。 
Javaで言うなれば、非staticなinner classのインスタンスがenclosing classのインスタンスに対し、暗黙の参照を持っている状態を考えてもらえば良いです。つまりしたのような状態になります。 
暗黙の参照: 

var objectA = ... 
// objectB は objectA に対し暗黙の参照を持っている 
// (objectAはobjectBのプロトタイプである)。 
var objectB = ... objectA.hoge = 10;   // objectA の hoge プロパティをここで設定する。 
alert(objectB.hoge);  // 10 と評価される。 

すなわち、あるオブジェクトがプロパティを評価された時、自分自身がそのプロパティを持っていなければ、暗黙の参照をたどって、その先のオブジェクトのプロパティを評価します。 
これがJavaScriptにおけるプロトタイプの仕組みです。

prototypeオブジェクト

全ての関数オブジェクトはprototypeというプロパティを保持している。関数オブジェクトを定義した直後では、このprototypeには何もプロパティを持たないシンプルなオブジェクトを参照しているが、別のオブジェクトを代入したり、新たなプロプロパティを設定したりする事が可能です。 
その関数オブジェクトをコンストラクタとして生成されたオブジェクトは、コンストラクタのprototypeプロパティに代入されているオブジェクトに対し、暗黙の参照を持つのです。つまりprototypeが指すオブジェクトトがプロトタイプとなるというわけです。  

具体的にコードは以下: 
prototypeオブジェクト 

function PrototypeTestConstructor() {} 
// prototype オブジェクトに prop1 というプロパティを設定。 
PrototypeTestConstructor.prototype.prop1 = 30; 
var obj = new PrototypeTestConstructor(); 
alert(obj.prop1);    // 30 と表示される。 

つまりPrototypeTestConstructorによって生成されたオブジェクトは、PrototypeTestConstructor.prototypeが指すオブジェクトを暗黙的に参照するようになります。 
あるコンストラクタをnewしてできるオブジェクトが全てそのprototypeへの暗黙の参照を持つので、そのプロパティはクラス変数の様にnewされたオブジェクトで共有されることとなる。次の例を見てください。  

代入はprototypeをたどらない。 

function Constructor() {} 
Constructor.prototype.prop1 = 30; 
var objA = new Constructor(); 
var objB = new Constructor();  //   [α] 
alert(objA.prop1)     // 30 と表示される。 
alert(objB.prop1)     // 30 と表示される。 
objA.prop1 = 100;     //   [β] 
alert(objA.prop1)     // 100 と表示される。 
alert(objB.prop1)     // 30と表示される 

というのも、読み取り評価の時は、暗黙の参照をたどるのですが、代入やdelete演算子は、たどらないのである。従って、objA.prop1 = 100;を行った時点で、objAそのものにprop1というプロパティが新たに作られ、そこに100が代入されるのです。よってConstructor.prototype.prop1の値は変わらないままとなります。

この場合、objA.prop1を呼び出すと、objA自身にはprop1があるため、その値である100と評価され、objB.prop1を呼び出すと、暗黙の参照をたどり30と評価されます。

この仕組みがプロトタイプベース言語であるJavaScriptのオブジェクトの根幹となります。

プロトタイプチェーン

コンストラクタのprototypeには、オブジェクトも代入できるので、prototypeに代入したオブジェクトが別のオブジェクトをプロトタイプにしている事もあります。そもそも全てのオブジェクトはObject.prototypeを暗黙的に参照しています。

こうしたプロトタイプの連鎖のことをプロトタイプチェーンと呼びます。 
プロトタイプチェーン: 

var objA = new Object(); 
objA.prop1 = 10; 
function Func1() {} 
Func1.prototype = objA; 
var objB = new Func1(); 
function Func2() {} 
Func2.prototype = objB; 
var objC = new Func2(); 
alert(objC.prop1);       // 10 と評価される。 

 以上までがJavaScriptのプロトタイプのメカニズムです。JavaやC++といったクラスベースの言語には根本的に無い考え方なので若干戸惑うかも知れないが、全てのオブジェクトがが実体を持った別のオブジェクトトに連鎖しているということが分かれば整理できます。

ではあるオブジェクトのプロパティを評価した際、仮に何らかの値が返ってきたとしても、そのオブジェクト自身がプロパティを持っているのか、そのオブジェクトのプロトタイプが持っているのか、判断することができません。     そこで、JavaScriptでは全てのオブジェクトに(すなわちObject.prototypeに)、hasOwnPropertyというメソッドが定義されている。これは引数で与えた文字列に一致するプロパティを、そのオブジェクト自身が持っているかどうかを判断してくれるメソッドです。  具体例を見てください。 

function Constructor() {} 
Constructor.prototype.prop1 = 30; 
var objA = new Constructor(); 
// objA 自体は持っていないので false。 
alert(objA.hasOwnProperty("prop1")); 
objA.prop1 = 100; 
// objA 自体が持っているので true。 
alert(objA.hasOwnProperty("prop1")) 

このhasOwnPropertyメソッドを使うことで、そのオブジェクトト自身にプロパティがあるかどうかを判断することができます。

継承

継承に関して言えば、 JavaScript には 1 つだけオブジェクトに関する概念があります。あるオブジェクトはプロトタイプと呼ばれる、他のオブジェクト(または null )への内部的な繋がりを持ちます。このオブジェクトは、あるオブジェクトがそのプロトタイプとして null を持つまで、なおプロトタイプを持ちます。このような、オブジェクトが他のオブジェクトのプロトタイプとなることの連鎖を、プロトタイプチェーンと呼びます。

プロパティの継承

JavaScript のオブジェクトはプロパティ(自身のプロパティを指す)の動的な「かばん」で、プロトタイプオブジェクト(または null )への繋がりを持っています。  あるオブジェクトにプロパティをセットすると、自身のプロパティが作られます。この取得と設定の動作の規則の唯一の例外は、 getter または setter とのプロパティの継承が起こるときです。

「メソッド」の継承

JavaScript それ自体に「メソッド」はありません。 JavaScript には関数があり、これらの関数はプロパティの値として使用することができます。 関数の継承(メソッドのオーバーライドの一種)は、上で見せたような property shadowing を含めたどのような値とも、同じように働きます。

関数がオブジェクトのプロプロパティ(自身の、または継承された)であることのたった1つの違いは、関数が実行されるときの this の値です。

JavaScriptに投稿されました 続きを読む

JavaScriptは 最初は Sun Microsystems社とNetscape Communications社が開発した、 Webブラウザなどでの利用に適したスクリプト言語です。ブラウザ以外のソフトウェアにも簡易な制御プログラムの記述用言語として移植されており、 Microsoft社のWindowsやMacromedia社の「Flash」などがあります。

各社の実装に微妙な違いがあり、ブラウザによって使えない機能があったり同じプログラムでも挙動が異なったりする問題があったため、ヨーロッパの標準化団体ECMAがソフトウェアメーカーに呼びかけて、通称「ECMAScript」と呼ばれる標準を発行しました。2014年5月現在ECMAScriptの最新バージョンは2009年12月に策定されたECMAScript 5th Editionで6th editionの策定も進みつつあっています。

JavaScriptとECMAScript

以下の表でJavaScriptとECMAScriptのバージョン対応を示します。

JavaScriptバージョン公開日ECMAScriptとの対応
1.01996/03-
1.11996/08-
1.21997/07-
1.31998/10edition 1 edition 2
1.4廃棄
1.52000/11edition 3
1.62005/11
1.72006/10
1.82008/06
1.8.52010/07edition 5
1.8.6--
2.0-edition 6

主要ソフトウェアのJavaScript対応

以下の表で主要ソフトウェアのバージョン毎のJavaScript対応を示します。

ソフトウェアバージョン呼称対応するJavaScriptバージョン
Chrome33JavaScript1.7
Firefox1.0JavaScript1.5
1.51.6
2.01.7
3.01.8
41.8.5
171.8.6
IE6JScript5.61.5
7JScript5.7
8JScript5.8
9JScript?1.8.5
Adobe Acrobat11JavaScript1.5?
JavaScriptに投稿されました 続きを読む

Javascriptは、ほかの言語と比べると、以下のような特徴を持っております。

完全なオブジェクトベース

JavaScriptでは、数値や文字列、配列、関数などのデータはすべてオブジェクトです。例えばStringオブジェクトは文字列の長さを返すlengthというプロパティを持っていますので、“Hi,world!”.lengthを参照すると、 9がリターン値になります。 
JavaScriptのオブジェクトは、単純に言うと「キーと値のペアの集合」です。ですので、これは一般的なプログラミング言語でよくあった連想配列の性質を持っていると言えます。

プロトタイプを使ったオブジェクト指向

Java や C++ といったクラスベースのオブジェクト指向言語はクラスとインスタンスという、2つの異なる実体があるという概念に基づいています。 
クラスはあるオブジェクトの集合を特徴付けるすべてのプロパティ(Java ではメソッドとフィールドを、C++ ではメンバをプロパティと見なす)を定義します。 
クラスとはそれが表すオブジェクトの集合という抽象的なものです、例えば、Employeeクラスは従業員すべてを含む集合を現します。 
一方、インスタンスはクラスを実例にしたものです、例えば、Victoriaさんは、Employeeクラスのインスタンスとなることができます。

JavaScriptのオブジェクト指向は、プロトタイプを利用しています。クラス/インスタンスの区別がなく、単にオブジェクトがあるだけです。但し、原型的なオブジェクトという概念がありまして、このオブジェクトは新しいオブジェクトの初期プロパティを取得する元になるテンプレートとして使用されます。 
どのオブジェクトも、作成時にも実行時にもそれ独自のプロパティを指定できます。さらに、どのオブジェクトも別のオブジェクトに対するプロトタイプとして関連付けることができます。

関数型プログラミングの一部サポート

JavaScriptでは関数型言語の一部の機能が備わっています。関数型言語それ自体は難しいかも知れませんが、JavaScriptで関数型を考えるにあたっては、下記三点を抑えられればよいです。

  • すべての関数が値を返す
  • 関数に副作用がない(参照透過)
  • 関数を値として扱える

すべての関数が値を返す

すべての関数は値を返します、明示的な実装がなければ、返却値はundefinedになります。

関数に副作用がない

簡単に考えると、下記2点となります。

  • 関数は外側の変数を変更しない
  • 参照渡しの引数の値を変更しない

関数が値として扱える

関数が値として扱えるので引数に関数を渡して処理を委譲、もしくは、関数を返り値として処理を委譲する事もできます。 
これらの関数を高階関数と言います。 
さらに、関数は、すべてクロージャであり、定義された時の環境への参照をもっているため、クロージャの性質を利用して、JavaSript固有のざまざまなカプセル仕組みを実現することができます。

JavaScriptはよく、「少ないソースコードで高機能のロジックを簡潔に実現できる」プログラミング言語として高く評価されていますが、これは、ほとんどこの関数のパワーからできているものと考えれます。

iOSに投稿されました 続きを読む

iOS(アイオーエス)は、アップルが開発・提供するOSシーリズです。iPhone、iPod touch、iPad、iPad mini、Apple TVに搭載されています。 
元はiPhone OS(アイフォーン オーエス)という名前だったが、2010年6月21日にリリースされたバージョン4.0からは現在のiOSという名称に変更されました。

タイムライン

年月出来事
2007年6月iPhone OS公開
2008年7月iPhone OS 2公開、AppStore搭載 ソフトバンクからiPhone OS 2が搭載されたiPhone3Gが発売
2009年6月iPhone OS 3公開  ソフトバンクからiPhone OS 3が搭載されたiPhone3GSが発売、日本で爆発的にiPhoneが流行
2010年6月iOS4公開、マルチタスクサポート
2011年10月iOS5公開、Siriサポート、iCloud連携
2012年9月iOS6公開、Apple製の地図アプリ内蔵
2013年9月iOS7公開、スキュモーフィズムからフラットデザインへ変更
2014年9月iOS8公開、ファミリー共有機能
2015年iOS9公開、3D Touch登場
2016年iOS10公開、日本でもApple Payが利用可能に
2017年iOS11公開、カメラ機能の強化とアニ文字
2018年iOS12公開

Windowsに投稿されました 続きを読む

Windowsとは、Microsoft社のOSのシリーズ名です。  

主な歴史

バージョン1.0は1986年に発売され、1992年に発売されたWindows 3.1がPC/AT互換機用の標準OSとして爆発的に普及しました。 
クライアント版のOSとして、その後継のWindows95、Windows98、WindowsMeともMS-DOSを土台にしております。

一方、1993年から発売が開始されたWindows NTシリーズはネットワークサーバ用途を前提に0から開発された、APIレベルでは互換性を持っていながら基本構造がWindows3.x/9xと全く異なるOS系列です。
暫くクライアント版の9x系列とサーバ版のNT系列と共存の時代でしたが、Windows2000からクライアント版のWindowsもNTベースのシステムを採用するようになりました。
この結果、Windows 95/98/Meで採用された9xカーネルベースの製品は現在は存在しません。

2019年現在の最新版は、クライアント版はWindows 10、サーバ版はWindows Server 2019、モバイル版はWindows  10 Mobileです。

タイムライン

下記の表にてWindowsのタイムラインを示します。

年代出来事
1982~1985年Windows 1.0 の登場
1987~1990年Windows 2.0 ~ 2.11 - より多いウィンドウ、より速いスピード
1990~1994年Windows 3.0 ~ Windows NT - いよいよグラフィックスへ
1995~1998年Windows 95 - PC とインターネットの時代の到来
1998~2000年Windows が仕事と遊びのために、Windows 98、Windows 2000、そして Windows Me へと進化
2001~2005年Windows XP - 安定性、使用便利性、高速
2006~2008年Windows Vista - セキュリティでスマートに
2009~2011年Windows 7 で Windows タッチを導入
2012年Windows 8 がアプリとタイルを特色に
2013年Windows 8.1 が Windows 8 のビジョンを拡大
Windows Server 2012 R2
2015年Windows 10
Windows 10 mobile
Windows 10 IoT
2016年Windows Server 2016
2018年Windows Server 2019
金融に投稿されました 続きを読む

銀行の主な業務は以下のように分類することができます。

  • 固有業務 
    銀行法で定められた銀行の本業で、銀行の3大業務と呼ばれている「預金業務」「融資業務」「為替業務」から構成されます。
    • 預金業務 
      たくさんの預金者から預金という形でお金を集める業務です。
    • 融資業務 
      資金を必要としている会社などに貸し付ける業務です。
    • 為替業務 
      給料や年金の受け取りや、電気代・水道代といった公共料金の支払いなど、会社や個人などの依頼に基づいて、お金を送金したり受け取ったりする業務です、決済業務ともいいます。
  • 付随業務 
    固有業務以外で銀行法で定められている業務です。以下のような業務があります。
    • 債務保証
    • 社債の募集委託
    • 手形引受
  • 周辺業務 
    固有業務以外で銀行法で定められいない業務です。以下のような業務があります。
    • クレジットカード
    • 信用保証
    • 貸金庫
金融に投稿されました 続きを読む

銀行は以下のように分類されることが多いです。

  • 都市銀行 
    全国規模で銀行サービスを提供する銀行です。多くの場合国際的な取引も行います。全国的なサービス網を持つことは強みです。
  • 地方銀行 
    地方都市に密着する銀行です。地域密着型のサービスを提供することは強みです。
  • 信託銀行 
    通常の銀行業務に加えて「信託業務」を行うことが許されている銀行です。相続や不動産仲介などに強みを持っています。
  • 外国銀行 
    日本国外に本店がある銀行です。
  • 新たな形態の銀行 
    ネットバンク等  代表的なものが「ネットバンク」あとはATM決済を基本とした「セブン銀行」、商業施設との連携を基本とした「イオン銀行」などがあります。
ERPに投稿されました 続きを読む

歴史

SAPのERPソリューションは歴史的にはR/1→R/2→R/3→ERP→S/4 HANAの5世代に分けることができます。 
R/1→R/2→R/3の「R」はリアルタイムという意味が含まれていて、S/4のSはシンプルの意味です。

世代リリース日特徴その他:SAP社/IT世界の出来事
R/11973年
  • メインフレームで動作する会計システムとしてアセンブラ言語で開発されていました
  • ミドルウェアとなるBASISの概念がなかったため、プラットフォームに合わせてアプリケーションを構築する必要
  • 欧州の多国籍企業向けに複数の通貨、言語に対応していました
  • パラメータ変更によって各社の個別要件の差異を吸収するパッケージ型ソフトウェアという概念を実現
  • 1972年にSAP社が数名のIBM出身者によって成立されました
R/21979年
  • ABAP、Dynpro言語で開発されています
  • 稼働環境はIBMおよび独シーメンス社のメインフレームでした
  • 1980年代はメインフレーム時代の全盛期です
R/31991年(初版)
  • クライアント/サーバシステム、オープンプラットフォームに対応しています
  • UNIXシステムの上に動作できます
  • 80年代後半からはオープンシステムの波が寄せ始め、90年代には完全にUNIXやWindowsの時代となります。
  • SAPジャパンの設立が1992年
1996年
  • 3.1版がリリースされました
  • Windowsの上に動作できます。
  • インターネット経由での利用が可能になっています
1997年
  • 4.0版がリリースされました
  • インターネット上でのB2Bが可能になっております
2002年
  • R/3 Enterpriseがリリースされました
  • 基盤になるBasis(ベーシス)が切り離しされ、Webアプリケーションサーバに変わりました。
2003年
  • mysAP ERP 2003がリリースされました
  • SAP R/3 EnterpriseとNetWeaverとセットにした製品です
ERP2004年
  • mySAP ERP 2004がR/3 Enterpriseの後継者としてリリースされました
  • 「SAP ECC (ERP Central Component; ERPの中央プログラム)5.0」と統合基盤「NetWeaver2004」が融合されていて、従来のR/3 Enterpriseの機能はSAP ECC 5.0に引き継がれています。
  • 2008年1月にBI(ビジネス・インテリジェンス)ソフトウェア専業最大手のBO社を68億ドルで買収しました
  • 2010年5月にデータベースベンダのSybase社を58億ドルで買収しました
2006年
  • mySAP ERP 2005⇒SAP ERP 2005⇒SAP ERP 6.0がリリースされました
  • mySAP ERP 2004の後継者としてリリースされた製品。
  • SOA や内部統制の対応が特色になっています。
  • 旧SAP R/3の部分は、SAP ECC 6.0と呼ばれています。
S/4 HANA2015年同社のインメモリーデータベースSAP HANAをプラットフォームに採用-

テクニカルに投稿されました 続きを読む

用途

日時を指定フォーマットで文字列に変換する。

構文

@FormatDateTime(strDateTime, strPattern, strTimeZone, strLocale)

パラメータ

strPattern

javaのSimpleDateFormatクラスの日付パターンに従っています。

文字説明出力例(記述例)
G紀元AD(G)
y1996(yyyy); 96(yy)
MJuly(MMMM); Jul(MM); 07(MM)
w年における週27(ww)
W月における週2(W)
D年における日189(DDD)
d月における日10(dd)
F月における曜日2(F)
E曜日の名前Tuesday(EEEEEEE); Tue(EEE);
u 曜日の番号(1:月曜、・・・7:日曜)1(u)
a午前/午後PM(a)
H一日における時(0 - 23)00(HH)
k一日における時(1 - 24)24(kk)
K午前/午後の時(0 - 11)00(KK)
h午前/午後の時(1 - 12)12(hh)
m30(mm)
s55(ss)
Sミリ秒978(SSS)
z一般的なタイムゾーンPacific Standard Time; PST; GMT-08:00
データモデルに投稿されました 続きを読む

クリップボードは、データオブジェクト(Pegaではページと呼ばれる)を保持するためのメモリ領域です。

システムページ

システムページはアプリケーションサーバーの起動時に作成され、アプリケーションサーバーがシャットダウンされるまで存続します。このページには、実行時のシステム全体の状態と設定情報が含まれています。

リクエスターページ

リクエスターページは、ユーザー(ゲストまたは認証済み)に関連付けられたデータ、リクエスタページは、リクエスタの存続期間中存在します。

スレッドページ

スレッドページのセットは、pxThreadページ、匿名(名前なし)ページ、および名前付きページで構成されています。

pxThreadページには、スレッドレベルの情報が含まれており、実行時にProcess Commanderに対してユーザーおよび接続固有の状態と構成情報が含まれています。
匿名ページ用のメモリは、Javaの規則に従って自動的に管理されます(JVMがこのメモリへの参照がなくなったことを検出すると、ガベージコレクションの対象としてマークされます)。
名前付きページのメモリは、Process Commanderまたはアプリケーションによって割り当てられ、解放されます。

ユーザーページ

ユーザーページは、Page-Newメソッドなど、いくつかの方法のいずれかを使用してアクティビティが作成する最上位のクリップボードページです。ログアウトすると、(Obj-Saveメソッドで)PegaRULESデータベースに保存されていないユーザーページはメモリから削除されます。

Pegaに投稿されました 続きを読む

Pegaでのルールタイプをカテゴリ毎に纏めておきました(よく使用されるもののみ)。

画面系

  • Control(コントロール)
  • Harness(ハーネス)
  • Navigation(ナビゲーション)
  • Paragraph()
  • Portal(ポータル)
  • Section(セクション)

データ系

  • Date Page(データページ)
  • Date Transform(データトランスフォーム)
  • Edit Input
  • Edit Validate
  • FieldValue
  • Property
  • Property Qualifier

プロセス系

  • Case Type(ケースタイプ)
  • Correspondence(応答)
  • Flow(フロー)
  • Flow Action(フローアクション)
  • Service Level Agreement()
  • Stage(ステージ)
  • Validate(検証)
  • Work Party(ワークパティー)

外部連携

  • Integration-Connect
  • Integration-Services

外部リンク

Official Online Reference