本文へジャンプ

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

送信されたすべての情報は安全です。

  • 閉じる [x]

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


送信されたすべての情報は安全です。

  • 閉じる [x]

Domino Designer Extensibility API 概要

Domino Designer Extensibility API を利用して、IBM Lotus Domino Designer を機能拡張する方法を紹介

祖父江 達也 (sobue@jp.ibm.com), Lotus テクノロジー開発, WPLC Business Partner Technical Enablement/ソフトウェア開発研究所, IBM
著者は日本アイ・ビー・エムのソフトウェア開発研究所に勤務。日本アイ・ビー・エムに入社後、長らくOS/2関連の仕事に関わり、その後はさまざまな製品の開発やお客様案件を経て、現在はIBM Lotus Notes や IBM Lotus Connections、IBM Lotus Quickr といった、各種 IBM Lotus 製品をご利用下さるビジネス・パートナー様の技術支援を行なっています。ここ数年放置して、痛み放題だった芝生の再生を図った今年の夏の成果が、来年現れるのを楽しみにしている今日この頃です。

概要: IBM Lotus Notes/Domino の最新版である8.5.1がリリースされました。この中には IBM Lotus Domino Designer (以下 Domino Designer と呼びます。) の最新版も含まれます。Domino Designer はバージョン 8.5 よりその動作のベース・プラットフォームとして Eclipse を採用するようになりました。Eclipse は元々 Java プログラムの統合開発環境として開発され広く普及したものであり、高い拡張性を特徴としています。Domino Designer 8.5.1ではその高い拡張性を生かし、サードバーティーによる機能拡張を可能とする API を提供しています。本稿では最初にその API の概要を解説し、その後、拡張機能を開発するための環境セットアップから実際のプログラミング、完成したプログラムのインストールまでの手順を、サンプル・プログラムを用いて紹介します。

日付:  2009年 11月 27日
レベル:  初級
アクティビティー: 3210 ビュー
お気軽にご意見・ご感想をお寄せください: 


Eclipse 上の Domino Designer

はじめに、Eclipse 上で動作する Domino Designer の動きを理解するために、基本的なEclipse のプログラミング・モデルの概念について2点ほど簡単に説明します。

ひとつめは Eclipse 上での開発対象の扱われ方についてです。Eclipse では開発対象の単位をプロジェクトと呼び、プロジェクトに含まれるソースコードやバイナリファイルなどの個々の構成要素をリソースと呼びます。Domino Designer もこのフレームワーク内で動作するよう、Domino アプリケーションを仮想的にこれらにマッピングしています。具体的には、個々の Domino アプリケーション (NSF ファイル) をプロジェクトに、Domino アプリケーション内のビューやフォームなどの各設計要素をリソースに、それぞれマッピングしています。プログラミングの観点からは、プロジェクトは org.eclipse.core.resources.IProject インターフェースを実装するオブジェクトとして、リソースは org.eclipse.core.resources.IResource インターフェースを実装するオブジェクトとして扱われます。

ふたつめはセレクション・サービスについてです。セレクション・サービスとは、あらかじめセレクション・リスナー・オブジェクトを登録しておくと、Eclipse のグラフィカル・ユーザー・インターフェース (GUI) 上でユーザーが何かを選択した際に、どこで何が選択されたのかを通知してくれる機能です。この機能を利用することにより、アプリケーション・ビュー上で何かの設計要素が選択された際に、その選択内容に応じて連携する機能を起動するといったイベント・ドリブンの動作を実装することが可能になります。Eclipse の GUI は、さまざまな機能を提供するビューやエディターの組み合わせとして構成され、その組み合わせはパースペクティブと呼ばれています。Eclipse の提供するセレクション・サービスの機能を用いることで、ビューやエディター間の独立性を保ちながら効果的な機能連携を行うことができます。プログラミングの観点からは、選択対象は org.eclipse.jface.viewers.ISelection インターフェースを実装するオブジェクトとして扱われます。


図 1. Eclipse 上で動作する Domino Designer


