2009年6月30日火曜日

Alfresco Press Releases - Alfresco Powers TravelMuse.com Web Content Management

Alfresco Press Releases - Alfresco Powers TravelMuse.com Web Content Management[Alfresco Webサイト]




We chose the Alfresco WCM solution while in the start-up stages and are pleased with the runtime performance, scalability and functionality that has been delivered at such low costs, Beyond its content management capabilities, Alfresco was the clear choice based on its ability to extract document metadata for use by our back-end systems and improve the functionality of TravelMuse.com for consumers.



こんにちは。aegif 技術担当役員の石井です。



先日も話題にしたAlfresco WCMですが、先進的な事例がAlfresco社のWebサイトでも公開されていました。



今回、Alfresco WCMを使ってWebサイトのリニューアルを行ったのは、昨年話題になった旅行関連サイトのTravelMuseです。数十人のライターが書き起こしたレポートや各旅行パッケージのメタデータ(目的地、予算、ホテルの選択肢、アクティビティなど)を活用して、ユーザのニーズにあった旅行プランを提案してくれる、という売りをもったWebサイトです。



大量のレポートを抱えているということから、新しいWeb上の旅行サイトの中では特にAlfrescoの様な製品との相性が良かったのだろうと推察されますね。



上記の引用はTravelMuseのヴァイスプレジデントCyril Bouteille氏の言ですが、やはりWebコンテンツ管理製品としてのコストメリット・パフォーマンス・スケーラビリティだけでなく、文書管理的なメタデータのハンドリング能力が採用に至った理由であることが読み取れます。



(文責 Ishii Akinori IT-Coordinator)



2009年6月27日土曜日

Alfresco WCMの事例紹介(?)

米アクティビジョン、ソニー「PS3」向けソフト開発を中止する公算=CEO | テクノロジーニュース | Reuters[sourceName]

 


こんにちは。aegif 技術担当役員の石井です。




あまり当Blogでもとりあげて来ませんでしたが、Alfrescoは主要モジュールとしていわゆるECMスタックであるAlfresco DMと並列してAlfresco WCMというモジュールを持っています。標準のインストール手順にのっとってインストールをするとこのWCMもインストールされます。(プラットフォームとインストーラによりますが)




Alfresco WCMはWCMの業界ではリーダ的なポジションにあるInterwovenの出身者がデザイン、実装を手がけており、オープンソースのCMSとしてはかなり異色な製品に仕上がっています。(Web系のエンジニアによって自らの仕事を効率化するために急激な進化を遂げてきたPHPベースのCMS製品群とはかなり趣きが異なるという意味で「異色」という言葉を使いました)




さて、このAlfresco WCMもグローバルでは着々と実績を重ねてきています。特にAlfresco社がセミナなどの席で大きくアピールしている実績の一つに、引用したニュースにでてくるアクティヴィジョン社のWebサイトがあります。アクティヴィジョンは欧米では非常に有名な、今や世界トップのゲームソフト製作会社ですが、日本はゲームに関しては携帯電話以上の独自文化圏があるため、あまりその名前を知っている人はいないようでした。今回のニュースはPS3ユーザとしては不安ですが、Alfrescoの実績をよく知ってもらうには良い機会かもしれません。




いずれにしてもゲームに興味がない人にとっては何のインパクトも無いニュースかもしれませんが、ソフトウェアビジネスのエコシステムの屋台骨がぐらついている、という話には私自身は立場上無関心ではいられません。また、ゲーム業界と我々のエンタープライズ向けソフトウェアの世界では人材的にも交流はほとんどありませんが、ビジネスモデルや開発ツールの優位性など、ゲームプラットフォーム同士の攻防戦は非常に興味深い世界だと思います。




また、Alfresco WCMの面白い事例としてはセサミストリートのWebサイトというのもよく挙げられるようです。Alfresco社のメンバと会話をした時に詳しい話を聞くつもりで聞きそびれましたが、恐らくはsesameworkshopのことだと思います。このサイトではオープンソースポータルエンジンのLiferayも使われています。ジムヘンソンとマペットの世界についても個人的には非常に強い思い入れがあるのですが、それはまた別の機会に、ということにしたいと思います。




