ページ

2008年8月29日

Ubiquityの中身メモ

Ubiquityの続きです。とりあえず、ソースをダウンロードして中身を見てみます。chrome/contentのディレクトリの中におもしろそうなコードが転がっています。

まずは、builtinfactories.jsです。名前からすると組み込み関数を作成するコードが書かれていそうです。makeBuiltinGlobals関数で、グローバルに使える変数を定義しています。 XPathResult、 XMLHttpRequest、 jQuery、 Template(何だ?テンプレートへのパス?)、  Application、 Components、 window、 windowGlobals、 globals、 displayMessageが定義されています。jQueryみたいに名前から想像がつくものから、Componentsのように調べないと分からないものまであります。

cmdutils.jsの中には昨日のエントリのCreateCommandのようなユーティリティ関数が定義されています。CmdUtilsの関数は20個ぐらいいます。このファイルをそれらの関数が何をしているかわかります。

builtincmds.jsはあらかじめ組み込まれている関数が定義されています。ここが教科書的なコード置き場です。(僕は時間がないときはドキュメントを読まずにサンプルコードやテストコード、組み込みのコードを読むので・・・)
ここを読んでいるとUtilsのAPIがいるらしいです。その人たちは、utils.jsの中に隠れています。こっちは10個ぐらいのAPIです。

これで、参照すべき所は大体分かったはず。

Gears for Safari

GoogleのGearsがSafari対応のベータ版がでたらしいので,インストールしてみました。僕が何も考えないで使えそうなのはGoogleのReaderとDocsなので,その辺を試してみます。英語じゃないと使えない(日本語だと使えない)のは昔と同じです。Readerの設定で言語を英語にすると,オフラインで使用するかどうかのアイコンが右上に現れます。
オフラインにすると同期が始まります。2000個のアイテムを同期したとでます。何となく,ちゃんと使えてそうです。
次にDocsを使ってみます。オンラインで一度開いたアプリはオフラインにしても動くのですが,一度も開いたことがないアプリは,オフラインで開こうとしてもLoadingのまま何もできません。データ自体は同期しているみたいですが,JavaScriptとかその辺がちゃんとなっていないみたい。Firefoxではどうなんだろう?

とりあえず,Readerについて言えば,iPhoneがあるのでいらなくね?

2008年8月28日

FirefoxのプラグインUbiquityで遊んでみる

MacBookFirefoxを昨日やっと、バージョン3にしたばかりで流行から取り残されている今日この頃です。最近はUbiquityというFirefoxのプラグインが流行っている(?)ということで、インストールしてみました。

Webと言語を結びつけてユーザーがもっと早く簡単に一般的なWebタスクを実行できるようにする、実験的なブラウザプラグイン
というものらしいです。手軽にマッシュアップができるとか書かれていますが、難しいことはさておき、まあ、コマンドを実行するためのもので、コマンドはJavaScriptで書きます。とりあえず、helpと打つとヘルプがでるし、command-listと入力するとコマンドの一覧がでます。command-editorと打つと自分でコマンドを作成するためのウィンドウがたちあがります。と言っても単なるテキストエリアがあるページが出るだけですが…。ただし、入力したそばから保存してくれるので、明示的に保存しなくてもいいし、自分で入力したものはすぐに使えます。

コマンドの作り方は、「Creating Command Tutorial」に書かれていますがAPIがよく分かりません。サンプルのコードをざっと眺めますが、とっても簡単そうです。でも、APIは・・・。

さて、僕が作りたいというか、欲しい機能が簡単にTracのチケットを開いたり、チケットを作成できたりすればいいだけなので、特定のURLが開くだけの単純なものでいいのです。コードだけを書いちゃうとこんな感じ。

CmdUtils.CreateCommand({
name: "ticket",
takes: {"Ticket Number": noun_arb_text},
execute: function(ticket_no) {
openUrl("http://私のTracサーバ/ticket/" + ticket_no.text);
}
})

