Adobe Integrated Runtime(AIR): 2008年10月アーカイブ

20081018.jpg

10月7日に0.10の配布を開始しましたシンプルフィードリーダー(RSS/Atomリーダー) 青春ブロッコリーですが、忙しなくバージョンアップを行い、本日、0.50の配布を開始しました。
こんなにバージョンアップばかりするつもりはなかったんですが、なんだか止まらなくなりました。
ただ、これで最初に思い描いていた追加したい機能をそれなりの形にできたので、しばらくはおとなしくなるんじゃないかと……。
少しでも多くの方に役立てていただけたなら嬉しいです。
乏しい頭脳とせめてもの愛情をたっぷり詰め込みました。

配布ページはこちらをクリック!

ただ、いくら愛情があっても、こういった配布用アプリケーションを一からすべて組んだ経験がなかったので、途惑うことばかりでした。
以下、0.10より後に追加した主な機能につきまして、途惑った点を交えながらご紹介させていただきます。

  • 日単位での切り替えボタン追加

    通常は記事を一つずつ前後させていく仕様なのですが、記事の数が多くなると、ある程度高速に表示記事を前後させたくなります。
    そのために"10個進む"とか"100個戻る"とかを考えたのですが、なんかぴんと来ないので、日単位での切り替えボタンを設置しました。
    日付という情報が目的記事を探す上では、まあ、実用的かなと。
    "old"のボタンを押すと"表示中の記事の前日以前の最も新しい記事"を、"new"のボタンを押すと"表示中の記事の翌日以降の最も古い記事"を表示します。
    つまりは一つずつ戻っていくか進んでいくかして最初にぶつかった違う日付の記事ってことです。

  • キーボードショートカット
    キーボードのどのキーをショートカットに使用するかに悩みました。
    F1~F4を"ヘルプ、リロード、最小化、終了"の頻繁には使用しない機能に割り当てることはすぐに決まったんですが、次の記事へ進むや戻るといった多用する機能をどうするかが問題となりました。
    アプリケーション上に入力フォームがある分、"Ctrl(Command)+なにか"にするとして、そのなにかをどうするか……。
    Ctrl(Command)キー周辺にあった方が使いやすいかなということで、右側Ctrl(Command)キー周りの記号を割り振りました。
    記号は覚えづらいかとも思ったんですが、左側Ctrl(Command)キー周りはCとかXとかSとかZとかAとか、もう入る隙間がなかったので……。

  • OPMLファイルの履歴表示
    本アプリケーションにはフィードのカテゴリ分けの概念がありません。
    カテゴリ分けしたいと考えてはいながらも、シンプルさを維持したままカテゴリ化するユーザインタフェースが思いつかず実行には移していません。
    "カテゴリ化がないのだからせめては"という気持ちでつけたのがimportあるいはexportしたファイル履歴のリスト化です。このリストを使うことによってカテゴリ分けと似たような使い方が可能です。

  • 表示中フィード及び記事の一覧リスト化
    最初はこの機能の導入はそれほど考えていなかったのですが、自分で使っているうちに、記事数が増えると目的の記事を探すのがかなりしんどいということに気づきまして。

  • 最新バージョンリリースの検知機能
    ダウンロードした人がこまめに青春Bの更新をチェックしてくれるとは限らないわけです。というか、普通しないですね。
    なのでこちらからバージョンアップを通知する仕組みを付け加えました。
    使用中のバージョンより新しいバージョンがリリースされている場合のみ、配布ページへのリンクボタンが表示されます。
    "クリックすると自動インストール"という仕様も考えたのですが、全ファイル上書きだけで安全にバージョンアップされるのかわからない等の理由でとりあえず却下しました

  • フィード順序の並び替え
    本当は最初から入れたかった機能です。
    でも、ユーザインタフェースが思いつかなかったり、あと、実用に耐えそうな内部処理が思いつかなかったので後回しになりました。多数フィードの並び替えを迅速にとは行かないですが、公開しても問題ないレベルの作りにはなったかなと考えています。


今後の展開としては、まずは内部処理をもう一度すべて見直したいなと。しっかり設計をしてから作り始めたわけじゃないので、ムダな処理がけっこうありそうな気がしています。データ構造含め。
フィード数100で記事数2000ぐらいまではテスト済みでまあ快適動作だったんですが、さらに増えた場合はアルゴリズム的なムダがかなり足を引っ張りそうで恐いのです。

あと、iGoogleガジェット対応はしたい。
したいんですが、でも、問題があって……単純に移行するだけなら簡単なんですが、今回のアプリケーション、フィードのリストをローカル上に保存しています。
iGoogleの場合、利用者がどの場所でアクセスするかがかなり流動的でしょう。フィードのリストをネットワーク上で共有できるようにしないと価値が薄れるかなと考えています。exportしたファイルを持ち歩くという手もあるにはあるけれど……。
また、使いづらいだけならまだしも、ネットカフェとかで使用した場合、自分の後に座った客にフィードのリストを盗み見られる可能性があるんですよね。

