それから残念なことにiPhoneへの対応がないようです。○MySpendingPlan.com一目見て「コレはいけてない」と判断して中止。life財政管理ツールと言うより、家計簿に特化した家計簿ツールという感じの扱い。手持ちの財産についてはあまり詳しく管理できませんが、収入と支出を見るだけなら十分すぎます。UIはとても綺麗でかっこいい。3G向けにはまだアプリを出しておらず、いつ頃対応するかの状況もつかめません。変わった点として、4つのうち唯一データ操作用のAPIを公開しており、非常に簡単に自分のデータを使ったアプリケーションが作れます。いうことで、最悪アプリを自分で作ってしまえる強みがあります。興味を惹かれたのはMoneytrackin'とClearCheckBoxですね。ClearCheckBoxを試してみようかと思います。IDタグが付いていなかったり、付いていてもめちゃくちゃだったり、アルバムのカバー画像がなかったりと、そのままiPhoneに詰め込んでも使えそうにありません。いうわけで、現在3GB程度ほどある音楽ファイル群にタグをつける作業をやっています。WikiSuperTagEditor改造版こちらに乗り換え中です。二日かけてようやく八割方完了というところです。いくつかのファイルのタグがiTunesに読ませたときにバグっているので、それを修正して、アルバム画像を登録すれば完成です。アルバム画像があるとiPhoneに読み込ませたとき楽しいんですよね。ああ、完成が待ち遠しいです。それにしても、mp3のタグはいけてない。ジャンル、私は「Toho」と「Vocal」の二つのタグを付けたいんだ!こういう複数タグ対応機能が欲しいところです。記事投稿画面のJavaScript製高機能エディタ(fckEditor)の性能が非常によくて、気に入っています。ところが、実はついこないだまで、Firefox3からの使用に対応しておりませんでした。(リンクが張れなかったり、画像が張れなかったり)大変悔しい思いをしながら、いままでずっとIE7で記事を書いていたのです。無事にFirefox3で高機能エディタが使用できるようになりました!!いやぁ、長かった。検証作業とかに恐ろしく時間を取られていたのでしょう。これで快適にFirefox3でブログを書くことが出来ます。Milkのおかげで背が伸びて彼女が出来ました!・・・というタイトルにしたらアクセス数が倍増しました!もちろん嘘です。前回書けなかった雑感(要するにチラシの裏)をちらほらと。Milkというタスク管理ツールを試してみました。以前からシゴタノで何度も紹介されていたのですが、結局何度もスルーしてしまいました。Dayと、やりたいことが盛りだくさん。時間とスケジュールを管理しないととてもじゃないですが乗り切れません。いうことで今更感もありますが、ついに私も手を出しました。「タスク管理ツール」と言うとつい身構えてしまいますが、実際にはその名が示すとおり「ミルクを買うのを忘れないでね!」といった程度の内容を記録するために使う程度の、気楽なツールです。・・・気楽なツールだから機能的には大したこと無いんだろうって?大間違いです。これこそまさに、私が求めていた「時間を管理するための時間の家計簿」です。Milk(以下RTM)の強さを自分なりに考えてまとめてみました。「具体的にそのタスクをこなすには何時間かかるのか」がボトムアップ式に得られる強力な外部連携機能(モバイル、Googleカレンダーをはじめとする各種カレンダー、ブックマークレット)それでは詳細な説明を以下に。導入してみましたここ最近何か物足りないなと思い、刺激を求めてとうとうFirefox3.0b5に手を出してしまいました。・・・いや、だってWebアプリが2倍速く動くとかなんとか聞かされてしまったら、もう我慢できないですよね。公式ページからダウンロードしてインストールしてみました。インストール時に気になった点と言えば、設定フォルダをFirefox2と共有していることぐらいでしょうか。5なんていう専用のインストールフォルダを作りやがったので、今後ベータが進んだり正式版が出たときにどうなるのかがちょっと気になります。アドオンについては、いくつかの公式対応しているアドオンを除いては、↓こちらのページを参考にしてFirefox2時代のアドオンをそのまま流用しました。Beta版に対応していないアドオンを強引にインストールする方法。具体的には以下の通り。Plus・・・通常版は対応していないので、Dev-Buildを利用することにしました。Toolbar・・・有効にしていると起動時にブラウザがハングアップしました。仕方がないのでLite版を導入することに。Developerテキストリンク(textlink)スクラップブック(Scrapbook)http://amb.vis.ne.jp/mozilla/scrapbook/?lang=jaおよそ快適です。使用感覚についてですが、まずとにかく速いです。Ajaxの通信速度(というかサーバの応答速度)はともかくとしても、Googleノートブックなどはまるでローカルアプリのように動作します。Javascriptぬきでも、どうやら裏でキャッシュを行っているようで、1度表示したページの再表示がとにかく速い。インターフェース周りは特に何とも思いませんが、Firegesturesによるマウスジェスチャの安定性と速度が圧倒的に向上しております。ついたり誤認識したりがほとんどありません。この忍者Blogで記事を書くときにしても、画像のアップロードおよび画像挿入の際の重さがほとんどありません。ローカルアプリのようにさくさく動作し、次々と画像がアップロードできます。ポップアップが開く速度がとにかく速い。逆にいくつか不満点も。Webアプリの動作が明らかにおかしくなる場所があります。中でも影響が大きいものをいくつか挙げてみました。Googleノートブック。なんか文字が分身してる。何このスクロールバー。決定的に困るのがこれ。いうタイプのWYSIWYGなエディタ上で、タブによるインデントが出来ません。リスト構造が階層化できないんですけど・・・どうしろと・・・調べてみても原因不明です。解決できそうなアドオンを探すか、Mozillaに殴り込みメールを投げるか・・・ですね。現状では問題があるにせよ、革新的なブラウザであることは間違いありません。Comment(0)【ツール】なめらかにしてやんよなめらかシリーズ完結編です。前回までのチャレンジで、余計な領域を削除して、ラベル領域を広げる方法までは何とかつかめましたが、依然として枠が広がった状態を維持することができません。仕方がないので以下の方針で広がった状態を維持することにします。タイマーで2秒おきに関数を起動して、サイズを調整するただし、1度広げたら2度は広げない(さもないと永遠に広くなります、ちょっとしたブラクラ)onresizeのタイミングで、1度広げたらカウンターをリセットして、再度調整できるようにするではやってみましょう。今回の肝になるのが、タイマーの代わりを担当するwindow.setInterval()と、もう一つ、Greasemonkey用のオブジェクトであるunsafeWindowです。今までは匿名関数を宣言して、その中で操作を行っていたのですが、これでは匿名関数のスコープが終了する=Greasemonkeyのスクリプトが終了すると同時に匿名関数の中で宣言した関数などが使用できなくなってしまいます。それでは匿名関数の外に関数を移動すればよいのかといいますと、実はそういうわけではありません。最近のGreasemonkeyの実行環境は、実はSandboxと呼ばれるオブジェクト(?スコープ?それとも関数?)の中でスクリプトが実行されているようなのです。図にすると以下の通り。赤い線がグローバルスコープ、緑の線がGreasemonkeyスクリプトの走っているSandboxと呼ばれる・・・スコープ・・・スコープでいいのかなぁ・・・にあたります。今、Greasemonkeyスクリプトの中からSandboxの中で宣言した関数を呼び出して、windowオブジェクトに持たせるとします。図中の青い線がそれです。ここでGreasemonkeyスクリプトが終了してしまうと、緑色の線で囲まれたSandboxはまとめて消えてしまいます。従ってwindowオブジェクトが参照している関数の実態もスコープアウトしてしまい、関数が実行できなくなってしまうみたいです。そこで出番になるのがunsafeWindowオブジェクトです。このオブジェクトはSandboxの外に直接アクセスすることが出来ます。Greasemonkeyスクリプトが終了してもスコープアウトしません。Sandboxの外にアクセスできる=既存のページで走っている他のスクリプトと干渉するということですから、きわめて危険で不安定な方法になります。Greasemonkeyの解説サイトでも「可能な限り使用を避けろ、あらゆる代替手段を用いて避けろ」と明記されています。いうわけで、完成はしたのですが、全くおすすめできません。一応バグはないみたいですが、何が起きてもが責任とれません。以上を踏まえましてこちらが完成品です。googlenotebookcustomizer_0_3使ってみた結果が以下の通り。ラベルエリアが広がりました!もちろん、リサイズしてもきちんとサイズが広がります。これだけのことなのに、ずいぶんと長いみちのりでした・・・このGreasemonkey、初めてJavascriptに触る人には最高のおもちゃになると思います。なんと言っても100行やそこらのソースで、普段から使っているWebページやWebアプリの動作をまるで別物に変えてしまうことが出来る手軽さと楽しさが最大の魅力です。今後Javascriptを学ぼうと志す方をみかけたらまずはGreasemonkeyをおすすめすることにしますね。Comment(0)【ツール】なめらかテクニックその2うまくいかなかったのがあまりにも悔しかったので、引き続きGreasemonkeyの話題です。昨日のスクリプトを書き直すことにします。やることは前回の地点ですでに明らかになっています(要するに、再描画が行われるタイミングで、styleの値を取得して書き換えるだけ!)。後はリファレンスサイトをを読みながら試行錯誤すればうまくいくに違いありません。昼休み時間を30分ほど使って挑戦してみました。いうわけで、突貫工事ですが、なんとかできました。googlenotebookcustomizer_0_2ソースを見ていただければわかりますが、いかにもJavaプログラマくさい記法になっていますので、生粋のJavascript使いの方がごらんになられると冗長に感じられるかもしれません。初心者でもわかりやすくソースを書くのがモットーですので、そこはご勘弁願いたいです。今回Javascriptについて勉強になったことは以下の通り。匿名関数の中でさらに関数を宣言することが可能(このあたりがオブジェクト指向ですねー)onresizeリスナElement.styleフィールドさて、これで今度こそ綺麗にラベル欄の枠が広がるはず。Greasemonkeyに装備してGoogleノートブックに行ってみました。!一瞬だけ枠が広がるのですが、すぐまた元に戻ってしまいます。!?どうやらonresizeのタイミングよりも後になってからラベル欄の枠のサイズの調整が行われているみたいです。これでは、イベントリスナを使ってもうまくいきそうにありません・・・どうしましょう。仕方がないので再度勉強して出直してきます。notebookでwikiっぽくリンクを張るこちらのサイトのスクリプトが参考になりそうです。紹介されているスクリプトは、なにやらタイマーのような機能を使って、2秒おきに全体を描き直す処理をやっています。これを真似すればうまくいくかもしれません!!しばらくは昼休みが退屈しないですみそうです。なめらかモンキーGreasemonkeyをなめらかモンキーと書くとやわらか戦車みたいでいいですね。一応ぐぐってみましたけど、まだ無いみたいです、なめらかモンキー。登録商標をとるなら今ですよ!さて。普段から大活躍している私のGoogleノートブックの中身が汚くなっていたので、久しぶりに大掃除をしていらないメモを捨て、メモの分類をやり直したり、ラベルをつけ直したりしてみました。ラベルをつけ直しているとラベルの量がどんどん増えてくるのですが、そこで気になったのが・・・この左下のコピーライトが書いてある領域。そのとき、ふと私の頭にこんな考えが浮かびました。「ここを消せばあと2個ラベルが余分に表示できる」ようし、なら消してしまえ!近頃こういう新しいチャレンジがなくてめっきり頭が鈍っていたところです。こんなおもしろい話を逃すものかと、さっそくGreasemonkeyのスクリプトを書いてコピーライトを消してしまおうと思い立ちました。JavascriptでDOMを使う勉強にもなります。JavascriptのDOMを使う上で、今回参考にしたサイトはこちら。http://www.javascriptkit.com/domref/elementmethods.shtmlhttp://youmos.com/news/getelementsbyhttp://www.openspc2.org/JavaScript/JavaScript_DOM/肝心のGreasemonkeyスクリプトの書き方はこちらを参考にいたしました。http://www.google.com/notebook/public/18412722587928953882/BDSaYIgoQyaWT1b4hまずはコピーライト部のソースをチェック。id="gn0_4">~中略~</div>このようになっています(詳しくはご自身でソースをご確認ください・・・)。いうことは、このid="gn0_4"の要素を削除してやれば、コピーライト部全体が消えて無くなるはずです。スクリプトを書いてみましょう。→googlenotebookcustomizer.user.jsといっても別段妙なことはしていません。Greasemonkeyスクリプトのお約束通り、匿名関数を定義して、その中でイベントリスナーを作成し、DOMで要素を取得&削除する関数を定義しているだけです。消えてくれるかな!?やった!消えた!!・・・ってあれ?ラベル欄が広がりません。?不審に思ってラベル欄のソースを見てみました。(5)</div></div></div></div>なんだかheightの数値がべた書きです。このソース、javascriptで動的に生成されているみたいなんです。この高さを生成するロジックに手をつけるわけにはいきません。ウィンドウのサイズが変わり次第、毎回高さが変わりますから・・・ウィンドウサイズが変わったときに呼び出されるイベントリスナーを新規作成する。そのイベントリスナーの中で、gn2_0要素を取得して、取得した要素のstyle属性の値を書き換える。いう処理を行ってやる必要がありそうです。こいつは困った・・・出直してきます。職業:システムエンジニア趣味:ゲーム・東方・ニコ動。