別の書き方もできますが、小さな脳みそでは一度に沢山は覚えられません。

CmdUitls.CreateCommandでコマンドが作れます。引数にハッシュを指定して名前とか実行する関数とかを定義していきます。JavaScriptじゃよくあるやつですね。nameはコマンドの名前になります。executeで実行したい処理を書きます。openUrlは指定したURLを開いてくれます。openUrlInBrowserという人もいるみたいです。takesを指定するとコマンドに引数を指定できます。でも、translateとかのコマンドを見ると、引数にもっといろいろ指定できるようです。

簡単でしょ!

もっと詳しいことはそのうち書くかもしれませんが、忘れるかもしれません。

追記
ubuquity 0.1.1にしたらopenUrlじゃなくってUtils.openUrlInBrowserにしないと動かない。

2008年8月27日

MacBookのFirefoxを3.0.1にアプデート

僕のMacBookのFirefoxは今まで2.0を使ってきました。UbuntuのFirefoxはもちろん3.0ですが,Macはものはダウンロードしてあるのですが,インストールせずにそのままになっていました。理由はFirebug1.2のリリースを待っていたと言うのが,もっともらしい理由です。Firebug1.2もリリースされてしまったので,インストールしないもっともらしい理由を失いました。仕方なく,Firefoxのバージョンをあげます。メインはSafariを使っていて,僕の最近の生活ではSafariで困ることはほとんどないので,Firefoxは開発用です。つまり,動作確認とJavaScriptのデバッグですね。

Firefoxのプラグインはもともとあまり入れていませんでしたが,次のものです。
  • Firebug
  • TabMix Plus
  • Gears
  • bbs2chreader
Firefox3だとbbs2chreaderは使えないらしいですが,もともと使っていなかったので気にしません。TabMix Plusは開発版だと動くらしいので,開発版を入れちゃいます。Firebugはもちろん1.2にします。Gearsは,うーん,調査用に入れているだけですが,単にまだ,入っているだけです。何もしていません。

UbuntuでFirefox3を使っているので,MacBookのFirefoxのバージョンがあがってもなーんとも感じません。ちゃんちゃん。

2008年8月25日

iPhone固有のCSS

元ネタ:

前回のviewportに加えて,CSSでiPhone固有のカスタマイズが出来ます。iPhone固有のCSSのプロパティは「-webkit-」で始まります。-webkit-border-imageや-webkit-border-radiusでボーダの画像や角の丸みを制御できます。

-webkit-text-size-adjustでテキストのサイズを指定できます。noneかautoか倍率やサイズを指定します。デフォルトはautoのようですが,viewportのサイズとの組み合わせで調整した方がいいかもしれません。横幅が320pxより大きいときは考えた方がいいかも。

-webkit-tap-highlight-colorでリンクをトンっ!ってタップしたときの色を変えられるそうです。デフォルトは灰色です。あまりこれを使いたい理由が分りません。

2008年8月22日

Internet Exploreのシェア

blogを引っ越してから2週間弱です。引っ越してからはアクセスがまだ、少ないです。アクセス数はもう気にしていないので、どうでもいいです。

さて、いろんなところで、Firefoxのシェアが増えているとききます。ここのアクセスをみると、

  1. Firefox                     46.88%
  2. Safari                        29.6%
  3. Internet Explore   21.88%
Firefoxのシェアが断然多いです。Safariもブレイク直前でしょうか?IEは悲惨です。

OSは相変わらずWindowsが多いです。ほぼ同じぐらいMacがいます。Linuxはかなり少ないです。以前はLinuxが幅をきかせていたので、Linuxのシェアは落ち込んでいるんでしょうか?

まあ、サンプル数が以前に比べて二桁減っているので、全然当てになりません。

夏は行ってしまった?

今日は涼しいです。電車の中は寒いです。まだ,8月です。夏はもう,過ぎ去ってしまったのでしょうか?