��文責 Ishii Akinori IT-Coordinator)



2009年6月26日金曜日

国際会計基準が求めるものとは:経営者による説明 (management commentary)

2009年6月23日に国際会計基準審議会(IASB)が経営者による説明(management commentary)についての公開草案を公表しました。



国際財務報告基準(IFRS)によるアニュアルレポートをご覧になったことがあるでしょうか。カラフルで立派な冊子で、グラフや図、写真も多く、日本の有価証券報告書とはかなり印象が違うと思います。
内容もビジネスの状況についての説明がかなりボリュームで、読み応えがあります。



今回の IASBによる公開草案は経営者がアニュアルレポート内で行う説明についてのガイドラインで、どのような説明をすべきか、原則を示しています。IASBによるとこれはあくまでもガイドラインで具体的な開示内容については各国の規制当局が定めるものとしています。



では、IASBは経営者が何を説明すべきと考えているのでしょうか。
公開草案では以下の項目が示されています。



(a) 事業内容の説明
(b) 経営の目標、戦略
(c) 企業の重要な資源、リスク、関係
(d) 事業の結果、今後の見込み
(e) 目標に対する重要な経営指標



項目としては特に目新しさを感じることもなく、投資家に対する説明としては当然というところでしょうか。



私が公開草案の中で注目したい点は将来の方向性を示すことが重要と考えているところです。



会計が扱うのはあくまで過去情報ですが、財務諸表利用者に有用な情報を提供するための補完の役割が明確になっています。



日本でもいよいよIFRSの適用にむけて動き出しています。経営者が現状をどのように考え、何を目指しているのか、外に対して積極的に発信する姿勢が大切になるでしょう。



Cathedral Break in Action:ITmedia オルタナティブ・ブログ

Cathedral Break in Action:ITmedia オルタナティブ・ブログ[sourceName]

 


こんにちは。aegif 技術担当役員の石井です。




弊社社長Blogでも告知がありましたが、うちのメンバがITmediaさんのAlternative Blogに参戦しました。




執筆者は私の大学時代の友人でもあり、同じく2歳児の父でもあります。(向こうは双子なので父親としての迫力でもかなりこちらが見劣りしてしまいますが)




彼はうちでは「ITアーキテクト」という肩書きで活躍してくれていますが、プロジェクトによっては直接コードを書くこともしています。AlfrescoのForgeにタイムスタンプ連携のプロジェクトを持っていたりもします。できるだけ、Alfrescoに限定せず「オープンソース」という広い枠組みで情報発信をしていってもらいたいと思っています。本人の人格は裏腹に、読みやすい記事を書く人間なので、是非更新を楽しみにしてあげてください。




��文責 Ishii Akinori IT-Coordinator)



2009年6月25日木曜日

Alfresco Press Releases - Innovative New Content Management Solution for Secure Inter-Company Team Collaboration

Alfresco Press Releases - Innovative New Content Management Solution for Secure Inter-Company Team Collaboration[Alfresco Webサイト]

 



こんにちは。aegif 技術担当役員の石井です。




Content CirclesとAlfrescoのパートナシップのプレスリリースです。Content Circlesはコンテンツ作成のフェーズを中心に支援する、いわゆるコラボレーションツールといわれる製品で、P2Pを利用したコンテンツ同期と中央集権的なサーバへのパブリッシュの両方のモデルに対応しているという特徴があります。(Windows版だけでなくMac版のクライアントがあることも特徴の1つであるかもしれませんが、私の環境ではうまく起動させることができませんでした)




パブリッシュ先としてはAlfrescoの他は、SharePoint・DocuShare・共有フォルダ・FTPサーバなどが挙げられています。ECM製品導入のモチベーションは、大きく管理精度の向上と作業効率の向上にあると考えられますが、やはり前者に重心が寄る傾向にあります。そもそも多くの場面で互いに衝突する指標でもありますが、ECMやEDMSが管理面に訴えて顧客を獲得してきた経緯から言っても、この傾向は当然の帰結であるように思われます。しかし、ガチガチの管理強化だけをうたっていたのではビジネスの先細りは目に見えていました。