その他 Eclipse のプログラミングに関する詳しい解説は、参考文献を参照してください。


Domino Designer Extensibility API が提供する機能

Domino Designer Extensibility API の機能はすべて、Java のクラスおよびインターフェースとして提供されており、2つのパッケージにまとめられています。

com.ibm.designer.domino.ide.resources.extensions パッケージ

Domino アプリケーションを Eclipse のリソースとして扱うためのインターフェースが含まれます。含まれるクラスとインターフェースは以下の通りです。

  • DesignerProject インターフェース

Domino アプリケーションをアクセスするためのインターフェースです。Domino アプリケーションは DesignerProject インターフェースあるいは IProject インターフェースを通してアクセスされ、これらは相互に変換可能です。このインターフェースを使うことにより、データベースの名前やパス、レプリカ ID、テンプレートなどの属性を取得したり変更したりすることができます。

  • DesignerDesignElement インターフェース

Domino アプリケーションに含まれる設計要素をアクセスするためのインターフェースです。設計要素は DesignerDesignElement インターフェースあるいは IResource インターフェースを通してアクセスされ、これらは相互に変換可能です。このインターフェースを使うことにより、設計要素のタイプや名前、コメント、Note IDなどの属性を取得したり変更したりすることができます。

  • DesignerException クラス

Domino アプリケーションや設計要素を操作中に発生したエラーを報告するための例外クラスです。

com.ibm.designer.domino.ui.commons.extensions パッケージ

Eclipse のセレクション・サービスを通して、Domino アプリケーション・プロジェクトにアクセスするために必要となるクラスやインターフェースが含まれます。含まれるクラスとインターフェースは以下の通りです。

  • DesignerDesignElementSelection インターフェース

セレクション・サービスを通して、選択対象は ISelection インターフェースを実装するオブジェクトとして通知されます。このオブジェクトを DesignerDesignElementSelection インターフェースを実装するオブジェクトに変換することにより、どのような設計要素がいくつ選択されたのかを取得できるようになります。また実際に選択された DesignerProject や DesignerDesignElement のリストも取得できます。

  • DesignerResource クラス

Domino アプリケーションを操作するためのユーティリティー・クラスです。ISelection、IProject、IResource をそれぞれ DesignerDesignElementSelection、DesignerProject、DesignerDesignElement に変換する、指定した Domino アプリケーションをアプリケーション・ビューに登録するといった機能を提供します。また、設計要素のタイプを表す文字列定数も定義しています。これらの機能はすべて static メソッドとして提供されており、クラスをインスタンス化する必要はありません。


開発環境

Domino Designer Extensibility API を利用した拡張機能を開発するには、IBM Lotus Notes用 にEclipse プラグインを開発する場合と同じで、以下の開発環境が利用できます。

  • JaveSE JDK 5.0 以上
  • 以下のいずれかの開発環境
    • Eclipse 3.4.2 for RCP/Plug-in
    • Eclipse 3.4.2 for Java EE
    • Rational Application Developer 7.5.2
  • Lotus Expeditor 6.2.1 Toolkit

Eclipse IDE を実行するための環境として JavaSE JDK 5.0 以上を準備し、その上で Eclipse 3.4.2 を Eclipse のサイトからダウンロードして展開します。展開した Eclipse を起動して ソフトウェア更新を実行し、Lotus Expeditor 6.2.1 Toolkit を追加インストールします。

開発環境に関する詳しい説明およびダウンロード先に関しては、参考文献のリストを参照してください。


開発環境セットアップの注意点

前節の開発環境を用いて Domino Designer 向け拡張機能プラグインを開発する際には、次のような点に注意が必要です。

最初に、Lotus Expeditor Toolkit を追加インストールした後に Eclipse を再起動しワークスペースを開く際、Lotus Expeditor Toolkit の構成を行うかどうかを求められます(図 2)。ここでは、「テスト環境」として「Lotus Notes 8」を選択し、構成を行います。


図 2. ワークスペースの構成