北海道では115年ぶりの記録更新だそうです。寒いはずです。寒くなってきたと言うことは,そろそろPCを買ってもよいと言うことでしょうか?

2008年8月21日

WEB-DB Press Vol.46に記事を書きました

WEB-DB Press Vol.46にPythonの記事を書きました。そして、今日、雑誌が届きました。

僕の記事のタイトルは、「特集3 そろそろ試してみませんか?
文法&日本語,MVC,フレームワークPylons[速習]Python」と言うことらしいです。うーん、長い。

要約は

Django,TurboGears,Pylonsなどの各種フレームワークの活発な開発,Google App Engineの登場により,プログラミング言語「Python」への注目度が高まっています。本特集では,「WebプログラマのためのPython」をテーマに,Pythonの機能と文法,気になる日本語環境,そしてO/Rマッパ,テンプレートエンジンなど,開発基礎となる部分を丁寧に解説します。さらに,フレームワークPylonsを使ったサンプルアプリケーションの作成にも挑戦し,開発の流れを押さえつつ,Pythonの旬の情報をふんだんにお届けします。
と言うことです。目次は、

特集3
ろそろ試してみませんか?
文法&日本語,MVC,フレームワークPylons[速習]Python

* 第1章:Java&他言語プログラマも楽々スタート! Python入門
……対話モードで文法を学ぶ……大谷弘喜
* 第2章:Pythonとデータベース
……豊富な稼働実績を持つSQLAlchemy……大谷弘喜
* 第3章:Pythonのテンプレートエンジン
……新世代Makoテンプレートエンジン……大谷弘喜
* 第4章:いますぐ始めるPythonアプリケーション作成
……WSGI,フレームワークPylons,一行掲示板……大谷弘喜
です。新世代は新世代でも何でもないです。SQLAlchemyの稼働実績もどうなんでしょう。本になってから目次をまじまじと見ました。恥ずかしい。

2008年8月20日

CodeRepos

個人リポジトリを共有しよう!計画。」と言うのがあるらしいです。

みんながそれぞれ作って公開してる公開レポジトリを一緒くたにしちゃいたい。参加してる全員がどのファイルもみたり変更したりできるような。

パッチ送られてくる代わりに「後で見とくからコミットしといて」とかいえたりとか、つくりかけで放置したもので他の人が興味もったら続き作ってもらうとか、メンテするのめんどくなったのだれかにやってもらうとか、突発的に誰かと一緒にプロジェクト始めたりとか、できる!
と言うことらしいです。ちょっと面白いです。と言うか、サーバが壊れてしまって,いくつかのプロジェクトはSourceforgeに引っ越そうと思っていましたが,こちらでもいいかな?いや,決して捨てるんじゃないんです。きっと。ただ,理想は分るんですが,ちょっと疑問なところもあります。でも,僕のプロジェクトの引っ越し先にはいいかも。

どうでもいいことは,FAQでSubversionの使い方で,僕の記事へのリンクが張ってあります。少しは役に立っているかもしれないと思うと,ちょっと嬉しいです。でも,LinusはSubversion嫌いなんだよな(また,自虐的)。

2008年8月19日

viewportって何だ? その2


このあたりをベースに。iPhoneの画面サイズはこの画像のような構成になっているらしい。で,横の画像のvisible areaの領域がviewportです。普通のブラウザだと,スクロールバーとかでviewportの領域は小さくなりますが,iPhoneは固定です。

普通のWebページをレンダリングするときは,横幅を980pxとしてレンダリングして,画面サイズに合うように縮小します。横幅を決めないとレンダリングしようがないので,まあ,妥当な実装だとは思います。でも,980pxって言うのはどういう根拠なんでしょう?このサイズはちょっと納得できません。

viewportを指定することで,横幅などをそのサイズでレンダリングします。320pxとか480px(横にしたとき)にすると,縮小されずにきれいに表示さます。拡大,縮小はscaleを指定すれば,制御可能です。