そのため例えばEMCによる買収前のDocumentumはeRoomを買収しましたし、MicrosoftもGrooveに投資した後で買収という流れになりました。ユーザにとっての操作モデルをわけるという意味においても、文書管理とコラボレーションで道具を分けるというやり方には一定の説得力があるように思えます。しかし、それぞれのプレイヤが2つのツールを連携させるソリューションを提供していますが、コラボレーションから管理・再利用へのツール感の橋渡しがスムーズではないことが多いのではないかとも思います。コラボレーションについての要件も管理についての要件もユーザ組織によってまちまちで、それぞれのツールを単品で導入する場合にもしっかりとしたコンサルティングサービスを提供することがある種前提となっているはずです。にも係わらず、この種の連携は連携の切れ目自体が「ソリューション化」されてしまっているため自由度が落ちてしまい、効果が出づらくなっているのではないでしょうか。




今後GoogleのGoogle DocsやWaveを迎え、コラボレーションツールの市場はなお激化していくものと予想されます。Alfrescoとコラボレーションツールの連携については引き続き注目していきます。できれば、コラボレーションツールとの連携を前提とした場合の文書管理リポジトリの在り方について考えを整理していきたいと思います。




��文責 Ishii Akinori IT-Coordinator)



2009年6月24日水曜日

Markdown Extraテスト

こんにちは。aegif 技術担当役員の石井です。



最近、BlogエディタのKakuを使って記事を書くようになりました。(直接ブラウザで確認する手間を惜しんで改行その他がおかしくなっていた様です。申し訳ありません)



Typepad(Movable Type)側のフィルタだけでなくローカル環境のKakuに内蔵されているテキストフィルタも利用できるということで、今後はMarkdown Extraを採用したいと思います。Kakuはフィルタの設定によらずURLをペーストする度に自動的にMarkdown形式になってしまうので、これまでも結構戸惑うことが多かったのですが、今後はその仕様を最大限活かせるように記事自体もMarkdownで行くことにします。



(文責 Ishii Akinori IT-Coordinator)







2009年6月23日火曜日

Alfresco Press Releases - Alfresco Announces Winners of Annual Partner & Community Awards

Alfresco Press Releases - Alfresco Announces Winners of Annual Partner & Community Awards[Alfresco Webサイト]

 



こんにちは。aegif 技術担当役員の石井です。



2009年の年間のパートナとコミュニティのアワードが発表されました。残念ながら(?)弊社は受賞していませんが、各エリアでどういったパートナが活躍しているのかをご紹介することで、Alfrescoを中心とするオープンソースECMの現状を知っていただけるのではないかと思います。



まず、(比較的)ご近所のアジアパシフィック枠からは、以前シドニーでコミュニティイベントを開催したLateral Minds社です。オーストラリア・ニュージーランドで複数のプロジェクトを実現したことと、件のコミュニティイベントの開催が受賞理由としてあげられています。Lateral Minds社のCEO Alex Lee氏は、アジアパシフィックのエンタープライズ向けOSSの市場は今まさに成熟しようとしはじめている(企業がOSSアプリケーションを受入始めている)、そしてこの傾向は今後12ヶ月さらに加速していくことだろう、というような意味のコメントを出しています。(正確な翻訳は割愛します)



次に、ヨーロッパですが、Sopra Group社です。フランスの大手IT企業ですね。フランスではAtosOrigin社もAlfrescoの実績を持っていますし、大手IT企業とのパートナシップが上手く動いているようです。パートナシップ初年度ながら、MAIF、Cofidis、Euromaster、Alcatelなどの大型プロジェクトを受注したことが受賞理由としてあげられています。



北米エリアでは、Booz Allen Hamilton社(このあたりになるとカタカナの方が分かりやすいかもしれませんが)が受賞しています。DoD5015.2対応のレコードマネジメントモジュールに対する貢献が受賞理由とされています。