次に、開発したプラグインを実行するターゲット環境の準備を行います。メニューより「実行」 > 「実行構成」を選択し、「実行構成」ダイアログを表示します(図 3)。


図 3. 実行構成ダイアログ


ダイアログ左のツリー・ビューより「Client Services」をダブル・クリックして新規構成を作成し、「名前」と「ロケーション」を任意に設定します。Lotus Notes 用プラグインを開発する際には以上の設定で終了ですが、Domino Designer 向け機能拡張プラグインを開発する際には、Domino Designer を直接ターゲットとして起動するために、更に「パーソナリティー」と「製品の実行」を Lotus Notes 用のものから Domino Designer 用のものへと切り替えます。

パーソナリティー:com.ibm.designer.domino.personality
製品の実行:com.ibm.designer.domino.product.dde

最後に「適用」ボタンを押し、変更を保存して終了です。


サンプル・プログラム

ここからは、Domino Designer Extensibility API を実際に利用したサンプル・プログラムを用いて、API の利用方法を説明します。

利用するサンプル・プログラムは、Domino Designer のプロパティ・ビュー・エリアに「設計要素一覧」ビューを追加してスタック表示するプラグインです。アプリケーション・ビュー内で Domino アプリケーションの設定要素を選択すると、選択された要素が表示されます(図 4)。


図 4. 設計要素一覧ビュー


設計要素は同時に複数を選択できます。異なるタイプの設計要素が含まれていてもかまいません。ビュー内に表示される情報は、各設計要素の Note ID 、タイプ、名前、別名、コメントに加えて、選択されている Domino アプリケーションの名前です。各設計要素の属性は表示されるだけではなく、インラインで編集することも可能です。


プログラムの詳細 - ビュー・クラスの定義

「設計要素一覧」ビューを表示するプラグインは全部で4つの Java クラスから成り立っています。その中でメインとなるのが DesignElementView クラスです。このクラスは以下のように宣言された Eclipse 標準の ViewPart クラスです(リスト 1)。


リスト 1. DesignElementView クラスの宣言

public class DesignElementView extends ViewPart {

ViewPart クラスは、ビュー内に表示される内容を定義するための createPartControl() メソッドを実装します(リスト 2)。


リスト 2. createPartControl() メソッドの定義

    /*
     * 画面レイアウトを生成します
     */
    public void createPartControl(Composite parent) {
        parent.setLayout(new GridLayout(1, false));

        // アプリケーション名表示エリアの作成
        dbName = new Label(parent, SWT.BORDER);
        dbName.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        dbName.setText("アプリケーション名:");

        // 設計要素表示用テーブルの作成
        tableViewer = new TableViewer(parent, SWT.FULL_SELECTION);
        tableViewer.setLabelProvider(new ElementLabelProvider());
        tableViewer.setContentProvider(new ArrayContentProvider());
        Table table = tableViewer.getTable();
        table.setLayoutData(new GridData(GridData.FILL_BOTH));
        table.setLinesVisible(true);
        table.setHeaderVisible(true);

        // テーブルコラムの作成
        TableColumn column = new TableColumn(table, SWT.NONE);
        column.setText("Note ID");
        column.setWidth(60);    
        column = new TableColumn(table, SWT.NONE);
        column.setText("タイプ");
        column.setWidth(120);    
        column = new TableColumn(table, SWT.NONE);
        column.setText("名前");
        column.setWidth(150);    
        column = new TableColumn(table, SWT.NONE);
        column.setText("別名");
        column.setWidth(150);    
        column = new TableColumn(table, SWT.NONE);
        column.setText("コメント");
        column.setWidth(200);    

        // 編集可能にするための準備
        String[] properties = new String[]{
            "NoteId",
            "Type",
            "Name",
            "Alias",
            "Comment"
        };
        tableViewer.setColumnProperties(properties);
        CellEditor[] editors = new CellEditor[]{
            null,
            new TextCellEditor(table),
            new TextCellEditor(table),
            new TextCellEditor(table),
            new TextCellEditor(table)
        };
        tableViewer.setCellEditors(editors);
        tableViewer.setCellModifier(new CellModifier());

        // Selection Listener の登録
        getSite().getWorkbenchWindow().getSelectionService()
            .addSelectionListener(selectionListener);
    }

選択されたDomino アプリケーション名を表示するために Label クラスを、選択された設計要素を一覧表示するために JFace の TableViewer クラスを利用しています。設計要素の属性を表示するために、TableColumn クラスのオブジェクトを属性の数だけ追加しています。最後に、selectionListener 変数にあらかじめ用意された ISelectionListener インターフェースを実装するオブジェクトを、セレクション・リスナーとして登録しています。

セレクション・リスナーとして登録されるクラスの定義は以下の通りです(リスト 3)。


リスト 3. セレクション・リスナー・クラスの定義