viewportの指定の仕方は,「WebページのiPhone対応について調べてみる その2」「iPhone/touch向けのmeta要素viewport」に。まあ,幅と高さ,拡大倍率が指定できます。また,倍率はユーザが変更可能かどうかも制御できます。

基本的には,横幅は980pxより大きいWebページはMobileSafariが頑張ってかっこ良く見えるようにレンダリングしてくれます。980pxより小さい場合は,左右に余白が出来ちゃいます。そのため,980pxより狭い場合は,viewportを指定せよ!高さを固定したい場合もviewportを指定せよ!必要であれば倍率も制御できるので心の片隅に止めておけ。と言うことでいいのかな?


MobileMeまた延長か・・・

Mobile Meがまた無料で延長なんですね。僕の使い方だと,そんなに困ったことになっていない,もしくは気づいていないので,延長されると嬉しいです。

で,前回の分とあわせて,合計3ヶ月分です。最大の売りの一つのプッシュサービスが来年まで延期されちゃった(機能がおちた)のに加えて収束に3ヶ月かかるって,かなり大変なことになっていたのか?

2008年8月18日

PythonでExifの編集

iPhoneで撮った写真の位置情報が常に北緯の西経になる問題で,せっかく位置情報がついているので修正したくなるのが人情です。しかも,iPhoneで撮った写真は沢山あるので,GUIのツールでちまちま作業することは出来ません。コマンドラインのツールは何があるか知りません。まあ,シェルで計算させるのもつまらないので,PythonでExifを扱ってみました。

Python Imaging LibraryもExifを読み込めますが,出力は出来ません。Exifのついた写真を編集して保存すると,Exifがなくなるみたいです。仕方なく他のものを探すとpexifと言うのがいます。pyexifと言うのもいて,これは読み込みしかできないです。名前が異常に紛らわしいので注意。

今回はpexifを使って位置情報の編集します。と言っても,get_geoで位置情報をとってきてset_geoで設定し直すだけ。

from pexif import JpegFile

ef = JpegFile.fromFile("image.jpg")
geo = ef.get_geo()
ef.set_geo(geo[0], -geo[1])
ef.writeFile("image.jpg")

うーん,簡単。

iPhoneの北の西

iPhoneで撮った写真にGPSの位置情報を入れてあげると,必ず北緯の西経になるらしい。どうりで,奄美大島がカリフォルニアの近くの海の上にあるはずです。納得しました。

さて、僕のMacで位置情報をどうやって編集すればいいでしょう?

ダークナイト


週末にダークナイトを見ました。バットマンの映画です。映画のチケットをもらったので,一人で行ってきました。ポニョを見ようかと思ったのですが,「いい年下オヤジが一人で行くの?」と蔑まれたので諦めます。スターウォーズのR2D2も出演しているらしいインディージョーンズはかなり込んでいるらしいです。ハンナプトラ3も込んでいます。込んでいるだけで,ちゃんと座ってみられるのですが,のんびりと見たいので,ダークナイトにしました。

ダークナイトですが,映画の途中まで「dark night」だと思っていました。夜の方です。映画の途中でwhite knightとかってでてきて初めて騎士の方だったんだと分りました。

で,バットマンビギンズの続きだろうと思ってみていたのですが,結構面白いです。いいヤツが悪いヤツになっちゃって,そのことをバットマンが隠蔽して・・・。ふっふっふ(意味不明)。

2008年8月15日

Macもそろそろ

僕は大体2年周期でノートPCを買い替えています。今のMacBookは年末頃に2年になります。そして,PCとかを買うのは大体決まって冬です。