最後に……
本アプリケーションの開発中、わたしの愛読ブログであるLife is beautiful(Nakajima Satoshiさん)の人気エントリーソフトウェアの仕様書は料理のレシピに似ているを何度も読み返しました。
フィードリーダーに関する記述がされているわけではないのですが、読むとすごい励みになるんです。
見ていないと思いますが、心より感謝申し上げます。

200810072.jpg

本日、シンプルフィードリーダー 青春ブロッコリーのバージョン0.10の配布を開始しました。
AIRで作った「青春B初のデスクトップアプリケーション」です。
flash素材‐透明な便箋‐内にて配布中ですので、よろしければご利用くださいませ。
Windows2000、XP、VISTA、MacOS10.4、10.5で使用できます。
AIRランタイムのインストールも必要ですのでご注意ください。

ちなみに、フィードというのはWebサイト毎に生成される「更新情報をまとめたファイル」です。
フィードリーダーというのはWebサイト毎に配信されているフィードをまとめて効率よくチェックするためのツールです。
とてつもない数のWebサイトが存在する現在を反映したツールだからこそ、多数様々な方や会社が制作しているのでしょう。

AIRの勉強を始めて、なにかアプリケーション作りたくなって
「定型XMLデータから項目抽出して表示するだけだからそんなに難しくないだろう」
な~んて軽い気持ちで作り始めて、実力不足と無知を思い知りました。
もっとしっかり準備してから作るべきだったなと。

以下、制作に当たってつまづいた点を列挙します。
他の方の参考になるかはわからないですが。

  • XML形式

    フィードって、RSSだけじゃないんですよね(当たり前)。
    しかもRSSだけじゃない上、RSSの中だけでもいくつかバージョンがある。
    さらに、同じRSSのバージョンでも、とあるタグが存在するフィードと存在しないフィードがあったり。
    フィードの形式についてももっと勉強して細かい仕様を把握してから作り始めるべきだったなと。
    今回配布開始したバージョンではかなり行き当たりばったりな部分ありながらも、RSS2.0、RSS1.0、RSS0.91、Atom1.0、Atom0.3に対応させました。

  • 名前空間

    XMLって、名前空間があるんですよね。知ってはいたんですが、開発始めてから初めて意識しました。
    要素名がかぶらないようにとつけられる名前なのですが、これが対象フィードにて定義されている場合、そのままでは値取得できないんです。

  • 時刻取得

    今回のフィードリーダーでは全フィードから取得した記事を時間順に並べ替えます。
    そのために年月日時分秒を取得するわけです。
    これもなんだかんだ手こずりました。
    一桁の数値のときに頭に0をつけるかつけないかが統一されていなかったり、何時何分何秒まで表示するところと何時何分まで表示するところと時間は表示しないところがあったり。
    結局正規表現で総当りみたいになってしまったのですが、もっと良い方法はないのかなと今でも考え中です。

  • 文字コード

    コンピュータの中では文字を数値として扱います。一文字一文字に番号をつけているんです。
    その番号のつけ方のルールにはいくつか種類があり、番号と文字の対応表を文字コード表と呼びます。
    FlashはUTF-8が基本となっているので、それ以外の文字コードを扱うためには内部でそのための処理が必要です。
    どうにか自力で文字コードを判別する部分は作り、あとはreadMultiByteメソッド(指定した文字コードにて文字列を読み込む)を使用するだけと思ったら、EUC-JPをうまく読み込んでくれない!
    Flash側のバグなのかな? わたしの使い方が悪い?
    そのため、文字コードの変換には「WEB2MEMO様」配布のActionScript用日本語文字コード変換ライブラリ『Jcode』のソースを流用させていただきました。
    心より感謝申し上げます。

  • OPML

    OPML(フィードリーダー間でデータを移動するための標準形式)というものの存在を、今回のアプリケーションをほぼ完成まで作ったところで初めて知りました。
    それまでは独自フォーマットでのバックアップ機能設けていました。
    今にして思えば「OPML知らずにフィードリーダー作るんじゃねえよ」って感じですね。


バージョン0.10としたことからもわかりますように、まだまだ機能的にも完成度的にも不充分です。
「このフィードが読めなかった」等のバグ情報や、追加してほしい機能等ありましたら、ぜひご連絡ください。
できるだけ対応させていただきます。
ご連絡はコンタクトのコンテンツの投稿フォームをご利用ください。

開発ファイルもいずれ配布したいなと思います。

これからもどうぞよろしくお願いいたします。

1

概要

青春B運営メンバー多口カタンによる雑記blogです。
自己紹介はこちら。開発物をまとめたものはこちら
 
ヘッダーイラストはkojiさん制作です。
感想・意見・要望等ありましたら気軽にフォームにてコンタクトくださいませ。
 
Twitterはじめましたので誰でも気軽に声かけてくださいね。