作成日

27 January 2009

1.はじめに

1-1.Adobe Developer Boxとは

ADB ( Adobe Developer Box ) は、Adobe AIR で作成された RIA開発者向けのデスクトップツールであり、主に以下の機能を備えています。

  • レコメンド
    RIAエンジニアに役立つ情報が記載されたサイトをレコメンド。
  • RSSリーダー
    RIAエンジニア向けのフィードが登録された RSSリーダー。もちろんユーザーによるフィードの編集が可能で、たくさんのフィードを見やすく表示。
  • PDF検索
    複数のPDFファイルを一発検索。インストール時に「Adobe Flex リソース」のPDFファイルが含まれています。

現在、Flex User Groupの大阪のメンバーが中心となって開発を進めており、2009年1月末ごろ Adobeよりベータ版がリリースされる予定です。画像はウィジェットモードで起動中のADBです。

1-2.この連載について

ADB は、RIA開発者に役立つツールになることを目標としていますが、それ以外にも、開発自体をオープンに展開し、RIA開発者の皆さんの参考になればいいなと考えています。従って、ソースコード公開!!開発の状況もこの連載にて随時公開!!という太っ腹プロジェクトになる予定です。
今回はライブラリ選定ADBのRSSリーダー機能まわりで使用したライブラリを紹介したいと思います。

2.RSSライブラリ

連載第1回では、「要件を固める」→「UI設計」という流れについての話でしたが、その間、実装部隊の方では並行して、要件を実現すべくライブラリを選定、作成しました。私が担当していたRSSリーダー機能を例にとると、以下のような流れです。

・ライブラリ化できる機能の洗い出し

どういった機能をライブラリ化するかですが、その辺りはどんな言語でもあまり変わらないと思います。

・既存ライブラリの適用を検討

今回は、オープンソースなど、既存のコードで利用できるものは極力利用する形で進めました。
ADB開発プロジェクトは前述の通り「太っ腹プロジェクト」だということもあり、プロジェクトとしての縛りは緩かったのですが、商用製品を開発するプロジェクトであれば、ソースコードの出所や著作権、利用許諾(ライセンス)等、十分注意する必要があります。

・足りないものは実装

要件に合う適当なものがない場合のみ、独自に作成しました。

「as3syndicationlib」「RSSAutoDiscovery」の内容は、次項以降で紹介します。

3.フィード解析(as3syndicationlib)ライブラリ

as3syndicationlibとは、Adobe Systems社がGoogle Codeという開発ホスティングサービスで配布している、フィード解析ライブラリです。
複数の形式(RSS1.0、2.0、Atom)のフィードを自動判別して解析してくれます。
なお、ライセンスはNew BSD Licenseとなっています。

  • as3syndicationlibの入手
    以下サイトからダウンロードしてください。
    http://code.google.com/p/as3syndicationlib/
    (zipファイルを解凍し、bin配下のxmlsyndication.swcを使用します)
  • as3corelibの入手
    as3syndicationlibは、as3corelibという別のライブラリ(こちらもAdobe Systems社がGoogle Codeで公開しています。ライセンスも同じくNew BSD Licenseです)に依存しています。こちらは以下サイトからダウンロードします。
    http://code.google.com/p/as3corelib/
    (zipファイルを解凍し、bin配下のcorelib.swcを使用します)
  • as3syndicationlibの使い方
    サンプルコードを見ていただければ分かりますが、使い方は非常に簡単です。

フィード解析結果は以下のような構造となっており、フィードの形式にかかわらず、同じインタフェース(IFeed)で扱えます。
なお、フィード形式独自の項目を参照したい場合には、取得結果を、形式ごとに定義されているクラスにキャストすれば良いようになっています。

4.フィード自動探索(RSSAutoDiscovery)ライブラリ

フィード自動探索(RSS auto-discovery)とは、HTMLにRSSがあることを示すタグを入れておき、対応したソフトがRSS feedを発見(discover)できるようにしておける仕組みのことです。今回、適当なライブラリが見当たらなかったため、ADBプロジェクトで簡易なものを実装しました。以下でポイントのみ解説します。

・HTMLの解析

フィードの存在を示す<link>タグをWebページのHTMLから探し出すため、まずはHTMLを解析します。
今回、標準のflash.html.HTMLLoaderクラスを使用してHTMLの解析を行いました。

・linkタグの探索

HTMLLoaderクラスで取得したHTMLの各要素へはgetElementByTagName()でアクセスできるため、_parseHTML()メソッドに記述したように、<html>→<head>→<link>と順番にHTMLタグを辿っています。

・linkタグの解析

linkタグの解析は、_parseLink()メソッドに記述したとおり、<link rel="alternate" type="{フィードの種類}" href="{フィードURL}">に合致するタグを単純に探索しています。

5.まとめ

第2回ではRSSリーダ機能で使用した「as3syndicationlib」「RSSAutoDiscovery」について紹介しました。
ADBでは他にも「Tweener」「ActionScript Thread Library」等のライブラリを利用したり、ローカルSQLiteへのアクセス・AIRの自動バージョンUP処理等のライブラリや、リスト・ツリーなどカスタムコンポーネントを作成したりもしています。
ソースコードは公開(される予定)です。是非ご覧ください。

では、引き続き開発中のAdobe Developer Box !次回の連載をお楽しみに!!