WebkitとPythonを使ったアプリケーション開発

はじめに

組み込みアプリケーション開発、特にセットトップボックス(STB)やデジタル家電、携帯電話などそれなりのUIを要求される製品の開発では、Webブラウザを搭載しユーザーインターフェース(UI)をHTML+JavaScriptで構築することがあります。この手法のメリットとして以下のようなことが挙げられます。

  1. UIとロジックの分離

    家電製品に搭載するような画面の動きをプログラマが全てコードで記述しようとすると大変です。UIをHTML(+CSS)で記述できれば画面作成はデザイナーにお願いし、プログラマーはロジックに集中できます。最後のUIとロジックの結合作業はプログラマー側に残りますが…

  2. 開発工数の削減

    UIをHTMLで記述できれば、C/C++やJavaで記述するのに比べて開発効率の向上が見込まれます。それに伴い、工数削減、開発期間短縮が期待出来ます。

  3. 豊かな表現力、操作性の実現

    ブラウザがFlashなどのプラグインを使用できれば高度な視覚効果を比較的簡単に実現出来ます。

本記事では、これらのメリットをPC上のアプリケーションにも適用することを目指し、サンプルアプリケーションの作成を行います。

Read the rest of this entry »

Graphvizを使った有向グラフの自動生成

Graphvizとは

AT&T研究所が開発したグラフ描画ツールです。
ただし、折れ線グラフや棒グラフみたいなExcelで作成するようなグラフではなく、ダイヤグラムや有向グラフなどが対象となります。

Graphvizの公式サイト

Graphvizを使うことにより、高品質な有向グラフを作成することが出来ます。どんなグラフを作成できるかは、Graphviz公式サイト 生成したグラフのサンプルを参照して下さい。

ソフトウェア技術者の方にとっては、Graphivizの使い方はそれほど難しくありませんし、ネットで検索すれば多くの解説記事が見つかります。
そのため本記事ではGraphvizの説明は最低限に留め、Graphvizをどのように活用していくかに焦点を当てていきます。

Read the rest of this entry »

抽象データ型と Java/C++ そして COM/CORBA

抽象データ型とは…

  • 抽象データ型
  • 継承
  • 多態

をオブジェクト指向の三本柱などと称しています。その中でも抽象データ型(あるいはデータの抽象化)はオブジェクト指向の最も基本的で重要な概念ではないかと考えます。

"データを抽象化する"とは、データをそれに対して適用できる操作の集合で定義することです。

簡単な例として"カウンタ"を考えてみましょう。カウンタには3つの操作:

  • +1する (increment)
  • -1する (decrement)
  • 現在値を取得する

を提供させることにします。

さて、このカウンタをCで実現するとどうなるでしょうか…

Read the rest of this entry »

sizeofの不思議

はじめに

Cではsizeofによって構造体がメモリ上で占める大きさ(バイト数)を知ることができます。

struct s{
  int x;
  int y;
};
...
cout << sizeof(s) << endl;

僕の愛用する処理系、Visual C++ 6.0では 8が得られました。intひとつにつき4byteを消費するからでしょう。

それではC++でのclassの大きさはどうでしょう。内包するメンバ変数それぞれの占めるバイト数の総和になるのでしょうか。

Read the rest of this entry »

C++の新しいキャスト

従来のキャストの問題点

異なる型への変換において、C/C++ではキャストが用いられます。

// intからlongへのキャスト
int ival;
int lval = (long)ival;

ご存知のとおり、キャストは非常に危険です。 本来ならば型の不一致によるコンパイルエラーをねじ伏せるのですから。

Read the rest of this entry »

9章: クラス RWBTreeOnDisk の使い方

Read the rest of this entry »

18.5 多重継承

Read the rest of this entry »

18.4 RWCollectable の格納と取り出しについて

Read the rest of this entry »

6.6 まとめ

Read the rest of this entry »

6.4 DDE の例

Read the rest of this entry »