トレーニングパートナという枠ではComponize社が受賞しました。初のマスタートレーニングパートナであり、XMLベースのトレーニングマテリアル作成フローの実装などの点でも貢献が認められてたということのようです。



最後に個人コントリビュータのアワードをIntegrated Semantics社のアーキテクトSteve Reiner氏が受賞しています。Alfresco Tek Talk LiveやMeetUpでのデモ、Forge上でのCMIS Spaceやリッチクライアントプロジェクトでの貢献などが受賞理由となっているようです。



弊社も近いうちに受賞者を出したいと思います。



��文責 Ishii Akinori IT-Coordinator)



2009年6月22日月曜日

Alfresco Press Releases - Alfresco and EnterpriseDB Forge Technology and Business Alliance

Alfresco Press Releases - Alfresco and EnterpriseDB Forge Technology and Business Alliance[Alfresco Webサイト]

 



こんにちは。aegif 技術担当役員の石井です。
更新をさぼっていた間にAlfresco社からでたプレスリリースの紹介を少しずつしていきたいと思います。



まずは、PostgresベースのRDBMSであるEnterpriseDBとのパートナシップ締結のお話です。やはりMySQL→Sun→Oracleの話題とは無縁ではいられなかったということでしょうか。
MySQLの今後に依存する部分が大きいのはもちろんですが、今後はEnterpriseDBやIngresを利用した実装が増えていく可能性があります。(弊社も評価環境を用意していくべきかもしれません)



AlfrescoはEMC Documentumなどの従来の製品に比べればRDBMSに対する依存度が非常に低くなっています。パフォーマンスチューニングにあたる部分のノウハウが溜まりづらいのと引き替えに柔軟な配置プランがとれるというメリットがある、という状況です。これらはすべてHibernate経由でアクセスをしているという作りからくる特徴ですので、Hibernateのレイヤでパフォーマンスアップや運用ノウハウの蓄積がなされていけばデメリットの方は徐々に解消していくのではないかと期待しています。



現状ではOSSその物に親近感を持つエンジニアの方からのお声がけが多いので、Postgresへの対応度合いを質問されることも度々ありました。Hibernateベースであるというご説明だけさせて頂いていましたが、今後はこのパートナシップのお話やそこから拡がる事例のお話に繋げていくことができそうです。



��文責 Ishii Akinori IT-Coordinator)



2009年6月19日金曜日

同世代(?)の会社 その1

こんにちは、aegif 技術担当役員の石井です。



今、出張で長崎に来ています。坂が多い港町ということで、横浜や神戸に似た雰囲気の街を想像していたのですが(しかも中華街まで共通していますし)、景観はむしろ香港に似ているように思えました。港を囲む山の斜面にびっしりと建物が並んでいます。JRの長崎駅は文字通りのターミナル駅で、地図上で線路を確認しただけでも「来るところまで来た」という高揚感があります。きっとイギリス人がコーンウォールにあたりに行った場合でも同じような感想を持つんじゃないかと思いました。長崎が観光地として人気があって、修学旅行の行き先として選ばれることが多いのも納得できます。(本当は歴史的な背景などを直接の理由としているのだと思いますが)



さて、今回はAlfrescoを離れて、aegifとしてお付き合いがある「仲間内」の会社のご紹介をしてみたいと思います。我々aegifは私を含む創業メンバー4名のうち3人が新卒入社した外資系コンサルティングファーム(旧PwCコンサルティング)の同期なのですが、同じファームのOBで現在起業して活躍している先輩・同期・後輩たちの会社というがいくつもあるわけです。その中から直接お付き合いがある会社を、折に触れてご紹介していきたいなと考えています。(我々よりも広く活躍されている方々の方がむしろ多いでしょうから、ご紹介という表現は多少居心地が悪いものがありますが、我々との接点については未知の情報だろうということでご容赦ください)