    /*
     * Selection Listener の定義
     */
    private ISelectionListener selectionListener = new ISelectionListener() {
        public void selectionChanged(IWorkbenchPart source, ISelection selection) {
            // 自分以外の選択を処理
            if (source != DesignElementView.this) {
                updateTable(source, selection);
            }
        }
    };

Eclipse GUI 上でオブジェクトが選択されると、登録したセレクション・リスナー・クラスの selectionChanged() メソッドが、選択されたオブジェクトをパラメータとして呼び出されます。受け取ったオブジェクトに基づいて実際に画面表示の更新を行っているのが updateTable() メソッドであり、その定義は以下のようになります(リスト 4)。


リスト 4. 画面更新用メソッド updateTable()

    /*
     * 選択結果をテーブルに表示します
     */
    public void updateTable(IWorkbenchPart sourcePart, ISelection selection) {
        dbName.setText("アプリケーション名: ");
        if (selection instanceof IStructuredSelection) {
            // 選択結果から Domino Designer の設計要素を処理
            DesignerDesignElementSelection designerSelection
                    = DesignerResource.getDesignerSelection(selection);
            dbName.setText("アプリケーション名: "
                    + designerSelection.getSelectedDesignerProject().getDatabaseTitle());
            tableViewer.setInput(designerSelection.getSelectedDesignElements());
        }
    }

アプリケーション・ビュー上で Domino アプリケーションの設計要素が選択された際には、選択オブジェクトは IStructuredSelection インターフェースを実装するオブジェクトとして渡されてきます。それを DesignerResource クラスの getDesignerSelection() メソッドを利用してDesignerDesignElementSelection インターフェースに変換します。これにより選択結果を Domino Designer のオブジェクトとしてアクセスできるようになります。Domino アプリケーション名は getSelectedDesignerProject() メソッドを、設計要素の一覧は getSelectedDesignElements() メソッドをそれぞれ利用して取得します。取得した結果を、先ほどビューの構成要素として配置した Label 及び TableViewer オブジェクトにセットして画面の表示内容を更新します。


プログラムの詳細 - ビュー・クラスの登録

このようにして用意したビューを Domino Designer に組み込むには、Eclipse の拡張ポイントを利用します。拡張ポイント利用の定義は plugin.xml で行います。以下がその内容です(リスト 5)。


リスト 5. 拡張ポイント利用の定義

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
    <extension point="org.eclipse.ui.views">
        <view name="設計要素一覧"
            class="com.ibm.wplc.samples.designer.sample.DesignElementView"
            id="com.ibm.wplc.samples.designer.sample.DesignElementView">
        </view>
    </extension>
    <extension point="org.eclipse.ui.perspectiveExtensions">
        <perspectiveExtension targetID="com.ibm.designer.domino.perspective">
            <view id="com.ibm.wplc.samples.designer.sample.DesignElementView"
                relationship="stack"
                relative="org.eclipse.ui.views.PropertySheet" />
        </perspectiveExtension>
    </extension>
</plugin>

ひとつめの定義が org.eclipse.ui.views 拡張ポイントを利用したビューの登録です。上述の DesignElementView クラスに com.ibm.wplc.samples.designer.sample.DesignElementView という id を割り当て、「設計要素一覧」という名前で登録しています。

ふたつめの定義が org.eclipse.ui.perspectiveExtensions 拡張ポイントを利用したビューの表示位置の登録です。Domino Designer は com.ibm.designer.domino.perspective という id のパースペクティブで動作しています。そのパースペクティブに対して、先ほど登録した DesignerElementView クラスが実装するビューを、パースペクティブ内の既存の org.eclipse.ui.views.PropertySheet の id を持つビューへのスタック表示として追加しています。org.eclipse.ui.views.PropertySheet とは、Domino Designer の画面下部に表示されているプロパティ・ビューの id です。

以上の2つを定義することにより、標準の Domino Designer のパースペクティブに対して、独自に作成したビューを後から簡単に追加することができます。

このような高い拡張性が Eclipse の大きな特徴です。Eclipse ではビューだけではなく、メニューやツールバーなどを含むさまざまな機能に対して拡張ポイントを提供しています。Domino Designer 上でも、これらすべての拡張ポイントを利用した機能拡張を行うことが可能です。

注: Eclipse はユーザーが変更を加えた現在のパースペクティブの構成内容を保存する機能があります。そのため、本稿で紹介しているサンプル・プログラムをインストールするだけでは、追加した「設計要素一覧」ビューが表示されない場合があります。その場合には、Domino Designer のメニューより、「ウィンドウ」 > 「パースペクティブのリセット」を実行してください。


プログラムの詳細 - 設計要素一覧の表示と編集

次に、設計要素一覧の内容をTableViewer オブジェクトの中に表示させるロジックを確認します。表示される内容を生成しているのが ElementLabelProvider クラスです。このクラスは ITableLabelProvider インターフェースを実装しています。これに対して TableViewer オブジェクトは、各セルの表示内容を getColumnText() メソッドを呼び出して問い合わせてきますので、その戻り値として指定された行、列の文字列を返します。このサンプル・プログラムでは、列番号に応じて、Note ID、 タイプ、名前、別名、コメントのそれぞれを、相当する DesignerDesignElement のメソッドを呼び出して取得しています(リスト 6)。


リスト 6. セルの値生成用メソッドの定義

