JCRをまとめていくことにした。

JCR(Content Repository for Java)はJSR170でまとめられた仕様であります。実装としてはApache jackrabbitがあります。S2JCRの実装を進めていて、たまに不安になるのでSpecもしっかり読んでいたりします。でも仕事が忙しくなって間があくと忘れてしまうのでしっかり書いておこうと思いますです。
題して「スーパー意訳によるJCR入門記(jsr170)をまとめる」の巻

かいつまんでJCRの概要を知りたいときはこちら
http://journal.mycom.co.jp/news/2005/06/20/008.html
http://journal.mycom.co.jp/news/2006/09/12/353.html

さっそくスタート!
Content Repository API for Java Technology Specification

1章 -preface Specには以下のものを含んでいるよー。
1.jsr170-1.0.pdf
2.ソース/jar (javax.jcr)

それだけー。

2章 - Introduction
2.1 Motivation(動機)

コンテンツリポジトリを提供するベンダが増えていく中、みんな独自の仕様で仕組みを提供していたけど、やっぱ共通のインターフェース、仕様って必要だよねーってことで始まりました。
んなものでJCRを利用することで、何がうれしいかというと

  1. 開発者は各ベンダごとのコンテンツ管理方法(APIとか)をお勉強しなくていい。
  2. 開発者はリポジトリアーキテクチャ、コンテンツが保存される物理的な場所とかを意識せずに(これとは独立して)開発できる(JCRの標準APIでアクセスするだけになる。)
  3. アプリケーションはそのままで、コンテンツリポジトリの置き換えも可能。
スケーラビリティ満点です。あ、ここまでではCMSのコンテンツというが強いけどコンテンツっていうのはファイルやデータなどのすべてを総称していっている。jBPMも実験的にとはいえJackRabbitサポートをしているのだ。ビジネスプロセスの中に当然、何かしらの文書(Excelとか)がでてきたりするわけで、そういうのを保管したりするのに利用されることも想定してたりする。

余談だけど、最近ではMSもsharepointを中心にECMなんてはりきっています。
http://www.microsoft.com/japan/solutions/ecm/overview.mspx

SOX/内部統制/BPMと騒がしくなってきたのでなおさらコンテンツリポジトリは注目されつつありまする。(一部で(^^;)

2.2 Goal

設計ポリシーがうたってあります。

1.特定のアーキテクチャ、データソース、プロトコルに依存するべからず! あたりまえのことですが、仕様的な一番の取り組みどころは階層、非階層のリポジトリモデルが扱える柔軟なAPIとのこと。 一応、
 hierarchical:path-based addressing of content items
 direct:UUID-based addressing
 、で実現しているらしい。詳細はおいおい登場することでしょう。

2.プログラマ目線で使いやすいこと!
3.既存リポジトリベンダも極力JCRにのっかりやすいようにしたよ
4.いくつか複雑な機能も標準化するべし
 仕様としてはオプション機能と2つのレベルに分けられている。Level1は既存各ベンダでも簡単に実装しやすいものになっている。(read-only リポジトリ、コンテンツタイプの定義、namespaceなど)Level2はコンテンツ書き込みメソッドの追加、コンテンツへのタイプの割付など)オプション機能としてはトランザクション、バージョニング、アクセス制御、監視など.

最初は何のためのレベルなのかなーと思ってたけどきっと各ベンダの既存リポジトリを考慮したのではと思えてきた。おのおの詳細はおいおい。

明日は3章から。