まず初回のエントリでご紹介したいのが、Learning & Culture Innovation(LCI)さんです。ここは、私から見て先輩と後輩1人ずつのコンビでスタートした会社です。後輩の方は弊社メンバ(奇遇にも長崎出身!)の同期でもあります。彼らは、その名の通り教育を中心としたビジネスを展開している会社です。組織・制度設計、業務プロセス定義、インフラ構築、研修開発ガイド作成、社内インストラクター養成などの「人材育成コンサルティング事業」と失敗から気付きを得て、スキルに対する理解を深め、明日実践できるスキルを定着させる、というコンセプトで行われる実践型研修を中心とした「企業内研修事業」が主な事業内容になります。弊社でも、コンサルティングファーム出身ではない中途入社のメンバは、LCIさんの研修を受講してもらう用にしています。(企業文化の面でもエンジニア的なロールを担うメンバにも”コンサルティング”研修を受けてもらう意味はあると考えているので)



具体的にどういうサービスを展開しているのか、という点ですが、勝手に研修の内容を書き連ねるわけにもいきませんのでWebサイトにある文言を使って表現しますと「実務に限りなく近いケーススタディ」ということになります。これがなかなかに緊張感を伴ったものであるらしく、弊社の実際に受講したメンバに感想を聞くと、「自分がもう1度受けたいかというと尻込みするけど、他の人はみんな受けた方が良いと思う」という返事が返ってきました。(褒め言葉、と言って良いのではないかと思います)



最近ではクラスルーム型の集中研修以外にも、稼働進めることができるようなメニューも増えて、受講側の負担が少なくてすむパターンも導入されているようです。弊社ではまだそのパターンを受けた実績はないんですが、近々新メンバには受けてもらおうと計画中です。



コンサルティングと教育というテーマでは、我々にもいろいろと思うところがないわけではないのですが、初回に力を入れすぎるとすぐに息切れしてしまいそうなので、今回はここまでにしたいと思います。



��文責 Ishii Akinori IT-Coordinator)

5/14に実施したセミナについて