    /*
     * 指定された行、列の値を生成します
     */
    public String getColumnText(Object element, int columnIndex) {
        DesignerDesignElement designElement = (DesignerDesignElement)element;
        switch (columnIndex) {
        case 0:
            return Integer.toString(designElement.getNoteId());
        case 1:
            return designElement.getDesignElementType();
        case 2:
            return designElement.getName();
        case 3:
            return designElement.getAlias();
        case 4:
            return designElement.getComment();
        default:
            return null;
        }
    }

最後に、一覧表示されている値をインラインで編集する機能を確認します。TableViwer クラスはインライン編集の機能を標準でサポートしていますが、その機能を利用するためには、ICellModifier インターフェースを実装するクラスを用意する必要があります。それが CellModifiter クラスです。このクラスでは主に、編集開始時の初期値を取得するための getValue() メソッドと、編集結果を処理するための modify() メソッドを用意します(リスト 7)。


リスト 7. インライン編集用メソッドの定義

    /*
     * 編集の初期値を生成します	
     */
    public Object getValue(Object element, String property) {
        DesignerDesignElement designElement = (DesignerDesignElement)element;
        String value = null;
        if (property.equals("Name")) {
            value = designElement.getName();
        } else if (property.equals("Alias")) {
                : (省略)
        }
        return (value != null) ? value : "";
    }

