whonyは「Wassr用のP3が欲しい!」という動機で開発を始めたけれど、実装がAdobe Flex+Adobe AIRなのには理由がある。

 その理由は、

  • Adobe Flexによる本格的なWebアプリケーションの実践
  • Adobe AIRの実力の計測
  • Adobe FlexでFlashと反対の方向性の簡素なGUIの実装実験
 以上の3点。

 そして分かった事は、

  • Adobe FlexもAdobe AIRもまだまだ発展途上(コンパイラの最適化がいまひとつだったりバグがあったり)
  • ActionScript3のイベントモデルはメモリリークを起こしやすい(removeEventListener()の呼び忘れ)
  • Adobe Flexのコントロールコンポーネントは拡張し辛い(内部が密結合すぎる)
  • Adobe AIRはマルチプラットフォームは信用してはいけない(MacOSだけ、Linuxだけの不具合があったりする)
  • Adobe FlexはあくまでFlashの延長であり、簡素なGUIを実装しようとすると逆に手間がかかる
  • Flex BuilderによるAdobe AIRアプリケーションの作成は非常に簡単
 以上の6点。

 つまり、P3のようなJavaで作られたソフトウェアの真似は致命的に向いていないという事。

 そして、Adobe Flex+Adobe AIRで作るのであれば気に留めておくべき事は、

  • 速度に拘るのであれば他を当たるべき。 どうしてもAdobe Flexでやりたいなら最適化は自前でやる必要がある (http://actionscript.g.hatena.ne.jp/ConquestArrow/20070621/1182359767)
  • addEventListener()は使わないで済むようレームワークを実装すべき。 もしくはそうめんを使う(http://www.libspark.org/htdocs/as3/thread-files/document/)
  • コントロールを拡張したい場合、低機能であれば自前で別コンポーネントを作るべき。 あくまで継承したいのであれば、MXMLではなくActionScriptで作りcommitProperties()とupdateDisplayList()とmeasure()を適切にoverrideする
  • プラットフォームに依存する不具合は、自前で実装するかライブラリを使う
  • 簡素なコントロールを使いたいなら自前で実装。 もしくはせっかくのFlashなのだから表現力を活かすべき
 以上の5点。 要するに、

「あくまで発展途上という事を意識すべき」

 と、いうこと。

 Adobe Flexはオープンソース化され開発が加速しているが、バグの元締めである肝心のFlash Player APIライブラリがクローズドソースなので不具合の解消は鈍足。 いいかげん公開してほしい。
 ただ、不具合の多くは実装で回避できたり別に拘らなくても良いような些細なものだったりするので、臨機応変に対処できるならば何とかなる。

 Flash特有の表現力を用いてWebアプリケーションを作りたいのであれば、決して悪い選択では無いと思われる。


 以上、次回はコントロールの拡張におけるTips。
これだと入り口から出口までがいけないのでエラーを出したい。
でも俺は「入り口から出口までが繋がっていない」と言う判定がどうしても思いつかない。
地球記 プログラマちょっと来て
こちらのサイトが参考になるかもしれません。

迷路自動生成アルゴリズム
http://www5d.biglobe.ne.jp/~stssk/maze/make.html

要するに「空白の隣に空白」がスタートからゴールまで続いていれば良いわけなので、

1.スタートとゴールの空白の位置を把握
2.スタートの空白から「空白の隣に空白があるか?」を繰り返し判定
3.「ゴールの空白に繋ったか?」を判定

で、如何でしょう。

whonyについて

| | コメント(0) | トラックバック(0)
Whony はまだ test 版です。
ここに書かれていることは将来変更される危険性があります。

ヒトコトを選択し、Enterキー(もしくはダブルクリック)で返信モードになります。
返信モードは、返信モード中に表示されるアイコンをクリックすることで解除されます。

画像ファイルの選択は入力域にドラッグしたファイルをドロップすることでも可能です。
タブバー左端のアイコンをクリックするとタブをカスタマイズすることができます。
タブバー右端のアイコンをクリックするとタブの一覧を表示します。

WhonyはP3に準じたキーボードショートカットが用意されています。
  • Ctrl+Q プログラムの終了
  • Ctrl+. 表示Tab切替 右へ
  • Ctrl+, 表示Tab切替 左へ
  • Ctrl+I 入力域にフォーカス移動
  • Ctrl+L リストにフォーカス移動
  • Ctrl+O リスト先頭にカーソル移動
  • Ctrl+T みんなのヒトコトを取得する
  • Ctrl+R 返信を取得する
  • Ctrl+G 選択/返信IDの発言を検索
  • Ctrl+F添付する画像を選択
  • 0 リストのトップに移動
  • 1から5 発言者を番号の抽出タブに追加
  • A 返信先ユーザのWassrHomeを開く
  • B ヒトコト中のURLをブラウザで開く
  • C ヒトコトのページをブラウザで開く
  • F ヒトコトにイイネ!をつける
  • G 発言者の発言を検索して一覧表示する
  • H 発言者のWassrHomeを開く
  • N 返信先ユーザの発言を検索して一覧表示する
  • P 添付された画像を拡大表示する
WhonyはP3ライクなWassrクライアントです。
まんま「Wassr仕様のP3」を目的として作られています。
wassr52.jpg
なお、動作にはAdobe AIR 1.5 ランタイムのインストールが必要です。


シームレスインストールがうまくいかない方はこちらをクリックしてください。

ヘルプのようなものはこちらにあります。

更新履歴
  • 2009/02/01 beta10 リリース
    • タブが二重化する問題を修正
    • 初回起動時にエラーが発生する問題を修正
    • スクロールが確定するまでList表示を更新しないように変更。
    • List部のtoolTip表示をP3に準拠
    • 1キーコマンド「【P】添付された画像を拡大表示する」を実装
    • 返信状態アイコンを変更
    • タブの一覧をコンテキストメニューからウィンドウに変更
    • 設定情報の保存先をSharedObjectからローカルデータベースに変更
    • 最小化時に終了した際、次回起動時のウィンドウサイズがおかしくなる問題を修正
  • 2009/01/05 beta9 リリース
    • GUIを若干変更
    • [タブの一覧]ボタンを追加
    • 通信エラー発生時、自動更新が停止してしまう問題を修正
    • タブ選択時、ショートカットキーが効かなくなる問題を修正
    • List域のサムネイル表示部クリック時、写真が無い場合もウィンドウを開いていた問題を修正
  • 2008/12/23 beta8.1 リリース
    • 更新時の文字列が正常にURIエンコードされていなかった問題を修正
  • 2008/12/19 beta8 リリース
    • Outputzに対応
    • アプリケーションアイコンを追加
    • proxy対応
    • アイコンキャッシュ機構を作り直した
    • フルリストアイコン表示をP3準拠(名前と発言を縦に並べる)に
  • 2008/12/03 beta7 リリース
    • チャンネルに投稿された写真が表示されない問題を修正
    • NGワード設定が返信文に適用されていなかった問題を修正
  • 2008/12/01 beta6 リリース
    • [Ctrl+Enterで投稿する]設定が正常に動作していなかった問題を修正
    • Ctrl+Fで画像選択とイイネ!付与が両方起きてしまう問題を修正
    • タブの一覧で同じチャンネルのタブを複数追加できてしまう問題を修正
  • 2008/11/30 beta5 リリース
    • チャンネル対応
    • 『「友達のみに公開」へのレスは表示しない』を設定で可能に
    • タブの追加・削除を可能に
    • 写真表示が画面解像度を超える不具合を修正
    • 写真投稿機能を実装
    • プロフィールアイコンのキャッシュでエラーが発生する問題を再修正
  • 2008/11/18 beta4 リリース
    • ウィンドウの縮小にコントロールのサイズが追従しない問題を修正
    • 長時間起動時プロフィールアイコンのキャッシュでエラーが発生する問題を修正を修正
    • Ubuntu Linux で毎回通信時に認証が必要になってしまっている問題を修正
  • 2008/11/16 beta3 リリース
    • ユーザ情報を設定せずに終了した場合、次回正常に起動時しなくなる問題を修正。
    • 一度表示したプロフィール画像はキャッシュするように
    • NG_ID・ワード設定を実装
    • 抽出ID・ワード設定を実装
    • ログ検索を実装
    • 入力域が256文字以上だった場合の警告メッセージが表示されていなかった問題を修正
    • 返信メッセージがエスケープされていなかった問題を修正
  • 2008/10/07 beta2 リリース
    • ユーザ情報を設定せずに終了した場合、次回正常に起動時しなくなる問題を修正。
    • バージョンアップの際、Basic認証ダイアログが出た場合はダイアログを閉じて設定画面からユーザIDとパスワードを設定してください。
  • 2008/10/06 beta1 リリース
    • ユーザーインターフェイスを若干変更。
    • メニューの[表示]項目を実装。
    • 返信先ヒトコトの表示でidも表示するようにした。
    • メニューの[設定]項目を本実装。 フォントサイズの変更も可能にした。
    • メニューの[ヘルプ]項目を実装。
    • リストやToolTipでは絵文字を文字に変換して表示するように。
  • 2008/09/23 test6 リリース
    • 更新機能が動作していなかった問題を修正。
  • 2008/09/19 test5 リリース
    • 更新機能を実装しました。
    • 一覧のサイズがウィンドウサイズの拡縮に合わせて変化するようになりました。
    • 一覧をカーソルキーで移動したとき、画面がスクロールしなかった問題を修正しました。
    • メニューにアイコンを設定しました。
  • 2008/09/11 test4 リリース
    • ユーザ情報を設定しないまま終了した場合、次回起動時にエラーが発生する問題を修正。
  • 2008/09/11 test3 リリース
    • パスワード入力欄をマスク表示にした。
  • 2008/09/10 test2 リリース
  • 2008/08/26 test リリース

 久々というか今更な。

 CutomFeed::Configを作って(というかメンテして)いる時に思った事。

Filter::EntryFullTextは現状FilterとCustomFeedのふたつの機能をひとつのプラグインで担っている(コード上もcustomfeed.handleとupdate.entry.fixupのフェーズをhookしている)わけですが、
s_nobuの日記 - CommitterGuideLines日本語訳


また、ひとつのプラグインで複数のことをしないでください。Plaggerは非常に有名なUnix哲学のWrite programs that do one thing and do it well.に基づいて作成されていますので、プラグインを書く際もそれと同様にしてください。

 に、則るのであれば現状の実装は問題な気がする。 どうしてこうなったのかなあ。

myFeedzが良さげ

| | コメント(0) | トラックバック(0)
RSSアグリゲータとソーシャルブックマークを足したようなものであるらしい。
これからに期待。

関連リンク

通称デブサミ2007に行ってきました。
と、言っても懐事情その他諸々の為に参加したのは
出張Shibuyaイベントだけでしたが。

ma.laさんの
「道具を使っているんじゃなくて道具に使われている」
というのにハッ、となりました。 インターフェイスってやっぱり大事。

あと「もっとみんなプログラムしようよ!」というのは同感。
みんなもっとプログラミング遊びをしましょうよ。
数当てゲームくらいなら初心者でも30分以内でできますし。

しかし、今回、個人的に注目だったのはLightning Talkの方だったり。
もっと長く見たかったなあ。

興味深いToolがいっぱいでしたが、特に面白そうだと思ったのがAutomator
Plaggableにいろいろとできるらしく、おおさっそく試してみようと思ったらMac OS Xの機能ときたもんです。

これはあれですか。 Vistaも期待はずれだったし、いいかげんOS Xに乗り換えろというyoupyさんの啓示なんでしょうか。

FRISM: あなたの PC を快適に保つための 26 の方法

 1週間に1回デフラグはいくら何でもやりすぎ。 Windows 98ならばともかく、Windows XPはNTFSというデフラグメントに(ある程度)強いファイルシステムを使えるので。
 むしろ、デフラグはHDDにかなりの負担をかけるものなのであまり頻繁にやるのはやめておきましょう。 HDDの寿命が短くなります。

 デフラグは1月に1回くらいで十分でしょう。 また、断片化した部分だけを最適化してくれるContigを1月に1回使えば、通常のデフラグは3月に1回くらいで十分かと。


何故か無かったので作ってみた。
なお、Firefox2.0の形式で作ったのでFirefox1.5では動作しません。

Copyurlplus Clone

| | コメント(0) | トラックバック(0)

 メインブラウザをMinefield(Firefox 3.0a2)に変更しました。
起動も描画もえらい早くなって良い感じ。 はやくPlaceも使えるようにならないかな~、と期待。
 それはともかく、Minefieldに変更した為プロファイル作り直し。
拡張機能も一から入れ直し。 これを機会に整理し、使用頻度の低いものは外しました。

 そして今回インストールから外した拡張機能、Copyurlplus。
これはWeblogerなら外せない必須拡張機能の一つなのですが、userChome.jsで(ある程度とはいえ)再現しているのを見て、

「これ普通にJavascriptActionsでできるんじゃね?」

と、いう気がしたのでやってみました。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

あわせて読みたい

あわせて読みたいブログパーツ