[http://www.aegif.jp/event/seminar090514](http://www.aegif.jp/event/seminar090514)



こんにちは。aegif 技術担当役員の石井です。
この場では事後の報告ということになってしまいましたが、先月14日にAlfresco Software社CEOのJohn Powell氏を招いてセミナを開催しました。



JohnさんのプレゼンはAlfrescoの近況報告のようなもので、各国の事例や最新の統計などを説明する内容でした。他にもアイ・ティ・フロンティアさんとレッドハットさんからもそれぞれ講演を頂いたので、その内容を簡単に振り返りたいと思います。



まずは、アイ・ティ・フロンティアさんから。AlfrescoをベースとしたSaaS型ECMサービス、OluOlu Cabinetのご紹介でした。OluOluというのは「快適な」という意味をもつハワイ語だそうです。今回ご紹介頂いた、OluOlu CabinetはOluOluという企業向けのSaaSによるサービス体系の一部を担うECMサービスという位置づけになります。このOluOlu CabinetのバックエンドにAlfrescoが利用されているわけです。



単なるAlfrescoのホスティングではなく、アイ・ティ・フロンティアさんでは、業務指向のテンプレートに加えて幾つかソフトウェア的な強化を行っています。なかでもインパクトが強そうなものが2点ほどあって、1つは、Flexベースのリッチクライアントです。OluOlu CabinetだけでなくOluOluのサービス全体に対するダッシュボードとして用意されたもののようです。もう1つは、ワークフローデザインのためのGUIです。Alfrescoのワークフロー定義は基本的にXMLファイルを直接編集する形で作成します。(jBPMワークベンチを使えばステップの流れ自体はGUIで作成することができますが、JavaScriptなどを埋め込みなどに対応していないため結局は直接編集が必要になるというケースが散見されます)。OluOlu Cabinetでは基本的なワークフローであれば管理者用のクライアントアプリケーションから直接編集できるようになっています。ワークフローに着目してECMの導入を検討されている方にとっては非常に魅力的なのではないでしょうか。これらの機能のスクリーンショットも、OluOluのサイトで見ることができます。[https://www.oluolu-itfrontier.com/web/oluolu/service/cabinet](https://www.oluolu-itfrontier.com/web/oluolu/service/cabinet)



次にレッドハットさんから「JBoss 活用事例の紹介と最新製品ロードマップ」という題の講演をいただきました。Linux界隈のミドルウェアビジネスの現状や今後の展望などが非常にわかりやすくまとめられていました。やはり印象的だったのは、Redhat、JBossという我々からみれば非常に大きなブランドを掲げてビジネスをされている人でも、日本での展開やオープンソースソフトウェアを活用したサービスのビジネスという意味では、まだまだ市場へのアピールが足りていない、と感じられているように思えたことです。レッドハット社の人が、自分の会社のビジネスを新奇性があるメッセージとして語り、またそれを新鮮なプレゼンとして受け取ることができるというのは私にとって非常に意外な体験でした。



最後に主催者である弊社から私が、オープンソースソフトウェアを活用したTCO削減についてお話をさせて頂きました。非常に大雑把に内容を要約しますと、ものを安く買う(TCOの話ですので)方法は、買う内容が決まっている状況では基本的に「仕入れ先を一本化してボリュームディスカウントを得る」か「複数の仕入れ先候補に相見積もりを出させてディスカウント提案を引き出す」のどちらかしかない。しかも前者の場合でも、定期的な契約の見直しスキームなどロックインによる値のつり上げを防止する策がなければ長期的なメリットがでない。という通常のコスト削減プロジェクトの議論をオープンソースのメリットの説明にかぶらせたような話をさせて頂きました。



弊社主催のセミナというのはこれが初めてで、運営その他の点についてもいろいろと至らない点があったと思いますが、参加してくださった皆様、講演をしていただいたパートナ企業の皆様、本当にありがとうございました。アンケートの結果を見ても、概ね成功であったと言って良いのではないかと考えています。また機会があればよろしくお願いします。



��文責 Ishii Akinori ITC)

2009年6月18日木曜日

Blog再開(?)

大変ご無沙汰しております。aegif 技術担当役員の石井です。



前回も「大変ご無沙汰しております。」で、書き始めていましたが、またも3ヶ月あまりも間があいてしまいました。
その間にも、Alfresco社の社長を招いてのセミナーを開催したり、弊社のメンバーがAlternative Blogを始めたり、といろいろな動きがありました。
今後はもう少し情報発信の量を増やしていきたいと思います。(いつも同じようなことを書いているような気がしますが)



��文責 Ishii Akinori ITC)

2009年6月17日水曜日

ようやく策定されたECMのための共通言語 CMIS(3/3) (Insight Now!より転載)

2/3を公開してからかなり時間がたってしまいました。申し訳ありません。
#実は1度にまとめて書いているので、単純なアップロード作業のミスなのですが・・・



リポジトリのモデルや基本となるオブジェクトタイプについてはすでにご説明しているので、本稿では独自のオブジェクトタイプの実装に関する規程と、各オブジェクトに対する操作をとりまとめたサービスについてご紹介したいと思います。



カスタムオブジェクトタイプ



オブジェクトタイプは属性の組み合わせによって定義されます。CMISにおけるオブジェクトは強い型付けがなされ、未定義の属性をインスタンスレベルで後から追加するという仕組みはありません。(JCRにおけるResidual属性、WebDAVにおけるDead属性にあたるものはサポートされません。定義にない属性が検出された場合は例外として扱います)



オブジェクトタイプ自体のユニークネスを確保するため、システムからユニークな識別子をタイプIDとして割り当てます。また、オブジェクトタイプの定義にも継承による階層構造を利用できます。継承の仕組みは以下のルールに従います。



・ルートタイプは親タイプをもたない。ルートでないタイプは必ず1つだけ親タイプを持つ。
・オブジェクトタイプは(それ自体オブジェクト型のものを含む)属性の集合として定義される。属性のオブジェクト型には継承機能は適用されない。
・サブタイプには親タイプで定義されている属性がすべて適用される。何かの理由で親の属性の一部を継承したくない場合は、定義ではなく値を未設定とする。
・クエリにタイプ名を使った場合は子孫タイプのすべてが対象となる。
・ルートタイプは基本オブジェクトタイプである文書・フォルダ・関連・ポリシの4つのみ。