    /*
     * 編集結果を処理します
     */
    public void modify(Object element, String property, Object value) {
        TableItem tableItem = (TableItem)element;
        DesignerDesignElement designElement = (DesignerDesignElement)tableItem.getData();
        String val = (String)value;
        Boolean fModified = false;
        String current;

        // 編集されたコラムに応じて編集結果を反映
        try {
            if (property.equals("Name")) {
                current = designElement.getName();
                if (current == null)
                    current = "";
                if (!val.equals(current)) {
                    designElement.setName(val);
                    tableItem.setText(2, val);
                    fModified = true;
                }
            } else if (property.equals("Alias")) {
                    : (省略)
            }
        } catch (DesignerException e) {
            e.printStackTrace();
        }

        // 編集結果で画面更新
        if (fModified) {
            designElement.refresh();
        }
    }

getValue() メソッドは、編集しようとしているセルに応じて、その初期値をDesignerDesignElement クラスの get メソッドを用いて取得して返します。反対に modify() メソッドは、受け取った編集結果を、DesignerDesignElement クラスの set メソッドを用いて保存します。set/get メソッドは対象とする値に応じたものがそれぞれ提供されています。例えば、設計要素の名前に対応するものはsetName()/getName()です。保存した内容は Domino アプリケーションのデータベースには反映されますが、GUI の画面上に動的には反映されないため、DesignerDesignElement クラスの refresh() メソッドを最後に呼び出して、画面の表示内容を更新します。

このサンプル・プログラムでは、Domino アプリケーションの内容をアクセスするために Domino Designer Extensibility API のみを利用していますが、従来 Lotus Notes/Domino でサポートされている Note Java API も同時に利用可能です。より複雑な操作を行うプログラムを実装する際には、そちらも合わせて利用します。


プログラムの実行

Eclipse 上で開発したプログラムは、先ほど用意した Domino Designer をターゲットにした実行構成を利用して、Domino Designer に組み込んだ形で Eclipse から起動、デバッグすることができます。

デバッグが完了した後は、Eclipse のフィーチャー・プロジェクトと更新サイト・プロジェクトを利用してインストール可能な形にパッケージングします。完成したパッケージは Domino Designer の更新マネージャーの機能を利用してインストールします。標準の状態では Domino Designer の更新マネージャーは無効になっていますので、<Notesプログラム・ディレクトリ>/framework/rcp/plugin_customization.ini ファイル内に以下の1行を追加して有効にします。追加後は Domino Designer の再起動が必要です。

com.ibm.notes.branding/enable.update.ui=true

更新マネージャーはメニューの「ファイル」 > 「アプリケーション」 > 「インストール」から起動します。先ほど用意したインストール・パッケージをポイントしてインストールを行います。インストール後は再起動を求められますのでそれに従います。


図 5. インライン編集中の設計要素一覧ビュー



まとめ

Domino Designer はバージョン8.5より Eclipse ベースに変更され、バージョン8.5.1では更に、機能拡張のための Domino Designer Extensibility API が公開されました。この API を利用することにより、開発者は Domino Designer に対して独自のプラグインを開発、追加することが可能になります。独自プラグインはセレクション・サービスを通して標準の Domino Designer の機能と連携し、選択された Domino アプリケーションの設計要素を入手、操作することができます。



ダウンロード

内容ファイル名サイズダウンロード形式
サンプルコードdesigner-extension.zip13KBHTTP

ダウンロード形式について


参考文献

著者について

著者は日本アイ・ビー・エムのソフトウェア開発研究所に勤務。日本アイ・ビー・エムに入社後、長らくOS/2関連の仕事に関わり、その後はさまざまな製品の開発やお客様案件を経て、現在はIBM Lotus Notes や IBM Lotus Connections、IBM Lotus Quickr といった、各種 IBM Lotus 製品をご利用下さるビジネス・パートナー様の技術支援を行なっています。ここ数年放置して、痛み放題だった芝生の再生を図った今年の夏の成果が、来年現れるのを楽しみにしている今日この頃です。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


developerWorks: サイン・イン


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。 プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。 お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

表示名をお選びください

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

(半角英数字で3文字以上31文字以下にする必要があります)


「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


この記事を評価する

コメント

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Lotus
ArticleID=448270
ArticleTitle=Domino Designer Extensibility API 概要
publish-date=11272009
author1-email=sobue@jp.ibm.com
author1-email-cc=

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。