さて,新しいMac Book Airがでるとか,新しいMacBookはデザインが変わるとか,いろいろ噂は聞こえてきます。悲しいことは,昔と違って今使っているハードウェアの性能に不満がほとんどないことです。ハードウェアのスペックは買い替えるときの理由にはなりません。ただし,違いが体感できないとしてもスペックが下がることは避けたいです。まあEeePCみたいな全く違うセグメントであればスペックは下がってもいいですが・・・。
ハードウェアのスペックより,重さとデザインが選択の基準になります。MacBookはまだどんなものか分らないので,楽しみです。Airは噂によると,今のMacBookと同じぐらいか,ちょっと上っぽいので,買い替えの対象になります。両方見比べて年末ぐらいまでに買っちゃうかもしれません。まあ,お財布と相談なんですが・・・。
何となく,MacBookをまた買っちゃいそうな気がしますが・・・。

2008年8月13日

iPhoneのデータの転送料

iPhoneの設定の使用状況にある「携帯電話ネットワークデータ」によると,一ヶ月間での受信データは200MB(Bはbyte? bit? byteだよね)もありました。送信量は少なくって14MBでした。って,多い!一体何に使っているんでしょう?ぼくは至って普通の使い方しかしていないつもりです。マップが沢山ダウンロードしているんでしょうか?

おそるべしiPhone。

gihyo.jpのWSGIの記事

gihyo.jpにWSGIの連載があります。今度でるWeb DB PressにPylonsの記事を書いたのですが,本当はPylonsじゃなくって,WSGIだけでアプリケーションを作っていって・・・という内容にしたかったのですが,ページ数が足りないので,諦めました。WSGIって単純な分,説明が難しくって,ある程度経験のある人ならすぐに分ってもらえて,そうじゃない人は,「何が嬉しいの?」みたいになっちゃうんじゃないかな?

で,この連載,とっても楽しみなんです。

ちなみに,社内では「WSGIはフィルタです」で大体分ってもらえます。でも,この言い方も危険で誤解を招くんですが・・・。

WebページのiPhone対応について調べてみる その2

前回から引き続いてWebページのiPhoneへの対応の仕方です。今回は「Webコンテンツの最適化」をざっと眺めてみます。

CSSの切り替え

最初はCSS3で条件に応じてCSSを使い分ければ,iPhoneに最適化したページが作れると言うものです。CSSはあまり詳しくない(かなり昔の知識のまま止まっている)のですが,screenとかprint以外の条件で切り替えられることは知りませんでした。

条件はscreenでなおかつdevice-width、min-device-width,max-device-widthで切り替えると言うことです。

max-device-width : 480px : iPhone
min-device-width : 481px : 普通のブラウザ

こんな感じで書くらしい


<link media="only screen and (max-device-width: 480px)" href="small-device.css" type= "text/css" rel="stylesheet"/>

<link media="screen and (min-device-width: 481px)" href="large-device.css" type= "text/css" rel="stylesheet"/>

onlyがついているのはCSS3に対応していない古いブラウザには無視してもらえるそうです。外部CSSファイルがおけないbloggerとかだと,次のようにテンプレートの中に書けばいいらしい。

@media screen and (min-device-width: 481px) { ... }
ユーザエージェント

ユーザエージェントは決まり事がいろいろありますが,「Mobile.*Safari」にマッチすればOK。えっ。はしょり過ぎ?

WebページのIcon

faviconのiPhone/touch版ですね。apple-touch-icon.pngをトップにおいておけばいいらしい。サイズが書いていないんだけど,縦横32pxぐらいでいいのか?

<link rel="apple-touch-icon" href="/custom_icon.png"/>
って書いておけばページごとにアイコンを切り替えられる。

と言うことで,のこりはまた今度。

iPhoneのネットワークスピード

彼の偉大なS氏(って誰だ?)は,「ブロードバンド回線になって最初にやることはスピードテストである」と言われた。その伝統は64kbpsのISDN回線がブロードバンドと呼ばれていた頃にさかのぼります。それ以前はブロードバンドと言う言葉を聞かなかったような気がします。

iPhoneのスピードをiPhone Speed Testで計ってみました。家のネットワーク(なんとかnのやつ)は2Mbpsでした。本当はもっと速いのかもしれませんが,このぐらいのスピードが出ていれば十分です。