さらにすべてのオブジェクトタイプに共通する属性がいくつか定義されています。



・ObjectTypeId オブジェクトタイプの識別子。リポジトリ内でユニークでなければならない。
・ObjectTypeQueryName SQLクエリ内でのテーブル名。
・ObjectTypeDisplayName アプリケーションに表示される名前。
・ParentTypeId 親タイプのID。
・RootTypeQueryName ルートタイプのテーブル名。
・Description アプリケーションによるタイプの説明。使いかたなど。
・Creatable 当該オブジェクトタイプのオブジェクトを新規作成可能かどうかを判別するフラグ。
・Queryable クエリで使えるかどうかを判別するフラグ。関連クラスには適用できない。
・Controllable ポリシを適用可能かどうか判別するフラグ。
・IncludeInSuperTypeQuery 親タイプを指定したクエリの対象とするかを判別するフラグ。



文書タイプのサブタイプを定義するために、追加で以下が定義されています。



・Fileable フォルダに格納できるかどうかを判別するフラグ。関連の場合はFalse。
・Versionable バージョン管理の対象かどうかを判別するフラグ。
・ContentStreamAllowed ContentStreamを持てるかどうかを表現する。"持てない""持てる""必須"の3段階。



関連タイプ向けにも追加で以下が定義されています。
・AllowedSourceTypes ソースオブジェクトとして許可されるタイプのID。
・AllowedTargetTypes ターゲットオブジェクトとして許可されるタイプのID。



さらにカスタムの属性を定義するために、各属性項目自体が持つ属性の規定があります。



・PropertyName 属性の名前。SQLクエリのカラム名としても利用。
・PropertyId リポジトリ内でユニークなID。
・DisplayName アプリケーションで表示される名前。
・Description アプリケーションによる属性の説明。使いかたなど。
・IsInherited 親タイプですでに定義されていたかどうか。
・PropertyType 属性値のタイプ。
・Cardinality 単一の値を持つか、複数の値を持つか。
・Choices オプショナルの属性で、アプリケーションが値選択式のUIを利用できるようにする。
・OpenChoice Choices利用時に自由記入を可能にする。
・Required 必須項目にする。
・DefaultValue デフォルト値を設定。
・Updatability 属性値の変更可能性。「読み取り専用」「変更可」「チェックアウト時変更可」の3つがある。
・Queryable クエリに利用できるかどうか。
・Orderable 整列可能かどうか。
・Precision 小数値向け。精度。
・MinValue 整数値向け。最小値。
・MaxValue 整数値向け。最大値。
・MaximumLength 文字列向け。最大長。
・SchemaURI XML属性向け。スキーマのURI。
・Encoding XML属性向け。エンコーディング情報。



以上の項目を組み合わせて新しいオブジェクトタイプを作成することができます。






クエリ



CMISで定義されているクエリ文法はSQL-92を下敷きにしたものになっています。また、データ操作については特に規定されておらず、読み取り専用の「リレーショナルビュー」という位置づけのものになります。



コンテンツリポジトリの情報を組み合わせたヴァーチャルなテーブルを想定し、そこへのSELECT文による問い合わせを行うためのルールが整備されている、という状況です。具体的には、オブジェクトタイプ(とその派生タイプ)毎にテーブルが作成され、行は個別のオブジェクトを、列は属性を表現する形になります。(値がセットされていなかったり、継承を受けていない属性の値はNULLになります)



基本的には属性値のテーブルになるので、ContentStream自体への直接的なアクセス手段はこのCMIS SQLの枠組みでは定義されていません。Object IDを取得したあとでメソッド経由でアクセスすることになります。



演算子や複数の値を持ち得る属性と単一の値しかない属性の違いによる振る舞いの違いについて仕様書上には幾つかの言及があるのですが、ここでは割愛させて頂くとして、4つほど特徴的な構文(述語、関数)があるのでそれらについてだけ簡単に紹介したいと思います。



