例えば、あなたの職場である紙ベースのオフィスに会社の監査役がやってきて、勘定書に示されている取引の解説文書の提出を求めたとします。文書の数が少なく、紙ベースのレコードのなかから簡単に該当する文書を見つけられるとしたら、この要求には問題なく対処することができます。けれども、監査は徹底的に行われる傾向があります。そして監査に値するような取引は、追跡するのに時間のかかる数多くの文書を伴う複雑な取引です。しかもその複雑さのため、証明となる文書の 1 つや 2 つが行方不明になる可能性は高くなります。追跡できない文書が 1 つでもあれば、監査プロセス全体が疑惑の影を帯びてしまいます。
紙ベースのオフィスで文書が追跡不可能になる原因の 1 つは、複雑で競合性のある索引付けシステムです。上記の解説文書の提出を求められた経営陣が必要とする文書は、あるファイルに保管されているだけでなく、別のファイルにも保管されています。両方のファイルに保管しなければならないという物理的重複は、大量に必要とされる保管場所に対する要求を高めるだけでなく、どちらがオリジナルの正式文書であるかについての議論を引き起こすことにもなります。
本格的な会計システムでは、取引の詳細をその取引に関連する文書の詳細と一緒に保管できるため、文書を素早く簡単に取得することができます。このような会計システムがないとしても、何らかのテクノロジーを使って次善策を設けることは可能です。この記事では、XML と PHP を使用して、会計監査のサポートとなる構造および文書検索メカニズムを実現する方法を探ります。
会計取引に関連する文書は、例えば以下のような文書で構成されます。
- 契約決定を含む、取締役会の決議書
- 契約の草案および審議記録
- 下記 3 つのうち、1 つ以上の文書
- 独占供給に関して経営陣が正当化する文書
- 認定供給業者から取得した複数の見積書
- 提出された見積書の選考に関して経営陣が正当化する文書
- 落札者による署名付き契約書および補足契約
- 請求書および請求書ごとの以下の文書
- 作業完了証明書
- 支払い済み小切手、またはその他の支払い及び受領証明書
- 作業完了の最終証明書
- 納税関連の文書
この例の場合、役員が資金の使途を決定すると、経営陣は要件を満たす契約書を作成し、入札を要請することによって入札プロセスを開始します。取締役会の契約規則に従って供給業者が選出され、契約が締結されます。受託業者への支払い (勘定書では、おそらく支払いごとに固有の取引が必要となります) には作業完了証明書が必要です。この証明書により、支払いが行われます。以上のそれぞれの段階で、経営陣が監査役に物理的に提出することのできる文書、またはそれに代わる正式なものが必要になります。
文書の詳細を手書きで記した帳簿やファイルは、小規模なオフィスではかなり実用的な手段となります。けれども監査のコンテキストでは、何らかのテクノロジーを利用したほうが、速度と拡張性の両面でメリットがあります。
XML をバックエンドとして使用する必要はありませんが、XML 文書は単なるテキスト・ファイルであるため、完全に内容が明らかで、小さなサイズの XML は完全に理解することができます。リスト 1 のコードを見てください。
リスト 1. XML バックエンド
<?xml version="1.0" encoding="UTF-8"?>
<auditList>
<projects>
<project projid="xyz987">
<boardMinute>2011-04-07-xxxx</boardMinute>
<draftContractA>2011-04-07-xxxx</draftContractA>
<contractA>2011-04-07-xxxx</contractA>
<contractB>2011-04-08-xxxx</contractB>
<contractC>2011-04-09-xxxx</contractC>
<workCertA>2011-04-11-xxxx</workCertA>
<workCertB>2011-04-11-xxxx</workCertB>
<workCertC>2011-04-11-xxxx</workCertC>
</project>
</projects>
<transactions>
<transaction accid="abc123" projid="xyz987">
<soleSourceAuth></soleSourceAuth>
<invoice>2011-04-11-xxxx</invoice>
<cheque>2011-04-21-xxxx</cheque>
</transaction>
<transaction accid="def123" projid="xyz987">
<sourceAuth>2011-04-07-xxxx</sourceAuth>
<invoice>2011-04-11-xxxx</invoice>
<cheque>2011-04-21-xxxx</cheque>
</transaction>
<transaction accid="ghi123" projid="xyz987">
<sourceAuth>2011-04-07-xxxx</sourceAuth>
<invoice>2011-04-11-xxxx</invoice>
<cheque>2011-04-21-xxxx</cheque>
</transaction>
</transactions>
</auditList>
|
リスト 1 のマークアップは、経理部とプロジェクト・マネージャーの双方にとって有用な基本システムを表しています。ルート要素の
auditList には 2 つの子要素 (projects
とtransactions)
があり、それぞれが、その名前に対応する部門の詳細を含むコンテナーとなっています。オリジナルの紙ベースの文書は、日付ごとに個別のバインダーに保管されます。文書がバインダーに追加されると、その文書には固有の通し番号が付けられるので、日付と番号を基に、あらゆる文書を簡単に見つけることができます。このプロジェクトの業務に必要な受託業者は
3 つあります。そのうちの 1 つは独占供給業者、他の 2 つは競合供給業者です。プロジェクト・マネージャーはプロジェクト全体を 1
つの単位として考えるため、すべての契約書を同じ 1 つのレコードの一部と見なします。一方、経理部長には取引ごとのリストが必要です。したがって、経理部長のレコードは 1
つの支払いだけを参照します。accid 属性は、会計システムが取引に割り当てる固有の取引 ID 番号なので、この ID が、会計システムとファイリング・システムとの間の確実なリンクを提供します。transactions 要素には、プロジェクト・マネージャーのリストに関係する属性 (projid) も含まれます。この属性は、プロジェクト・レコードから取引にリンクできるように、逆方向でも機能します。
注: 契約 A には、独占供給許可が欠けています。このような欠落は監査役の注意を促すので、現時点では検証チェックで引っかかるように、意図的にこの許可を空白にしています。
上記のようにリストが短ければ、さらなる技術を使わなくてもファイルの内容を目で追って理解することができますが、これよりも広範なリストになると、情報を効率的に取得する何らかの方法が必要になってきます。その方法はさまざまにありますが、その 1 つは、PHP および SimpleXML ライブラリーの関数を使用することです。
会計の観点からすると、リストを取得する手掛かりとなるのは、会計システムが取引に割り当てる固有の ID です。リスト 2 のコードは、フィルターが指定されていない場合にはリストからすべての取引を取得します。フィルターが指定されている場合には、その特定の取引を、それに関連付けられたプロジェクト情報と併せて取得します。
リスト 2. 会計のクエリー
<?php
$transFilter = $argv[1];
$xml = simplexml_load_file("backend.xml");
echo "=====\nSummary for accounts section\n";
if (isset($transFilter)) {
echo "=====\nTransaction filter $transFilter\n=====\n";
} else {
echo "=====\nNo filter - showing all transactions\n=====\n";
}
foreach ($xml->transactions->transaction as $t) {
if (!$transFilter or $t['accid'] == $transFilter) {
if ($t['accid'] == $transFilter) {
$projectFilter = trim($t['projid']);
}
echo "Detail for transaction ".$t['accid']."\n";
foreach ($t->children() as $tc) {
echo $tc->getName()." : ".$tc."\n";
}
}
}
if (isset($projectFilter)) {
echo "=====\nAssociated project $projectFilter\n=====\n";
foreach ($xml->projects->project as $p) {
if ($p['projid'] == trim($projectFilter)) {
echo "Detail for project ".$p['projid']."\n";
foreach ($p->children() as $pc) {
echo $pc->getName()." : ".$pc."\n";
}
}
}
}
echo "=====\nEnd of search\n=====\n";
?>
|
リスト 2 に記載したコードは、まず始めに $argv
配列にパラメーターが渡されているかどうかを調べます。パラメーターは渡される場合もあれば、渡されない場合もあります。次に、リスト 1 の XML
をオブジェクトにロードして処理を行えるようにします。クエリーは経理部によって実行依頼されるため、transactions
セクションに直接アクセスし、フィルターの有無に応じて、すべての取引をループ処理するか、あるいは要求された ID と一致する取引を探します。正しい accid が見つかると、それに関連付けられた projid またはプロジェクト属性を後で参照できるように変数に保存します。特定の取引が要求された場合には、2 番目のループ処理を開始し、関連するプロジェクトの詳細を調べて出力します。
このスクリプトは、コマンドラインから以下のようにして呼び出されます。ここで、acct.php はスクリプトの名前、def123 は会計システムから取得した取引の ID です。
> php acct.php def123 |
リスト 3 に、このクエリーをリスト 1 のデータに対して実行した結果を示します。
リスト 3. 出力
===== Summary for accounts section ===== Transaction filter def123 ===== Detail for transaction def123 sourceAuth : 2011-04-07-xxxx invoice : 2011-04-11-xxxx cheque : 2011-04-21-xxxx ===== Associated project xyz987 ===== Detail for project xyz987 boardMinute : 2011-04-07-xxxx draftContractA : 2011-04-07-xxxx contractA : 2011-04-07-xxxx contractB : 2011-04-08-xxxx contractC : 2011-04-09-xxxx workCertA : 2011-04-11-xxxx workCertB : 2011-04-11-xxxx workCertC : 2011-04-11-xxxx ===== End of search ===== |
この出力が、保管された文書の紙ベースのコピーを取得するのに必要な情報を提供します。出力には、特定の取引の詳細な手掛かりだけでなく、プロジェクトのコンテキストも返されます。これによって、監査役は取締役会の決議、契約、供給の許可、請求書、作業の証明、および支払い済み小切手にアクセスすることができます。文書がすべて所定の場所にあれば、これで話は終わりです。誰もが満足して、監査役はその効率性と編成に感心して立ち去ることになります。
スクリプトは文書の情報を取得できるのみならず、文書が不完全な場合には、それを報告することもできます。前に述べたように、取締役会の規則に従うためには、独占供給が正当化されているか、複数の入札から適切な供給業者が選択されることが重要です。リスト 4 は、そのようなチェックを行うコードです。
リスト 4. 完全性チェック
<?php
$xml = simplexml_load_file("backend.xml");
echo "=====\nIntegrity check\n=====\n";
$i = 0;
foreach ($xml->transactions->transaction as $t) {
if ($t['accid'] == "" or !$t['accid']) {
$accid = "# $i #";
echo "Transaction accid missing at transaction $accid\n";
} else {
$accid = $t['accid'];
}
if (!$t['projid']) echo "Project id missing at transaction $accid\n";
if ($t->soleSourceAuth=="" and $t->sourceAuth=="")
echo "Authorization problem at $accid\n";
$i++;
}
echo "=====\nEnd of search\n=====\n";
?>
|
リスト 4 のスクリプトは、XML バックエンドをオブジェクトにロードするところから始めます。次に、各取引を調べて accid
属性の有無を判別します。この属性がない場合には、スクリプトは警告と併せ、検査したレコード数を出力します。続いて関連付けられたプロジェクト ID
番号の有無を調べ、存在しない場合には警告を出力します。次にスクリプトがチェックするのは、soleSourceAuth
要素または sourceAuth 要素のいずれかが存在し、有効な値を持っていること (この例の場合は、空のストリングでないこと) です。このテストに失敗すると、スクリプトは警告を出力します。この類の完全性チェックを行う方法は他にもありますが、上記のように SimpleXML を使用すれば、プログラムによって素早く簡単にチェックすることができます。
このスクリプトを呼び出す方法は以下のとおりです。このコードではリスト全体をチェックするため、引数なしで呼び出します。
> php integrity.php |
この呼び出しによる結果、リスト 5 に記載する警告が出力されます。前述のとおり、チェック対象のリスト 1 のデータには文書の参照が欠けているためです。
リスト5. リスト 4 の出力結果
===== Integrity check ===== Authorization problem at abc123 ===== End of search ===== |
監査情報への基本的なアクセス方法を説明したところで、さらに有益なステップとして、すべての文書が画像として使用できることを確認し、監査役からの情報要求に応じて即時にオンライン文書のコレクションへのリンクを送信できるようにします。その際、リンクだけではなく、監査役が追加の詳細情報を必要とする場合にあなたに連絡できるように丁重な案内も送信します。また、レコードを常に最新の状態に維持するという遥かに重要な課題にも対処します。
再びリスト 1 を使用しますが、今回は画像情報が追加されています (リスト 6 を参照)。
リスト 6. image 属性が追加された XML バックエンド
<?xml version="1.0" encoding="UTF-8"?>
<auditList>
<projects>
<project projid="xyz987">
<boardMinute image="minute987.pdf">2011-04-07-xxxx</boardMinute>
<draftContractA image="contractdraft987.pdf">2011-04-07-xxxx</draftContractA>
<contractA image="contract987A.jpg">2011-04-07-xxxx</contractA>
<contractB image="contract987B.jpg">2011-04-08-xxxx</contractB>
<contractC image="contract987C.jpg">2011-04-09-xxxx</contractC>
<workCertA image="workcert987A.pdf">2011-04-11-xxxx</workCertA>
<workCertB image="workcert987B.pdf">2011-04-11-xxxx</workCertB>
<workCertC image="workcert987C.pdf">2011-04-11-xxxx</workCertC>
</project>
</projects>
<transactions>
<transaction accid="abc123" projid="xyz987">
<soleSourceAuth image="ssauth987A.odt"></soleSourceAuth>
<invoice image="invoice987A.png">2011-04-11-xxxx</invoice>
<cheque image="cheque987A.jpg"></cheque>
</transaction>
<transaction accid="def123" projid="xyz987">
<sourceAuth image="sourceauth987B.odt">2011-04-07-xxxx</sourceAuth>
<invoice image="invoice987B.png">2011-04-11-xxxx</invoice>
<cheque image="cheque987B.jpg"></cheque>
</transaction>
<transaction accid="ghi123" projid="xyz987">
<sourceAuth image="sourceauth987C.odt">2011-04-07-xxxx</sourceAuth>
<invoice image="invoice987C.png">2011-04-11-xxxx</invoice>
<cheque image="cheque987C.jpg"></cheque>
</transaction>
</transactions>
</auditList>
|
リスト 6 には詳細が少し追加されているだけで、基本的にはリスト 1
と同じです。上記のリストで一部の要素に追加されている image 属性は、画像の名前、あるいは PDF、JPG、ODT、PNG などのファイルとして保管された文書の名前を指定します。この例の場合、銀行は実際の小切手を返してくるのではなく、小切手を決済システムで処理した後の JPG 画像をオンラインで提供することに注意してください。したがって、画像は入手できても、保管する実際の文書はありません。
画像を使用できるようにするためには、経理部が監査役のためにクエリーを変更しなければなりません。リスト 7 に、変更後のクエリーを記載します。
リスト 7. 画像を扱う PHP クエリー
<?php
$transFilter = $argv[1];
if (!$transFilter) die ('No transaction specified\n');
$path2images = "/path/to/images/";
echo "=====\nAudit response HTML\n=====\n";
$xml = simplexml_load_file("backend2.xml");
echo "=====\nTransaction $transFilter\n=====\n";
foreach ($xml->transactions->transaction as $t) {
if ($t['accid'] == $transFilter) {
$projectFilter = trim($t['projid']);
echo "Detail for accounting transaction '".$t['accid']."'\n";
foreach ($t->children() as $tc) {
echo $tc->getName()." : ".$tc." image "
."<a href='$path2images".$tc['image']."'>".$tc['image']."</a>\n";
}
}
}
foreach ($xml->projects->project as $p) {
if ($p['projid'] == $projectFilter) {
echo "Detail for project ".$p['projid']."\n";
foreach ($p->children() as $pc) {
echo $pc->getName()." : ".$pc." image "
."<a href='$path2images".$pc['image']."'>".$pc['image']."</a>\n";
}
}
}
echo "=====\nEnd of list\n=====\n";
?>
|
リスト 7 ではまず、特定の取引を対象とした検索であるという前提を設定しています。つまり、会計 ID がパラメーターとして指定されていなければ、スクリプトは警告を出力して停止します。パラメーターが指定されている場合は、変更後のバックエンドを SimpleXML オブジェクトにロードして、指定された会計 ID を持つ取引を検索します。該当する取引が見つかると、後で使用するために、その取引に関連付けられたプロジェクト ID を保存します。そして最後に、スクリプトは関連する文書の情報を出力します。これで、出力には実際の文書 (存在する場合) への参照と、ネットワーク上のどこかに保管された画像へのリンク (HTML タグ内) の両方が含まれることになります。
このスクリプトを呼び出すには、コマンドライン・インターフェースで以下のコマンドを実行します。
> php auditresponsehtml.php def123 |
すると、リスト 8 の結果が出力されます。
リスト 8. 画像を扱う PHP クエリーの出力結果
===== Audit response HTML ===== ===== Transaction def123 ===== Detail for accounting transaction 'def123' sourceAuth : 2011-04-07-xxxx image <a href='/path/to/images/sourceauth987B.odt'>sourceauth987B.odt</a> invoice : 2011-04-11-xxxx image <a href='/path/to/images/invoice987B.png'>invoice987B.png</a> cheque : image <a href='/path/to/images/cheque987B.jpg'>cheque987B.jpg</a> Detail for project xyz987 boardMinute : 2011-04-07-xxxx image <a href='/path/to/images/minute987.pdf'>minute987.pdf</a> draftContractA : 2011-04-07-xxxx image <a href='/path/to/images/contractdraft987.pdf'>contractdraft987.pdf</a> contractA : 2011-04-07-xxxx image <a href='/path/to/images/contract987A.jpg'>contract987A.jpg</a> contractB : 2011-04-08-xxxx image <a href='/path/to/images/contract987B.jpg'>contract987B.jpg</a> contractC : 2011-04-09-xxxx image <a href='/path/to/images/contract987C.jpg'>contract987C.jpg</a> workCertA : 2011-04-11-xxxx image <a href='/path/to/images/workcert987A.pdf'>workcert987A.pdf</a> workCertB : 2011-04-11-xxxx image <a href='/path/to/images/workcert987B.pdf'>workcert987B.pdf</a> workCertC : 2011-04-11-xxxx image <a href='/path/to/images/workcert987C.pdf'>workcert987C.pdf</a> ===== End of list ===== |
このスクリプトは簡単のため、いくつもの前提を設定しています。第一にすべてのファイルが揃っていて、適切な名前が付けられていること、第二に監査役が索引付けシステムを理解していること、そして第三に、監査役のブラウザーが文書のタイプを、例えばダウンロード、アドオン、あるいはアプリケーションによって開かれる文書として処理できることも前提となります。
読む側に渡す前に、何らかの方法で画像を操作することもできます。例えば、新しい文書がオリジナルのアーカイブ・コピーと取り違えられないように、印刷された画像にマークを付けなければならないとします。この場合、PHP にはいくつもの画像関数が揃っていて、文書全体に大きく「VOID」と印刷したり、取引 ID を上下左右いずれかの角に印刷したりするなどの処理が可能です。
リスト 9 に一例として、文書にストリングを追加してからブラウザーに送信する場合の PHP フラグメントを記載します。
リスト 9. 画像に対する詳細情報の追加
<?php
$im = imagecreatefromjpeg("/path/to/images/contract987C.jpg");
$textcolor = imagecolorallocate($im, 0, 0, 100);
imagestring($im, 5, 55, 55, 'Archive: 2011-04-11-XXXX', $textcolor);
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
|
上記のコードでは、画像をオリジナル文書から作成し、画像に重ねるテキストの色を定義した後、画像の一部として、「Archive:
2011-04-11-XXXX」というストリングを画像の左上隅から 55 ピクセル下の位置に横方向に重ねて印刷します。テキストの色は、印刷されたときにテキストの文字がはっきりと読めるように、背景色を考慮して選んでください。これらの処理が行われた後の最終的な画像が、ブラウザーに送信されます。
その他の PHP 画像関数では、画像をテストしてその大きさを確認し、サイズが特定の推奨限度を超えている場合には、監査役の画面に適したサイズに拡大/縮小することもできます。
これまでに記載した、経理部とプロジェクト部門の両方が実際の 1 つのファイル・セットだけに索引を付けられるようにするためのサンプル・コードがあれば、後は、XML バックエンドに含まれる他のセクションをルート要素の子として、他の部署のコンテナーとして機能させるだけのことです。文書全体が整形式に維持されている限り、PHP スクリプトでは簡単に他のセクションを含めることも、無視することもできます。
新任の取締役が、取締役会の自分の資料を他とは分けておきたいと要求してきた場合、リスト 1 およびリスト 6 を多少変更する必要があります。リスト 1 を例に取ると、変更後はリスト 10 のようになります。
リスト 10. セクションが追加された XML バックエンド
<?xml version="1.0" encoding="UTF-8"?>
<auditList>
<boardMinutes>
<boardMinute boardMin="bm1234">2011-04-07-xxxx</boardMinute>
...
</boardMinutes>
<projects>
<project projid="xyz987" boardMin="bm1234">
<draftContractA>2011-04-07-xxxx</draftContractA>
<contractA>2011-04-07-xxxx</contractA>
...
</project>
</projects>
<transactions>
...
</transactions>
</auditList>
|
上記ではリスト 1 を変更して、以前はprojects
セクション内にあった取締役会議事録エントリーを新しい boardMinutes
コンテナーに移しました。さらに、この新規コンテナー内の新しい boardMinute 要素に索引 boardMin を追加し、この同じ索引を、関連する project
要素の属性として追加しています。これで、projects セクションが関連する取締役会の情報を見つけることも、その逆も可能になります。このように、適切なコンテナー要素と索引付けの属性を処理するだけで、さまざまな経営陣の要求を満たすことができます。
この記事では、解説文書の提出という監査役の要求に対処するためのツールをいくつか探りました。必要な文書を必ず最短時間で見つけて提示できるようにするには、明らかに、XML ファイルとして編成された文書リストを PHP で操作するという方法が役立ちます。このように情報を編成すれば、監査要求を受け取ったときの作業負荷を、限られた時間でのストレスの多いタスクから、慎重に文書を分類して取得するという継続的なタスクに移せるようになります。
この記事で説明した設定は、項目の追加および登録を制御したり、欠落した要素をチェックしたりするために XML スキーマと doctype を導入すると複雑になってくる可能性があります。PHP と SimpleXML 関数は、XML が整形式であるかどうかに極めて大きく影響されます。そのため、単純なエディターを使って手作業でファイルを編集するよりも、編集後の文書が整形式であること確認するのに役立つ Eclipse (「参考文献」を参照) などの特化したアプリケーションを使用したほうが効果的です。
完全なペーパーレス・オフィスは、ビジネスの世界ではまだ珍しい存在です。その理由の 1 つとして、業務に関与するオフィスの間で互換するソフトウェアを実行しなければならないことが挙げられます。このようなタイプのシステムを構成するすべての要素がオープンソースとして無料で使用できれば、ペーパーレス・オフィスの完全導入の障壁となるのは、従業員のトレーニングと変化に対する経営者の消極的な姿勢だけとなります。
学ぶために
- PHP および SimpleXML: XML を通常のプロパティー・セレクターと配列イテレーターで処理可能なオブジェクトに変換するこのツール一式について、詳しい説明を読んでください。
- 「PHP での SimpleXML
処理」(Elliotte Rusty Harold 著、developerWorks、2006年10月): PHP バージョンにバンドルされた SimpleXML について学んでください。この拡張機能によって、PHP ページで XML にクエリーを実行して検索し、変更を行って PHP で使いやすい構文で再公開することができます。
- 「Eclipse
Platform 入門」 (Chris Aniszczyk、David Gallardo 共著、developerWorks、2007年7月): Eclipse での開発方法について詳しく学んでください。
- 『Getting
started with Eclipse』(DB2 on Campus book series): 無料の eBook で、Eclipse の全容を知り、実地体験してください。
- 「Introduction to XML」(Doug Tidwell 著、developerWorks、2002年8月): このチュートリアルで、XML の概要や開発された理由など、XML の基本を把握してください。
- 「XML 的思索:
XBRL を使って財務報告を分析する」(Uche Ogbuji 著、developerWorks、2009年1月): 財務情報における高度な XML の使用方法を学び、Extensible Business Reporting Language を解釈して財務報告書の情報を理解できるようになってください。
- 「Eclipse による XML 開発」(Pawel Leszek 著、developerWorks、2003年4月): 堅実なエディターで XML を編集するという概念を調べ、Eclipse で XML の力を利用してください。
- PHP でのスクリプト作成: 広範に使用されている汎用スクリプト言語、PHP について詳しく学んでください。この言語は特に Web 開発に適しており、HTML に組み込むことができます。
- この著者による他の記事
(Colin Beckingham 著、developerWorks、2009 年 3 月から現在まで): XML、音声認識、XHTML、PHP、SMIL、そしてその他の技術に関する記事を読んでください。
- New to XML: XML を学ぶために必要なリソースを入手してください。
- developerWorks の XML エリア: XML
分野でのスキルを磨くための資料を見つけてください。広範な技術に関する記事とヒント、チュートリアル、標準、そして IBM Redbooks については、XML ライブラリーを参照してください。
- IBM XML 認定: XML や関連技術の IBM 認定技術者になる方法について調べてください。
- developerWorks の
Technical events and webcasts: これらのセッションで最新情報を入手してください。
- Twitter
での developerWorks: 今すぐ登録して developerWorks のツイートをフォローしてください。
- developerWorks podcasts: ソフトウェア開発者向けの興味深いインタビューとディスカッションを聞いてください。
- developerWorks オンデマンド・デモ: 初心者向けの製品のインストールおよびセットアップから熟練開発者向けの高度な機能に至るまで、さまざまに揃ったデモを見てください。
製品や技術を入手するために
- IBM 製品の評価版:
DB2、Lotus、Rational、Tivoli、および
WebSphere のアプリケーション開発ツールとミドルウェア製品を体験するには、評価版をダウンロードするか、IBM SOA Sandbox のオンライン試用版を試してみてください。
議論するために
- XML
ゾーンのディスカッション・フォーラム: XML 関連のフォーラムに参加してください。
- developerWorks コミュニティー: ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者が主導するブログ、フォーラム、グループ、ウィキを調べることができます。