次に通勤途中の東海道線の電車の中で計りました。電波さえ来ていれば0.3〜1Mbpsぐらいはでています。遅いときはちょっと気になりますが,ISDNの5倍近いです。ちなみに実家はまだISDNです。横浜駅で動いていないときは1〜1.2Mbpsぐらいでていました。無線LANほどではないですが,十分速いです。

ちなみに近所のMacでYahooの公衆無線LANにつなげると,電波がしょっちゅう途切れて使い物にならないです。なので、公衆無線LANが使えるところでも3Gのネットワークに負荷をかけてしまいます。

2008年8月12日

悪ガキどもの夢の跡

お盆の前後になると,上の子供二人は田舎のおじいちゃんの家に島流しにされます。うるさい子供が二人いないと,家の中は穏やかです。一才の娘が走り回ったりしますが,上の子二人の比ではありません。

子供が二人いないつかの間は,朝から静かです。さらに,お盆になると,嫁も里帰りするのでしばしの独身です。ふっふっふ。

WebページのiPhone対応について調べてみる

会社ではWebアプリをSafariに対応させればiPhoneに対応したことになると思っている人がいるようですが,Safari対応とiPhone対応は違います。そもそも,iPhone対応ってどういうこと?と言うことで調べてみます。ドキュメントがちゃんとしているので,ドキュメントを読めばすみます。僕は英語しか見つけられませんでしたが,日本語が存在しているという噂もあります。

さて,第2章にiPhone対応ページの作り方の説明があります。ざっと見てみると
  • HTML4などの標準を使いましょう
  • よいWebデザインのプラクティスに従いましょう
って,当たり前すぎます。
  • フレームセットはやめましょう
これは,Safariがページを拡大,縮小するときに表示が崩れるためです。ここからが,iPhone固有のものっぽいです。
  • カラムやブロックを使いましょう
ブロック要素や画像とかをダブルクリックするとその領域が拡大できるので,ユーザビリティが向上します。
  • リソースの制限があります
具体的には,gif, png, tiffは2Mバイトまで,jpegは32Mバイトまで。HTMLやCSSなどのファイルサイズは10Mバイトまで。割と大きなリソースが扱えます。JavaScriptの実行は5秒で打ち切って,それ以降の動作は知らないと言うことらしいです。あまり重い処理をやると悲しい結末になりそうです。また,JavaScriptで使用できるメモリの上限が10Mバイトだそうです。あと,同時に開けるページの最大数が8ページです。

  • select要素を使うとiPhoneに最適化したselectボックスが使えるのでおすすめ
  • videoやpdfはそのまま見られるよ

  • ベクターグラフィックスやアニメーションにキャンバスを使え
僕には何のことだか分りません。そしてまた,一般的なお話に戻っていきます。
  • JavaScriptのwindowやalertを使ってね。
  • サポートメディアはvideo関係とaudio関係でそこそこ豊富よ
  • HTTPSとかのセキュリティ関係の機能は使えるよ
それから,最後に
  • flashなどのサポートしていない機能は使うな
って,使いたくても使えないでしょ。

2008年8月11日

viewportって何だ?

さて,諸般の事情で,blogをbloggerに引っ越しました。bloggerはかなりシンプルですが,ほとんどのテンプレートがページの横幅が固定されています。横幅は可変にしたいのですが,やたらと面倒そうです。我慢します。

さて,iPhoneでページをみると,横の方に無意味なスペースが出来てしまいます。iPhoneは画面がもともと小さいので,余分なスペースは嬉しくありません。調べてみるとhtmlのヘッダーでviewportを指定するとその横幅になるそうです。iPhone用にページを最適化するためには,そこそこカスタマイズしないといけないのかもしれません。

2008年8月9日

サーバが壊れました

サーバが壊れてしまいました。これで、今年になって2台目です。最近のPCは根性がありません。代替用のマシンも余っていないので、こっちに引っ越します。

過去の記事は、そのうち復旧したいですが、URLは変わるかな。その前にそもそも復旧できるのか?