・CONTAINS([識別子],<検索文字列>) 全文検索による条件づけ。
・SCORE() 全文検索によるスコアの取得。
・IN_FOLDER([識別子],<フォルダのID>) 対象フォルダに格納されている、という条件を表現。
・IN_TREE([識別子],<フォルダのID>) 対象フォルダもしくはそのサブ(子孫)フォルダに格納されている、という条件を表現。



サービス



・共通サービス要素
 特にメソッドは定義されず、例外などが整備されています。例えば以下の例外はCMISサービス全体で共有され、各サービスともに発生させる可能性があります。
 InvalidArgmentException 引数が不正
  ConstraintViolationException 制約が満たされていない
  ObjectNotFoundException オブジェクトが見つからない
 PermissionDeniedException 権限が不十分
 OperationNotSupportedException オペレーションがサポート(許可)されていない
 RuntimeException (随時発生)
 その他特定のサービスからしかあがらないような例外も定義されています。
 ContentAlreadyExistsException 作成しようとした文書がすでに存在している
 FilterNotValidExeption プロパティフィルタの条件にあわない(属性値を取得するメソッドは、対象属性を制限する"プロパティフィルタ”という文字列を受け取ることがあります。プロパティフィルタの実体はワイルドカードである*か属性名をカンマで繋げた文字列です)
 StorageException 容量不足などのストレージエラー
 StreamNotSupportedException 対象のタイプはContentStreamをサポートしていない
 UpdateConfilctException 更新の失敗(ロックをせずに複数ユーザの更新が重複しそうになった場合など)
 VersioningException 版管理上の不整合(対象がすでに最新版でなくなっているなど)



・リポジトリサービス
 getRepositories 対象サービスエンドポイントのアクセス可能なリポジトリのリストを取得
 getRepositoryInfo リポジトリの情報を取得。名前、URI、対応している機能など
 getTypes リポジトリ内に定義されているオブジェクトタイプの一覧を取得
 getTypeDefinition 個別のオブジェクトタイプの定義を取得



・ナビゲーションサービス
 getDescendants リポジトリのツリー上子孫となるオブジェクトの一覧を取得
 getChildren ツリー上直下の子となるオブジェクトの一覧を取得
 getFolderParent 格納されているフォルダを取得。オプションによって祖先フォルダすべての一覧も取得可能
 getObjectObjectParents 対象オブジェクトを格納しているフォルダの一覧を取得(マルチファイリング)
 getCheckedoutDocuments チェックアウトされている文書の一覧を取得



・オブジェクトサービス
 createDocument 文書を作成
 createFolder フォルダを作成
 createRelationship 関連を作成
 createPolicy ポリシを作成
 getAllowableActions 対象オブジェクトに対して実行可能なCMISサービスコールの一覧を取得
 getProperties 属性の一覧を取得
 getContentStream ContentStream(ファイル実体)を取得
 updateProperties 属性を更新
 moveObject オブジェクトを(リポジトリのツリー上で)移動
 deleteObject オブジェクトを削除
 deleteTree サブツリーごとオブジェクトを削除
 setContentStream ContentStreamを割当
 deleteContentStream ContentStreamを削除



・マルチファイリングサービス
 addObjectToFolder 対象オブジェクトをさらに別のフォルダに格納
 removeObjectFromFolder フォルダから対象オブジェクトを削除(撤回)



・ディスカバリサービス
 query CMIS SQLの実行



・バージョン管理サービス
 checkOut チェックアウト
 cancelCheckOut チェックアウトの取り消し
 checkIn チェックイン
 getPropertiesOfLatestVersion 最新バージョンの属性一覧を取得
 getAllVersions すべてのバージョンを取得
 deleteAllVersions すべてのバージョンを削除



・関連サービス
 getRelationships 関連の一覧の取得



・ポリシサービス
 applyPolicy ポリシの適用
 removePolicy ポリシの削除
 getAppliedPolicies 適用済みポリシ一覧の取得



機会があれば次は実際にCMISを使った開発の簡単なチュートリアルなどを紹介したいと思います。



��文責 Ishii Akinori ITC)